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

252 lines
7.2 KiB
TypeScript

// Metro module 6582 (f6583).
import _slicedToArray from "../../../_bundle/_slicedToArray";
import { useState, useCallback } from "react";
import { NativeModules } from "react-native";
import { getOfficialAlternateIcons, getLimitedAlternateIcons, getDefaultIcon } from "./AppIconConstants";
import { AnalyticEvents, UserSettingsSections } from "../../../Constants";
import { PremiumTypes } from "../../premium/PremiumConstants";
import Logger from "../../debug/Logger";
import { isAndroid } from "../../../utils/PlatformUtils";
import * as _Module6610 from "../../../_bundle/Module6610";
import { FreemiumAppIconIds } from "../AppIconTypes";
import useMountEffect from "../../../hooks/useMountEffect";
import Dispatcher from "../../../Dispatcher";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
import ToastActionCreators from "../../toast/native/ToastActionCreators";
import { intl, t } from "../../../intl/index.native";
import { openUserSettings } from "../../user_settings/core/native/openUserSettings";
import { isMetaQuest } from "../../device/MetaQuestUtils.android";
import { HermesBuiltin } from "../../../_hermes/prelude";
function $mk78850($env) {
return async () => {
let env25938 = {
$parent: $env
};
env25938[2] = 0;
env25938[3] = 0;
let env29804;
const r20 = env25938.$parent;
env25938[1] = r20;
const r10 = env29804 = {};
env25938[0] = r10;
env29804[0] = void 0;
const r29 = await (0, r20.$parent[14])();
const r37 = env25938[0];
const r38 = env25938[1];
r37[0] = r29;
(0, r38[0])(r37[0]);
};
}
function $mk78851($env) {
return () => {
const r1 = $env;
const r5 = r1[1];
r5();
const r6 = $env.$parent;
(0, r6[1])(r6[2][12]).subscribe("APP_ICON_UPDATED", r5);
return $mk105276(r1);
};
}
function $mk105276($env) {
return () => {
const r1 = $env.$parent;
(0, r1[1])(r1[2][12]).unsubscribe("APP_ICON_UPDATED", $env[1]);
};
}
function $mk115009($env) {
return (a0) => $env[0].includes(a0.id);
}
function $mk115010($env) {
return (a0) => $env[0].includes(a0.id);
}
let c4237_12, c4237_13;
let env4237 = {};
export async function fetchCurrentAppIcon() {
let DEFAULT, id;
let c25937_2;
let c25937_3 = 0;
let c29803_0;
try {
c25937_3 = 1;
id = (await (c4237_13 == null ? void 0 : c4237_13.getCurrentIcon())).id;
c25937_3 = 0;
} catch ($e) {
const r27 = $e;
let r8 = r27;
c25937_2 = r27;
if (c25937_3 !== 0) {
while (true) {
try {
const r59 = c25937_2;
c25937_3 = 0;
c29803_0 = r59;
c4237_12.warn(`Error fetching current app icon: ${c29803_0}`);
DEFAULT = FreemiumAppIconIds.DEFAULT;
} catch (r55) {
r8 = r55;
c25937_2 = r55;
if (c25937_3 === 0) {
break;
}
continue;
}
return DEFAULT;
}
}
throw r8;
}
return id;
}
c4237_12 = new Logger("AppIconUtils");
const r50 = isAndroid() ? _Module6610.default : NativeModules.DCDIconManager;
export function useCurrentAppIcon() {
let env15813;
const r3 = env15813 = {
$parent: env4237
};
const r15 = _slicedToArray(useState(FreemiumAppIconIds.DEFAULT), 2);
const r16 = r15[0];
env15813[0] = r15[1];
env15813[1] = useCallback($mk78850(r3), []);
useMountEffect($mk78851(r3));
return r16;
}
c4237_13 = r50;
export async function setAppIcon(c25939_0, c25939_1) {
let c25939_4;
let c25939_5 = 0;
let c29805_0, c29805_1, c29805_2;
L14: {
try {
c29805_0 = c25939_0;
c29805_1 = c25939_1;
c25939_5 = 1;
await (c4237_13 == null ? void 0 : c4237_13.setIcon(c25939_0));
Dispatcher.dispatch({
type: "APP_ICON_UPDATED"
});
AnalyticsUtils.track(AnalyticEvents.APP_ICON_UPDATED, {
icon_id: c29805_0,
user_premium_tier: c29805_1,
icon_premium_tier: c29805_0 !== FreemiumAppIconIds.DEFAULT ? PremiumTypes.TIER_2 : null
});
c25939_5 = 0;
} catch ($e) {
const r32 = $e;
let r8 = r32;
c25939_4 = r32;
if (c25939_5 !== 0) {
while (true) {
try {
const r91 = c25939_4;
c25939_5 = 0;
c29805_2 = r91;
ToastActionCreators.open({
key: "APP_ICON_LOGS_ERROR_MESSAGE_GENERIC",
content: intl.string(t["c76eo/"])
});
c4237_12.warn(`Error changing users app icon: ${c29805_2}`);
break L14;
} catch (r87) {
r8 = r87;
c25939_4 = r87;
if (c25939_5 === 0) {
break;
}
}
}
}
throw r8;
}
}
}
export function useAppIcons() {
let env15815;
const r4 = env15815 = {
$parent: env4237
};
const r18 = _slicedToArray(useState(FreemiumAppIconIds.DEFAULT), 2);
const currentAppIcon = r18[0];
env15815[0] = r18[1];
env15815[1] = useCallback($mk78850(r4), []);
useMountEffect($mk78851(r4));
const [officialAppIcons, setState] = useState([]);
const [limitedTimeAppIcons, setState2] = useState([]);
const callback = useCallback(async () => {
let c25940_0, c25940_1, c25940_2, c25940_3;
let c25940_4 = 0;
const r14 = void 0;
L12: {
try {
let env29806;
c25940_2 = r14;
const r35 = env29806 = {};
c25940_1 = r35;
env29806[0] = void 0;
env29806[1] = void 0;
env29806[2] = void 0;
c25940_4 = 1;
const r43 = await (c4237_13 == null ? void 0 : c4237_13.getAvailableIcons());
const r57 = c25940_1;
env29806[0] = r43.map((item) => item.id);
env29806[1] = (0, getOfficialAlternateIcons)().filter($mk115009(r57));
env29806[2] = (0, getLimitedAlternateIcons)().filter($mk115010(r57));
(0, setState2)(env29806[2]);
c25940_0 = 0;
const r76 = [(0, getDefaultIcon)()];
const r78 = c25940_0 + 1;
c25940_0 = r78;
c25940_0 = HermesBuiltin.arraySpread(r76, env29806[1], r78);
setState(r76);
c25940_4 = 0;
} catch ($e) {
const r33 = $e;
let r7 = r33;
c25940_3 = r33;
if (c25940_4 !== 0) {
while (true) {
try {
const r89 = c25940_3;
c25940_4 = 0;
env29806[3] = r89;
ToastActionCreators.open({
key: "APP_ICON_LOGS_ERROR_MESSAGE_GENERIC",
content: intl.string(t["c76eo/"])
});
c4237_12.warn(`Error fetching available app icons: ${env29806[3]}`);
break L12;
} catch (r85) {
r7 = r85;
c25940_3 = r85;
if (c25940_4 === 0) {
break;
}
}
}
}
throw r7;
}
}
}, []);
useMountEffect(() => {
callback();
Dispatcher.subscribe("APP_ICON_UPDATED", callback);
return () => {
Dispatcher.unsubscribe("APP_ICON_UPDATED", callback);
};
});
return {
officialAppIcons,
limitedTimeAppIcons,
currentAppIcon
};
}
export function navigateToAppIconSettings() {
openUserSettings({
screen: UserSettingsSections.APP_ICONS
});
}
export function isAppIconsSupported() {
return !isMetaQuest();
}