Change Phone Number notifications

This commit is contained in:
Fedor Indutny 2021-08-05 16:34:49 -07:00 committed by GitHub
parent 4b82ac387b
commit a001882d58
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 277 additions and 39 deletions

View file

@ -95,6 +95,7 @@ import {
ContactSyncEvent,
GroupEvent,
GroupSyncEvent,
EnvelopeEvent,
} from './messageReceiverEvents';
// TODO: remove once we move away from ArrayBuffers
@ -459,6 +460,11 @@ export default class MessageReceiver
handler: (ev: GroupSyncEvent) => void
): void;
public addEventListener(
name: 'envelope',
handler: (ev: EnvelopeEvent) => void
): void;
public addEventListener(name: string, handler: EventHandler): void {
return super.addEventListener(name, handler);
}
@ -981,8 +987,6 @@ export default class MessageReceiver
if (this.stoppingProcessing) {
return;
}
// No decryption is required for delivery receipts, so the decrypted field of
// the Unprocessed model will never be set
if (envelope.content) {
await this.innerHandleContentMessage(envelope, plaintext);

View file

@ -5,7 +5,11 @@
import { PublicKey } from '@signalapp/signal-client';
import { SignalService as Proto } from '../protobuf';
import { ProcessedDataMessage, ProcessedSent } from './Types.d';
import {
ProcessedEnvelope,
ProcessedDataMessage,
ProcessedSent,
} from './Types.d';
import type {
ModifiedContactDetails,
ModifiedGroupDetails,
@ -136,6 +140,12 @@ export class GroupSyncEvent extends Event {
}
}
export class EnvelopeEvent extends Event {
constructor(public readonly envelope: ProcessedEnvelope) {
super('envelope');
}
}
//
// Confirmable events below
//

View file

@ -3,6 +3,7 @@
import { WebAPICredentials } from '../Types.d';
import { strictAssert } from '../../util/assert';
import { StorageInterface } from '../../types/Storage.d';
import Helpers from '../Helpers';
@ -27,6 +28,25 @@ export class User {
window.log.info('storage.user: uuid and device id changed');
}
public async setNumber(number: string): Promise<void> {
if (this.getNumber() === number) {
return;
}
const deviceId = this.getDeviceId();
strictAssert(
deviceId !== undefined,
'Cannot update device number without knowing device id'
);
window.log.info('storage.user: number changed');
await this.storage.put('number_id', `${number}.${deviceId}`);
// Notify redux about phone number change
window.Whisper.events.trigger('userChanged');
}
public getNumber(): string | undefined {
const numberId = this.storage.get('number_id');
if (numberId === undefined) return undefined;