Merge branch 'roomlist-enhance-onlyLeftLists' into 'master'
[RoomList] Enhance onlyLeft lists and add more tests. See merge request famedly/famedlysdk!21
This commit is contained in:
commit
968b95e5c3
|
@ -78,9 +78,10 @@ class RoomList {
|
|||
if (rooms[j].id == chatUpdate.id) break;
|
||||
}
|
||||
final bool found = (j < rooms.length - 1 && rooms[j].id == chatUpdate.id);
|
||||
final bool isLeftRoom = chatUpdate.membership == "leave";
|
||||
|
||||
// Does the chat already exist in the list rooms?
|
||||
if (!found && chatUpdate.membership != "leave") {
|
||||
if (!found && ((!onlyLeft && !isLeftRoom) || (onlyLeft && isLeftRoom))) {
|
||||
num position = chatUpdate.membership == "invite" ? 0 : j;
|
||||
// Add the new chat to the list
|
||||
Room newRoom = Room(
|
||||
|
@ -93,8 +94,9 @@ class RoomList {
|
|||
rooms.insert(position, newRoom);
|
||||
if (onInsert != null) onInsert(position);
|
||||
}
|
||||
// If the membership is "leave" then remove the item and stop here
|
||||
else if (found && chatUpdate.membership == "leave") {
|
||||
// If the membership is "leave" or not "leave" but onlyLeft=true then remove the item and stop here
|
||||
else if (found &&
|
||||
((!onlyLeft && isLeftRoom) || (onlyLeft && !isLeftRoom))) {
|
||||
rooms.removeAt(j);
|
||||
if (onRemove != null) onRemove(j);
|
||||
}
|
||||
|
|
|
@ -168,5 +168,54 @@ void main() {
|
|||
expect(roomList.rooms[0].lastMessage, "Testcase 2");
|
||||
expect(roomList.rooms[0].timeCreated, now);
|
||||
});
|
||||
|
||||
test("onlyLeft", () async {
|
||||
final Client client = Client("testclient");
|
||||
client.homeserver = "https://testserver.abc";
|
||||
|
||||
int updateCount = 0;
|
||||
List<int> insertList = [];
|
||||
List<int> removeList = [];
|
||||
|
||||
RoomList roomList = RoomList(
|
||||
client: client,
|
||||
onlyLeft: true,
|
||||
rooms: [],
|
||||
onUpdate: () {
|
||||
updateCount++;
|
||||
},
|
||||
onInsert: (int insertID) {
|
||||
insertList.add(insertID);
|
||||
},
|
||||
onRemove: (int removeID) {
|
||||
insertList.add(removeID);
|
||||
});
|
||||
|
||||
client.connection.onRoomUpdate.add(RoomUpdate(
|
||||
id: "1",
|
||||
membership: "join",
|
||||
notification_count: 2,
|
||||
highlight_count: 1,
|
||||
limitedTimeline: false,
|
||||
prev_batch: "1234",
|
||||
));
|
||||
client.connection.onRoomUpdate.add(RoomUpdate(
|
||||
id: "2",
|
||||
membership: "leave",
|
||||
notification_count: 2,
|
||||
highlight_count: 1,
|
||||
limitedTimeline: false,
|
||||
prev_batch: "1234",
|
||||
));
|
||||
|
||||
await new Future.delayed(new Duration(milliseconds: 50));
|
||||
|
||||
expect(roomList.eventSub != null, true);
|
||||
expect(roomList.roomSub != null, true);
|
||||
expect(roomList.rooms[0].id, "2");
|
||||
expect(updateCount, 2);
|
||||
expect(insertList, [0]);
|
||||
expect(removeList, []);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue