Add more helpers to Sync3; track number of joined rooms

This commit is contained in:
Kegan Dougal 2021-12-02 16:27:05 +00:00
parent 057089d96a
commit 104d98d4a4

View file

@ -114,6 +114,7 @@ export class Sync3 {
private ranges: number[][]; private ranges: number[][];
private roomIndexToRoomId: IndexToRoomId; private roomIndexToRoomId: IndexToRoomId;
private roomIdToRoomIndex: RoomIdToIndex; private roomIdToRoomIndex: RoomIdToIndex;
private totalRooms: number;
public error?: any; public error?: any;
public status: ObservableValue<SyncStatus>; public status: ObservableValue<SyncStatus>;
@ -131,6 +132,7 @@ export class Sync3 {
this.ranges = [[0, 4]]; this.ranges = [[0, 4]];
this.roomIndexToRoomId = {}; this.roomIndexToRoomId = {};
this.roomIdToRoomIndex = {}; this.roomIdToRoomIndex = {};
this.totalRooms = 0;
} }
// Start syncing. Probably call this at startup once you have an access_token. // Start syncing. Probably call this at startup once you have an access_token.
@ -155,10 +157,32 @@ export class Sync3 {
} }
} }
count(): number {
return this.totalRooms;
}
indexOfRoom(roomId: string): number {
const index = this.roomIdToRoomIndex[roomId];
if (index === undefined) {
return -1;
}
return index;
}
roomAtIndex(index: number): string | null {
const roomID = this.roomIndexToRoomId[index];
if (roomID === undefined) {
return null;
}
return roomID;
}
// TODO REMOVE
includeRoom(roomId: string): boolean { includeRoom(roomId: string): boolean {
return this.roomIdToRoomIndex[roomId] !== undefined; return this.roomIdToRoomIndex[roomId] !== undefined;
} }
// TODO REMOVE
compare(roomIdA: string, roomIdB: string): number { compare(roomIdA: string, roomIdB: string): number {
if (roomIdA === roomIdB) { if (roomIdA === roomIdB) {
return 0; return 0;
@ -256,6 +280,7 @@ export class Sync3 {
private async processResponse(isFirstSync: boolean, resp: Sync3Response) { private async processResponse(isFirstSync: boolean, resp: Sync3Response) {
console.log(resp); console.log(resp);
let { indexToRoom, updates } = this.processOps(resp.ops); let { indexToRoom, updates } = this.processOps(resp.ops);
this.totalRooms = resp.counts[0];
let rooms: any[] = []; let rooms: any[] = [];
// process the room updates: new rooms, new timeline events, updated room names, that sort of thing. // process the room updates: new rooms, new timeline events, updated room names, that sort of thing.