From 6650b8aaefb69d20628b42a56b71ae131706bc7a Mon Sep 17 00:00:00 2001 From: Armand <4831c0@proton.me> Date: Thu, 11 Sep 2025 13:53:58 +0200 Subject: [PATCH] login: automatically switch to new account --- firka/lib/ui/phone/widgets/login_webview.dart | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/firka/lib/ui/phone/widgets/login_webview.dart b/firka/lib/ui/phone/widgets/login_webview.dart index fb9a9ad..53a90ca 100644 --- a/firka/lib/ui/phone/widgets/login_webview.dart +++ b/firka/lib/ui/phone/widgets/login_webview.dart @@ -1,15 +1,15 @@ +import 'package:firka/helpers/db/models/app_settings_model.dart'; import 'package:firka/main.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:isar/isar.dart'; import 'package:webview_flutter/webview_flutter.dart'; -import '../../../helpers/api/client/kreta_client.dart'; import '../../../helpers/api/consts.dart'; import '../../../helpers/api/token_grant.dart'; import '../../../helpers/db/models/token_model.dart'; import '../../../helpers/firka_state.dart'; -import '../screens/home/home_screen.dart'; +import '../../../helpers/settings/setting.dart'; class LoginWebviewWidget extends StatefulWidget { final AppInitialization data; @@ -61,20 +61,32 @@ class _LoginWebviewWidgetState extends FirkaState { var tokenModel = TokenModel.fromResp(resp); + final accountPicker = (widget.data.settings + .group("profile_settings")["e_kreta_account_picker"] + as SettingsKretenAccountPicker); + + var tokenId = 0; + var om = 0; await isar.writeTxn(() async { - await isar.tokenModels.put(tokenModel); + om = await isar.tokenModels.put(tokenModel); }); - widget.data.client = KretaClient(tokenModel, isar); widget.data.tokens = await isar.tokenModels.where().findAll(); + for (var i = 0; i < widget.data.tokens.length; i++) { + if (widget.data.tokens[i].studentId == om) { + tokenId = i; + break; + } + } + + await isar.writeTxn(() async { + accountPicker.accountIndex = tokenId; + await accountPicker.save(widget.data.isar.appSettingsModels); + }); if (!mounted) return NavigationDecision.prevent; - Navigator.of(context).pushAndRemoveUntil( - MaterialPageRoute( - builder: (context) => HomeScreen(widget.data, false)), - (route) => false, // Remove all previous routes - ); + runApp(InitializationScreen()); } catch (ex) { if (kDebugMode) { print("oauthredirect failed: $ex");