155 lines
7.0 KiB
TypeScript
155 lines
7.0 KiB
TypeScript
// Metro module 14796 (f14797).
|
|
import { useCallback } from "react";
|
|
import { View } from "react-native";
|
|
import { AnalyticEvents } from "../../../Constants";
|
|
import { CollectiblesMobileShopScreen } from "../../collectibles/CollectiblesShopConstants";
|
|
import { ContentDismissActionType, DismissibleContentGroupName } from "../../dismissible_content/DismissibleContentConstants";
|
|
import { RewardFilterTypes } from "../../quests/QuestConstants";
|
|
import MobileVisualRefreshExperiment from "../../themes/experiments/MobileVisualRefreshExperiment";
|
|
import { PressableOpacity } from "../../../design/void/Pressables/native/Pressables";
|
|
import { Text } from "../../../design/components/Text/native/Text";
|
|
import { intl, t } from "../../../intl/index.native";
|
|
import SelectedDismissibleContent from "../../dismissible_content/native/SelectedDismissibleContent";
|
|
import { DismissibleContent } from "../../../_bundle/Module1358";
|
|
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
|
|
import { openQuestHome } from "../../quests/native/QuestUtils.native";
|
|
import { QuestContent } from "../../quests/QuestTypes";
|
|
import OrbOnboardingPill from "./OrbOnboardingPill";
|
|
import { useFetchVirtualCurrencyBalance } from "../hooks/index";
|
|
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
|
|
import AnalyticsLocation from "../../app_analytics/AnalyticsLocation";
|
|
import { openCollectiblesShopMobile } from "../../collectibles/CollectiblesActionCreators";
|
|
import BalanceWidgetPillButton from "./BalanceWidgetPillButton";
|
|
import { UNSAFE_isDismissibleContentDismissed } from "../../dismissible_content/DismissibleContentUnsafeUtils";
|
|
import { Ellipsis } from "../../../design/components/Button/native/ButtonEllipsis.native";
|
|
import { createStyles } from "../../../design/components/Styles/native/createStyles";
|
|
import Module712 from "../../../_bundle/Module712";
|
|
let OrbsOnboardingMenuDismissibleContent, BalanceWidgetMenu, useStyles;
|
|
const BalanceWidget = function BalanceWidget(props) {
|
|
const { onPress: onPress2, style: style2, accessibilityLabel, accessibilityState, children: children2 } = props;
|
|
const styles = useStyles(MobileVisualRefreshExperiment("BalanceWidgetMenu"));
|
|
return <PressableOpacity onPress={onPress2} style={[styles.pressable, style2]} accessible accessibilityRole="button" accessibilityLabel={accessibilityLabel} accessibilityState={accessibilityState} activeOpacity={0.8}>
|
|
<Text variant="text-sm/semibold" color="text-default" style={styles.label}>
|
|
{intl.string(t.gGtZpz)}
|
|
</Text>
|
|
<View style={styles.pill}>{children2}</View>
|
|
</PressableOpacity>;
|
|
};
|
|
OrbsOnboardingMenuDismissibleContent = function OrbsOnboardingMenuDismissibleContent(props) {
|
|
const style = props.style;
|
|
return <SelectedDismissibleContent contentTypes={[DismissibleContent.VIRTUAL_CURRENCY_MOBILE_ONBOARDING_PILL]} groupName={DismissibleContentGroupName.VIRTUAL_CURRENCY_MOBILE_ONBOARDING}>
|
|
{({ visibleContent, markAsDismissed }) => {
|
|
if (visibleContent === DismissibleContent.VIRTUAL_CURRENCY_MOBILE_ONBOARDING_PILL) {
|
|
const handleOnboardingPress = () => {
|
|
markAsDismissed(ContentDismissActionType.TAKE_ACTION);
|
|
AnalyticsUtils.track(AnalyticEvents.USER_PROFILE_ACTION, {
|
|
profile_action: "ORBS_BALANCE_PRESSED"
|
|
});
|
|
openQuestHome({
|
|
filter: RewardFilterTypes.VIRTUAL_CURRENCY,
|
|
fromContent: QuestContent.MOBILE_ORBS_ONBOARDING_DC
|
|
});
|
|
};
|
|
return <BalanceWidget onPress={handleOnboardingPress} style={style} accessibilityLabel={intl.string(t.Kt2QDh)}>
|
|
<OrbOnboardingPill onPress={handleOnboardingPress} accessible={false} />
|
|
</BalanceWidget>;
|
|
}
|
|
return null;
|
|
}}
|
|
</SelectedDismissibleContent>;
|
|
};
|
|
BalanceWidgetMenu = function BalanceWidgetMenu(props) {
|
|
const style2 = props.style;
|
|
const balance = useFetchVirtualCurrencyBalance().balance;
|
|
const callback = useCallback(() => {
|
|
AnalyticsUtils.track(AnalyticEvents.USER_PROFILE_ACTION, {
|
|
profile_action: "ORBS_BALANCE_PRESSED"
|
|
});
|
|
ActionSheetActionCreators.openLazy(() => import("./BalanceWidgetActionSheet").then((result) => result.default), "BalanceWidgetMenu", {
|
|
balance,
|
|
primaryButtonConfig: {
|
|
buttonText: intl.string(t.WrzJBf),
|
|
onButtonPress: () => {
|
|
AnalyticsUtils.track(AnalyticEvents.ORB_BALANCE_ACTION_SHEET_ACTION, {
|
|
type: "GO_TO_SHOP",
|
|
source: AnalyticsLocation.YOU_SCREEN,
|
|
balance
|
|
});
|
|
ActionSheetActionCreators.hideActionSheet();
|
|
openCollectiblesShopMobile({
|
|
analyticsLocations: [AnalyticsLocation.COLLECTIBLES_SHOP],
|
|
analyticsSource: AnalyticsLocation.COLLECTIBLES_SHOP,
|
|
screen: CollectiblesMobileShopScreen.ORBS
|
|
});
|
|
}
|
|
},
|
|
secondaryButtonConfig: {
|
|
buttonText: intl.string(t.SymzJC),
|
|
onButtonPress: () => {
|
|
AnalyticsUtils.track(AnalyticEvents.ORB_BALANCE_ACTION_SHEET_ACTION, {
|
|
type: "GO_TO_QUEST_HOME",
|
|
source: AnalyticsLocation.YOU_SCREEN,
|
|
balance
|
|
});
|
|
ActionSheetActionCreators.hideActionSheet();
|
|
openQuestHome({
|
|
mergeExistingRoutes: true,
|
|
filter: RewardFilterTypes.VIRTUAL_CURRENCY,
|
|
fromContent: QuestContent.ORBS_BALANCE_MENU
|
|
});
|
|
}
|
|
},
|
|
source: AnalyticsLocation.YOU_SCREEN
|
|
});
|
|
}, [balance]);
|
|
const zPaLL9 = t.zPaLL9;
|
|
let balance2 = balance == null ? void 0 : balance.toString();
|
|
if (balance2 == null) {
|
|
balance2 = "";
|
|
}
|
|
return <BalanceWidget onPress={callback} style={style2} accessibilityLabel={intl.formatToPlainString(zPaLL9, {
|
|
balance: balance2
|
|
})}>
|
|
<BalanceWidgetPillButton balance={balance} onPress={callback} accessible={false} />
|
|
</BalanceWidget>;
|
|
};
|
|
useStyles = createStyles((a0) => ({
|
|
pressable: {
|
|
flex: 1,
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
flexWrap: "wrap",
|
|
gap: Module712.space.PX_8,
|
|
...a0 ? {
|
|
paddingHorizontal: Module712.space.PX_8,
|
|
paddingVertical: Module712.space.PX_8
|
|
} : {
|
|
padding: 16
|
|
},
|
|
borderRadius: a0 ? Module712.radii.md : Module712.radii.lg
|
|
},
|
|
label: {
|
|
flex: 1
|
|
},
|
|
pill: {
|
|
alignItems: "center"
|
|
},
|
|
loadingContainer: {
|
|
height: 36,
|
|
justifyContent: "center"
|
|
}
|
|
}));
|
|
export default function BalanceWidgetMenuWrapper(props) {
|
|
const styles = useStyles(MobileVisualRefreshExperiment("BalanceWidgetMenu"));
|
|
const balance2 = useFetchVirtualCurrencyBalance().balance;
|
|
const r30 = UNSAFE_isDismissibleContentDismissed(DismissibleContent.VIRTUAL_CURRENCY_MOBILE_ONBOARDING_PILL);
|
|
return balance2 == null ? <BalanceWidget onPress={() => {}} style={props.style} accessibilityLabel={intl.string(t.cKwv4k)} accessibilityState={{
|
|
busy: true
|
|
}}>
|
|
<View style={styles.loadingContainer}>
|
|
<Ellipsis variant="primary" size="sm" />
|
|
</View>
|
|
</BalanceWidget> : !(balance2 > 0) && !r30 ? <OrbsOnboardingMenuDismissibleContent {...props} /> : <BalanceWidgetMenu {...props} />;
|
|
};
|
|
export { OrbsOnboardingMenuDismissibleContent };
|