# MobileMkch

Мобильный клиент для борды mkch.pooziqo.xyz

## Возможности

- Просмотр всех досок Мкача
- Просмотр тредов в каждой доске
- Просмотр деталей треда и комментариев
- Поддержка изображений и видео
- Темная/светлая тема
- Навигация с кнопкой "Назад"
- Улучшенный заголовок с статическими кнопками
- Система настроек с сохранением:
  - Тема (темная/светлая)
  - Последняя посещенная доска
  - Автообновление
  - Показ файлов
  - Компактный режим
- **Полная поддержка постинга:**
  - Аутентификация по ключу
  - Аутентификация по passcode
  - Создание тредов
  - Добавление комментариев
  - Автоматическое обновление после постинга
  - Кнопка "Обновить" для ручного обновления
- Поддержка Android и iOS
- **Оптимизации для мобильных устройств:**
  - Кэширование данных для быстрой загрузки
  - Дебаунсинг UI обновлений
  - Оптимизация потребления батареи
  - Агрессивная сборка мусора на мобильных
  - Ограничение частоты сетевых запросов
- **Многостраничность для списка тредов:**
  - Настраиваемый размер страницы (5-20 тредов)
  - Навигация между страницами
  - Ограничение тредов для больших досок
- **Управление кэшем:**
  - Очистка кэша досок
  - Очистка кэша тредов для всех досок
  - Очистка кэша деталей тредов
  - Очистка всего кэша

## Аутентификация и постинг

### Настройка аутентификации

1. Откройте настройки в приложении
2. Введите ключ аутентификации (если есть)
3. Введите passcode для постинга (если есть)
4. Используйте кнопки "Тест ключа" и "Тест passcode" для проверки

### Создание тредов

1. Перейдите в нужную доску
2. Нажмите "Создать тред"
3. Заполните заголовок и текст
4. Нажмите "Создать тред"

### Добавление комментариев

1. Откройте тред
2. Нажмите "Добавить комментарий"
3. Введите текст комментария
4. Нажмите "Добавить комментарий"

### Автоматическое обновление

- После создания треда автоматически обновляется список тредов
- После добавления комментария автоматически обновляется список комментариев
- Используйте кнопку "Обновить" для принудительного обновления

## Сборка

### Desktop

```bash
go build
./MobileMkch
```

### Android

1. Установите Android Studio (включает SDK и NDK):
```bash
# macOS
brew install --cask android-studio

# Или скачайте с https://developer.android.com/studio
```

2. Установите Fyne CLI:
```bash
go install fyne.io/fyne/v2/cmd/fyne@latest
```

3. Настройте переменные окружения:
```bash
export ANDROID_HOME=$HOME/Library/Android/sdk
export ANDROID_NDK_HOME=$ANDROID_HOME/ndk
```

4. Соберите APK:
```bash
fyne package --os android --app-id com.mkch.mobile
```

5. Установите на устройство:
```bash
adb install MobileMkch.apk
```

### iOS

1. Установите Xcode из App Store

2. Установите Fyne CLI:
```bash
go install fyne.io/fyne/v2/cmd/fyne@latest
```

3. Соберите IPA:
```bash
fyne package --os ios --app-id com.mkch.mobile
```

4. Откройте в Xcode:
```bash
open MobileMkch.xcodeproj
```

5. Подпишите и установите через Xcode или TestFlight

**✅ iOS И Android сборка протестирована и работает!**

## Требования

- Go 1.24+
- Fyne v2.6.2
- Android SDK (для Android)
- Xcode (для iOS)

## Технологии

- Go 1.24+
- Fyne v2.6.2
- HTTP клиент для API с поддержкой сессий
- Система кэширования с TTL

## Структура

- `main.go` - точка входа
- `api/client.go` - HTTP клиент для mkch API с поддержкой аутентификации
- `models/models.go` - структуры данных
- `settings/settings.go` - система настроек
- `cache/cache.go` - система кэширования с поддержкой пагинации
- `ui/` - пользовательский интерфейс
  - `manager.go` - управление экранами
  - `boards_screen.go` - список досок
  - `threads_screen.go` - треды доски
  - `thread_detail_screen.go` - детали треда с кнопкой обновления
  - `create_thread_screen.go` - создание тредов
  - `add_comment_screen.go` - добавление комментариев
  - `settings_screen.go` - экран настроек с тестированием аутентификации
  - `optimization.go` - утилиты оптимизации
- `mobile_optimizations.go` - оптимизации для мобильных устройств 

## Интересный факт!

Но данный клиент имеет обратную совместимость с поддержкой ПК! А настройки хранятся в файле `settings.json` в папке `~/.config/mkch/` и вы можете их использовать на ПК! Я оффициально поддерживаю этот функционал потому что клиент первым запускается на моем ПК, а только затем тестируется на мобильных устройствах.

Сборка проста, `go build` и запускайте `./MobileMkch` (или с .exe если винда) 
P.S. на Маках вообще должно быть просто fyne package и у вас будет .app файл, вроде запускается, тестово залью на [relays.lol/releases](https://relays.lol/releases) для ARM бояр.
P.S.S. DMG Canvasом можете в дмг упаковать, ./minibuild.sh соберет два бинаря сразу и сольет в arm64+amd64 universal