Clean up transitional pinned chats

This commit is contained in:
Sidney Keese 2020-11-09 10:30:05 -08:00 committed by GitHub
parent bba9df3149
commit 4d95f83007
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 14 additions and 42 deletions

View File

@ -744,37 +744,4 @@ 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;
}
}

View File

@ -606,9 +606,9 @@ export async function mergeAccountRecord(
conversation => conversation.get('id')
);
const missingStoragePinnedConversationIds = window.ConversationController.getPinnedConversationIds().filter(
id => !modelPinnedConversationIds.includes(id)
);
const missingStoragePinnedConversationIds = window.storage
.get<Array<string>>('pinnedConversationIds', [])
.filter(id => !modelPinnedConversationIds.includes(id));
if (missingStoragePinnedConversationIds.length !== 0) {
window.log.info(

View File

@ -162,7 +162,10 @@ export const _getLeftPaneLists = (
conversations.sort(comparator);
archivedConversations.sort(comparator);
const pinnedConversationIds = window.ConversationController.getPinnedConversationIds();
const pinnedConversationIds = window.storage.get<Array<string>>(
'pinnedConversationIds',
[]
);
pinnedConversations.sort(
(a, b) =>
pinnedConversationIds.indexOf(a.id) - pinnedConversationIds.indexOf(b.id)

View File

@ -18,8 +18,8 @@ describe('state/selectors/conversations', () => {
this.oldWindow = globalAsAny.window;
globalAsAny.window = {};
window.ConversationController = {
getPinnedConversationIds: sinon.stub().returns([]),
window.storage = {
get: sinon.stub().returns([]),
// eslint-disable-next-line @typescript-eslint/no-explicit-any
} as any;
});
@ -173,8 +173,7 @@ describe('state/selectors/conversations', () => {
describe('given pinned conversations', () => {
beforeEach(() => {
(window.ConversationController
.getPinnedConversationIds as sinon.SinonStub).returns([
(window.storage.get as sinon.SinonStub).returns([
'pin1',
'pin2',
'pin3',

View File

@ -425,7 +425,10 @@ Whisper.ConversationView = Whisper.View.extend({
setPin(value: boolean) {
if (value) {
const pinnedConversationIds = window.ConversationController.getPinnedConversationIds();
const pinnedConversationIds = window.storage.get<Array<string>>(
'pinnedConversationIds',
[]
);
if (pinnedConversationIds.length >= 4) {
this.showToast(Whisper.PinnedConversationsFullToast);