# F7cloud Mobile (native) Нативное Android-приложение F7cloud на Kotlin + Jetpack Compose. | Параметр | Значение | |----------|----------| | applicationId | `ru.forbion.f7cloud.mobile` | | minSdk | 26 | | compileSdk / targetSdk | 36 | | Gradle | 9.3.0 | | AGP | 8.13.2 | | Kotlin | 2.3.0 | | Модули | app, core (auth, network, designsystem, push), feature (widgets, files, talk, mail, …) | ## Сборка APK С **v0.5.27** используется собственный Gradle wrapper в этом каталоге (Gradle 9.3, AGP 8.13, Kotlin 2.3): ```bash cd /var/www/f7cloud/f7cloud-mobile ./gradlew assembleDebug chown www-data:www-data app/build/outputs/apk/debug/*.apk ``` > Старый способ через `android-webview` (Gradle 8.7) больше не поддерживается — там AGP 8.2, несовместим с Kotlin 2.3. Release: ```bash ./gradlew assembleRelease ``` APK с версией в имени: ``` app/build/outputs/apk/debug/f7cloud-mobile-v{versionName}-{versionCode}-debug.apk ``` ## Структура навигации Мобильный UI повторяет **мобильную** версию сайта (тема forbion): - нижняя панель: Talk, Профиль, Уведомления, Создать, Меню; - меню приложений — bottom sheet со списком модулей; - стартовый экран после входа — **Главная** (виджеты / Dashboard). ## Модуль «Файлы» - Список папок и файлов через WebDAV PROPFIND (`oc:fileid` для идентификации). - Навигация по папкам, кнопка «Назад». ### Word / Excel / PowerPoint (Richdocuments) Office-документы открываются в **Collabora Online** через Richdocuments: 1. По `fileId` (WebDAV или ссылка `/f/{id}` с виджетов) → Direct Editing API: `POST /ocs/v2.php/apps/richdocuments/api/v1/document`. 2. Полноэкранный WebView (`OfficeEditorActivity`) с: - `RichDocumentsMobileInterface` (см. `apps/richdocuments/docs/mobile_flow.md` на сервере) — скрывает оболочку F7cloud; - desktop User-Agent — полная панель инструментов Collabora; - поддержка iframe Collabora (`coll.f7cloud.ru`). **Где работает:** модуль **Файлы** и виджет **Рекомендации** на **Главной** (клик по `.docx` / `.xlsx`). Поддерживаемые расширения: см. `OfficeFiles.kt`. **Требования на сервере:** `richdocuments` + Collabora (у вас: `https://coll.f7cloud.ru`). ## Модуль «Главная» (Widgets) Данные с Dashboard API F7cloud: | Endpoint | Назначение | |----------|------------| | `/ocs/v2.php/apps/dashboard/api/v1/widgets` | метаданные виджетов | | `/ocs/v2.php/apps/dashboard/api/v3/layout` | порядок виджетов пользователя | | `/ocs/v2.php/apps/dashboard/api/v2/widget-items` | элементы (Talk, Mail, Calendar) | | `/ocs/v2.php/apps/dashboard/api/v1/widget-items?widgets[]=recommendations` | блок «Рекомендации» | Запросы выполняются **параллельно** (`WidgetsRepository`, с v0.5.4). ## Производительность ### Клиент (приложение) | Версия | Изменение | |--------|-----------| | ≤ 0.5.3 | 4 последовательных запроса → до ~30 с | | ≥ 0.5.4 | параллельные запросы, layout с таймаутом 2 с, v1 только для recommendations → ~2–4 с | ### Сервер Перед релизом или при жалобах на медленную «Главную» проверьте сервер: **[docs/SERVER-PERFORMANCE.md](../docs/SERVER-PERFORMANCE.md)** Кратко для `forbion.f7cloud.ru` (2026-05-30): - ✅ OPcache включён (FPM: 256 MB, 100k файлов) - ✅ Redis + APCu для кеша F7cloud - ✅ PHP-FPM: min 18 spare workers, старт 30 Первый API-запрос после простоя сервера может занимать 15–20 с — это холодный bootstrap PHP/F7cloud, не ошибка приложения. ## Авторизация - Используется тот же пароль, что и для веб-входа (или пароль приложения при 2FA). - OCS `/ocs/v2.php/cloud/user` — проверка и получение `davUserId` для WebDAV. ## Связанные проекты - [android-webview](../android-webview/README_ANDROID_BUILD.md) — WebView-оболочка (legacy) - [f7push](../apps/f7push/README.md) — push-уведомления