202 lines
6.6 KiB
TypeScript
202 lines
6.6 KiB
TypeScript
// 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);
|
|
}
|