исправление отображения ощибок на экране ввода кода из смс

This commit is contained in:
klockky
2026-04-03 19:53:06 +03:00
parent 676c2c715f
commit 543cd8cbce
7 changed files with 182 additions and 15 deletions
+1 -11
View File
@@ -7,13 +7,6 @@ import '../../core/utils/logger.dart';
import 'chats.dart';
import 'contacts.dart';
class ServerException implements Exception {
final String message;
const ServerException(this.message);
@override
String toString() => message;
}
enum AuthRequestType {
startAuth('START_AUTH'),
resend('RESEND'),
@@ -447,10 +440,7 @@ class AccountModule {
void _checkPacketError(Packet packet, String method) {
if (packet.isError) {
final errMsg = packet.payload is Map
? (packet.payload as Map)['message'] ?? packet.payload.toString()
: packet.payload?.toString() ?? 'Неизвестная ошибка';
throw ServerException(errMsg.toString());
throw PacketError(messageFromErrorPayload(packet.payload));
}
}
}
+20
View File
@@ -52,6 +52,26 @@ class Packet {
'Packet(ver=$api cmd=$cmd seq=$seq opcode=$opcode payload=$payload)';
}
class PacketError implements Exception {
final String message;
const PacketError(this.message);
@override
String toString() => message;
}
String messageFromErrorPayload(dynamic payload) {
if (payload is Map) {
for (final key in ['localizedMessage', 'message', 'title']) {
final v = payload[key];
if (v is String && v.trim().isNotEmpty) return v.trim();
}
return 'Неизвестная ошибка';
}
if (payload == null) return 'Неизвестная ошибка';
final s = payload.toString();
return s.isNotEmpty ? s : 'Неизвестная ошибка';
}
/// Упаковка пакета для отправки на сервер
Uint8List packPacket(int opcode, Map<dynamic, dynamic> payload, {int seq = 0}) {
final header = ByteData(headerSize);
+3 -1
View File
@@ -68,7 +68,9 @@ class PacketDispatcher {
}
if (packet.isError) {
completer.completeError(packet);
completer.completeError(
PacketError(messageFromErrorPayload(packet.payload)),
);
} else {
completer.complete(packet);
}
@@ -306,8 +306,9 @@ class _CodeConfirmationScreenState extends State<CodeConfirmationScreen>
_errorMessage!,
style: TextStyle(
color: cs.error,
fontSize: 13,
fontWeight: FontWeight.w400,
fontSize: 14,
fontWeight: FontWeight.w500,
height: 1.35,
),
),
),