Files
discord-decomp/modules/contact_sync/native/ContactSyncUtils.tsx
T
2026-11-01 12:12:55 +02:00

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);
}