subjects rename

This commit is contained in:
ezyyeah
2022-12-31 00:45:10 +01:00
parent 35e5c9cdc6
commit 8bc695b70f
6 changed files with 47 additions and 17 deletions

View File

@@ -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, "last_account_id": String,
"grade_opening_fun": int, "icon_pack": String, "premium_scopes": String, "premium_token": String, "last_account_id": String, "renamed_subjects_enabled": int,
});
// DON'T FORGET TO UPDATE DEFAULT VALUES IN `initDB` MIGRATION OR ELSE PARENTS WILL COMPLAIN ABOUT THEIR CHILDREN MISSING
// YOU'VE BEEN WARNED!!!
@@ -27,6 +27,8 @@ const usersDB = DatabaseStruct("users", {
const userDataDB = DatabaseStruct("user_data", {
"id": String, "grades": String, "timetable": String, "exams": String, "homework": String, "messages": String, "notes": String,
"events": String, "absences": String, "group_averages": String,
// renamed subjects // non kreta data
"renamed_subjects": String,
// "subject_lesson_count": String, // non kreta data
"last_seen_grade": int,
});
@@ -67,6 +69,8 @@ Future<Database> initDB(DatabaseProvider database) async {
await migrateDB(db, struct: userDataDB, defaultValues: {
"grades": "[]", "timetable": "[]", "exams": "[]", "homework": "[]", "messages": "[]", "notes": "[]", "events": "[]", "absences": "[]",
"group_averages": "[]",
// renamed subjects // non kreta data
"renamed_subjects": "{}",
// "subject_lesson_count": "{}", // non kreta data
"last_seen_grade": 0,
});

View File

@@ -52,21 +52,21 @@ class UserDatabaseQuery {
final Database db;
Future<List<Grade>> getGrades({required String userId}) async {
Future<List<Grade>> getGrades({required String userId, required Map<String, String> renamedSubjects}) async {
List<Map> userData = await db.query("user_data", where: "id = ?", whereArgs: [userId]);
if (userData.isEmpty) return [];
String? gradesJson = userData.elementAt(0)["grades"] as String?;
if (gradesJson == null) return [];
List<Grade> grades = (jsonDecode(gradesJson) as List).map((e) => Grade.fromJson(e)).toList();
List<Grade> grades = (jsonDecode(gradesJson) as List).map((e) => Grade.fromJson(e, renamedSubjects: renamedSubjects)).toList();
return grades;
}
Future<List<Lesson>> getLessons({required String userId}) async {
Future<List<Lesson>> getLessons({required String userId, required Map<String, String> renamedSubjects}) async {
List<Map> userData = await db.query("user_data", where: "id = ?", whereArgs: [userId]);
if (userData.isEmpty) return [];
String? lessonsJson = userData.elementAt(0)["timetable"] as String?;
if (lessonsJson == null) return [];
List<Lesson> lessons = (jsonDecode(lessonsJson) as List).map((e) => Lesson.fromJson(e)).toList();
List<Lesson> lessons = (jsonDecode(lessonsJson) as List).map((e) => Lesson.fromJson(e, renamedSubjects: renamedSubjects)).toList();
return lessons;
}
@@ -115,21 +115,21 @@ class UserDatabaseQuery {
return events;
}
Future<List<Absence>> getAbsences({required String userId}) async {
Future<List<Absence>> getAbsences({required String userId, required Map<String, String> renamedSubjects}) async {
List<Map> userData = await db.query("user_data", where: "id = ?", whereArgs: [userId]);
if (userData.isEmpty) return [];
String? absencesJson = userData.elementAt(0)["absences"] as String?;
if (absencesJson == null) return [];
List<Absence> absences = (jsonDecode(absencesJson) as List).map((e) => Absence.fromJson(e)).toList();
List<Absence> absences = (jsonDecode(absencesJson) as List).map((e) => Absence.fromJson(e, renamedSubjects: renamedSubjects)).toList();
return absences;
}
Future<List<GroupAverage>> getGroupAverages({required String userId}) async {
Future<List<GroupAverage>> getGroupAverages({required String userId, required Map<String, String> renamedSubjects}) async {
List<Map> userData = await db.query("user_data", where: "id = ?", whereArgs: [userId]);
if (userData.isEmpty) return [];
String? groupAveragesJson = userData.elementAt(0)["group_averages"] as String?;
if (groupAveragesJson == null) return [];
List<GroupAverage> groupAverages = (jsonDecode(groupAveragesJson) as List).map((e) => GroupAverage.fromJson(e)).toList();
List<GroupAverage> groupAverages = (jsonDecode(groupAveragesJson) as List).map((e) => GroupAverage.fromJson(e, renamedSubjects: renamedSubjects)).toList();
return groupAverages;
}
@@ -150,4 +150,12 @@ class UserDatabaseQuery {
DateTime lastSeen = DateTime.fromMillisecondsSinceEpoch(lastSeenDate);
return lastSeen;
}
Future<Map<String, String>> renamedSubjects({required String userId}) async {
List<Map> userData = await db.query("user_data", where: "id = ?", whereArgs: [userId]);
if (userData.isEmpty) return {};
String? renamedSubjectsJson = userData.elementAt(0)["renamed_subjects"] as String?;
if (renamedSubjectsJson == null) return {};
return (jsonDecode(renamedSubjectsJson) as Map).map((key, value) => MapEntry(key.toString(), value.toString()));
}
}

View File

@@ -100,4 +100,9 @@ class UserDatabaseStore {
int lastSeenDate = date.millisecondsSinceEpoch;
await db.update("user_data", {"last_seen_grade": lastSeenDate}, where: "id = ?", whereArgs: [userId]);
}
Future<void> storeRenamedSubjects(Map<String, String> subjects, {required String userId}) async {
String renamedSubjectsJson = jsonEncode(subjects);
await db.update("user_data", {"renamed_subjects": renamedSubjectsJson}, where: "id = ?", whereArgs: [userId]);
}
}