firka: fix logout button to refresh app like login

This commit is contained in:
2026-02-28 13:42:34 +01:00
parent 022915378e
commit 1e7dceb995

View File

@@ -22,7 +22,7 @@ import 'package:url_launcher/url_launcher_string.dart';
import 'package:firka/data/widget.dart';
import 'package:firka/core/firka_bundle.dart';
import 'package:firka/app/initialization_screen.dart';
import 'package:firka/app/initialization.dart';
import 'package:firka/core/state/firka_state.dart';
import 'package:firka/core/settings.dart';
import 'package:firka/services/live_activity_service.dart';
@@ -884,7 +884,11 @@ class _SettingsScreenState extends FirkaState<SettingsScreen> {
}
}
runApp(InitializationScreen());
await initializeApp();
if (!mounted) return;
final nav = Navigator.of(context);
if (nav.canPop()) nav.pop();
appRouter?.go('/home');
}
},
),
@@ -939,6 +943,7 @@ class _SettingsScreenState extends FirkaState<SettingsScreen> {
],
),
onTap: () async {
try {
if (Platform.isIOS) {
await LiveActivityService.onUserLogout();
await WidgetCacheHelper.clearIOSWidgets();
@@ -985,8 +990,6 @@ class _SettingsScreenState extends FirkaState<SettingsScreen> {
}
initData.client.clearReauthFlag();
}
if (!mounted) return;
context.go('/login');
} else {
if (Platform.isIOS) {
final nextToken = accounts.first;
@@ -1027,7 +1030,25 @@ class _SettingsScreenState extends FirkaState<SettingsScreen> {
}
widget.data.tokens = accounts;
runApp(InitializationScreen());
}
await initializeApp();
if (!mounted) return;
final nav = Navigator.of(context);
if (nav.canPop()) nav.pop();
if (accounts.isEmpty) {
appRouter?.go('/login');
} else {
appRouter?.go('/home');
}
} catch (e, st) {
logger.shout('[Settings] Logout failed: $e', e, st);
if (mounted) {
final nav = Navigator.of(context);
if (nav.canPop()) nav.pop();
}
appRouter?.go('/login');
}
},
),