fd17df80a8
Kotlin/Compose client for F7cloud (mail, files, talk, calendar, contacts, tasks, support). Current version: 0.5.113 (build 121).
114 lines
4.8 KiB
Markdown
114 lines
4.8 KiB
Markdown
# 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-уведомления
|