Signal-Desktop/js/keychange_listener.js

35 lines
982 B
JavaScript

// Copyright 2017-2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
/* global Whisper, SignalProtocolStore, ConversationController, _ */
/* eslint-disable more/no-then */
// eslint-disable-next-line func-names
(function () {
window.Whisper = window.Whisper || {};
Whisper.KeyChangeListener = {
init(signalProtocolStore) {
if (!(signalProtocolStore instanceof SignalProtocolStore)) {
throw new Error('KeyChangeListener requires a SignalProtocolStore');
}
signalProtocolStore.on('keychange', async identifier => {
const conversation = await ConversationController.getOrCreateAndWait(
identifier,
'private'
);
conversation.addKeyChange(identifier);
const groups = await ConversationController.getAllGroupsInvolvingId(
conversation.id
);
_.forEach(groups, group => {
group.addKeyChange(identifier);
});
});
},
};
})();