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

122 lines
4.5 KiB
TypeScript

// Metro module 12205 (f12206).
import { useState, useCallback } from "react";
import { View } from "react-native";
import { AnalyticEvents } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useWishlistAnalyticsContext } from "../WishlistAnalyticsContext";
import SKUPreview from "../../skus/native/SKUPreview";
import { HeartOutlineIcon } from "../../../design/components/Icon/native/redesign/generated/HeartOutlineIcon";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
import WishlistActionCreators from "../WishlistActionCreators";
import ToastActionCreators from "../../toast/native/ToastActionCreators";
import { intl, t } from "../../../intl/index.native";
import WishlistItemCardBase from "./WishlistItemCardBase";
import { getProductNameAndTypeFromSku } from "../CollectiblesWishlistUtils";
const useStyles = createStyles({
heartOverlay: {
position: "absolute",
top: Module712.space.PX_4,
right: Module712.space.PX_4,
zIndex: 1,
alignItems: "center",
justifyContent: "center",
padding: Module712.space.PX_6,
borderRadius: Module712.radii.round,
backgroundColor: Module712.colors.CONTROL_OVERLAY_SECONDARY_BACKGROUND_DEFAULT
}
});
export default function AddToWishlistItemCard(props) {
const { sku, wishlistId, analyticsLocations, ...props2 } = props;
let c19729_3 = props2;
const styles = useStyles();
const wishlistAnalyticsContext = useWishlistAnalyticsContext();
const [state, setState] = useState(false);
const callback = useCallback(() => <>
<SKUPreview sku={sku} size={c19729_3.size} />
<View style={styles.heartOverlay} pointerEvents="none">
<HeartOutlineIcon size="sm" color={Module712.colors.ICON_OVERLAY_LIGHT} />
</View>
</>, [sku, styles.heartOverlay, props2.size]);
const callback2 = useCallback(async () => {
let c27270_2;
let c27270_3 = 0;
L18: {
L17: {
try {
if (state) {
break L18;
}
if (wishlistAnalyticsContext?.surface != null) {
AnalyticsUtils.track(AnalyticEvents.WISHLIST_ITEM_CLICKED, {
sku_id: sku.id,
wishlist_id: wishlistId,
wishlist_owner_id: wishlistAnalyticsContext.wishlistOwnerId,
surface: wishlistAnalyticsContext.surface,
position_in_section: wishlistAnalyticsContext.positionInSection,
item_source: wishlistAnalyticsContext.itemSource,
click_type: "add_to_wishlist",
product_line: sku.productLine,
impression_session_id: wishlistAnalyticsContext.impressionSessionId,
location_stack: wishlistAnalyticsContext.analyticsLocations
});
}
setState(true);
c27270_3 = 2;
await WishlistActionCreators.addSkuToWishlist(sku.id, analyticsLocations);
c27270_3 = 1;
c27270_3 = 0;
(0, setState)(false);
} catch ($e) {
const r29 = $e;
let r7 = r29;
c27270_2 = r29;
let r30 = c27270_3;
if (r30 !== 0) {
while (true) {
if (r30 === 1) {
try {
const r118 = c27270_2;
c27270_3 = 0;
(0, setState)(false);
throw r118;
} catch (r116) {
r7 = r116;
c27270_2 = r116;
r30 = c27270_3;
if (r30 === 0) {
break;
}
}
} else {
try {
c27270_3 = 1;
ToastActionCreators.open({
key: "WISHLIST_ADD_SUGGESTION_ERROR",
content: intl.string(t.F8FvUy)
});
c27270_3 = 0;
(0, setState)(false);
break L17;
} catch (r87) {
r7 = r87;
c27270_2 = r87;
r30 = c27270_3;
if (r30 === 0) {
break;
}
}
}
}
}
throw r7;
}
}
return void 0;
}
}, [state, wishlistAnalyticsContext, sku.id, sku.productLine, wishlistId, analyticsLocations]);
return <WishlistItemCardBase accessibilityLabel={intl.formatToPlainString(t.xRjJBe, {
productName: getProductNameAndTypeFromSku(sku)
})} renderPreview={callback} onPress={callback2} {...props2} />;
};