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

@@ -0,0 +1,9 @@
// Metro module 1417 (f1418).
import { AvatarSizes } from "../../../_bundle/Module1418";
const r14 = {};
r14[AvatarSizes.SIZE_56] = 4;
r14[AvatarSizes.SIZE_80] = 6;
r14[AvatarSizes.SIZE_120] = 8;
export const DECORATION_TO_AVATAR_RATIO = 1.2;
export { r14 as AvatarDecorationBorderSizes };
export const AVATAR_DECORATION_SIZE = 70;
@@ -0,0 +1,102 @@
// Metro module 1852 (f1853).
import { parseSkuIdFromServerData } from "../utils/mappers";
import { isEqual } from "../../../_bundle/Module12";
export function parseAvatarDecorationData(a0) {
if (typeof a0 === "object" && a0 != null) {
const skuId = parseSkuIdFromServerData(a0);
if (skuId == null) {
return null;
}
const r11 = {
skuId
};
if ("asset" in a0 && typeof a0.asset === "string") {
r11.asset = a0.asset;
}
if ("expires_at" in a0 && typeof a0.expires_at === "number") {
r11.expiresAt = a0.expires_at;
}
if ("expiresAt" in a0 && typeof a0.expiresAt === "number") {
r11.expiresAt = a0.expiresAt;
}
return r11;
}
return null;
}
export function isAvatarDecorationExpired(a0) {
return a0?.expiresAt != null && 1000 * a0.expiresAt < Date.now();
}
export function isEqualAvatarDecoration(a0, a1) {
let r51;
if (a0 != null && a1 != null) {
let r7 = null;
if (typeof a0 === "object") {
const r1 = a0 == null;
r7 = null;
if (!r1) {
const skuId = parseSkuIdFromServerData(a0);
const r17 = skuId == null;
r7 = null;
if (!r17) {
const r18 = {
skuId
};
if ("asset" in a0 && typeof a0.asset === "string") {
r18.asset = a0.asset;
}
if ("expires_at" in a0 && typeof a0.expires_at === "number") {
r18.expiresAt = a0.expires_at;
}
const r28 = "expiresAt" in a0 && typeof a0.expiresAt === "number";
r7 = r18;
if (r28) {
r18.expiresAt = a0.expiresAt;
r7 = r18;
}
}
}
}
let r31 = null;
if (typeof a1 === "object") {
const r32 = a1 == null;
r31 = null;
if (!r32) {
const skuId2 = parseSkuIdFromServerData(a1);
const r37 = skuId2 == null;
r31 = null;
if (!r37) {
const r38 = {
skuId: skuId2
};
if ("asset" in a1 && typeof a1.asset === "string") {
r38.asset = a1.asset;
}
if ("expires_at" in a1 && typeof a1.expires_at === "number") {
r38.expiresAt = a1.expires_at;
}
const r48 = "expiresAt" in a1 && typeof a1.expiresAt === "number";
r31 = r38;
if (r48) {
r38.expiresAt = a1.expiresAt;
r31 = r38;
}
}
}
}
r51 = isEqual(r7, r31);
} else {
r51 = a0 === a1;
}
return r51;
}
export function hasGlobalDefaultAvatarDecoration(a0, a1) {
let r1 = a1 != null;
if (r1) {
const avatarDecoration = a0?.avatarDecoration;
r1 = !(avatarDecoration?.expiresAt != null && 1000 * avatarDecoration.expiresAt < Date.now());
}
if (r1) {
r1 = (a0 == null ? void 0 : a0.avatarDecoration?.asset) != null;
}
return r1;
}
@@ -0,0 +1,42 @@
// Metro module 7935 (f7936).
import { DECORATION_TO_AVATAR_RATIO } from "../AvatarDecorationConstants";
import { AVATAR_SIZE_MAP, CutoutType } from "../../../../design/void/native";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
export function getDecorationSizeForAvatarSize(a0) {
return typeof a0 !== "number" ? AVATAR_SIZE_MAP[a0] * DECORATION_TO_AVATAR_RATIO : a0 * DECORATION_TO_AVATAR_RATIO;
}
export function getDecorationCutoutForAvatarCutout(a0, a1) {
let r3 = a0;
if (a0 != null) {
let inset = a0.inset;
if (inset == null) {
inset = 0;
}
const nativeCutouts = a0.nativeCutouts;
r3 = {
direction: a0.direction,
radius: a0.radius,
inset: inset + a1,
imageType: CutoutType.RECTANGULAR,
nativeCutouts: nativeCutouts == null ? void 0 : nativeCutouts.map((nativeCutout) => {
const r3 = nativeCutout.x;
return {
...nativeCutout,
x: r3 + a1,
y: nativeCutout.y + a1
};
})
};
}
return r3;
}
export function openAvatarDecorationActionSheet({ user, guildId, currentAvatarDecoration, isTryItOut, analyticsLocations }) {
ActionSheetActionCreators.hideActionSheet();
ActionSheetActionCreators.openLazy(import("../../../user_profile/native/EditAvatarDecorationActionSheet"), "Edit Avatar Decoration", {
user,
guildId,
currentAvatarDecoration,
isTryItOut,
analyticsLocations
});
}
@@ -0,0 +1,63 @@
// Metro module 7990 (f7991).
import { View } from "react-native";
import AccessibilityStore from "../../../a11y/AccessibilityStore";
import PresenceStore from "../../../../stores/PresenceStore";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { Avatar, AvatarSizes } from "../../../../design/void/native";
import { getAvatarSource } from "../../../profile_customization/native/ProfileCustomizationUtils";
let useStyles;
const GridAvatar = function GridAvatar(props) {
const { user, guildId, size, showStatus, pendingAvatarSrc } = props;
let pendingAvatarDecoration = props.pendingAvatarDecoration;
const styles = useStyles();
const stateFromStores = useStateFromStores([PresenceStore], () => PresenceStore.getStatus(user.id));
const stateFromStores2 = useStateFromStores([AccessibilityStore], () => AccessibilityStore.useReducedMotion);
if (pendingAvatarDecoration === void 0) {
pendingAvatarDecoration = user.avatarDecoration;
}
const r33 = {
avatarDecoration: pendingAvatarDecoration,
status: showStatus ? stateFromStores : void 0,
statusStyle: styles.avatarStatusStyle,
size
};
return <Avatar {...pendingAvatarSrc !== void 0 ? {
source: getAvatarSource(user, guildId, pendingAvatarSrc, stateFromStores2),
...r33
} : {
user,
guildId,
...r33
}} />;
};
useStyles = createStyles({
avatarRow: {
flexDirection: "row",
alignItems: "center",
justifyContent: "space-around"
},
avatarStatusStyle: {
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH
},
gridContainer: {
width: 108,
height: 108,
justifyContent: "space-around",
marginLeft: 28
}
});
export default function AvatarGrid(props) {
const styles = useStyles();
return <View style={styles.gridContainer}>
<View style={styles.avatarRow}>
<GridAvatar size={AvatarSizes.NORMAL} {...props} />
<GridAvatar size={AvatarSizes.NORMAL} showStatus {...props} />
</View>
<View style={styles.avatarRow}>
<GridAvatar size={AvatarSizes.REFRESH_MEDIUM_32} {...props} />
<GridAvatar size={AvatarSizes.REFRESH_MEDIUM_32} showStatus {...props} />
</View>
</View>;
};
@@ -0,0 +1,60 @@
// Metro module 7962 (f7963).
import { memo, useCallback } from "react";
import { View } from "react-native";
import { isAvatarDecorationRecord } from "../../records/AvatarDecorationRecord";
import { AVATAR_DECORATION_SIZE } from "../AvatarDecorationConstants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import { GUTTER_SIZE, ROW_SIZE } from "../../native/useCollectibleListLayout";
import { NONE_ITEM, SHOP_ITEM } from "../useAvatarDecorationSections";
import { EditCollectiblesListItemNone, EditCollectiblesListItemShop, EditCollectiblesListItemProduct } from "../../native/CollectiblesEditUserProfileListItems";
import AnalyticsLocation from "../../../app_analytics/AnalyticsLocation";
import CutoutableAvatarDecoration from "../../native/components/CutoutableAvatarDecoration";
let Component;
const useStyles = createStyles({
row: {
flexDirection: "row",
alignItems: "center",
justifyContent: "space-between",
paddingHorizontal: GUTTER_SIZE
},
rowSpacer: {
height: GUTTER_SIZE
}
});
const r44 = memo((a0) => {
const { items, selectedSkuId, setSelectedAvatarDecoration, guildId, isTryItOut: isTryItOut2 = false } = a0;
const isTryItOut = isTryItOut2;
const size = a0.size;
const styles = useStyles();
const callback = useCallback(() => {
setSelectedAvatarDecoration(null);
}, [setSelectedAvatarDecoration]);
return <>
<View style={styles.row}>
{[...items, null, null].slice(0, ROW_SIZE).map((item, index) => {
if (item === NONE_ITEM) {
return <EditCollectiblesListItemNone key="none" size={size} onPress={callback} isSelected={selectedSkuId == null} asDefault={guildId != null} />;
}
if (item === SHOP_ITEM) {
return <EditCollectiblesListItemShop key="shop" size={size} analyticsSource={AnalyticsLocation.EDIT_AVATAR_DECORATION_SHEET} />;
}
if (isAvatarDecorationRecord(item)) {
return <Component key={item.skuId} avatarDecoration={item} isSelected={selectedSkuId === item.skuId} setSelectedAvatarDecoration={setSelectedAvatarDecoration} isTryItOut={isTryItOut} size={size} />;
}
return <View key={index} style={{
height: size,
width: size
}} />;
})}
</View>
<View style={styles.rowSpacer} />
</>;
});
r44.displayName = "EditAvatarDecorationRow";
Component = memo(({ avatarDecoration, isSelected, setSelectedAvatarDecoration: setSelectedAvatarDecoration2, isTryItOut: isTryItOut2 = false, size: size2 }) => <EditCollectiblesListItemProduct skuId={avatarDecoration.skuId} isSelected={isSelected} onPress={useCallback(() => {
setSelectedAvatarDecoration2(avatarDecoration);
}, [setSelectedAvatarDecoration2, avatarDecoration])} size={size2} isTryItOut={isTryItOut2} accessibilityLabel={avatarDecoration.label}>
<CutoutableAvatarDecoration avatarDecoration={avatarDecoration} size={AVATAR_DECORATION_SIZE} animate={isSelected} />
</EditCollectiblesListItemProduct>);
Component.displayName = "EditAvatarDecorationItem";
export { r44 as EditAvatarDecorationRow };
@@ -0,0 +1,21 @@
// Metro module 9086 (f9087).
import GuildMemberStore from "../../../stores/GuildMemberStore";
import { useStateFromStores } from "../../../_bundle/defaultAreStatesEqual";
export function useAvatarDecoration(c16940_0, c16940_1) {
return useStateFromStores([GuildMemberStore], () => {
const [r8] = [GuildMemberStore];
let r18 = (c16940_1 != null ? c16940_0 != null ? r8.getMember(c16940_1, c16940_0.id) : null : null)?.avatarDecoration;
if (r18 == null) {
r18 = c16940_0?.avatarDecoration;
}
return r18;
});
}
export function getAvatarDecoration(a0, a1, r5 = [GuildMemberStore]) {
const [r8] = r5;
let r18 = (a1 != null ? a0 != null ? r8.getMember(a1, a0.id) : null : null)?.avatarDecoration;
if (r18 == null) {
r18 = a0?.avatarDecoration;
}
return r18;
}
@@ -0,0 +1,47 @@
// Metro module 7977 (f7978).
import { useState, useRef, useEffect } from "react";
import { MAX_TIMEOUT_MS } from "../../../Constants";
import * as _AvatarDecorationUtils from "./AvatarDecorationUtils";
import { Timeout } from "../../../_bundle/Timeout";
export default function useAvatarDecorationIfNotExpired(a0) {
const [state, setState] = useState(false);
const ref = useRef(null);
useEffect(() => {
const maybeScheduleExpirationCheck2 = function maybeScheduleExpirationCheck() {
L7: {
if (a0 != null && ("expiresAt" in a0 && a0.expiresAt != null)) {
const isAvatarDecorationExpired = _AvatarDecorationUtils.isAvatarDecorationExpired(a0);
setState(isAvatarDecorationExpired);
const r31 = 1000 * a0.expiresAt - Date.now();
if (isAvatarDecorationExpired) {
break L7;
}
if (!(0 < r31)) {
break L7;
}
const timeout = new Timeout();
timeout.start(Math.min(MAX_TIMEOUT_MS, r31), () => {
maybeScheduleExpirationCheck2();
});
ref.current = timeout;
} else {
setState(false);
}
}
};
maybeScheduleExpirationCheck2();
return () => {
const current = ref.current;
return current == null ? void 0 : current.stop();
};
}, [a0]);
useEffect(() => {
if (state) {
const current = ref.current;
if (current != null) {
current.stop();
}
}
}, [state]);
return state ? void 0 : a0;
};
@@ -0,0 +1,61 @@
// Metro module 7961 (f7962).
import { useMemo } from "react";
import CollectiblesCategoryStore from "../CollectiblesCategoryStore";
import CollectiblesPurchaseStore from "../CollectiblesPurchaseStore";
import { useStateFromStores, useStateFromStoresArray } from "../../../_bundle/defaultAreStatesEqual";
import { getAvatarDecorations, isPremiumCollectiblesPurchase, isPremiumCollectiblesProduct } from "../CollectiblesUtils";
import { intl, t } from "../../../intl/index.native";
let c5029_6 = {
PURCHASE: "purchase",
PREMIUM_PURCHASE: "premium_purchase",
PREVIEW: "preview"
};
let c5029_7 = {
skuId: "None"
};
let c5029_8 = {
skuId: "Shop"
};
export default function useAvatarDecorationSections() {
let c16129_1, c16129_2;
const stateFromStores = useStateFromStores([CollectiblesPurchaseStore], () => CollectiblesPurchaseStore.purchases);
const [r22, r23] = useStateFromStoresArray([CollectiblesCategoryStore], () => [CollectiblesCategoryStore.categories, CollectiblesCategoryStore.products]);
c16129_1 = r22;
c16129_2 = r23;
return useMemo(() => {
const r22 = getAvatarDecorations(stateFromStores, c16129_1).reduce((acc, item) => {
const r9 = stateFromStores.get(item.skuId);
if (r9 != null ? isPremiumCollectiblesPurchase(r9) : isPremiumCollectiblesProduct(c16129_2.get(item.skuId))) {
acc.premium_purchase.push(item);
} else if (r9 != null) {
acc.purchase.push(item);
} else {
acc.preview.push(item);
}
return acc;
}, {
purchase: [],
premium_purchase: [],
preview: []
});
return [{
section: c5029_6.PURCHASE,
items: [c5029_7, c5029_8, ...r22.purchase],
height: 12,
header: intl.string(t.VqmVqE)
}, {
section: c5029_6.PREMIUM_PURCHASE,
items: r22.premium_purchase,
height: 12,
header: intl.string(t.TiLCgw)
}, {
section: c5029_6.PREVIEW,
items: r22.preview,
height: 12,
header: intl.string(t["1vbbee"])
}].filter((item) => item.items.length > 0);
}, [r22, r23, stateFromStores]);
};
export { c5029_6 as Section };
export { c5029_7 as NONE_ITEM };
export { c5029_8 as SHOP_ITEM };