Commit Graph

7 Commits

Author SHA1 Message Date
b-dev-mobile d1d61d0cf8 ux: pull-to-refresh на всех списках (Этап 2 п.12)
Раньше свайп-обновление было только в Файлах. Добавлено (Material3
PullToRefreshBox): Почта (входящие/исходящие, force-обновление), Конференции
(список бесед — заменяет убранную кнопку ↻), Контакты (force + CTag — дёшево),
Задачи (список), Карточки (доски и открытая доска). Контакты: refresh()
получил параметр force (pull-to-refresh форсит sync мимо TTL; с CTag-проверкой
это 1 лёгкий PROPFIND).
2026-07-09 12:48:08 +00:00
b-dev-mobile b83d3dc872 mail: письма вписываются по ширине экрана (WebView useWideViewPort)
HTML-письма (широкие таблицы Битрикс/рассылок) уезжали за правый край:
WebView без useWideViewPort игнорировал viewport width=device-width и
раскладывал по ~980px. Включил useWideViewPort+loadWithOverviewMode
(вписывает/масштабирует в обзор) + пинч-зум. READER_CSS уже имел
overflow-x:hidden/table-layout:fixed — теперь работает как задумано.
2026-07-08 12:25:43 +00:00
b-dev-mobile 79e6b4ec83 mail: точные цвета тегов из макета (Работа/Позже/Личное)
Сняты пипеткой с «Почта · Список сообщений» (Figma):
Работа #DAEDD6/#28A413, Позже #F1EEE0/#C1B464, Личное #EFE4FB/#B574F7.
Раньше были приблизительные зелёный/коричневый/фиолетовый.
2026-07-08 09:36:52 +00:00
b-dev-mobile 696ed8d802 Дизайн Почты: теги письма в карточке списка (макет «Список сообщений»)
CI / verify (push) Failing after 3s
CI / release (push) Has been skipped
Строка письма уже карточная (аватар+имя+дата+тема) — близка к макету. Добавлены
цветные теги-пилюли (Работа/Позже/Личное) под темой (message.tags, MailTagChip).
Верхний бар (поиск+фильтр+compose) уже был. feature:mail компилируется.
2026-07-08 08:37:50 +00:00
b-dev-mobile ab8fa70e51 Этап 1: единый OkHttpClient ч.2 — 401 централизован через interceptor
CI / verify (push) Has been cancelled
CI / release (push) Has been cancelled
- UnauthorizedInterceptor (401→UnauthorizedException) в NetworkFactory,
  флаг throwOnUnauthorized (по умолчанию true).
- Удалены 75 ручных проверок if(code==401) throw в 16 репозиториях.
- AuthVerifier (login-верификация) исключён: throwOnUnauthorized=false —
  401 = 'неверный пароль' со своим сообщением, не session-expired.
- Побочно: 401 теперь ловится единообразно ВЕЗДЕ (включая пути, что раньше
  забывали проверку).
- +3 MockWebServer-теста (401 бросает; 200/403 проходят) — всего 18 тестов.

Проверено: 18 тестов зелёные + assembleRelease BUILD SUCCESSFUL, APK 53 МБ.
2026-07-07 23:29:49 +00:00
b-dev-mobile b90107a7fc Этап 1: баги данных (test-first) — ICS-парсер, QR-пароль, курсор почты
Заведена тестовая инфраструктура (core:network junit) + 12 unit-тестов. Починено:
- ICS parseIcsInstant: суффикс Z → UTC (был локальным!), TZID учитывается, floating→локаль
- parseProps сохраняет параметры: несколько ATTENDEE не схлопываются, CN/PARTSTAT/ROLE
  читаются (была порча участников при редактировании события → PUT на сервер)
- unescape single-pass (последовательные replace ломались на экранированном бэкслеше)
- CalDavClient.parseIcsInstant делегирует в CalendarIcs — устранён рассинхрон календарь↔задачи
- LoginFlowClient: маркер-парсер вместо split('&') — QR-пароль с &/: не теряется
- MailRepository/ViewModel/Models/Cache/Screen: курсор пагинации Int→Long (обрезка ~2038)

Проверено: 12 тестов зелёные (CalendarIcsTest 8 + LoginFlowClientTest 4) + assembleRelease OK.
2026-07-07 22:21:37 +00:00
F7cloud Mobile fd17df80a8 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).
2026-07-07 12:05:18 +03:00