Signal-Desktop/ts/util/phoneNumberSharingMode.ts

45 lines
1.3 KiB
TypeScript

// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { ConversationAttributesType } from '../model-types.d';
import { makeEnumParser } from './enum';
import { isInSystemContacts } from './isInSystemContacts';
import { missingCaseError } from './missingCaseError';
import { isDirectConversation, isMe } from './whatTypeOfConversation';
// These strings are saved to disk, so be careful when changing them.
export enum PhoneNumberSharingMode {
Everybody = 'Everybody',
ContactsOnly = 'ContactsOnly',
Nobody = 'Nobody',
}
export const parsePhoneNumberSharingMode = makeEnumParser(
PhoneNumberSharingMode,
PhoneNumberSharingMode.Everybody
);
export const shouldSharePhoneNumberWith = (
conversation: ConversationAttributesType
): boolean => {
if (!isDirectConversation(conversation) || isMe(conversation)) {
return false;
}
const phoneNumberSharingMode = parsePhoneNumberSharingMode(
window.storage.get('phoneNumberSharingMode')
);
switch (phoneNumberSharingMode) {
case PhoneNumberSharingMode.Everybody:
return true;
case PhoneNumberSharingMode.ContactsOnly:
return isInSystemContacts(conversation);
case PhoneNumberSharingMode.Nobody:
return false;
default:
throw missingCaseError(phoneNumberSharingMode);
}
};