Раньше свайп-обновление было только в Файлах. Добавлено (Material3 PullToRefreshBox): Почта (входящие/исходящие, force-обновление), Конференции (список бесед — заменяет убранную кнопку ↻), Контакты (force + CTag — дёшево), Задачи (список), Карточки (доски и открытая доска). Контакты: refresh() получил параметр force (pull-to-refresh форсит sync мимо TTL; с CTag-проверкой это 1 лёгкий PROPFIND).
F7cloud Mobile (native)
Нативное Android-приложение F7cloud на Kotlin + Jetpack Compose.
Лицензия
Приложение распространяется под GPL-3.0-or-later (см. LICENSE). Причина: в сборку
линкуется код, производный от Nextcloud Talk for Android
(GPL-3.0-or-later, каталог vendor/talk-android/), поэтому объединённая работа — тоже под GPL.
Исходный код каждой распространяемой сборки предоставляется по тегу релиза в Gitea (обязательство
corresponding source, GPLv3 §6). Сторонние компоненты и их лицензии — 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):
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:
./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:
- По
fileId(WebDAV или ссылка/f/{id}с виджетов) → Direct Editing API:POST /ocs/v2.php/apps/richdocuments/api/v1/document. - Полноэкранный 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 с |
Сервер
Перед релизом или при жалобах на медленную «Главную» проверьте сервер:
Кратко для 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 — WebView-оболочка (legacy)
- f7push — push-уведомления