Фронт сообщений в чате, пока только текстовые

This commit is contained in:
Ваше Имя
2026-04-05 19:14:16 +07:00
parent a683748a33
commit a9ed2b4859
5 changed files with 884 additions and 34 deletions
+15 -2
View File
@@ -12,9 +12,9 @@ import '../core/transport/sender.dart';
import '../core/utils/logger.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'dart:io';
import 'package:timezone/data/latest_all.dart' as tz;
import 'package:flutter_timezone/flutter_timezone.dart';
import 'package:timezone/data/latest_all.dart' as tz;
import 'dart:io';
enum SessionState { disconnected, connecting, connected, online }
@@ -239,6 +239,19 @@ class Api {
_dispatcher.clearPending();
}
Future<void> reconnectAndLogin() async {
await connect();
if (_sessionState == SessionState.online && _onReconnectCallback != null) {
_onReconnectCallback!();
}
}
void Function()? _onReconnectCallback;
void setReconnectCallback(void Function() callback) {
_onReconnectCallback = callback;
}
void _startPinging() {
_pingTimer?.cancel();
_pingTimer = Timer.periodic(ServerConfig.pingInterval, (_) {
+7 -5
View File
@@ -151,11 +151,13 @@ class MessagesModule {
text: m['text'] as String?,
time: (m['time'] as int?) ?? 0,
status: m['status'] as String?,
payload: m
.cast<
String,
dynamic
>(), // Сохраняем весь пакет для гибкости (аттачи и т.д.)
payload: m.cast<String, dynamic>(),
);
}
Future<void> sendMessage(int accountId, int chatId, String text) async {
final payload = {'chatId': chatId, 'text': text};
await _api.sendRequest(Opcode.msgSend, payload);
}
}