Improve storage service migration to new field understanding
This commit is contained in:
parent
f9440bf594
commit
2603d53891
3 changed files with 17 additions and 7 deletions
|
@ -21,6 +21,7 @@ import { Address } from './types/Address';
|
||||||
import { QualifiedAddress } from './types/QualifiedAddress';
|
import { QualifiedAddress } from './types/QualifiedAddress';
|
||||||
import * as log from './logging/log';
|
import * as log from './logging/log';
|
||||||
import { sleep } from './util/sleep';
|
import { sleep } from './util/sleep';
|
||||||
|
import { isNotNil } from './util/isNotNil';
|
||||||
|
|
||||||
const MAX_MESSAGE_BODY_LENGTH = 64 * 1024;
|
const MAX_MESSAGE_BODY_LENGTH = 64 * 1024;
|
||||||
|
|
||||||
|
@ -789,9 +790,11 @@ export class ConversationController {
|
||||||
// If it's scoped to a given conversation, it's easy to trigger('change'). There are
|
// If it's scoped to a given conversation, it's easy to trigger('change'). There are
|
||||||
// important values in storage and the storage service which change rendering pretty
|
// important values in storage and the storage service which change rendering pretty
|
||||||
// radically, so this function is necessary to force regeneration of props.
|
// radically, so this function is necessary to force regeneration of props.
|
||||||
async forceRerender(): Promise<void> {
|
async forceRerender(identifiers?: Array<string>): Promise<void> {
|
||||||
let count = 0;
|
let count = 0;
|
||||||
const conversations = this._conversations.models.slice();
|
const conversations = identifiers
|
||||||
|
? identifiers.map(identifier => this.get(identifier)).filter(isNotNil)
|
||||||
|
: this._conversations.models.slice();
|
||||||
log.info(
|
log.info(
|
||||||
`forceRerender: Starting to loop through ${conversations.length} conversations`
|
`forceRerender: Starting to loop through ${conversations.length} conversations`
|
||||||
);
|
);
|
||||||
|
|
|
@ -684,10 +684,8 @@ export async function startApp(): Promise<void> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(window.isBeforeVersion(lastVersion, 'v1.36.0-beta.1') &&
|
window.isBeforeVersion(lastVersion, 'v1.36.0-beta.1') &&
|
||||||
window.isAfterVersion(lastVersion, 'v1.35.0-beta.1')) ||
|
window.isAfterVersion(lastVersion, 'v1.35.0-beta.1')
|
||||||
// 5.30 introduced understanding of new storage service AccountRecord fields
|
|
||||||
window.isBeforeVersion(lastVersion, 'v5.30.0-alpha')
|
|
||||||
) {
|
) {
|
||||||
await window.Signal.Services.eraseAllStorageServiceState();
|
await window.Signal.Services.eraseAllStorageServiceState();
|
||||||
}
|
}
|
||||||
|
|
|
@ -2680,15 +2680,19 @@ export default class MessageReceiver
|
||||||
envelope: ProcessedEnvelope,
|
envelope: ProcessedEnvelope,
|
||||||
blocked: Proto.SyncMessage.IBlocked
|
blocked: Proto.SyncMessage.IBlocked
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
|
const allIdentifiers = [];
|
||||||
let changed = false;
|
let changed = false;
|
||||||
|
|
||||||
if (blocked.numbers) {
|
if (blocked.numbers) {
|
||||||
const previous = this.storage.get('blocked', []);
|
const previous = this.storage.get('blocked', []);
|
||||||
|
|
||||||
log.info('handleBlocked: Blocking these numbers:', blocked.numbers);
|
log.info('handleBlocked: Blocking these numbers:', blocked.numbers);
|
||||||
await this.storage.put('blocked', blocked.numbers);
|
await this.storage.put('blocked', blocked.numbers);
|
||||||
|
|
||||||
if (!areArraysMatchingSets(previous, blocked.numbers)) {
|
if (!areArraysMatchingSets(previous, blocked.numbers)) {
|
||||||
changed = true;
|
changed = true;
|
||||||
|
allIdentifiers.push(...previous);
|
||||||
|
allIdentifiers.push(...blocked.numbers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (blocked.uuids) {
|
if (blocked.uuids) {
|
||||||
|
@ -2701,6 +2705,8 @@ export default class MessageReceiver
|
||||||
|
|
||||||
if (!areArraysMatchingSets(previous, uuids)) {
|
if (!areArraysMatchingSets(previous, uuids)) {
|
||||||
changed = true;
|
changed = true;
|
||||||
|
allIdentifiers.push(...previous);
|
||||||
|
allIdentifiers.push(...blocked.uuids);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2731,6 +2737,8 @@ export default class MessageReceiver
|
||||||
|
|
||||||
if (!areArraysMatchingSets(previous, ids)) {
|
if (!areArraysMatchingSets(previous, ids)) {
|
||||||
changed = true;
|
changed = true;
|
||||||
|
allIdentifiers.push(...previous);
|
||||||
|
allIdentifiers.push(...ids);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2738,7 +2746,8 @@ export default class MessageReceiver
|
||||||
|
|
||||||
if (changed) {
|
if (changed) {
|
||||||
log.info('handleBlocked: Block list changed, forcing re-render.');
|
log.info('handleBlocked: Block list changed, forcing re-render.');
|
||||||
window.ConversationController.forceRerender();
|
const uniqueIdentifiers = Array.from(new Set(allIdentifiers));
|
||||||
|
window.ConversationController.forceRerender(uniqueIdentifiers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue