Files
f7cloud_mobile/README.md
b-dev-mobile 3aebb5c68b Этап 0 п.4a (GPL): LICENSE (GPL-3.0-or-later) в корень + раздел лицензии в README
Приложение линкует vendored Nextcloud Talk (GPL-3.0-or-later), поэтому весь APK —
производная работа под GPL. Восстановление затёртых копирайтов Nextcloud в vendor
(п.4b) — отдельно, точной сверкой с апстримом talk-android v23.0.0.
2026-07-07 20:06:17 +00:00

122 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# F7cloud Mobile (native)
Нативное Android-приложение F7cloud на Kotlin + Jetpack Compose.
## Лицензия
Приложение распространяется под **GPL-3.0-or-later** (см. [LICENSE](LICENSE)). Причина: в сборку
линкуется код, производный от [Nextcloud Talk for Android](https://github.com/nextcloud/talk-android)
(GPL-3.0-or-later, каталог `vendor/talk-android/`), поэтому объединённая работа — тоже под GPL.
Исходный код каждой распространяемой сборки предоставляется по тегу релиза в Gitea (обязательство
corresponding source, GPLv3 §6). Сторонние компоненты и их лицензии — [NOTICE.md](NOTICE.md).
| Параметр | Значение |
|----------|----------|
| 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-уведомления