// Metro module 11771 (f11772). import { NativeModules } from "react-native"; import ConnectedAccountsStore from "../../../stores/ConnectedAccountsStore"; import { clearDismissState, deleteStoredContacts, useContactSyncStore } from "./ContactSyncPersistedStore"; import { ContactPermissions, ContactSyncSuggestionsSetting, CONTACT_SYNC_MODAL_KEY } from "./ContactSyncConstants"; import { Endpoints, PlatformTypes, FriendDiscoveryFlags, HelpdeskArticles } from "../../../Constants"; import { isIOS } from "../../../_bundle/Module501"; import TrackedHTTPUtils from "../../../utils/TrackedHTTPUtils"; import { NetworkActionNames } from "../../../_bundle/Module503"; import Dispatcher from "../../../Dispatcher"; import { removeLastUserContactsUpload } from "./ContactSyncManager"; import { ContactSyncEnabled, FriendDiscoverySettings } from "../../user_settings/UserSettings"; import SentryUtils_native from "../../../utils/SentryUtils.native"; import { useStateFromStores } from "../../../_bundle/Module589"; import * as _Module1384 from "../../../_bundle/Module1384"; import HelpdeskUtils from "../../../utils/HelpdeskUtils"; import Linking from "../../../lib/native/Linking"; import ModalActionCreators from "../../../actions/ModalActionCreators"; function $mk116297($env) { return () => Dispatcher.dispatch({ type: "LOAD_FRIEND_SUGGESTIONS_SUCCESS", suggestions: $env[3].friend_suggestions }); } let env8064 = {}; const error = new Error("No contact permissions"); const c8064_16 = error; const error2 = new Error("No phone number"); const c8064_17 = new Error("Failed to fetch contact image"); export { error as ContactSyncPermissionDenied }; export { error2 as ContactSyncFailedUserHasNoPhone }; export { c8064_17 as ContactImageFetchFailed }; export function isContactSyncAvailable() { let r10 = !!isIOS(); if (!r10) { let r14 = NativeModules.DCDContactSyncManager?.isContactSyncSupported; if (r14 == null) { r14 = false; } r10 = r14; } return r10; } export function checkContactPermissions() { let r11 = !!isIOS(); if (!r11) { let r14 = NativeModules.DCDContactSyncManager?.isContactSyncSupported; if (r14 == null) { r14 = false; } r11 = r14; } return r11 ? NativeModules.DCDContactSyncManager.hasContactsPermissions() : Promise.resolve(ContactPermissions.UNAUTHORIZED); } export async function uploadContacts(c27154_0, c27154_1) { let env30443; const r28 = env8064; let c27154_3 = r28; const r10 = env30443 = { $parent: r28 }; let c27154_2 = r10; env30443[1] = void 0; env30443[0] = c27154_0; if (c27154_1 !== void 0) { env30443[1] = c27154_1; env30443[2] = void 0; env30443[3] = void 0; } else { env30443[1] = false; env30443[2] = void 0; env30443[3] = void 0; } await void 0; env30443[2] = JSON.parse(env30443[0]); const r75 = await TrackedHTTPUtils.put({ url: Endpoints.CONNECTION_SYNC_CONTACTS, body: { friend_list_entries: env30443[2], background: env30443[1], allowed_in_suggestions: ContactSyncSuggestionsSetting.ANYONE_WITH_CONTACT_INFO, include_mutual_friends_count: false }, trackedActionData: { event: NetworkActionNames.USER_CONTACTS_SYNC }, rejectWithError: false }); env30443[3] = r75.body; Dispatcher.wait($mk116297(c27154_2)); return env30443[3]; } export function bulkAddFriends(a0, a1) { return TrackedHTTPUtils.post({ url: Endpoints.USER_BULK_RELATIONSHIPS, body: { user_ids: a0, token: a1 }, trackedActionData: { event: NetworkActionNames.USER_BULK_RELATIONSHIPS_UPDATE }, rejectWithError: false }).then((result) => result.body); } export function adminDeleteContactSync() { (0, clearDismissState)(); (0, deleteStoredContacts)(); removeLastUserContactsUpload(); ContactSyncEnabled.updateSetting(false); return TrackedHTTPUtils.delete({ url: Endpoints.CONNECTION(PlatformTypes.CONTACTS, "@me"), oldFormErrors: true, trackedActionData: { event: NetworkActionNames.USER_CONNECTIONS_UPDATE }, rejectWithError: false }); } export function getImageForContactId(c19155_0) { const DCDContactSyncManager = NativeModules.DCDContactSyncManager; return new Promise((c27155_0, c27155_1) => { DCDContactSyncManager.getImageForContactId(c19155_0, (a0, a1) => { if (a0 == null) { c27155_0(a1.replace(/(\r\n|\n|\r)/gm, "")); } else { c27155_1(c8064_17); } }); }); } export function getContacts(c19156_0, r3 = "") { let c19156_1 = r3; const DCDContactSyncManager2 = NativeModules.DCDContactSyncManager; return new Promise((c27156_0, c27156_1) => { DCDContactSyncManager2.syncContacts(c19156_1, c19156_0, (a0, a1, a2) => { let r13; if (a0 == null) { try { r13 = JSON.parse(a1); } catch ($e) { r13 = {}; } const unencryptedName = Object.values(r13).find((item) => item.phone === c19156_0)?.unencryptedName; c27156_0({ names: a1, ownName: unencryptedName ?? null, payload: a2 }); } else { c27156_1(c8064_16); } }); }); } export function getStoredContacts() { let r11; const storedContacts = useContactSyncStore.getState().storedContacts; try { r11 = JSON.parse(storedContacts); } catch ($e) { SentryUtils_native.captureException($e); } return r11; } export function useContactSyncAccount() { return useStateFromStores([ConnectedAccountsStore], () => ConnectedAccountsStore.getLocalAccount(PlatformTypes.CONTACTS)); } export function useContactSyncEnabled() { return useStateFromStores([ConnectedAccountsStore], () => { const localAccount = ConnectedAccountsStore.getLocalAccount(PlatformTypes.CONTACTS); return localAccount != null && localAccount.friendSync && localAccount.type === PlatformTypes.CONTACTS; }); } export function useContactSyncUserIsDiscoverable() { const setting = FriendDiscoverySettings.useSetting(); let phone = _Module1384.hasFlag(setting, FriendDiscoveryFlags.FIND_BY_PHONE); const hasFlag = _Module1384.hasFlag(setting, FriendDiscoveryFlags.FIND_BY_EMAIL); const r20 = { phone, email: hasFlag, any: null }; if (!phone) { phone = hasFlag; } r20.any = phone; return r20; } export function isContactSyncEnabled(a0) { return a0 != null && a0.friendSync && a0.type === PlatformTypes.CONTACTS; } export function getOpenLearnMoreUrl() { return HelpdeskUtils.getArticleURL(HelpdeskArticles.CONTACT_SYNC); } export function handleOpenLearnMoreLink() { Linking.openURL(HelpdeskUtils.getArticleURL(HelpdeskArticles.CONTACT_SYNC)); } export function transitionToAddFriendsLandingPage() { ModalActionCreators.popWithKey(CONTACT_SYNC_MODAL_KEY); }