Commit Graph
244 Commits
Author SHA1 Message Date
klockky cf154b006b feat: звонки 1:1 (аудио) — WebRTC + ws2-сигналинг
Реализованы голосовые звонки 1:1 поверх инфраструктуры VK/OK
(flutter_webrtc + сигналинг ws2 wss://videowebrtc.okcdn.ru). Протокол
восстановлен реверсом захваченных пакетов и декомпиляцией
ru.ok.android.externcalls.sdk.

Ядро (lib/core/calls/):
- conversation_params.dart — декодер vcp (LZ4-блок), с unit-тестом
- ws2_signaling.dart — клиент сигналинга ws2 (transmit-data, ICE,
  accept-call, hangup, change-media-settings, ping/pong)
- call_session.dart — WebRTC-контроллер для звонящего и вызываемого
- call_controller.dart — глобальный оркестратор: пуш opcode 137,
  исходящие, приём/отклонение, управление активной сессией

Бэкенд:
- CallsModule.initiateCall — инициация исходящего (opcode 78)
- общий LZ4-block декодер вынесен в core/protocol/lz4_block.dart
  (используется и транспортом, и vcp)

UI / обвязка:
- CallScreen переписан под живой CallSession (+ кнопка «свернуть»
  без завершения звонка, возврат повторным нажатием 📞)
- кнопка звонка в шапке диалога
- инициализация CallController на логине, показ входящего по пушу
- дев-тумблер: принудительный сигнал состояния микрофона без
  изменения реального аудиотрека

Прочее:
- зависимость flutter_webrtc ^0.12.5
- Android: RECORD_AUDIO / MODIFY_AUDIO_SETTINGS / BLUETOOTH
2026-06-10 18:21:27 +03:00
klockky 4c0dd48a3a fix: порядок логина при хэндшейке + регистрация FCM-токена (pushOptions) 2026-06-10 11:35:17 +03:00
Jganenok 3022a207ca fix: как бы нихуя не изменилось по сути но на всякий пусть temp файлы не плодяться 2026-06-10 14:12:31 +07:00
Jganenok d18cb35362 fix: соединил в один файл 2026-06-10 13:59:25 +07:00
Jganenok 3541e9392d fix(chat_screen): Улучшил работу bottom sheet на андроиде 2026-06-10 13:38:57 +07:00
Jganenok d89c1366e2 feat: доделал работу с медиа. 2026-06-10 12:57:30 +07:00
Jganenok 32aa869b89 feat: работа с вложениями 2026-06-10 00:58:19 +07:00
klockky 294a9b4efb fix(digital-id): не заворачивать ссылку Госуслуг назад (externalCallback только top-level)
Перехват OAuth-callback в WebView-мосте проверял externalCallback как подстроку
во всём URL и ошибочно срабатывал на самой ссылке Госуслуг: у неё externalCallback
сидит внутри параметра redirect_uri (адрес возврата). Из-за этого мост заворачивал
ссылку входа обратно на digital-id, и Госуслуги не открывались при «Подключить
документы».

Теперь externalCallback распознаётся только как top-level параметр запроса
(?externalCallback= / &externalCallback=).
2026-06-09 17:15:52 +03:00
Jganenok ae0ecbc79a слегка botomshet в чат скрин набурмалдил 2026-06-09 18:42:28 +07:00
Jganenok e587ef184b fix: большой фикс недочетов и фикс пары язв 2026-06-09 01:00:04 +07:00
klockky 7245f8bfb3 поднял build number 2026-06-08 17:32:50 +00:00
klockky a630f81180 feat(ci): сборка unsigned ipa 2026-06-08 17:31:12 +00:00
klockky 06b5720638 feat(digital-id): Цифровой ID — WebView-мост к оригиналу + нативный режим
Реализован функционал Цифрового ID (паспорт, СНИЛС, ИНН, ОМС, водительское,
СТС и др.) двумя путями с переключателем в меню разработчика.

WebView-мост (по умолчанию):
- Открывает оригинальную страницу digital-id.max.ru и реализует нативный
  хост-мост window.WebViewHandler (postEvent/receiveEvent), который настоящее
  приложение MAX предоставляет нативно: lifecycle-события, биометрия,
  SecureStorage/DeviceStorage, OpenLink (переход на Госуслуги) и заворот
  OAuth-callback (externalCallback) обратно в мини-апп.
- botId Цифрового ID резолвится из settings-entry-banners конфига логина
  (как Сферум).

Нативный режим:
- DigitalIdModule — REST-клиент к ext-api.max.ru (все эндпоинты по образцу
  библиотеки gaijin: biometry, docs, esia, qr, verify, acms, profile),
  авторизация через #WebAppData= из webAppInitData.
- Модели документов и экран онбординга/просмотра.

Прочее:
- Тумблер AppDigitalIdNative (WebView/нативно) и кнопка «Сбросить Цифровой ID»
  (очистка кук и данных WebView) — в настройках разработчика.
2026-06-08 18:23:23 +03:00
Jganenok 7ad258f6c0 fix: переделал 2FA, теперь должен работать. 2026-06-08 16:20:46 +07:00
klockky b02152248c fix(webapp): динамический appid Сферума из конфига логина 2026-06-07 19:32:53 +00:00
klockky 5ecc74237e fix(sferum): резолвить бота перед запросом web-app данных 2026-06-07 19:06:44 +00:00
klockky 5eaa425c8f feat(webapp): мини-приложения через webAppInitData, вход в Сферум 2026-06-07 18:28:59 +00:00
klockky 3d234e686f change build version 2026-06-07 14:29:31 +03:00
klockky 8a39862f84 fix(chats): fall back to cached title/iconUrl for dialogs 2026-06-07 14:25:30 +03:00
klockky 260e94632f fix(ios): drop private entitlements from pseudo-signed IPA 2026-06-07 14:00:20 +03:00
Jganenok 628c809fd2 ГОВНОЧИСТ, ГОВНОЧИСТ ГОВНОЧИСТ. ОХ ГОВНА Я КОНЕЧНО УНЕС 2026-06-07 14:06:35 +07:00
Jganenok 5b9aaf7d7e цэ фронт хуйнюшки которая где медиа отправлять 2026-06-07 13:11:20 +07:00
klockky 2daf384dad fix(spoof): persist and apply all spoofing fields 2026-06-06 19:36:24 +03:00
Jganenok e954e0bc3b я балбес, фикс #33 2026-06-05 14:11:41 +07:00
Jganenok a2851b3681 Возможность войти в приложение без соединения. Вроде фикс issue #33 2026-06-05 13:11:28 +07:00
klockkyandGitHub 91ff132493 Merge pull request #31 from KometTeam/feature/app-icon-switcher
Feature/app icon switcher
2026-06-03 18:07:04 +03:00
klockky 4804c5bc1d Merge remote-tracking branch 'origin/feature/FullStack' into feature/app-icon-switcher
# Conflicts:
#	pubspec.lock
2026-06-03 18:06:43 +03:00
klockky 09fdb19854 жижа сука не притрагивайся к анимациям 2026-06-03 16:34:03 +03:00
Jganenok e207d236d3 поченил спермотоксикозничество бурмалдачество при входе 2026-06-03 18:48:23 +07:00
Jganenok c9db686c2a неко пофиксил ебень 2026-06-03 18:48:23 +07:00
nox 515f3cacf3 экраны для звонков и мелкие изменения на экране чатов 2026-06-03 11:31:14 +00:00
klockky 7f29b3285e feat(auth): implement phone registration flow with preset avatars 2026-06-03 08:20:21 +00:00
Jganenok db9de4d8a2 оптимизация: слегоньца набурмалдил 2026-06-03 13:55:14 +07:00
klockky 4bdb0e70cf feat: кэширование файлов/видео + управление кэшем в дев-меню 2026-06-02 20:40:03 +00:00
klockky 1a3570f942 feat: поддержка медиа-вложений — опросы, видео, файлы и просмотр фото
Опросы (новый тип сообщения):
- модель Poll/PollAnswer и PollAttachment (_type: POLL)
- PollsModule: загрузка через opcode 306 (GET_POLL_UPDATES) с кэшем
- рендер опроса в баблах (вопрос, варианты, прогресс-бары, голоса)

Видео:
- getVideoUrl через opcode 83 (VIDEO_PLAY): выбор MP4_*/HLS из ответа
- полноэкранный плеер (video_player) с play/pause и перемоткой
- тап по видео в чате запускает воспроизведение

Файлы:
- getFileUrl через opcode 88 (FILE_DOWNLOAD) с корректным форматом
  {messageId, chatId, fileId} → url (раньше слался неверный {url, token})
- скачивание во временную папку и открытие системным приложением
  (path_provider, open_filex)

Фото:
- полноэкранный просмотрщик с зумом (был TODO-заглушкой)
- фикс «сжатости»: декодирование с учётом devicePixelRatio вместо ×2
2026-06-02 20:06:46 +00:00
klockky 5ff914b0dc feat: мимикрия протокола (opcode 6 + LZ4) и фиксы UI (истории, 2FA) 2026-06-02 18:28:31 +00:00
klockky d35729e911 feat: отправка chatCacheFingerprint и exp в login-пакете (opcode 19) 2026-06-02 17:09:23 +00:00
klockky d0d99b0a8f feat: открытие дев-меню по 7 тапам по иконке на экране входа 2026-06-02 16:11:18 +00:00
Jganenok 4afdf4b61e изменение профиля 2026-05-31 17:43:58 +07:00
Jganenok 838e892bbc онэмашке 2026-05-29 18:38:33 +07:00
Jganenok acff45b7dd приколдепола с приветственной плашкой 2026-05-29 17:46:24 +07:00
Jganenok 5a3890c55e набурмалдил 2026-05-29 13:52:13 +07:00
Jganenok e7f401b01d просто босс, просто начальник нахуй оптимизации 2026-05-29 11:21:41 +07:00
Jganenok b3edf7249e починил 2фа 2026-05-28 22:05:37 +07:00
Jganenok d8a2b8ec6d размер шрифта 2026-05-28 21:29:47 +07:00
Jganenok 1481a4af2c эмозе 2026-05-28 21:00:38 +07:00
Jganenok 0947863697 легонько набурмалдил, остальнось сделать FKM и фронт уведомлений 2026-05-28 16:44:59 +07:00
Jganenok 7ce4459304 жесты починил 2026-05-28 12:52:15 +07:00
klockky 0bf8eb5b65 fix: адаптивная иконка для Minimal 2026-05-28 05:45:38 +00:00
klockky eb159de0f4 fix: смена иконки через нативный MethodChannel — без плагина и без отключения MainActivity 2026-05-28 05:13:14 +00:00