Files

42 lines
4.8 KiB
Markdown

# Расхождения: Файлы (web forbion ↔ нативный feature/files)
Список несоответствий по методу mail/081 (итерация сверки). Вход — карта
[`files.md`](files.md). Сверка **по коду** `feature/files` (состав/функции); попиксельная
вёрстка по CSS-теме и визуал — отдельным проходом после сборки на устройстве.
Обозначения: **[Ф]** функционал · **[Д]** дизайн/вёрстка · приоритет P1(высокий)…P3(низкий).
Статус: `open` — не начато, `wip` — в работе, `done` — закрыто и сверено повторно.
## Итерация 1 — сверка по коду (2026-07-12)
| # | Элемент/функция | В вебе | В нативе | Тип | Приор. | Статус |
|---|---|---|---|---|---|---|
| D1 | Панель «Подробно» — вкладки | 4: Общий доступ / **Версии** / **Чат** / События | 2: Sharing, Events (`FileDetailsTab`, FilesModels.kt:67) — нет «Версии», «Чат/комментарии» | Ф | P2 | open |
| D2 | Фильтры-чипы | «Тип файла» (мультивыбор 8 типов), «Изменён» (5 пресетов дат), «Участники» (по людям) | Чипы есть, но обработчики — заглушки: Тип/Изменён → сортировка, Участники → пустой `{}` (FilesScreen.kt:224-226). Фильтрации нет | Ф | P1 | open |
| D3 | Групповые действия (bulk) | 6: избранное, метки, переместить/копировать, скачать, архивировать, удалить | 3: Favorite, Download, Delete (`FilesBulkAction`, FilesComponents.kt:1064); Download → заглушка `showWebOnlyMessage` | Ф | P1 | open |
| D4 | Шэры — создание | Внутренние ссылки: пользователь (type 0) / группа (type 1) + публичная (type 3) | Создаётся только `shareType=3` публичная ссылка (`createPublicShareLink`, FilesApiRepository.kt:174); чтение чужих шэров есть (`fetchShares` :199) | Ф | P1 | open |
Снято (не расхождение): меню «Новый» — нативный `FilesCreateMenu.kt` содержит весь веб-список
(загрузка + 10 «Создать новое») и даже пункт сверх («Добавить описание папки»).
## Инвентарь открывашек файлов (для медиа-воркстрима, mail/081 §3)
Текущее состояние нативных просмотрщиков в `feature/files`:
| Тип | Форматы | Как открывается сейчас | Пробел |
|---|---|---|---|
| Изображения | jpg/jpeg/png/gif/webp/bmp/heic/heif (`OpenableFiles.kt:10`) | Нативно `ImageViewerActivity` (Coil AsyncImage) | — (svg нет в списке — добавить?) |
| Офис | doc/docx/xls/xlsx/xlsm/… (`OfficeFiles.kt`) | Collabora/Richdocuments в WebView | — (есть) |
| Текст/Markdown | md/markdown/txt/text/org/log (`WebOpenableFiles.kt:17`) | Нативный `MarkdownEditorScreen` | — (есть) |
| Доска | .whiteboard (`WebOpenableFiles.kt:9`) | WebView (Excalidraw, realtime — нативно не делаем) | — (осознанно web) |
| **PDF** | pdf | Нет нативного вьюера → системный интент/`LocalFileOpener` или «тип не поддерживается» (FilesViewModel.kt:495) | **[Ф] P1 — нужен нативный PDF-вьюер** |
| **Видео** | mp4/webm/mkv/mov | Нет нативного плеера → системный интент | **[Ф] P2 — нативный видеоплеер** |
| **Аудио** | mp3/aac/ogg/wav/flac | Нет нативного плеера → системный интент | **[Ф] P2 — нативный аудиоплеер** |
Медиа-архитектуру (нативные плееры vs webview/интенты) определяет лид — жду письмо-раскладку
(mail/081 §3). До неё PDF/видео/аудио уходят в системный `ACTION_VIEW` (chooser «Открыть с помощью»).
## Осталось для итерации 2 (нужна сборка на устройстве)
- [Д] попиксельная вёрстка всех экранов по CSS-теме `_mobile-files.css`.
- [Ф] дерево «Поиска», переходы после открытия PDF/аудио/видео (визуальная сверка).