44 lines
1.3 KiB
TypeScript
44 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);
|
|
}
|
|
};
|