diff --git a/lib/selectors/socket-selectors.js b/lib/selectors/socket-selectors.js --- a/lib/selectors/socket-selectors.js +++ b/lib/selectors/socket-selectors.js @@ -88,53 +88,51 @@ } else if (serverRequest.type === serverRequestTypes.CHECK_STATE) { const query = calendarQuery(calendarActive); - const convertedEntryInfos = - stateSyncSpecs.entries.convertClientToServerInfos( - entryInfos, - query, - ); - - const convertedThreadInfos = - stateSyncSpecs.threads.convertClientToServerInfos( - threadInfos, - query, - ); - - const convertedUserInfos = - stateSyncSpecs.users.convertClientToServerInfos(userInfos, query); - - const convertedCurrentUserInfo = currentUserInfo - ? stateSyncSpecs.currentUser.convertClientToServerInfos( - currentUserInfo, + const convertedInfos = { + [stateSyncSpecs.entries.hashKey]: + stateSyncSpecs.entries.convertClientToServerInfos( + entryInfos, + query, + ), + [stateSyncSpecs.threads.hashKey]: + stateSyncSpecs.threads.convertClientToServerInfos( + threadInfos, query, - ) - : currentUserInfo; + ), + [stateSyncSpecs.users.hashKey]: + stateSyncSpecs.users.convertClientToServerInfos(userInfos, query), + [stateSyncSpecs.currentUser.hashKey]: currentUserInfo + ? stateSyncSpecs.currentUser.convertClientToServerInfos( + currentUserInfo, + query, + ) + : currentUserInfo, + }; const hashResults = {}; for (const key in serverRequest.hashesToCheck) { const expectedHashValue = serverRequest.hashesToCheck[key]; let hashValue; - if (key === 'threadInfos') { - hashValue = hash(convertedThreadInfos); - } else if (key === 'entryInfos') { - hashValue = hash(convertedEntryInfos); - } else if (key === 'userInfos') { - hashValue = hash(convertedUserInfos); - } else if (key === 'currentUserInfo') { - hashValue = hash(convertedCurrentUserInfo); + if (convertedInfos[key]) { + hashValue = hash(convertedInfos[key]); } else if (key.startsWith('threadInfo|')) { const [, threadID] = key.split('|'); - hashValue = hash(convertedThreadInfos[threadID]); + hashValue = hash( + convertedInfos[stateSyncSpecs.threads.hashKey][threadID], + ); } else if (key.startsWith('entryInfo|')) { const [, entryID] = key.split('|'); - let rawEntryInfo = convertedEntryInfos[entryID]; + let rawEntryInfo = + convertedInfos[stateSyncSpecs.entries.hashKey][entryID]; if (rawEntryInfo) { rawEntryInfo = serverEntryInfo(rawEntryInfo); } hashValue = hash(rawEntryInfo); } else if (key.startsWith('userInfo|')) { const [, userID] = key.split('|'); - hashValue = hash(convertedUserInfos[userID]); + hashValue = hash( + convertedInfos[stateSyncSpecs.users.hashKey][userID], + ); } else { continue; } @@ -143,7 +141,9 @@ const { failUnmentioned } = serverRequest; if (failUnmentioned && failUnmentioned.threadInfos) { - for (const threadID in convertedThreadInfos) { + for (const threadID in convertedInfos[ + stateSyncSpecs.threads.hashKey + ]) { const key = `threadInfo|${threadID}`; const hashResult = hashResults[key]; if (hashResult === null || hashResult === undefined) { @@ -152,7 +152,9 @@ } } if (failUnmentioned && failUnmentioned.entryInfos) { - for (const entryID in convertedEntryInfos) { + for (const entryID in convertedInfos[ + stateSyncSpecs.entries.hashKey + ]) { const key = `entryInfo|${entryID}`; const hashResult = hashResults[key]; if (hashResult === null || hashResult === undefined) { @@ -161,7 +163,7 @@ } } if (failUnmentioned && failUnmentioned.userInfos) { - for (const userID in convertedUserInfos) { + for (const userID in convertedInfos[stateSyncSpecs.users.hashKey]) { const key = `userInfo|${userID}`; const hashResult = hashResults[key]; if (hashResult === null || hashResult === undefined) {