Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

📱 TeleGhost Mobile — Текущее состояние

✅ Что УЖЕ работает

1. Архитектура создана

  • frontend/src/lib/api_bridge.js — JS Bridge (Desktop ↔ Mobile)
  • mobile/mobile.go — Go HTTP-сервер (каркас готов)
  • android/ — Kotlin проект (MainActivity + TeleGhostService)
  • .github/workflows/android.yml — CI/CD pipeline с CGO + NDK

2. Что соберётся через CI

  • teleghost.aar — gomobile bind с CGO_ENABLED=1
  • ✅ Android APK с WebView
  • ⚠️ НО: mobile.go содержит прототип-заглушки

⚠️ Что требует доработки

Критические методы в mobile.go:

1. Отправка сообщений (строка 741-804)

Статус: ✅ Частично исправлено
Проблема: Использует core.Message, но нужно проверить сигнатуры
Что делать:

// Проверить что repo.SaveMessage() принимает *core.Message
// Проверить что messenger.SendTextMessage() работает корректно

2. Добавление контактов (строка 726-732)

Статус: ❌ Заглушка
Текущий код:

func (app *MobileApp) addContact(name, destination string) (interface{}, error) {
    return nil, fmt.Errorf("AddContact: implement via internal packages")
}

Нужно:

func (app *MobileApp) addContact(name, destination string) (*core.Contact, error) {
    // 1. Создать контакт в БД
    contact := &core.Contact{
        ID:         uuid.New().String(),
        Nickname:   name,
        I2PAddress: destination,
        AddedAt:    time.Now(),
        UpdatedAt:  time.Now(),
    }
    
    // 2. Сохранить
    if err := app.repo.SaveContact(app.ctx, contact); err != nil {
        return nil, err
    }
    
    // 3. Отправить handshake
    if app.messenger != nil {
        go app.messenger.SendHandshake(destination)
    }
    
    // 4. Emit событие
    app.emitEvent("new_contact", map[string]interface{}{
        "nickname": name,
    })
    
    return contact, nil
}

3. Обработка входящих сообщений (строка 642-653)

Статус: ❌ Упрощённая версия
Проблема: Не сохраняет сообщения в БД, не создаёт контакты

Нужно: Скопировать логику из app_messages.go:onMessageReceived() (строки 233-289)

4. Профили и Identity (строки 509-569)

Статус: ❌ Неправильные импорты
Проблема:

  • identity.FromMnemonic() не существует
  • identity.Generate() не существует
  • profileManager.CreateProfile() неправильная сигнатура

Решение: Посмотреть на app_auth.go и скопировать правильную логику


🔧 План доработки

Вариант 1: Быстрый (минимальный MVP)

Оставить mobile.go как есть, но задокументировать что это прототип.
Плюсы:

  • CI соберёт .aar и APK
  • Можно протестировать UI на Android
  • Базовая архитектура работает

Минусы:

  • Сообщения НЕ будут работать
  • Контакты НЕ будут добавляться
  • Только просмотр интерфейса

Вариант 2: Полная реализация ⭐ (рекомендуется)

Исправить все заглушки в mobile.go:

  1. Скопировать логику из app_*.go

    • addContact() → из app_contacts.go:AddContact()
    • sendText() → из app_messages.go:SendText() ✅ (уже сделано)
    • onMessageReceived() → из app_messages.go:onMessageReceived()
    • createProfile(), login() → из app_auth.go
  2. Исправить импорты и типы

    • Использовать core.Message, core.Contact, core.User
    • Проверить сигнатуры всех методов repo.* и messenger.*
  3. Добавить недостающие методы

    • SendFileMessage() для Android
    • AcceptFileTransfer(), DeclineFileTransfer()
    • UpdateProfile(), RequestProfileUpdate()

🚀 Как протестировать СЕЙЧАС

Desktop (работает полностью)

wails dev

Android (только UI, без функциональности)

  1. Запушить в GitHub
  2. Создать тег: git tag v1.0.3-android && git push --tags
  3. Скачать .apk из GitHub Release
  4. Установить на Android
  5. Ожидаемый результат:
    • ✅ WebView откроется
    • ✅ UI отобразится
    • ❌ Логин НЕ сработает (заглушки в mobile.go)
    • ❌ Сообщения НЕ отправятся

📝 Рекомендации

Для продакшена:

  1. Доделать mobile.go — скопировать всю логику из app_*.go
  2. Добавить тесты — unit-тесты для HTTP API
  3. Обработка ошибок — улучшить error handling в диспетчере
  4. Логирование — добавить structured logging (logrus/zap)
  5. Безопасность — добавить rate limiting для HTTP API

Для MVP (быстрый старт):

  1. Исправить только критичные методы:
    • sendText()
    • addContact()
    • onMessageReceived()
  2. Остальное оставить как есть
  3. Протестировать базовый flow: Login → Add Contact → Send Message

🎯 Итог

Текущее состояние: Архитектура готова, но mobile.go — это прототип с заглушками.

Что работает:

  • ✅ CI/CD pipeline (сборка .aar + APK)
  • ✅ Android проект (Service + WebView)
  • ✅ JS Bridge (api_bridge.js)
  • ✅ HTTP сервер (роутинг запросов)
  • ✅ SSE события (real-time)

Что НЕ работает:

  • ❌ Логин/регистрация (неправильные типы)
  • ❌ Добавление контактов (заглушка)
  • ❌ Получение входящих сообщений (упрощённая версия)
  • ❌ Отправка файлов (не реализовано)

Следующий шаг: Выбрать вариант 1 (MVP) или вариант 2 (полная реализация) и доделать mobile.go.