diff --git a/firka/assets/icons/group.svg b/firka/assets/icons/group.svg
new file mode 100644
index 0000000..0d8a748
--- /dev/null
+++ b/firka/assets/icons/group.svg
@@ -0,0 +1,4 @@
+
diff --git a/firka/lib/l10n b/firka/lib/l10n
index cd74419..2d47545 160000
--- a/firka/lib/l10n
+++ b/firka/lib/l10n
@@ -1 +1 @@
-Subproject commit cd7441937ff7be0c9da19b1ae1123f0114667d05
+Subproject commit 2d4754563d1e88031fa182d66d5c219a1712021a
diff --git a/firka/lib/ui/phone/screens/settings/settings_screen.dart b/firka/lib/ui/phone/screens/settings/settings_screen.dart
index 1cb1a4b..120396a 100644
--- a/firka/lib/ui/phone/screens/settings/settings_screen.dart
+++ b/firka/lib/ui/phone/screens/settings/settings_screen.dart
@@ -3,14 +3,17 @@ import 'dart:io';
import 'package:dart_jsonwebtoken/dart_jsonwebtoken.dart';
import 'package:firka/helpers/db/models/app_settings_model.dart';
+import 'package:firka/helpers/db/models/token_model.dart';
import 'package:firka/helpers/image_preloader.dart';
import 'package:firka/helpers/ui/firka_button.dart';
import 'package:firka/helpers/ui/firka_card.dart';
import 'package:firka/main.dart';
import 'package:firka/ui/model/style.dart';
+import 'package:firka/ui/phone/screens/login/login_screen.dart';
import 'package:firka/ui/widget/firka_icon.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
+import 'package:isar/isar.dart';
import 'package:majesticons_flutter/majesticons_flutter.dart';
import 'package:path/path.dart' as p;
import 'package:share_plus/share_plus.dart';
@@ -592,6 +595,50 @@ class _SettingsScreenState extends FirkaState {
);
},
));
+ widgets.add(SizedBox(height: 20));
+ widgets.add(GestureDetector(
+ child: FirkaCard(left: [
+ Row(
+ children: [
+ FirkaIconWidget(
+ FirkaIconType.icons,
+ "group",
+ color: appStyle.colors.accent,
+ ),
+ SizedBox(width: 8),
+ Text(
+ widget.data.l10n.s_acc_logout,
+ style: appStyle.fonts.B_16R
+ .apply(color: appStyle.colors.textPrimary),
+ ),
+ ],
+ )
+ ]),
+ onTap: () async {
+ final active = widget.data.client.model.studentIdNorm!;
+
+ await widget.data.isar.writeTxn(() async {
+ await widget.data.isar.tokenModels.delete(active);
+
+ item.accountIndex = 0;
+ await item.save(widget.data.isar.appSettingsModels);
+ });
+
+ final accounts =
+ await widget.data.isar.tokenModels.where().findAll();
+
+ if (accounts.isEmpty) {
+ Navigator.of(context).pushAndRemoveUntil(
+ MaterialPageRoute(
+ builder: (context) => LoginScreen(widget.data)),
+ (route) => false,
+ );
+ } else {
+ widget.data.tokens = accounts;
+ runApp(InitializationScreen());
+ }
+ },
+ ));
continue;
}
if (item is SettingsLogs) {