forked from firka/student-legacy
set user to last selected one
This commit is contained in:
parent
d3e5fc99ea
commit
7de3d211bb
@ -1,3 +1,4 @@
|
||||
import 'package:filcnaplo/models/settings.dart';
|
||||
import 'package:filcnaplo/models/user.dart';
|
||||
import 'package:filcnaplo_kreta_api/models/student.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
@ -18,8 +19,13 @@ class UserProvider with ChangeNotifier {
|
||||
String? get nickname => user?.nickname;
|
||||
String? get displayName => user?.displayName;
|
||||
|
||||
final SettingsProvider _settings;
|
||||
|
||||
UserProvider({required SettingsProvider settings}) : _settings = settings;
|
||||
|
||||
void setUser(String userId) {
|
||||
_selectedUserId = userId;
|
||||
_settings.update(lastAccountId: userId);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
|
@ -52,9 +52,7 @@ class App extends StatelessWidget {
|
||||
final UserProvider user;
|
||||
final DatabaseProvider database;
|
||||
|
||||
App({Key? key, required this.database, required this.settings, required this.user}) : super(key: key) {
|
||||
if (user.getUsers().isNotEmpty) user.setUser(user.getUsers().first.id);
|
||||
}
|
||||
const App({Key? key, required this.database, required this.settings, required this.user}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
@ -16,7 +16,7 @@ const settingsDB = DatabaseStruct("settings", {
|
||||
"vibration_strength": int, "ab_weeks": int, "swap_ab_weeks": int,
|
||||
"notifications": int, "notifications_bitfield": int, "notification_poll_interval": int, // notifications
|
||||
"x_filc_id": String, "graph_class_avg": int, "presentation_mode": int, "bell_delay": int, "bell_delay_enabled": int,
|
||||
"grade_opening_fun": int, "icon_pack": String, "premium_scopes": String, "premium_token": String,
|
||||
"grade_opening_fun": int, "icon_pack": String, "premium_scopes": String, "premium_token": String, "last_account_id": String,
|
||||
});
|
||||
const usersDB = DatabaseStruct("users", {
|
||||
"id": String, "name": String, "username": String, "password": String, "institute_code": String, "student": String, "role": int,
|
||||
|
@ -29,12 +29,18 @@ class DatabaseQuery {
|
||||
return settings;
|
||||
}
|
||||
|
||||
Future<UserProvider> getUsers() async {
|
||||
var userProvider = UserProvider();
|
||||
Future<UserProvider> getUsers(SettingsProvider settings) async {
|
||||
var userProvider = UserProvider(settings: settings);
|
||||
List<Map> usersMap = await db.query("users");
|
||||
for (var user in usersMap) {
|
||||
userProvider.addUser(User.fromMap(user));
|
||||
}
|
||||
if (userProvider.getUsers().map((e) => e.id).contains(settings.lastAccountId)) {
|
||||
userProvider.setUser(settings.lastAccountId);
|
||||
} else {
|
||||
userProvider.setUser(userProvider.getUsers().first.id);
|
||||
settings.update(lastAccountId: userProvider.id);
|
||||
}
|
||||
return userProvider;
|
||||
}
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ class Startup {
|
||||
await db.close();
|
||||
await database.init();
|
||||
settings = await database.query.getSettings(database);
|
||||
user = await database.query.getUsers();
|
||||
user = await database.query.getUsers(settings);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -64,6 +64,7 @@ class SettingsProvider extends ChangeNotifier {
|
||||
Color _customHighlightColor;
|
||||
List<String> _premiumScopes;
|
||||
String _premiumAccessToken;
|
||||
String _lastAccountId;
|
||||
|
||||
SettingsProvider({
|
||||
DatabaseProvider? database,
|
||||
@ -97,6 +98,7 @@ class SettingsProvider extends ChangeNotifier {
|
||||
required Color customHighlightColor,
|
||||
required List<String> premiumScopes,
|
||||
required String premiumAccessToken,
|
||||
required String lastAccountId,
|
||||
}) : _database = database,
|
||||
_language = language,
|
||||
_startPage = startPage,
|
||||
@ -127,7 +129,8 @@ class SettingsProvider extends ChangeNotifier {
|
||||
_customBackgroundColor = customBackgroundColor,
|
||||
_customHighlightColor = customHighlightColor,
|
||||
_premiumScopes = premiumScopes,
|
||||
_premiumAccessToken = premiumAccessToken;
|
||||
_premiumAccessToken = premiumAccessToken,
|
||||
_lastAccountId = lastAccountId;
|
||||
|
||||
factory SettingsProvider.fromMap(Map map, {required DatabaseProvider database}) {
|
||||
Map<String, Object?>? configMap;
|
||||
@ -176,6 +179,7 @@ class SettingsProvider extends ChangeNotifier {
|
||||
customHighlightColor: Color(map["custom_highlight_color"]),
|
||||
premiumScopes: jsonDecode(map["premium_scopes"]).cast<String>(),
|
||||
premiumAccessToken: map["premium_token"],
|
||||
lastAccountId: map["last_account_id"],
|
||||
);
|
||||
}
|
||||
|
||||
@ -214,6 +218,7 @@ class SettingsProvider extends ChangeNotifier {
|
||||
"custom_highlight_color": _customHighlightColor.value,
|
||||
"premium_scopes": jsonEncode(_premiumScopes),
|
||||
"premium_token": _premiumAccessToken,
|
||||
"last_account_id": _lastAccountId,
|
||||
};
|
||||
}
|
||||
|
||||
@ -256,6 +261,7 @@ class SettingsProvider extends ChangeNotifier {
|
||||
customHighlightColor: const Color(0xff222222),
|
||||
premiumScopes: [],
|
||||
premiumAccessToken: "",
|
||||
lastAccountId: "",
|
||||
);
|
||||
}
|
||||
|
||||
@ -290,6 +296,7 @@ class SettingsProvider extends ChangeNotifier {
|
||||
Color? get customHighlightColor => _customHighlightColor;
|
||||
List<String> get premiumScopes => _premiumScopes;
|
||||
String get premiumAccessToken => _premiumAccessToken;
|
||||
String get lastAccountId => _lastAccountId;
|
||||
|
||||
Future<void> update({
|
||||
bool store = true,
|
||||
@ -323,6 +330,7 @@ class SettingsProvider extends ChangeNotifier {
|
||||
Color? customHighlightColor,
|
||||
List<String>? premiumScopes,
|
||||
String? premiumAccessToken,
|
||||
String? lastAccountId,
|
||||
}) async {
|
||||
if (language != null && language != _language) _language = language;
|
||||
if (startPage != null && startPage != _startPage) _startPage = startPage;
|
||||
@ -356,6 +364,7 @@ class SettingsProvider extends ChangeNotifier {
|
||||
if (customHighlightColor != null && customHighlightColor != _customHighlightColor) _customHighlightColor = customHighlightColor;
|
||||
if (premiumScopes != null && premiumScopes != _premiumScopes) _premiumScopes = premiumScopes;
|
||||
if (premiumAccessToken != null && premiumAccessToken != _premiumAccessToken) _premiumAccessToken = premiumAccessToken;
|
||||
if (lastAccountId != null && lastAccountId != _lastAccountId) _lastAccountId = lastAccountId;
|
||||
|
||||
if (store) await _database?.store.storeSettings(this);
|
||||
notifyListeners();
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 5faf290b649604f35dc8741cb90f24030ba5f31c
|
||||
Subproject commit 19d78b7caa89d96d0508f42859c8a137f6c992f7
|
@ -1 +1 @@
|
||||
Subproject commit 40999bf9987bb42b998ca5c96f02bc7f8ba6239f
|
||||
Subproject commit 156d55df632ea28bf19c191cde07f56a24c44427
|
Loading…
x
Reference in New Issue
Block a user