Files
discord-decomp/modules/collectibles/hooks/useHandleUseNow.tsx
T
2026-11-01 12:12:55 +02:00

155 lines
5.2 KiB
TypeScript

// Metro module 9797 (f9798).
import { useState, useMemo, useCallback } from "react";
import { CollectiblesItemType } from "../../../_bundle/Module1901";
import { intl, t } from "../../../intl/index.native";
import { useShopProductItems } from "./useShopProductItems";
import { getProfileChangesForUpdateRequest } from "../../user_profile/ProfileUpdateRequestUtils";
import { saveProfileChanges } from "../../user_profile/UserProfileActionCreators";
import { saveProfileAndAccountChanges } from "../../../actions/UserSettingsAccountActionCreators";
export function useHandleUseNow({ product, onSuccess, onError }) {
let r56;
const [isApplying, setState] = useState(false);
const shopProductItems = useShopProductItems(product);
const { firstAvatarDecoration, firstProfileEffect, firstNameplate, firstProfileFrame } = shopProductItems;
const type = product.type;
if (CollectiblesItemType.AVATAR_DECORATION === type) {
r56 = intl.string(t.zOA4ax);
} else if (CollectiblesItemType.NAMEPLATE === type) {
r56 = intl.string(t.gOzMvx);
} else if (CollectiblesItemType.PROFILE_FRAME === type) {
r56 = intl.string(t.lOF4zR);
} else if (CollectiblesItemType.PROFILE_EFFECT === type) {
r56 = intl.string(t.SWm2ai);
} else {
CollectiblesItemType.BUNDLE;
r56 = intl.string(t.tf1ZZ4);
}
const memo = useMemo(() => (function computeCanUseNow(a0) {
if (a0.type !== CollectiblesItemType.BUNDLE) {
return true;
}
const set = new Set();
for (const item of a0.items) {
if (!set.has(item.type)) {
set.add(item.type);
continue;
}
return false;
}
return true;
})(product), [product]);
return {
handleUseNow: useCallback(async () => {
let firstProfileEffect2, firstProfileFrame2, c26539_4;
let c26539_5 = 0;
let c30145_0, c30145_1;
L38: {
L27: {
try {
c30145_0 = void 0;
if (!memo) {
break L38;
}
setState(true);
const r38 = {};
c30145_0 = r38;
c26539_5 = 2;
if (firstAvatarDecoration != null) {
r38.avatarDecoration = firstAvatarDecoration;
}
L22: {
if (firstProfileEffect == null && firstProfileFrame == null) {
if (firstNameplate != null) {
c30145_0.nameplate = firstNameplate;
}
if (Object.keys(c30145_0).length > 0) {
await saveProfileAndAccountChanges(c30145_0);
break L22;
}
if (onSuccess != null) {
onSuccess();
}
c26539_5 = 1;
c26539_5 = 0;
(0, setState)(false);
break L38;
}
firstProfileEffect2 = firstProfileEffect;
if (firstProfileEffect == null) {
firstProfileEffect2 = void 0;
}
firstProfileFrame2 = firstProfileFrame;
if (firstProfileFrame == null) {
firstProfileFrame2 = void 0;
}
await saveProfileChanges(getProfileChangesForUpdateRequest({
pendingProfileEffect: firstProfileEffect2,
pendingProfileFrame: firstProfileFrame2
}));
if (firstNameplate != null) {
c30145_0.nameplate = firstNameplate;
}
if (Object.keys(c30145_0).length > 0) {
await saveProfileAndAccountChanges(c30145_0);
}
}
if (onSuccess != null) {
onSuccess();
}
c26539_5 = 1;
c26539_5 = 0;
(0, setState)(false);
} catch ($e) {
const r32 = $e;
let r7 = r32;
c26539_4 = r32;
let r33 = c26539_5;
if (r33 !== 0) {
while (true) {
if (r33 === 1) {
try {
const r193 = c26539_4;
c26539_5 = 0;
(0, setState)(false);
throw r193;
} catch (r191) {
r7 = r191;
c26539_4 = r191;
r33 = c26539_5;
if (r33 === 0) {
break;
}
}
} else {
try {
const r179 = c26539_4;
c26539_5 = 1;
c30145_1 = r179;
if (onError != null) {
onError(c30145_1);
}
c26539_5 = 0;
(0, setState)(false);
break L27;
} catch (r176) {
r7 = r176;
c26539_4 = r176;
r33 = c26539_5;
if (r33 === 0) {
break;
}
}
}
}
}
throw r7;
}
}
return void 0;
}
}, [memo, firstAvatarDecoration, firstProfileEffect, firstNameplate, firstProfileFrame, onSuccess, r56, onError]),
isApplying,
canUseNow: memo
};
}