mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-04-20 22:13:48 +00:00
fix: improve message sending logic and handle range download errors in translation service
This commit is contained in:
parent
2b826757cb
commit
01ad8471cc
3 changed files with 13 additions and 15 deletions
|
|
@ -1162,13 +1162,6 @@ class _ChannelChatScreenState extends State<ChannelChatScreen> {
|
|||
}
|
||||
_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 settings = context.read<AppSettingsService>().settings;
|
||||
final translationService = context.read<TranslationService>();
|
||||
|
|
@ -1200,8 +1193,8 @@ class _ChannelChatScreenState extends State<ChannelChatScreen> {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (replyingTo != null) {
|
||||
messageText = '@[${replyingTo.senderName}] $messageText';
|
||||
if (_replyingToMessage != null) {
|
||||
messageText = '@[${_replyingToMessage!.senderName}] $messageText';
|
||||
}
|
||||
|
||||
final maxBytes = maxChannelMessageBytes(connector.selfName);
|
||||
|
|
@ -1212,6 +1205,9 @@ class _ChannelChatScreenState extends State<ChannelChatScreen> {
|
|||
return;
|
||||
}
|
||||
|
||||
_textController.clear();
|
||||
_cancelReply();
|
||||
_textFieldFocusNode.requestFocus();
|
||||
connector.sendChannelMessage(
|
||||
widget.channel,
|
||||
messageText,
|
||||
|
|
|
|||
|
|
@ -642,10 +642,6 @@ class _ChatScreenState extends State<ChatScreen> {
|
|||
}
|
||||
_lastTextSendAt = now;
|
||||
|
||||
// Clear input synchronously to prevent double-send
|
||||
_textController.clear();
|
||||
_textFieldFocusNode.requestFocus();
|
||||
|
||||
final settings = context.read<AppSettingsService>().settings;
|
||||
final translationService = context.read<TranslationService>();
|
||||
var outgoingText = text;
|
||||
|
|
@ -683,6 +679,8 @@ class _ChatScreenState extends State<ChatScreen> {
|
|||
return;
|
||||
}
|
||||
|
||||
_textController.clear();
|
||||
_textFieldFocusNode.requestFocus();
|
||||
connector.sendMessage(
|
||||
_resolveContact(connector),
|
||||
outgoingText,
|
||||
|
|
|
|||
|
|
@ -317,8 +317,12 @@ class TranslationService extends ChangeNotifier {
|
|||
final request = http.Request('GET', uri);
|
||||
request.headers['Range'] = 'bytes=$start-$end';
|
||||
final response = await client.send(request);
|
||||
if (response.statusCode != 206 && response.statusCode != 200) {
|
||||
throw StateError('Range download failed: HTTP ${response.statusCode}');
|
||||
if (response.statusCode != 206) {
|
||||
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);
|
||||
await _fileStore.writeModelBytes(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue