feat: истории — просмотр, публикация и кэширование

- протокол STORIES_LIST/GET_BY_OWNER/MARK/REACT/SEND + push (opcodes 0xD0–0xDC)
- StoriesModule: лента, реакции, публикация фото, SQLite-кэш и позиция просмотра
- полноэкранный вьюер: куб-переход, круговое открытие, drag-to-dismiss, прогресс-бары, реакции
- сегментные кольца, плитка «Ваша история» с кнопкой публикации, in-app пикер медиа
- резолв имён авторов через ensureContactNames/ContactCache
This commit is contained in:
klockky
2026-07-08 20:07:19 +03:00
parent f68d97f022
commit f4a30328ff
9 changed files with 2715 additions and 104 deletions
+4
View File
@@ -48,6 +48,7 @@ import 'backend/modules/messages.dart';
import 'backend/modules/outbox.dart';
import 'backend/modules/polls.dart';
import 'backend/modules/stickers.dart';
import 'backend/modules/stories.dart';
import 'backend/modules/self_check.dart';
import 'backend/modules/shared_content.dart';
import 'backend/modules/webapp.dart';
@@ -80,6 +81,7 @@ final stickersModule = StickersModule(api);
final webAppModule = WebAppModule(api);
final digitalIdModule = DigitalIdModule(webAppModule);
final fileUploader = FileUploader(api: api, messages: messagesModule);
final storiesModule = StoriesModule(api);
final RouteObserver<PageRoute<dynamic>> appRouteObserver =
RouteObserver<PageRoute<dynamic>>();
@@ -165,6 +167,8 @@ void main(List<String> args) async {
}
attachInfoCacheApi(api);
chats.attachGlobalPushHandlers(api);
storiesModule.attach();
unawaited(storiesModule.loadCache());
unawaited(DeepLinkService.instance.init());
final packageInfoFuture = PackageInfo.fromPlatform();