diff --git a/src/MTXClient.m b/src/MTXClient.m index ca4da16..4f401d2 100644 --- a/src/MTXClient.m +++ b/src/MTXClient.m @@ -423,6 +423,9 @@ validateHomeserver(OFURL *homeserver) - (void)processRoomsSync: (OFDictionary *)rooms { + [self processJoinedRooms: rooms[@"join"]]; + [self processInvitedRooms: rooms[@"invite"]]; + [self processLeftRooms: rooms[@"leave"]]; } - (void)processPresenceSync: (OFDictionary *)presence @@ -436,4 +439,30 @@ validateHomeserver(OFURL *homeserver) - (void)processToDeviceSync: (OFDictionary *)toDevice { } + +- (void)processJoinedRooms: (OFDictionary *)rooms +{ + if (rooms == nil) + return; + + for (OFString *roomID in rooms) + [_storage addJoinedRoom: roomID + forUser: _userID]; +} + +- (void)processInvitedRooms: (OFDictionary *)rooms +{ + if (rooms == nil) + return; +} + +- (void)processLeftRooms: (OFDictionary *)rooms +{ + if (rooms == nil) + return; + + for (OFString *roomID in rooms) + [_storage removeJoinedRoom: roomID + forUser: _userID]; +} @end diff --git a/src/MTXSQLite3Storage.m b/src/MTXSQLite3Storage.m index 81b97c9..1865070 100644 --- a/src/MTXSQLite3Storage.m +++ b/src/MTXSQLite3Storage.m @@ -59,7 +59,7 @@ @"SELECT next_batch FROM next_batch\n" @"WHERE device_id=$device_id"] retain]; _joinedRoomsAddStatement = [[_conn prepareStatement: - @"INSERT INTO joined_rooms (\n" + @"INSERT OR REPLACE INTO joined_rooms (\n" @" user_id, room_id\n" @") VALUES (\n" @" $user_id, $room_id\n"