122 lines
4.5 KiB
TypeScript
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} />;
|
|
};
|