Merge branch 'notifications-fix-cache-being-unstable' into 'master'

[Store][NotificationsCache] Fixing issues that caused some cache errors

See merge request famedly/famedlysdk!68
This commit is contained in:
Christian 2019-08-19 11:57:56 +00:00
commit 69ad50a88f

View file

@ -55,7 +55,7 @@ class Store {
_init() async { _init() async {
var databasePath = await getDatabasesPath(); var databasePath = await getDatabasesPath();
String path = p.join(databasePath, "FluffyMatrix.db"); String path = p.join(databasePath, "FluffyMatrix.db");
_db = await openDatabase(path, version: 11, _db = await openDatabase(path, version: 12,
onCreate: (Database db, int version) async { onCreate: (Database db, int version) async {
await createTables(db); await createTables(db);
}, onUpgrade: (Database db, int oldVersion, int newVersion) async { }, onUpgrade: (Database db, int oldVersion, int newVersion) async {
@ -665,19 +665,27 @@ class Store {
} }
Future forgetNotification(String roomID) async { Future forgetNotification(String roomID) async {
assert(roomID != "");
await db await db
.rawDelete("DELETE FROM NotificationsCache WHERE chat_id=?", [roomID]); .rawDelete("DELETE FROM NotificationsCache WHERE chat_id=?", [roomID]);
return; return;
} }
Future addNotification(String roomID, String event_id, int uniqueID) async { Future addNotification(String roomID, String event_id, int uniqueID) async {
await db.rawInsert("INSERT INTO NotificationsCache VALUES (?, ?,?)", assert(roomID != "");
assert(event_id != "");
assert(uniqueID != "");
await db.rawInsert(
"INSERT INTO NotificationsCache(id, chat_id, event_id) VALUES (?, ?, ?)",
[uniqueID, roomID, event_id]); [uniqueID, roomID, event_id]);
// Make sure we got the same unique ID everywhere
await db.rawUpdate("UPDATE NotificationsCache SET id=? WHERE chat_id=?", [uniqueID, roomID]);
return; return;
} }
Future<List<Map<String, dynamic>>> getNotificationByRoom( Future<List<Map<String, dynamic>>> getNotificationByRoom(
String room_id) async { String room_id) async {
assert(room_id != "");
List<Map<String, dynamic>> res = await db.rawQuery( List<Map<String, dynamic>> res = await db.rawQuery(
"SELECT * FROM NotificationsCache WHERE chat_id=?", [room_id]); "SELECT * FROM NotificationsCache WHERE chat_id=?", [room_id]);
if (res.length == 0) return null; if (res.length == 0) return null;
@ -766,7 +774,7 @@ class Store {
/// The database scheme for the NotificationsCache class. /// The database scheme for the NotificationsCache class.
"NotificationsCache": 'CREATE TABLE IF NOT EXISTS NotificationsCache(' + "NotificationsCache": 'CREATE TABLE IF NOT EXISTS NotificationsCache(' +
'id int PRIMARY KEY, ' + 'id int, ' +
'chat_id TEXT, ' + // The chat id 'chat_id TEXT, ' + // The chat id
'event_id TEXT, ' + // The matrix id of the Event 'event_id TEXT, ' + // The matrix id of the Event
'UNIQUE(event_id))', 'UNIQUE(event_id))',