This commit is contained in:
janisslsm committed 2026-11-01 12:12:55 +02:00
1 parent 1781d25a15
commit 732c0ad767
33051 files changed
+2591613 -3019689

No files matched your search

+45
View File
@@ -0,0 +1,45 @@
// Metro module 6584 (f6585).
const r14 = {
DEFAULT: "AppIcon"
};
const r16 = {
BRAND_DARK: "BrandDarkIcon",
BRAND_INVERTED: "BrandInvertedIcon",
MATTE_LIGHT: "MatteLightIcon",
MATTE_DARK: "MatteDarkIcon",
PASTEL: "PastelIcon",
PIRATE: "PirateIcon",
CAMO: "CamoIcon",
SUNSET: "SunsetIcon",
GALAXY: "GalaxyIcon",
Y2K: "Y2KIcon",
CHERRY_BLOSSOM: "CherryBlossomIcon",
BEANIE: "BeanieIcon",
GAMING: "GamingIcon",
CIRCUIT: "CircuitIcon",
HOLO_WAVES: "HoloWavesIcon",
BLUSH: "BlushIcon",
ANGRY: "AngryIcon",
MANGA: "MangaIcon",
CONTROLLER: "ControllerIcon",
MUSHROOM: "MushroomIcon",
BLURPLE_TWILIGHT: "BlurpleTwilightIcon",
IN_RAINBOWS: "InRainbowsIcon",
COLOR_WAVE: "ColorWaveIcon",
MIDNIGHT_PRISM: "MidnightPrismIcon"
};
const r41 = {
DRIP: "DripIcon",
SLIMY: "SlimyIcon",
ZOMBIE: "ZombieIcon",
CLYDE_STEIN: "ClydeSteinIcon"
};
const r46 = {
...r14,
...r16,
...r41
};
export { r14 as FreemiumAppIconIds };
export { r16 as PremiumAppIconIds };
export { r41 as LimitedTimeAppIconIds };
export { r46 as MasterAppIconIds };
+31
View File
@@ -0,0 +1,31 @@
// Metro module 14486 (f14487).
import { Image as Image2, View } from "react-native";
import { getIconById } from "./AppIconConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import useTheme from "../../../hooks/useTheme";
import { isThemeDark } from "../../../design/shared";
const useStyles = createStyles({
container: {
overflow: "hidden",
borderColor: Module712.colors.BACKGROUND_BASE_LOWEST
},
image: {
resizeMode: "contain",
height: "100%",
width: "100%"
}
});
export default function AppIcon(props) {
const { id, size = 56, style } = props;
const styles = useStyles();
const theme = useTheme();
const iconById = getIconById(id);
return <View style={[styles.container, {
width: size,
height: size,
borderWidth: isThemeDark(theme) ? 0 : 1
}, style]}>
<Image2 style={styles.image} source={iconById.iconSource} />
</View>;
};
@@ -0,0 +1,198 @@
// Metro module 6583 (f6584).
import { PremiumAppIconIds, FreemiumAppIconIds } from "../AppIconTypes";
import Module6585 from "../../../_bundle/Module6585";
import { intl, t } from "../../../intl/index.native";
import Module6586 from "../../../_bundle/Module6586";
import Module6587 from "../../../_bundle/Module6587";
import Module6588 from "../../../_bundle/Module6588";
import Module6589 from "../../../_bundle/Module6589";
import Module6590 from "../../../_bundle/Module6590";
import Module6591 from "../../../_bundle/Module6591";
import Module6592 from "../../../_bundle/Module6592";
import Module6593 from "../../../_bundle/Module6593";
import Module6594 from "../../../_bundle/Module6594";
import Module6595 from "../../../_bundle/Module6595";
import Module6596 from "../../../_bundle/Module6596";
import Module6597 from "../../../_bundle/Module6597";
import Module6598 from "../../../_bundle/Module6598";
import Module6599 from "../../../_bundle/Module6599";
import Module6600 from "../../../_bundle/Module6600";
import Module6601 from "../../../_bundle/Module6601";
import Module6602 from "../../../_bundle/Module6602";
import Module6603 from "../../../_bundle/Module6603";
import Module6604 from "../../../_bundle/Module6604";
import Module6605 from "../../../_bundle/Module6605";
import Module6606 from "../../../_bundle/Module6606";
import Module6607 from "../../../_bundle/Module6607";
import Module6608 from "../../../_bundle/Module6608";
import Module6609 from "../../../_bundle/Module6609";
function $mk78855() {
return (a0) => !(a0.expiresAt != null && Date.now() > a0.expiresAt);
}
function $mk78856() {
return (a0) => !(a0.expiresAt != null && Date.now() > a0.expiresAt);
}
let c4238_3 = [{
id: PremiumAppIconIds.IN_RAINBOWS,
iconSource: Module6586,
isPremium: true,
name: intl.string(t.yxJB9E)
}, {
id: PremiumAppIconIds.MIDNIGHT_PRISM,
iconSource: Module6587,
isPremium: true,
name: intl.string(t.nshUZZ)
}, {
id: PremiumAppIconIds.COLOR_WAVE,
iconSource: Module6588,
isPremium: true,
name: intl.string(t.MWRYqh)
}, {
id: PremiumAppIconIds.BLURPLE_TWILIGHT,
iconSource: Module6589,
isPremium: true,
name: intl.string(t.Mfoe3p)
}, {
id: PremiumAppIconIds.BRAND_INVERTED,
iconSource: Module6590,
isPremium: true,
name: intl.string(t.h6UXSt)
}, {
id: PremiumAppIconIds.BRAND_DARK,
iconSource: Module6591,
name: intl.string(t.gZEUBl),
isPremium: true
}, {
id: PremiumAppIconIds.MATTE_DARK,
iconSource: Module6592,
isPremium: true,
name: intl.string(t.NkshQt)
}, {
id: PremiumAppIconIds.MATTE_LIGHT,
iconSource: Module6593,
name: intl.string(t.G2W302),
isPremium: true
}, {
id: PremiumAppIconIds.PASTEL,
iconSource: Module6594,
isPremium: true,
name: intl.string(t.mTSkLT)
}, {
id: PremiumAppIconIds.PIRATE,
iconSource: Module6595,
isPremium: true,
name: intl.string(t["EgWTY+"])
}, {
id: PremiumAppIconIds.CAMO,
iconSource: Module6596,
isPremium: true,
name: intl.string(t.RSKXOK)
}, {
id: PremiumAppIconIds.SUNSET,
iconSource: Module6597,
isPremium: true,
name: intl.string(t.ixdjPB)
}, {
id: PremiumAppIconIds.GALAXY,
iconSource: Module6598,
isPremium: true,
name: intl.string(t.cb78Ls)
}, {
id: PremiumAppIconIds.Y2K,
iconSource: Module6599,
isPremium: true,
name: intl.string(t["s+KoXO"])
}, {
id: PremiumAppIconIds.CHERRY_BLOSSOM,
iconSource: Module6600,
isPremium: true,
name: intl.string(t["ta/5RB"])
}, {
id: PremiumAppIconIds.BEANIE,
iconSource: Module6601,
isPremium: true,
name: intl.string(t.IoLViw)
}, {
id: PremiumAppIconIds.GAMING,
iconSource: Module6602,
isPremium: true,
name: intl.string(t["2Tf+c4"])
}, {
id: PremiumAppIconIds.CIRCUIT,
iconSource: Module6603,
isPremium: true,
name: intl.string(t.dUpxKb)
}, {
id: PremiumAppIconIds.HOLO_WAVES,
iconSource: Module6604,
isPremium: true,
name: intl.string(t["9mg7g1"])
}, {
id: PremiumAppIconIds.BLUSH,
iconSource: Module6605,
isPremium: true,
name: intl.string(t.nmd90m)
}, {
id: PremiumAppIconIds.ANGRY,
iconSource: Module6606,
isPremium: true,
name: intl.string(t["9PUXpM"])
}, {
id: PremiumAppIconIds.MANGA,
iconSource: Module6607,
isPremium: true,
name: intl.string(t.hGBbF8)
}, {
id: PremiumAppIconIds.CONTROLLER,
iconSource: Module6608,
isPremium: true,
name: intl.string(t["4QM2U1"])
}, {
id: PremiumAppIconIds.MUSHROOM,
iconSource: Module6609,
isPremium: true,
name: intl.string(t.gnLLSK)
}];
let c4238_4 = [];
export function getDefaultIcon() {
return {
id: FreemiumAppIconIds.DEFAULT,
iconSource: Module6585,
name: intl.string(t.ANxkLy),
isPremium: false
};
}
export function isIconExpired(a0) {
return a0.expiresAt != null && Date.now() > a0.expiresAt;
}
export function getOfficialAlternateIcons() {
return c4238_3.filter($mk78855());
}
export function getLimitedAlternateIcons() {
return c4238_4.filter($mk78856());
}
export function getIcons() {
return [{
id: FreemiumAppIconIds.DEFAULT,
iconSource: Module6585,
name: intl.string(t.ANxkLy),
isPremium: false
}, ...c4238_3.filter($mk78855()), ...c4238_4.filter($mk78856())];
}
export function getIconById(c15816_0) {
let r40 = [{
id: FreemiumAppIconIds.DEFAULT,
iconSource: Module6585,
name: intl.string(t.ANxkLy),
isPremium: false
}, ...c4238_3.filter($mk78855()), ...c4238_4.filter($mk78856())].find((item) => item.id === c15816_0);
if (r40 == null) {
r40 = {
id: FreemiumAppIconIds.DEFAULT,
iconSource: Module6585,
name: intl.string(t.ANxkLy),
isPremium: false
};
}
return r40;
}
@@ -0,0 +1,84 @@
// Metro module 16133 (f16134).
import UserStore from "../../../stores/UserStore";
import { getIconById } from "./AppIconConstants";
import { AnalyticEvents } from "../../../Constants";
import Logger from "../../debug/Logger";
import { FreemiumAppIconIds } from "../AppIconTypes";
import AutomaticLifecycleManager from "../../../lib/AutomaticLifecycleManager";
import * as _PlatformUtils from "../../../utils/PlatformUtils";
import { fetchCurrentAppIcon, setAppIcon } from "./AppIconUtils";
import PremiumUtils from "../../../utils/PremiumUtils";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
let c11554_7 = new Logger("AppIconPremiumManager");
const DEFAULT = FreemiumAppIconIds.DEFAULT;
let c11554_9 = {
ORPHANED: "orphaned",
PREMIUM_LOST: "premium_lost"
};
class AppIconPremiumManager extends AutomaticLifecycleManager {
actions = {
APP_STATE_UPDATE: (a0) => this.handleAppStateUpdate(a0)
};
handleAppStateUpdate(a0) {
const isIOS = _PlatformUtils.isIOS();
const state = a0.state;
if (isIOS ? state === "active" : state === "background") {
this.validateAndResetIfNeeded();
}
}
async validateAndResetIfNeeded() {
const _this = this;
let premiumType, premiumType2, c28234_3;
let c30958_0, c30958_1, c30958_2;
L25: {
L24: {
c28234_3 = void 0;
c30958_0 = void 0;
c30958_1 = void 0;
c30958_2 = void 0;
c30958_0 = UserStore.getCurrentUser();
c30958_1 = await fetchCurrentAppIcon();
if (c30958_1 === DEFAULT) {
break L25;
}
c30958_2 = (0, getIconById)(c30958_1);
if (c30958_1 !== c30958_2.id) {
c11554_7.info(`Icon ${c30958_1} is no longer available, resetting to default`);
const r75 = c30958_1;
premiumType = c30958_0?.premiumType;
if (premiumType == null) {
premiumType = void 0;
}
_this.resetIcon(r75, premiumType, c11554_9.ORPHANED);
break L24;
}
const canUsePremiumAppIcons = PremiumUtils.canUsePremiumAppIcons(c30958_0);
if (!(canUsePremiumAppIcons ? !canUsePremiumAppIcons : c30958_2.isPremium)) {
break L25;
}
c11554_7.info(`User is not premium, resetting icon ${c30958_1} to default`);
const r108 = c30958_1;
premiumType2 = c30958_0?.premiumType;
if (premiumType2 == null) {
premiumType2 = void 0;
}
_this.resetIcon(r108, premiumType2, c11554_9.PREMIUM_LOST);
break L25;
}
return void 0;
}
}
resetIcon(previous_icon_id, a1, reset_reason) {
setAppIcon(DEFAULT, a1).then(() => {
AnalyticsUtils.track(AnalyticEvents.APP_ICON_AUTO_RESET, {
previous_icon_id,
reset_to_icon_id: DEFAULT,
reset_reason
});
}).catch((error) => {
c11554_7.error("Failed to reset app icon:", error);
});
}
}
const appIconPremiumManager = new AppIconPremiumManager();
export default appIconPremiumManager;
@@ -0,0 +1,41 @@
// Metro module 14489 (f14490).
import { useState } from "react";
import { intl, t } from "../../../../intl/index.native";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { PremiumAppIconIds } from "../../AppIconTypes";
import Module12 from "../../../../_bundle/Module12";
import { useRadioA11yNative } from "../../../../_bundle/Module3907";
import { TableRow } from "../../../../design/components/TableRow/native/TableRow.native";
import AppIcon from "../AppIcon";
import { FormRadio } from "../../../../design/components/Forms/native/FormRadio.native";
let useStyles;
let c10194_6 = [() => intl.string(t["EgWTY+"]), () => intl.string(t.umBn5f), () => intl.string(t.dG1wD1), () => intl.string(t.SesI4S), () => intl.string(t.RnMLvl)];
useStyles = createStyles({
icon: {
borderRadius: Module712.radii.md
}
});
export default function AppIconRow(props) {
let r51;
const { icon, hasNitro, currentAppIcon, showEasterEgg, onSelect, onLongPress: onLongPress2 } = props;
const styles = useStyles();
const { id, isPremium } = icon;
const r29 = id === PremiumAppIconIds.PIRATE ? c10194_6[Module12.random(0, c10194_6.length - 1)]() : icon.name;
L12: {
const [label] = useState(r29);
const selected = currentAppIcon === id;
const radioA11yNative = useRadioA11yNative({
selected
});
const { accessibilityRole, accessibilityState } = radioA11yNative;
if (id === PremiumAppIconIds.BRAND_INVERTED && !showEasterEgg) {
r51 = null;
if (!selected) {
break L12;
}
}
r51 = icon.isHidden ? null : <TableRow key={id} icon={<AppIcon id={id} style={styles.icon} />} label={label} onLongPress={() => onLongPress2(id)} onPress={() => onSelect(id)} accessibilityRole={accessibilityRole} accessibilityState={accessibilityState} trailing={!selected && isPremium ? hasNitro ? <FormRadio selected={selected} /> : null : <FormRadio selected={selected} />} />;
}
return r51;
};
+63
View File
@@ -0,0 +1,63 @@
// Metro module 14488 (f14489).
import { createElement, useState } from "react";
import { View } from "react-native";
import UserStore from "../../../stores/UserStore";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import { FreemiumAppIconIds } from "../AppIconTypes";
import { TableRowGroup } from "../../../design/components/TableRow/native/TableRowGroup.native";
import { intl, t } from "../../../intl/index.native";
import AppIconRow from "./AppIconRow/AppIconRow";
import { useAppIcons } from "./AppIconUtils";
import { useStateFromStores } from "../../../_bundle/Module589";
import * as _PremiumTypeUtils from "../../../utils/PremiumTypeUtils";
import { HermesBuiltin } from "../../../_hermes/prelude";
let useStyles;
const BackwardsCompatibleAppIconRows = function BackwardsCompatibleAppIconRows(props) {
if (props == null) {
HermesBuiltin.throwTypeError("Cannot destructure 'undefined' or 'null'.");
throw new Error("unreachable");
}
let state, setState;
const r3 = HermesBuiltin.copyDataProperties({}, props, void 0);
let c21201_0 = r3;
state = void 0;
setState = void 0;
const onLongPress2 = function onLongPress(a0) {
return a0 === FreemiumAppIconIds.DEFAULT ? setState(true) : null;
};
const styles = useStyles();
[state, setState] = useState(false);
const icons = r3.icons;
return <View style={styles.container}>
<TableRowGroup title={r3.title} accessibilityRole="radiogroup" accessibilityLabel={intl.string(t.N4YDao)} hasIcons>
{icons.map((a0) => createElement(AppIconRow, {
...c21201_0,
key: a0.id,
icon: a0,
showEasterEgg: state,
onLongPress: onLongPress2
}))}
</TableRowGroup>
</View>;
};
useStyles = createStyles({
container: {
padding: 16
},
bottomUpsellPadding: {
paddingBottom: 56
}
});
export default function AppIconRows(props) {
const onSelect = props.onSelect;
const styles = useStyles();
const appIcons = useAppIcons();
const { officialAppIcons, limitedTimeAppIcons, currentAppIcon } = appIcons;
const isPremium = _PremiumTypeUtils.isPremium(useStateFromStores([UserStore], () => UserStore.getCurrentUser()));
const r2 = limitedTimeAppIcons.length > 0 && limitedTimeAppIcons.filter((limitedTimeAppIcon) => !limitedTimeAppIcon.isHidden).length > 0;
return <>
{[r2 ? <BackwardsCompatibleAppIconRows hasNitro={isPremium} icons={limitedTimeAppIcons} currentAppIcon={currentAppIcon} title={intl.string(t.anqaFd)} onSelect={onSelect} /> : null, <View style={isPremium ? !isPremium : styles.bottomUpsellPadding}>
<BackwardsCompatibleAppIconRows hasNitro={isPremium} icons={officialAppIcons} currentAppIcon={currentAppIcon} title={r2 ? intl.string(t.Ipxkog) : void 0} onSelect={onSelect} />
</View>]}
</>;
};
+251
View File
@@ -0,0 +1,251 @@
// 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();
}
@@ -0,0 +1,82 @@
// Metro module 15754 (f15755).
import { useCallback } from "react";
import { Image as Image2, View } from "react-native";
import UserStore from "../../../stores/UserStore";
import { ContentDismissActionType } from "../../dismissible_content/DismissibleContentConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useStateFromStores } from "../../../_bundle/Module589";
import PremiumUtils from "../../../utils/PremiumUtils";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { BottomSheet } from "../../../design/components/Sheet/native/BottomSheet.native";
import Module15755 from "../../../_bundle/Module15755";
import { Icon, IconSizes } from "../../../design/void/native";
import Module9406 from "../../../_bundle/Module9406";
import { Text } from "../../../design/components/Text/native/Text";
import { intl, t } from "../../../intl/index.native";
import { Button } from "../../../design/components/Button/native/Button.native";
import { navigateToAppIconSettings } from "./AppIconUtils";
const useStyles = createStyles({
container: {
padding: Module712.space.PX_16,
paddingBottom: 0
},
info: {
alignItems: "center"
},
image: {
alignSelf: "center",
marginBottom: 20
},
nitroWheel: {
marginRight: 8
},
titleContainer: {
display: "flex",
flexDirection: "row",
alignItems: "center"
},
subtitle: {
marginTop: 8,
textAlign: "center"
},
footer: {
marginTop: 20,
gap: Module712.space.PX_8
}
});
export default function AppIconsCoachmarkActionSheet(props) {
const markAsDismissed = props.markAsDismissed;
const styles = useStyles();
const isPremium = PremiumUtils.isPremium(useStateFromStores([UserStore], () => UserStore.getCurrentUser()));
const callback = useCallback(() => {
ActionSheetActionCreators.hideActionSheet();
if (markAsDismissed != null) {
markAsDismissed(ContentDismissActionType.DISMISS);
}
}, [markAsDismissed]);
return <BottomSheet onDismiss={() => markAsDismissed(ContentDismissActionType.DISMISS)} contentStyles={styles.container}>
<View style={styles.info}>
<Image2 source={Module15755} style={styles.image} />
<View style={styles.titleContainer}>
<Icon source={Module9406} size={IconSizes.MEDIUM} style={styles.nitroWheel} disableColor />
<Text variant="heading-xl/extrabold" color="mobile-text-heading-primary">
{intl.string(t.EfA4Cq)}
</Text>
</View>
<Text variant="text-md/normal" color="text-default" style={styles.subtitle}>
{isPremium ? intl.string(t.IgchKK) : intl.string(t.D0XzaS)}
</Text>
</View>
<View style={styles.footer}>
<Button text={intl.string(t.Pt547C)} onPress={function onPress() {
ActionSheetActionCreators.hideActionSheet();
if (markAsDismissed != null) {
markAsDismissed(ContentDismissActionType.PRIMARY);
}
navigateToAppIconSettings();
}} />
<Button variant="secondary" text={intl.string(t.iSrIIZ)} onPress={callback} />
</View>
</BottomSheet>;
};
@@ -0,0 +1,23 @@
// Metro module 14485 (f14486).
import { getIconById } from "./AppIconConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useCurrentAppIcon } from "./AppIconUtils";
import { FreemiumAppIconIds } from "../AppIconTypes";
import { ClydeIcon } from "../../../design/components/Icon/native/redesign/generated/ClydeIcon";
import AppIcon from "./AppIcon";
const useStyles = createStyles({
icon: {
borderRadius: Module712.radii.round
}
});
export default function SettingsItemAppIcon(props) {
let color = props.color;
if (color === void 0) {
color = Module712.colors.INTERACTIVE_ICON_DEFAULT;
}
const styles = useStyles();
const currentAppIcon = useCurrentAppIcon();
const iconById = getIconById(currentAppIcon);
return currentAppIcon !== FreemiumAppIconIds.DEFAULT && iconById != null ? <AppIcon style={styles.icon} id={currentAppIcon} size={32} /> : <ClydeIcon color={color} />;
};