diff --git a/filcnaplo/lib/database/init.dart b/filcnaplo/lib/database/init.dart index de52114..d00885f 100644 --- a/filcnaplo/lib/database/init.dart +++ b/filcnaplo/lib/database/init.dart @@ -45,7 +45,7 @@ const usersDB = DatabaseStruct("users", { }); const userDataDB = DatabaseStruct("user_data", { "id": String, "grades": String, "timetable": String, "exams": String, - "homework": String, "messages": String, "notes": String, + "homework": String, "messages": String, "recipients": String, "notes": String, "events": String, "absences": String, "group_averages": String, // renamed subjects // non kreta data "renamed_subjects": String, @@ -101,7 +101,8 @@ Future initDB(DatabaseProvider database) async { ); await migrateDB(db, struct: userDataDB, defaultValues: { "grades": "[]", "timetable": "[]", "exams": "[]", "homework": "[]", - "messages": "[]", "notes": "[]", "events": "[]", "absences": "[]", + "messages": "[]", "recipients": "[]", "notes": "[]", "events": "[]", + "absences": "[]", "group_averages": "[]", // renamed subjects // non kreta data "renamed_subjects": "{}", diff --git a/filcnaplo/lib/database/query.dart b/filcnaplo/lib/database/query.dart index fb3094c..9115e41 100644 --- a/filcnaplo/lib/database/query.dart +++ b/filcnaplo/lib/database/query.dart @@ -122,6 +122,19 @@ class UserDatabaseQuery { return messages; } + Future> getRecipients({required String userId}) async { + List userData = + await db.query("user_data", where: "id = ?", whereArgs: [userId]); + if (userData.isEmpty) return []; + String? recipientsJson = userData.elementAt(0)["recipients"] as String?; + if (recipientsJson == null) return []; + List recipients = (jsonDecode(recipientsJson) as List) + .map((e) => + SendRecipient.fromJson(e, SendRecipientType.fromJson(e['tipus']))) + .toList(); + return recipients; + } + Future> getNotes({required String userId}) async { List userData = await db.query("user_data", where: "id = ?", whereArgs: [userId]); diff --git a/filcnaplo/lib/database/store.dart b/filcnaplo/lib/database/store.dart index 185462d..e31adf9 100644 --- a/filcnaplo/lib/database/store.dart +++ b/filcnaplo/lib/database/store.dart @@ -86,6 +86,13 @@ class UserDatabaseStore { where: "id = ?", whereArgs: [userId]); } + Future storeRecipients(List recipients, + {required String userId}) async { + String recipientsJson = jsonEncode(recipients.map((e) => e.json).toList()); + await db.update("user_data", {"recipients": recipientsJson}, + where: "id = ?", whereArgs: [userId]); + } + Future storeNotes(List notes, {required String userId}) async { String notesJson = jsonEncode(notes.map((e) => e.json).toList()); await db.update("user_data", {"notes": notesJson}, diff --git a/filcnaplo_kreta_api/lib/providers/message_provider.dart b/filcnaplo_kreta_api/lib/providers/message_provider.dart index 2d9c64b..ace46d6 100644 --- a/filcnaplo_kreta_api/lib/providers/message_provider.dart +++ b/filcnaplo_kreta_api/lib/providers/message_provider.dart @@ -155,6 +155,21 @@ class MessageProvider with ChangeNotifier { print(recipients); print(recipients.first.json); } + + storeRecipients(recipients); + } + + // store recipients + Future storeRecipients(List recipients) async { + User? user = Provider.of(_context, listen: false).user; + if (user == null) throw "Cannot store Recipients for User null"; + + String userId = user.id; + await Provider.of(_context, listen: false) + .userStore + .storeMessages(_messages, userId: userId); + + notifyListeners(); } // send message