forked from firka/firka
Send language to Watch and handle locale changes
iOS: Update WatchSessionManager to send the current language via WCSession.default.updateApplicationContext with logging and error handling, in addition to existing transferUserInfo. Dart: await initLang during startup and add dispatcher.onLocaleChanged handler that re-initializes language when the app is in auto-language mode, logs locale changes, and triggers a global UI update.
This commit is contained in:
@@ -242,6 +242,13 @@ class WatchSessionManager: NSObject, WCSessionDelegate {
|
||||
return
|
||||
}
|
||||
|
||||
do {
|
||||
try WCSession.default.updateApplicationContext(["language": languageCode])
|
||||
print("[WatchSessionManager] Language '\(languageCode)' sent to Watch via applicationContext")
|
||||
} catch {
|
||||
print("[WatchSessionManager] Failed to update applicationContext for language: \(error)")
|
||||
}
|
||||
|
||||
WCSession.default.transferUserInfo([
|
||||
"id": "language_update",
|
||||
"language": languageCode
|
||||
|
||||
@@ -190,7 +190,7 @@ void initTheme(AppInitialization data) {
|
||||
|
||||
Future<void> _initData(AppInitialization init) async {
|
||||
await init.settings.load(init.isar.appSettingsModels);
|
||||
initLang(init);
|
||||
await initLang(init);
|
||||
initTheme(init);
|
||||
init.settings = SettingsStore(init.l10n);
|
||||
await init.settings.load(init.isar.appSettingsModels);
|
||||
@@ -202,6 +202,27 @@ Future<void> _initData(AppInitialization init) async {
|
||||
initTheme(init);
|
||||
};
|
||||
|
||||
dispatcher.onLocaleChanged = () {
|
||||
final languageSetting =
|
||||
init.settings.group("settings").subGroup("application")["language"]
|
||||
as SettingsItemsRadio;
|
||||
final isAutoLanguage = languageSetting.activeIndex == 0;
|
||||
if (!isAutoLanguage) {
|
||||
return;
|
||||
}
|
||||
|
||||
final previousLocale = init.l10n.localeName;
|
||||
unawaited(() async {
|
||||
await initLang(init);
|
||||
final nextLocale = init.l10n.localeName;
|
||||
if (previousLocale != nextLocale) {
|
||||
logger.info(
|
||||
"[Init] System locale changed in auto mode: $previousLocale -> $nextLocale");
|
||||
}
|
||||
globalUpdate.update();
|
||||
}());
|
||||
};
|
||||
|
||||
resetOldTimeTableCache(init.isar);
|
||||
resetOldHomeworkCache(init.isar);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user