Initial import of f7cloud-mobile native Android app.

Kotlin/Compose client for F7cloud (mail, files, talk, calendar, contacts, tasks, support).
Current version: 0.5.113 (build 121).
This commit is contained in:
F7cloud Mobile
2026-07-07 12:05:18 +03:00
commit fd17df80a8
1789 changed files with 246889 additions and 0 deletions
+113
View File
@@ -0,0 +1,113 @@
# 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 → ~24 с |
### Сервер
Перед релизом или при жалобах на медленную «Главную» проверьте сервер:
**[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-уведомления