Pinned Chats
This commit is contained in:
parent
6e1a83ae4e
commit
6a7d45b6fc
9 changed files with 176 additions and 27 deletions
|
@ -2490,6 +2490,9 @@ export class ConversationModel extends window.Backbone.Model<
|
|||
const after = this.get('isArchived');
|
||||
|
||||
if (Boolean(before) !== Boolean(after)) {
|
||||
if (after) {
|
||||
this.unpin();
|
||||
}
|
||||
this.captureChange();
|
||||
}
|
||||
}
|
||||
|
@ -3686,6 +3689,49 @@ export class ConversationModel extends window.Backbone.Model<
|
|||
// eslint-disable-next-line no-useless-return
|
||||
return;
|
||||
}
|
||||
|
||||
pin(): void {
|
||||
const pinnedConversationIds = new Set(
|
||||
window.storage.get<Array<string>>('pinnedConversationIds', [])
|
||||
);
|
||||
|
||||
this.set('isPinned', true);
|
||||
this.set('pinIndex', pinnedConversationIds.size);
|
||||
window.Signal.Data.updateConversation(this.attributes);
|
||||
|
||||
if (this.get('isArchived')) {
|
||||
this.setArchived(false);
|
||||
}
|
||||
|
||||
pinnedConversationIds.add(this.id);
|
||||
|
||||
this.writePinnedConversations([...pinnedConversationIds]);
|
||||
}
|
||||
|
||||
unpin(): void {
|
||||
const pinnedConversationIds = new Set(
|
||||
window.storage.get<Array<string>>('pinnedConversationIds', [])
|
||||
);
|
||||
|
||||
this.set('isPinned', false);
|
||||
this.set('pinIndex', undefined);
|
||||
window.Signal.Data.updateConversation(this.attributes);
|
||||
|
||||
pinnedConversationIds.delete(this.id);
|
||||
|
||||
this.writePinnedConversations([...pinnedConversationIds]);
|
||||
}
|
||||
|
||||
writePinnedConversations(pinnedConversationIds: Array<string>): void {
|
||||
window.storage.put('pinnedConversationIds', pinnedConversationIds);
|
||||
|
||||
const myId = window.ConversationController.getOurConversationId();
|
||||
const me = window.ConversationController.get(myId);
|
||||
|
||||
if (me) {
|
||||
me.captureChange();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.Whisper.Conversation = ConversationModel;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue