diff --git a/src/sync/incremental.js b/src/sync.js similarity index 77% rename from src/sync/incremental.js rename to src/sync.js index 96c14f12..1cf755bd 100644 --- a/src/sync/incremental.js +++ b/src/sync.js @@ -1,10 +1,20 @@ -import {parseRooms} from "./common"; -import {RequestAbortError} from "../network"; -import {HomeServerError} from "../error"; +import {RequestAbortError} from "./network.js"; +import {HomeServerError, StorageError} from "./error.js"; const INCREMENTAL_TIMEOUT = 30; -export class IncrementalSync { +function parseRooms(responseSections, roomMapper) { + return ["join", "invite", "leave"].map(membership => { + const membershipSection = responseSections[membership]; + const results = Object.entries(membershipSection).map(([roomId, roomResponse]) => { + const room = roomMapper(roomId, membership); + return room.processInitialSync(roomResponse); + }); + return results; + }).reduce((allResults, sectionResults) => allResults.concat(sectionResults), []); +} + +export class Sync { constructor(network, session, storage) { this._network = network; this._session = session; diff --git a/src/sync/common.js b/src/sync/common.js deleted file mode 100644 index 0e411e71..00000000 --- a/src/sync/common.js +++ /dev/null @@ -1,10 +0,0 @@ -export function parseRooms(responseSections, roomMapper) { - return ["join", "invite", "leave"].map(membership => { - const membershipSection = responseSections[membership]; - const results = Object.entries(membershipSection).map(([roomId, roomResponse]) => { - const room = roomMapper(roomId, membership); - return room.processInitialSync(roomResponse); - }); - return results; - }).reduce((allResults, sectionResults) => allResults.concat(sectionResults), []); -} \ No newline at end of file diff --git a/src/sync/initial.js b/src/sync/initial.js deleted file mode 100644 index 2a2b26a0..00000000 --- a/src/sync/initial.js +++ /dev/null @@ -1,19 +0,0 @@ -import {parseRooms} from "./common"; - -// TODO make abortable -export async function initialSync(network, session) { - const response = await network.sync().response(); - const rooms = await createRooms(response.rooms, session); - const sessionData = {syncToken: response.next_batch}; - const accountData = response.account_data; - await session.applySync(rooms, response.next_batch, response.account_data); -} - -function createRooms(responseSections, session) { - const roomPromises = parseRooms(responseSections, (roomId, roomResponse, membership) => { - const room = await session.createRoom(roomId); - await room.initialSync(roomResponse, membership); - return room; - }); - return Promise.all(roomPromises); -}