mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-07-12 11:52:07 +10:00
fix: improve message sending logic and handle range download errors in translation service
This commit is contained in:
@@ -1162,13 +1162,6 @@ class _ChannelChatScreenState extends State<ChannelChatScreen> {
|
|||||||
}
|
}
|
||||||
_lastChannelSendAt = now;
|
_lastChannelSendAt = now;
|
||||||
|
|
||||||
// Capture reply state before clearing, then clear input synchronously
|
|
||||||
// to prevent double-send during async translation.
|
|
||||||
final replyingTo = _replyingToMessage;
|
|
||||||
_textController.clear();
|
|
||||||
_cancelReply();
|
|
||||||
_textFieldFocusNode.requestFocus();
|
|
||||||
|
|
||||||
final connector = context.read<MeshCoreConnector>();
|
final connector = context.read<MeshCoreConnector>();
|
||||||
final settings = context.read<AppSettingsService>().settings;
|
final settings = context.read<AppSettingsService>().settings;
|
||||||
final translationService = context.read<TranslationService>();
|
final translationService = context.read<TranslationService>();
|
||||||
@@ -1200,8 +1193,8 @@ class _ChannelChatScreenState extends State<ChannelChatScreen> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (replyingTo != null) {
|
if (_replyingToMessage != null) {
|
||||||
messageText = '@[${replyingTo.senderName}] $messageText';
|
messageText = '@[${_replyingToMessage!.senderName}] $messageText';
|
||||||
}
|
}
|
||||||
|
|
||||||
final maxBytes = maxChannelMessageBytes(connector.selfName);
|
final maxBytes = maxChannelMessageBytes(connector.selfName);
|
||||||
@@ -1212,6 +1205,9 @@ class _ChannelChatScreenState extends State<ChannelChatScreen> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_textController.clear();
|
||||||
|
_cancelReply();
|
||||||
|
_textFieldFocusNode.requestFocus();
|
||||||
connector.sendChannelMessage(
|
connector.sendChannelMessage(
|
||||||
widget.channel,
|
widget.channel,
|
||||||
messageText,
|
messageText,
|
||||||
|
|||||||
@@ -642,10 +642,6 @@ class _ChatScreenState extends State<ChatScreen> {
|
|||||||
}
|
}
|
||||||
_lastTextSendAt = now;
|
_lastTextSendAt = now;
|
||||||
|
|
||||||
// Clear input synchronously to prevent double-send
|
|
||||||
_textController.clear();
|
|
||||||
_textFieldFocusNode.requestFocus();
|
|
||||||
|
|
||||||
final settings = context.read<AppSettingsService>().settings;
|
final settings = context.read<AppSettingsService>().settings;
|
||||||
final translationService = context.read<TranslationService>();
|
final translationService = context.read<TranslationService>();
|
||||||
var outgoingText = text;
|
var outgoingText = text;
|
||||||
@@ -683,6 +679,8 @@ class _ChatScreenState extends State<ChatScreen> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_textController.clear();
|
||||||
|
_textFieldFocusNode.requestFocus();
|
||||||
connector.sendMessage(
|
connector.sendMessage(
|
||||||
_resolveContact(connector),
|
_resolveContact(connector),
|
||||||
outgoingText,
|
outgoingText,
|
||||||
|
|||||||
@@ -317,8 +317,12 @@ class TranslationService extends ChangeNotifier {
|
|||||||
final request = http.Request('GET', uri);
|
final request = http.Request('GET', uri);
|
||||||
request.headers['Range'] = 'bytes=$start-$end';
|
request.headers['Range'] = 'bytes=$start-$end';
|
||||||
final response = await client.send(request);
|
final response = await client.send(request);
|
||||||
if (response.statusCode != 206 && response.statusCode != 200) {
|
if (response.statusCode != 206) {
|
||||||
throw StateError('Range download failed: HTTP ${response.statusCode}');
|
await response.stream.drain<void>();
|
||||||
|
throw StateError(
|
||||||
|
'Range download failed: HTTP ${response.statusCode}'
|
||||||
|
'${response.statusCode == 200 ? ' (server ignored Range header)' : ''}',
|
||||||
|
);
|
||||||
}
|
}
|
||||||
final trackedStream = _trackDownloadProgress(response.stream);
|
final trackedStream = _trackDownloadProgress(response.stream);
|
||||||
await _fileStore.writeModelBytes(
|
await _fileStore.writeModelBytes(
|
||||||
|
|||||||
Reference in New Issue
Block a user