chore(#26): apply dart format to green CI format check

CI's `dart format --set-exit-if-changed .` step is repo-wide. My A/B/C
commit hand-wrote the .catchError blocks without running the formatter,
and 2 settings views carried pre-existing format drift from #28. dart
format reflows all three (whitespace only, identical logic):

- lib/connector/meshcore_connector.dart   (this PR's blocks)
- lib/screens/settings/app_settings_view.dart      (pre-existing, #28)
- lib/screens/settings/message_settings_view.dart  (pre-existing, #28)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
pull/66/head
Strycher 1 month ago
parent afc2f7ba3d
commit 7027612768

@ -4687,46 +4687,48 @@ class MeshCoreConnector extends ChangeNotifier {
if (settings.notificationsEnabled && settings.notifyOnNewMessage) { if (settings.notificationsEnabled && settings.notifyOnNewMessage) {
final msg = message; // capture for closure final msg = message; // capture for closure
final c = contact; // capture contact reference final c = contact; // capture contact reference
unawaited(() async { unawaited(
final translationResult = await translateContactMessage( () async {
msg.senderKeyHex, final translationResult = await translateContactMessage(
msg, msg.senderKeyHex,
); msg,
if (c?.type == advTypeChat) {
final resolvedText =
(translationResult != null &&
translationResult.status ==
MessageTranslationStatus.completed &&
translationResult.translatedText.trim().isNotEmpty)
? translationResult.translatedText.trim()
: msg.text.trim();
await _notificationService.showMessageNotification(
contactName: c?.name ?? 'Unknown',
message: resolvedText,
contactId: msg.senderKeyHex,
badgeCount: getTotalUnreadCount(),
); );
} else if (c?.type == advTypeRoom) { if (c?.type == advTypeChat) {
final resolvedText = final resolvedText =
(translationResult != null && (translationResult != null &&
translationResult.status == translationResult.status ==
MessageTranslationStatus.completed && MessageTranslationStatus.completed &&
translationResult.translatedText.trim().isNotEmpty) translationResult.translatedText.trim().isNotEmpty)
? translationResult.translatedText.trim() ? translationResult.translatedText.trim()
: msg.text.trim(); : msg.text.trim();
await _notificationService.showMessageNotification( await _notificationService.showMessageNotification(
contactName: c?.name ?? 'Unknown Room', contactName: c?.name ?? 'Unknown',
message: resolvedText, message: resolvedText,
contactId: msg.senderKeyHex, contactId: msg.senderKeyHex,
badgeCount: getTotalUnreadCount(), badgeCount: getTotalUnreadCount(),
);
} else if (c?.type == advTypeRoom) {
final resolvedText =
(translationResult != null &&
translationResult.status ==
MessageTranslationStatus.completed &&
translationResult.translatedText.trim().isNotEmpty)
? translationResult.translatedText.trim()
: msg.text.trim();
await _notificationService.showMessageNotification(
contactName: c?.name ?? 'Unknown Room',
message: resolvedText,
contactId: msg.senderKeyHex,
badgeCount: getTotalUnreadCount(),
);
}
}().catchError((Object e) {
_appDebugLogService?.error(
'Failed to translate/notify incoming message: $e',
tag: 'Notification',
); );
} }),
}().catchError((Object e) { );
_appDebugLogService?.error(
'Failed to translate/notify incoming message: $e',
tag: 'Notification',
);
}));
} }
} }
_handleQueuedMessageReceived(); _handleQueuedMessageReceived();
@ -5021,20 +5023,22 @@ class MeshCoreConnector extends ChangeNotifier {
translationResult.translatedText.trim().isNotEmpty) translationResult.translatedText.trim().isNotEmpty)
? translationResult.translatedText.trim() ? translationResult.translatedText.trim()
: message.text.trim(); : message.text.trim();
unawaited(() async { unawaited(
await _notificationService.showChannelMessageNotification( () async {
channelName: label, await _notificationService.showChannelMessageNotification(
senderName: message.senderName, channelName: label,
message: resolvedText, senderName: message.senderName,
channelIndex: message.channelIndex, message: resolvedText,
badgeCount: getTotalUnreadCount(), channelIndex: message.channelIndex,
); badgeCount: getTotalUnreadCount(),
}().catchError((Object e) { );
_appDebugLogService?.error( }().catchError((Object e) {
'Failed to notify channel message: $e', _appDebugLogService?.error(
tag: 'Notification', 'Failed to notify channel message: $e',
); tag: 'Notification',
})); );
}),
);
} }
void _handleIncomingChannelMessage(Uint8List frame) async { void _handleIncomingChannelMessage(Uint8List frame) async {
@ -5065,18 +5069,23 @@ class MeshCoreConnector extends ChangeNotifier {
notifyListeners(); notifyListeners();
if (isNew && !message.isOutgoing) { if (isNew && !message.isOutgoing) {
final msg = message; // capture for closure final msg = message; // capture for closure
unawaited(() async { unawaited(
final translationResult = await translateChannelMessage( () async {
msg.channelIndex!, final translationResult = await translateChannelMessage(
msg, msg.channelIndex!,
); msg,
_maybeNotifyChannelMessage(msg, translationResult: translationResult); );
}().catchError((Object e) { _maybeNotifyChannelMessage(
_appDebugLogService?.error( msg,
'Failed to translate/notify channel message: $e', translationResult: translationResult,
tag: 'Notification', );
); }().catchError((Object e) {
})); _appDebugLogService?.error(
'Failed to translate/notify channel message: $e',
tag: 'Notification',
);
}),
);
} }
_handleQueuedMessageReceived(); _handleQueuedMessageReceived();
} else if (_isSyncingQueuedMessages) { } else if (_isSyncingQueuedMessages) {
@ -5156,25 +5165,27 @@ class MeshCoreConnector extends ChangeNotifier {
notifyListeners(); notifyListeners();
if (isNew) { if (isNew) {
// Run translation + notification asynchronously to avoid blocking // Run translation + notification asynchronously to avoid blocking
unawaited(() async { unawaited(
final translationResult = await translateChannelMessage( () async {
channel.index, final translationResult = await translateChannelMessage(
message, channel.index,
); message,
final label = channel.name.isEmpty );
? 'Channel ${channel.index}' final label = channel.name.isEmpty
: channel.name; ? 'Channel ${channel.index}'
_maybeNotifyChannelMessage( : channel.name;
message, _maybeNotifyChannelMessage(
channelName: label, message,
translationResult: translationResult, channelName: label,
); translationResult: translationResult,
}().catchError((Object e) { );
_appDebugLogService?.error( }().catchError((Object e) {
'Failed to translate/notify channel message (log): $e', _appDebugLogService?.error(
tag: 'Notification', 'Failed to translate/notify channel message (log): $e',
); tag: 'Notification',
})); );
}),
);
} }
return; return;
} catch (e) { } catch (e) {

@ -107,7 +107,10 @@ class AppSettingsView extends StatelessWidget {
), ),
value: settingsService.settings.enableMessageTracing, value: settingsService.settings.enableMessageTracing,
onChanged: (value) { onChanged: (value) {
persistSetting(context, () => settingsService.setEnableMessageTracing(value)); persistSetting(
context,
() => settingsService.setEnableMessageTracing(value),
);
}, },
), ),
], ],
@ -136,7 +139,10 @@ class AppSettingsView extends StatelessWidget {
subtitle: Text(context.l10n.appSettings_showRepeatersSubtitle), subtitle: Text(context.l10n.appSettings_showRepeatersSubtitle),
value: settingsService.settings.mapShowRepeaters, value: settingsService.settings.mapShowRepeaters,
onChanged: (value) { onChanged: (value) {
persistSetting(context, () => settingsService.setMapShowRepeaters(value)); persistSetting(
context,
() => settingsService.setMapShowRepeaters(value),
);
}, },
), ),
const Divider(height: 1), const Divider(height: 1),
@ -146,7 +152,10 @@ class AppSettingsView extends StatelessWidget {
subtitle: Text(context.l10n.appSettings_showChatNodesSubtitle), subtitle: Text(context.l10n.appSettings_showChatNodesSubtitle),
value: settingsService.settings.mapShowChatNodes, value: settingsService.settings.mapShowChatNodes,
onChanged: (value) { onChanged: (value) {
persistSetting(context, () => settingsService.setMapShowChatNodes(value)); persistSetting(
context,
() => settingsService.setMapShowChatNodes(value),
);
}, },
), ),
const Divider(height: 1), const Divider(height: 1),
@ -156,7 +165,10 @@ class AppSettingsView extends StatelessWidget {
subtitle: Text(context.l10n.appSettings_showOtherNodesSubtitle), subtitle: Text(context.l10n.appSettings_showOtherNodesSubtitle),
value: settingsService.settings.mapShowOtherNodes, value: settingsService.settings.mapShowOtherNodes,
onChanged: (value) { onChanged: (value) {
persistSetting(context, () => settingsService.setMapShowOtherNodes(value)); persistSetting(
context,
() => settingsService.setMapShowOtherNodes(value),
);
}, },
), ),
const Divider(height: 1), const Divider(height: 1),
@ -233,7 +245,10 @@ class AppSettingsView extends StatelessWidget {
title: Text(context.l10n.translation_enableTitle), title: Text(context.l10n.translation_enableTitle),
subtitle: Text(context.l10n.translation_enableSubtitle), subtitle: Text(context.l10n.translation_enableSubtitle),
value: settings.translationEnabled, value: settings.translationEnabled,
onChanged: (value) => persistSetting(context, () => settingsService.setTranslationEnabled(value)), onChanged: (value) => persistSetting(
context,
() => settingsService.setTranslationEnabled(value),
),
), ),
const Divider(height: 1), const Divider(height: 1),
SwitchListTile( SwitchListTile(
@ -251,7 +266,11 @@ class AppSettingsView extends StatelessWidget {
), ),
value: settings.autoTranslateIncomingMessages, value: settings.autoTranslateIncomingMessages,
onChanged: translationEnabled onChanged: translationEnabled
? (value) => persistSetting(context, () => settingsService.setAutoTranslateIncomingMessages(value)) ? (value) => persistSetting(
context,
() =>
settingsService.setAutoTranslateIncomingMessages(value),
)
: null, : null,
), ),
const Divider(height: 1), const Divider(height: 1),
@ -270,7 +289,10 @@ class AppSettingsView extends StatelessWidget {
), ),
value: settings.composerTranslationEnabled, value: settings.composerTranslationEnabled,
onChanged: translationEnabled onChanged: translationEnabled
? (value) => persistSetting(context, () => settingsService.setComposerTranslationEnabled(value)) ? (value) => persistSetting(
context,
() => settingsService.setComposerTranslationEnabled(value),
)
: null, : null,
), ),
const Divider(height: 1), const Divider(height: 1),
@ -307,7 +329,12 @@ class AppSettingsView extends StatelessWidget {
onChanged: settings.translationDownloadedModels.isEmpty onChanged: settings.translationDownloadedModels.isEmpty
? null ? null
: (value) { : (value) {
persistSetting(context, () => settingsService.setTranslationSelectedModelId(value)); persistSetting(
context,
() => settingsService.setTranslationSelectedModelId(
value,
),
);
}, },
), ),
), ),
@ -351,7 +378,10 @@ class AppSettingsView extends StatelessWidget {
children: [ children: [
_TranslationUrlField( _TranslationUrlField(
initialValue: settings.translationModelSourceUrl ?? '', initialValue: settings.translationModelSourceUrl ?? '',
onChanged: (value) => persistSetting(context, () => settingsService.setTranslationModelSourceUrl(value)), onChanged: (value) => persistSetting(
context,
() => settingsService.setTranslationModelSourceUrl(value),
),
onDownload: translationService.isBusy onDownload: translationService.isBusy
? null ? null
: (url) => _downloadTranslationModel( : (url) => _downloadTranslationModel(
@ -545,7 +575,10 @@ class AppSettingsView extends StatelessWidget {
groupValue: settingsService.settings.themeMode, groupValue: settingsService.settings.themeMode,
onChanged: (value) { onChanged: (value) {
if (value != null) { if (value != null) {
persistSetting(context, () => settingsService.setThemeMode(value)); persistSetting(
context,
() => settingsService.setThemeMode(value),
);
Navigator.pop(context); Navigator.pop(context);
} }
}, },
@ -600,7 +633,10 @@ class AppSettingsView extends StatelessWidget {
groupValue: settingsService.settings.clockFormat, groupValue: settingsService.settings.clockFormat,
onChanged: (value) { onChanged: (value) {
if (value != null) { if (value != null) {
persistSetting(context, () => settingsService.setClockFormat(value)); persistSetting(
context,
() => settingsService.setClockFormat(value),
);
Navigator.pop(context); Navigator.pop(context);
} }
}, },
@ -698,7 +734,10 @@ class AppSettingsView extends StatelessWidget {
child: RadioGroup<String?>( child: RadioGroup<String?>(
groupValue: settingsService.settings.languageOverride, groupValue: settingsService.settings.languageOverride,
onChanged: (value) { onChanged: (value) {
persistSetting(context, () => settingsService.setLanguageOverride(value)); persistSetting(
context,
() => settingsService.setLanguageOverride(value),
);
Navigator.pop(context); Navigator.pop(context);
}, },
child: Column( child: Column(
@ -806,7 +845,10 @@ class AppSettingsView extends StatelessWidget {
groupValue: settingsService.settings.mapTimeFilterHours, groupValue: settingsService.settings.mapTimeFilterHours,
onChanged: (value) { onChanged: (value) {
if (value != null) { if (value != null) {
persistSetting(context, () => settingsService.setMapTimeFilterHours(value)); persistSetting(
context,
() => settingsService.setMapTimeFilterHours(value),
);
Navigator.pop(context); Navigator.pop(context);
} }
}, },
@ -860,7 +902,10 @@ class AppSettingsView extends StatelessWidget {
groupValue: settingsService.settings.unitSystem, groupValue: settingsService.settings.unitSystem,
onChanged: (value) { onChanged: (value) {
if (value != null) { if (value != null) {
persistSetting(context, () => settingsService.setUnitSystem(value)); persistSetting(
context,
() => settingsService.setUnitSystem(value),
);
Navigator.pop(context); Navigator.pop(context);
} }
}, },
@ -898,7 +943,10 @@ class AppSettingsView extends StatelessWidget {
currentLanguageCode: currentLanguageCode:
settingsService.settings.translationTargetLanguageCode, settingsService.settings.translationTargetLanguageCode,
onLanguageSelected: (value) { onLanguageSelected: (value) {
persistSetting(context, () => settingsService.setTranslationTargetLanguageCode(value)); persistSetting(
context,
() => settingsService.setTranslationTargetLanguageCode(value),
);
Navigator.pop(context); Navigator.pop(context);
}, },
), ),
@ -1045,7 +1093,10 @@ class AppSettingsView extends StatelessWidget {
}).toList(), }).toList(),
onChanged: (value) { onChanged: (value) {
if (value != null) { if (value != null) {
persistSetting(context, () => settingsService.setSelectedCyr2LatProfile(value)); persistSetting(
context,
() => settingsService.setSelectedCyr2LatProfile(value),
);
} }
}, },
), ),

@ -124,7 +124,10 @@ class MessageSettingsView extends StatelessWidget {
value: settingsService.settings.notifyOnNewMessage, value: settingsService.settings.notifyOnNewMessage,
onChanged: settingsService.settings.notificationsEnabled onChanged: settingsService.settings.notificationsEnabled
? (value) { ? (value) {
persistSetting(context, () => settingsService.setNotifyOnNewMessage(value)); persistSetting(
context,
() => settingsService.setNotifyOnNewMessage(value),
);
} }
: null, : null,
), ),
@ -155,7 +158,10 @@ class MessageSettingsView extends StatelessWidget {
value: settingsService.settings.notifyOnNewChannelMessage, value: settingsService.settings.notifyOnNewChannelMessage,
onChanged: settingsService.settings.notificationsEnabled onChanged: settingsService.settings.notificationsEnabled
? (value) { ? (value) {
persistSetting(context, () => settingsService.setNotifyOnNewChannelMessage(value)); persistSetting(
context,
() => settingsService.setNotifyOnNewChannelMessage(value),
);
} }
: null, : null,
), ),
@ -186,7 +192,10 @@ class MessageSettingsView extends StatelessWidget {
value: settingsService.settings.notifyOnNewAdvert, value: settingsService.settings.notifyOnNewAdvert,
onChanged: settingsService.settings.notificationsEnabled onChanged: settingsService.settings.notificationsEnabled
? (value) { ? (value) {
persistSetting(context, () => settingsService.setNotifyOnNewAdvert(value)); persistSetting(
context,
() => settingsService.setNotifyOnNewAdvert(value),
);
} }
: null, : null,
), ),
@ -218,7 +227,10 @@ class MessageSettingsView extends StatelessWidget {
), ),
value: settingsService.settings.clearPathOnMaxRetry, value: settingsService.settings.clearPathOnMaxRetry,
onChanged: (value) { onChanged: (value) {
persistSetting(context, () => settingsService.setClearPathOnMaxRetry(value)); persistSetting(
context,
() => settingsService.setClearPathOnMaxRetry(value),
);
showDismissibleSnackBar( showDismissibleSnackBar(
context, context,
content: Text( content: Text(
@ -236,7 +248,10 @@ class MessageSettingsView extends StatelessWidget {
title: Text(context.l10n.appSettings_jumpToOldestUnread), title: Text(context.l10n.appSettings_jumpToOldestUnread),
subtitle: Text(context.l10n.appSettings_jumpToOldestUnreadSubtitle), subtitle: Text(context.l10n.appSettings_jumpToOldestUnreadSubtitle),
value: settingsService.settings.jumpToOldestUnread, value: settingsService.settings.jumpToOldestUnread,
onChanged: (value) => persistSetting(context, () => settingsService.setJumpToOldestUnread(value)), onChanged: (value) => persistSetting(
context,
() => settingsService.setJumpToOldestUnread(value),
),
), ),
const Divider(height: 1), const Divider(height: 1),
SwitchListTile( SwitchListTile(
@ -245,7 +260,10 @@ class MessageSettingsView extends StatelessWidget {
subtitle: Text(context.l10n.appSettings_autoRouteRotationSubtitle), subtitle: Text(context.l10n.appSettings_autoRouteRotationSubtitle),
value: settingsService.settings.autoRouteRotationEnabled, value: settingsService.settings.autoRouteRotationEnabled,
onChanged: (value) { onChanged: (value) {
persistSetting(context, () => settingsService.setAutoRouteRotationEnabled(value)); persistSetting(
context,
() => settingsService.setAutoRouteRotationEnabled(value),
);
showDismissibleSnackBar( showDismissibleSnackBar(
context, context,
content: Text( content: Text(

Loading…
Cancel
Save

Powered by TurnKey Linux.