Fix a few pinned chat sync issues

This commit is contained in:
Chris Svenningsen 2020-10-10 07:25:17 -07:00 committed by Josh Perez
parent e8664213d3
commit fdc3476106
8 changed files with 205 additions and 20 deletions

View file

@ -732,4 +732,37 @@ export class ConversationController {
return this._initialPromise;
}
getPinnedConversationIds(): Array<string> {
let pinnedConversationIds = window.storage.get<Array<string>>(
'pinnedConversationIds'
);
// If pinnedConversationIds is missing, we're upgrading from
// a previous version and need to backfill storage from pinned
// conversation models.
if (pinnedConversationIds === undefined) {
window.log.info(
'getPinnedConversationIds: no pinned conversations in storage'
);
const modelPinnedConversationIds = this._conversations
.filter(conversation => conversation.get('isPinned'))
// pinIndex is a deprecated field. We now rely on the order of
// the ids in storage, which is synced with the AccountRecord.
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
.sort((a, b) => (a.get('pinIndex') || 0) - (b.get('pinIndex') || 0))
.map(conversation => conversation.get('id'));
window.log.info(
`getPinnedConversationIds: falling back to ${modelPinnedConversationIds.length} pinned models`
);
window.storage.put('pinnedConversationIds', modelPinnedConversationIds);
pinnedConversationIds = modelPinnedConversationIds;
}
return pinnedConversationIds;
}
}