@@ -8,6 +8,7 @@ import '../generated/l10n/zulip_localizations.dart';
88import '../log.dart' ;
99import '../model/actions.dart' ;
1010import '../model/localizations.dart' ;
11+ import '../model/settings.dart' ;
1112import '../model/store.dart' ;
1213import '../notifications/open.dart' ;
1314import 'about_zulip.dart' ;
@@ -254,6 +255,7 @@ class _ZulipAppState extends State<ZulipApp> with WidgetsBindingObserver {
254255 if (widget.navigatorObservers != null )
255256 ...widget.navigatorObservers! ,
256257 _PreventEmptyStack (),
258+ _UpdateLastVisitedAccount (GlobalStoreWidget .settingsOf (context)),
257259 ],
258260 builder: (BuildContext context, Widget ? child) {
259261 if (! ZulipApp .ready.value) {
@@ -305,6 +307,20 @@ class _PreventEmptyStack extends NavigatorObserver {
305307 }
306308}
307309
310+ class _UpdateLastVisitedAccount extends NavigatorObserver {
311+ _UpdateLastVisitedAccount (this .globalSettings);
312+
313+ final GlobalSettingsStore globalSettings;
314+
315+ @override
316+ void didChangeTop (Route <void > topRoute, Route <void >? previousTopRoute) {
317+ final old = globalSettings.getInt (IntGlobalSetting .lastVisitedAccountId);
318+ if (topRoute case AccountPageRouteMixin (accountId: var new_) when new_ != old) {
319+ globalSettings.setInt (IntGlobalSetting .lastVisitedAccountId, new_);
320+ }
321+ }
322+ }
323+
308324class ChooseAccountPage extends StatelessWidget {
309325 const ChooseAccountPage ({super .key});
310326
@@ -337,7 +353,13 @@ class ChooseAccountPage extends StatelessWidget {
337353 if (await dialog.result == true ) {
338354 if (! context.mounted) return ;
339355 // TODO error handling if db write fails?
340- unawaited (logOutAccount (GlobalStoreWidget .of (context), accountId));
356+ unawaited (Future (() async {
357+ if (! context.mounted) return ;
358+ await logOutAccount (GlobalStoreWidget .of (context), accountId);
359+ if (! context.mounted) return ;
360+ await removeLastVisitedAccountIfNecessary (
361+ GlobalStoreWidget .of (context), accountId);
362+ }));
341363 }
342364 },
343365 child: Text (zulipLocalizations.chooseAccountPageLogOutButton)),
0 commit comments