@ape.swap/bonds-sdk 5.1.42 → 5.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'theme-ui/jsx-runtime';
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
+
import BigNumber from 'bignumber.js';
|
|
3
4
|
import Flex from '../../../../components/uikit-sdk/Flex/index.js';
|
|
4
5
|
import useTierPoints, { getUserTier, TIERS_COLORS, TIERS_WEIGHT } from '../../../../state/tiers/useTierPoints.js';
|
|
5
6
|
import { LaunchBondTiers, BillVersion } from '@ape.swap/apeswap-lists';
|
|
@@ -10,6 +11,12 @@ import Svg from '../../../../components/uikit-sdk/Svg/index.js';
|
|
|
10
11
|
import { AnimatePresence, motion } from 'framer-motion';
|
|
11
12
|
import { calculateOptimizationData } from '../../utils.js';
|
|
12
13
|
|
|
14
|
+
const UPGRADE_NOW_USD_BUFFER = 0.1;
|
|
15
|
+
const getUpgradeNowAmountUsd = (amountUsd) => new BigNumber(amountUsd)
|
|
16
|
+
.decimalPlaces(2, BigNumber.ROUND_HALF_UP)
|
|
17
|
+
.plus(UPGRADE_NOW_USD_BUFFER)
|
|
18
|
+
.decimalPlaces(2, BigNumber.ROUND_CEIL)
|
|
19
|
+
.toNumber();
|
|
13
20
|
const getNextTierInfo = (userPoints) => {
|
|
14
21
|
const tiers = [
|
|
15
22
|
{ tier: LaunchBondTiers.Silver, threshold: TIERS_WEIGHT[LaunchBondTiers.Silver] },
|
|
@@ -41,9 +48,22 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
|
|
|
41
48
|
const optimizationData = calculateOptimizationData(inputAmount, promotionalPoints, bond, inputTokenPrice, abondPrice);
|
|
42
49
|
const nextTierData = optimizationData?.data?.[0];
|
|
43
50
|
const highestProfitableTier = optimizationData?.highestProfitableTier;
|
|
51
|
+
const shouldRenderNextTierRow = Boolean((userTier ?? 0) < LaunchBondTiers.Mythical && nextTierData && (!highestProfitableTier || isOpen));
|
|
52
|
+
const shouldShowNextTierRowCaret = !highestProfitableTier;
|
|
44
53
|
const handleSetNextTierAmount = (amount) => {
|
|
45
54
|
const inputValueInSelectedToken = amount / (inputTokenPrice ?? 0);
|
|
46
|
-
|
|
55
|
+
const roundedInputValue = new BigNumber(inputValueInSelectedToken)
|
|
56
|
+
.decimalPlaces(inputTokenDecimals, BigNumber.ROUND_CEIL)
|
|
57
|
+
.toFixed(inputTokenDecimals);
|
|
58
|
+
setInputValue(roundedInputValue);
|
|
59
|
+
};
|
|
60
|
+
const handleTierSelection = (amount) => {
|
|
61
|
+
handleSetNextTierAmount(getUpgradeNowAmountUsd(amount));
|
|
62
|
+
setIsOpen(false);
|
|
63
|
+
};
|
|
64
|
+
const handleToggleOpen = (e) => {
|
|
65
|
+
e.stopPropagation();
|
|
66
|
+
setIsOpen((prev) => !prev);
|
|
47
67
|
};
|
|
48
68
|
return (userTier !== LaunchBondTiers.Legend &&
|
|
49
69
|
bond.billVersion === BillVersion.V4 && (jsxs(Flex, { sx: {
|
|
@@ -54,7 +74,7 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
|
|
|
54
74
|
flexDirection: 'column',
|
|
55
75
|
position: 'relative',
|
|
56
76
|
cursor: 'pointer',
|
|
57
|
-
}, onClick: () => setIsOpen(!isOpen), children: [highestProfitableTier
|
|
77
|
+
}, onClick: () => setIsOpen(!isOpen), children: [highestProfitableTier && (jsxs(Flex, { sx: {
|
|
58
78
|
border: '1px solid rgba(22, 101, 52, 0.53)',
|
|
59
79
|
borderRadius: 'normal',
|
|
60
80
|
position: 'relative',
|
|
@@ -68,8 +88,7 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
|
|
|
68
88
|
alignItems: 'center',
|
|
69
89
|
gap: '5px',
|
|
70
90
|
flexWrap: 'wrap',
|
|
71
|
-
}, children: [jsxs("span", { sx: { flex: 1 }, children: [jsx("span", { sx: { display: 'inline-flex', verticalAlign: 'sub', mr: '4px' }, children: jsx(Svg, { icon: "Discount", width: 14, color: '#4AD980' }) }), jsx("span", { sx: { fontWeight: 700 }, children: "Congratulations!" }), " With your purchase you will accumulate points to upgrade to ", jsx("span", { sx: { fontWeight: 700, color: TIERS_COLORS[highestProfitableTier?.tier] }, children: highestProfitableTier.tierName }), ' ', jsx("span", { sx: { fontWeight: 700 }, children: "Tier!" })] }), jsx(Svg, { icon: 'caret', direction: isOpen ? 'up' : 'down', width: 10 })] }))
|
|
72
|
-
nextTierData && (jsxs(Flex, { sx: {
|
|
91
|
+
}, children: [jsxs("span", { sx: { flex: 1 }, children: [jsx("span", { sx: { display: 'inline-flex', verticalAlign: 'sub', mr: '4px' }, children: jsx(Svg, { icon: "Discount", width: 14, color: '#4AD980' }) }), jsx("span", { sx: { fontWeight: 700 }, children: "Congratulations!" }), " With your purchase you will accumulate points to upgrade to ", jsx("span", { sx: { fontWeight: 700, color: TIERS_COLORS[highestProfitableTier?.tier] }, children: highestProfitableTier.tierName }), ' ', jsx("span", { sx: { fontWeight: 700 }, children: "Tier!" })] }), jsx(Svg, { icon: 'caret', direction: isOpen ? 'up' : 'down', width: 10 })] })), shouldRenderNextTierRow && (jsxs(Flex, { onClick: handleToggleOpen, sx: {
|
|
73
92
|
border: '1px solid #9960C5',
|
|
74
93
|
borderRadius: 'normal',
|
|
75
94
|
position: 'relative',
|
|
@@ -77,19 +96,33 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
|
|
|
77
96
|
pl: '10px',
|
|
78
97
|
pr: '20px',
|
|
79
98
|
py: '2px',
|
|
99
|
+
mt: highestProfitableTier ? '3px' : '0px',
|
|
80
100
|
alignItems: 'center',
|
|
81
101
|
background: '#312341',
|
|
82
102
|
justifyContent: 'space-between',
|
|
83
|
-
}, children: [jsxs(
|
|
84
|
-
|
|
103
|
+
}, children: [jsxs("span", { sx: { flex: 1 }, children: [jsx("span", { sx: { display: 'inline-flex', verticalAlign: 'bottom' }, children: jsx("img", { src: `https://ape.bond/images/launch/${nextTierData?.tierName?.toLowerCase()}.png`, alt: "minTier", style: { width: '21px', height: '21px', marginRight: '3px', zIndex: 1 } }) }), "Doing a $", formatNumberSI(nextTierData?.minBreakevenWithFeeUSD), " bond purchase will grant you a", jsx("span", { sx: { color: TIERS_COLORS[nextTierData?.tier], px: '3px', fontWeight: 600 }, children: nextTierData?.tierName }), "Tier.", jsx("span", { sx: {
|
|
104
|
+
ml: '5px',
|
|
105
|
+
mr: '15px',
|
|
85
106
|
color: 'primaryButton',
|
|
86
107
|
fontWeight: 500,
|
|
87
108
|
cursor: 'pointer',
|
|
88
109
|
':hover': { textDecoration: 'underline' },
|
|
110
|
+
display: ['inline', 'inline', 'inline', 'none'],
|
|
89
111
|
}, onClick: (e) => {
|
|
90
112
|
e.stopPropagation();
|
|
91
|
-
|
|
92
|
-
}, children:
|
|
113
|
+
handleTierSelection(nextTierData.minBreakevenWithFeeUSD);
|
|
114
|
+
}, children: `Upgrade now >` })] }), jsx("span", { sx: {
|
|
115
|
+
ml: '5px',
|
|
116
|
+
mr: '15px',
|
|
117
|
+
color: 'primaryButton',
|
|
118
|
+
fontWeight: 500,
|
|
119
|
+
cursor: 'pointer',
|
|
120
|
+
':hover': { textDecoration: 'underline' },
|
|
121
|
+
display: ['none', 'none', 'none', 'flex'],
|
|
122
|
+
}, onClick: (e) => {
|
|
123
|
+
e.stopPropagation();
|
|
124
|
+
handleTierSelection(nextTierData.minBreakevenWithFeeUSD);
|
|
125
|
+
}, children: `Upgrade now >` }), shouldShowNextTierRowCaret && (jsx("span", { sx: { display: 'inline-flex', alignItems: 'center' }, onClick: handleToggleOpen, role: "button", "aria-label": isOpen ? 'Collapse tier list' : 'Expand tier list', children: jsx(Svg, { icon: 'caret', direction: isOpen ? 'up' : 'down', width: 10 }) }))] })), jsx(AnimatePresence, { children: isOpen && optimizationData && (jsx(motion.div, { initial: { height: 0 }, animate: { height: 'fit-content' }, transition: { opacity: { duration: 0.2 } }, exit: { height: 0 }, sx: { overflow: 'hidden', width: '100%', marginTop: '3px', cursor: 'pointer' }, children: optimizationData?.data?.slice(1, optimizationData?.data.length)?.map((data, index) => {
|
|
93
126
|
return (jsxs(Flex, { sx: {
|
|
94
127
|
border: '1px solid #9960C5',
|
|
95
128
|
borderRadius: 'normal',
|
|
@@ -98,11 +131,11 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
|
|
|
98
131
|
pl: '10px',
|
|
99
132
|
pr: '20px',
|
|
100
133
|
py: '2px',
|
|
101
|
-
mt: '3px',
|
|
134
|
+
mt: index === 0 ? '0px' : '3px',
|
|
102
135
|
alignItems: 'center',
|
|
103
136
|
background: '#312341',
|
|
104
137
|
justifyContent: 'space-between',
|
|
105
|
-
}, onClick:
|
|
138
|
+
}, onClick: handleToggleOpen, children: [jsxs("span", { sx: { flex: 1 }, children: [jsx("span", { sx: { display: 'inline-flex', verticalAlign: 'bottom' }, children: jsx("img", { src: `https://ape.bond/images/launch/${data?.tierName?.toLowerCase()}.png`, alt: "minTier", style: { width: '21px', height: '21px', marginRight: '3px', zIndex: 1 } }) }), "Doing a $", formatNumberSI(data?.minBreakevenWithFeeUSD), " bond purchase will grant you a", jsx("span", { sx: { color: TIERS_COLORS[data?.tier], px: '3px', fontWeight: 600 }, children: data?.tierName }), "Tier.", jsx("span", { sx: {
|
|
106
139
|
ml: '5px',
|
|
107
140
|
mr: '15px',
|
|
108
141
|
color: 'primaryButton',
|
|
@@ -110,7 +143,11 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
|
|
|
110
143
|
cursor: 'pointer',
|
|
111
144
|
':hover': { textDecoration: 'underline' },
|
|
112
145
|
display: ['inline', 'inline', 'inline', 'none'],
|
|
113
|
-
}, onClick: () =>
|
|
146
|
+
}, onClick: (e) => {
|
|
147
|
+
e.stopPropagation();
|
|
148
|
+
handleSetNextTierAmount(getUpgradeNowAmountUsd(data.minBreakevenWithFeeUSD));
|
|
149
|
+
setIsOpen(false);
|
|
150
|
+
}, children: `Upgrade now >` })] }), jsx("span", { sx: {
|
|
114
151
|
ml: '5px',
|
|
115
152
|
mr: '15px',
|
|
116
153
|
color: 'primaryButton',
|
|
@@ -118,7 +155,11 @@ const PointsLeftForNextTier = ({ bond, inputAmount, setInputValue, inputTokenDec
|
|
|
118
155
|
cursor: 'pointer',
|
|
119
156
|
':hover': { textDecoration: 'underline' },
|
|
120
157
|
display: ['none', 'none', 'none', 'flex'],
|
|
121
|
-
}, onClick: () =>
|
|
158
|
+
}, onClick: (e) => {
|
|
159
|
+
e.stopPropagation();
|
|
160
|
+
handleSetNextTierAmount(getUpgradeNowAmountUsd(data.minBreakevenWithFeeUSD));
|
|
161
|
+
setIsOpen(false);
|
|
162
|
+
}, children: `Upgrade now >` })] }, data.tierName));
|
|
122
163
|
}) })) })] })));
|
|
123
164
|
};
|
|
124
165
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointsLeftForNextTier.js","sources":["../../../../../src/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport { BondsData } from '../../../../types/bonds'\nimport useTierPoints, {\n getUserTier,\n TIERS_COLORS,\n TIERS_NAMES,\n TIERS_WEIGHT,\n} from '../../../../state/tiers/useTierPoints'\nimport { BillVersion, LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { useAbondPrice } from '../../../../state/tokenPrices/useAbondPrice'\nimport Svg from '../../../../components/uikit-sdk/Svg'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { calculateOptimizationData } from '../../utils'\n\nconst getNextTierInfo = (userPoints: string) => {\n const tiers = [\n { tier: LaunchBondTiers.Silver, threshold: TIERS_WEIGHT[LaunchBondTiers.Silver] },\n { tier: LaunchBondTiers.Gold, threshold: TIERS_WEIGHT[LaunchBondTiers.Gold] },\n { tier: LaunchBondTiers.Diamond, threshold: TIERS_WEIGHT[LaunchBondTiers.Diamond] },\n { tier: LaunchBondTiers.Legend, threshold: TIERS_WEIGHT[LaunchBondTiers.Legend] },\n { tier: LaunchBondTiers.Mythical, threshold: TIERS_WEIGHT[LaunchBondTiers.Mythical] },\n ]\n\n const userPointsBN = getBalanceNumber(userPoints)\n\n for (const { tier, threshold } of tiers) {\n const thresholdNumber = getBalanceNumber(threshold)\n if (userPointsBN < thresholdNumber) {\n const pointsNeeded = thresholdNumber - userPointsBN\n return { nextTier: tier, pointsNeeded }\n }\n }\n\n return null // User is at max tier (Mythical)\n}\n\ninterface GetUpToComponentProps {\n bond: BondsData\n inputAmount: string\n setInputValue: (value: string) => void\n inputTokenDecimals: number\n inputTokenPrice?: number\n}\n\nconst PointsLeftForNextTier: React.FC<GetUpToComponentProps> = ({\n bond,\n inputAmount,\n setInputValue,\n inputTokenDecimals,\n inputTokenPrice,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n // Hooks & Data\n const { data: tierState } = useTierPoints()\n const { promotionalPoints } = tierState || {}\n const abondPrice = useAbondPrice()\n const userTier = getUserTier(promotionalPoints)\n const nextTierInfo = getNextTierInfo(promotionalPoints || '0')\n const inputAmountUSD = parseFloat(inputAmount) * (inputTokenPrice ?? 0)\n const necessaryUSDAmount = (nextTierInfo?.pointsNeeded! / 4) * abondPrice!\n const fee = ((bond.tierBoostRate ?? 0) + 100) / 100 - 1\n const feeToBeCollected = inputAmountUSD * fee\n const feeInAbond = feeToBeCollected / abondPrice!\n const pointsToBeEarned = feeInAbond * 4\n\n const optimizationData = calculateOptimizationData(inputAmount, promotionalPoints!, bond, inputTokenPrice, abondPrice)\n const nextTierData = optimizationData?.data?.[0]\n const highestProfitableTier = optimizationData?.highestProfitableTier\n\n const handleSetNextTierAmount = (amount: number) => {\n const inputValueInSelectedToken = amount / (inputTokenPrice ?? 0)\n setInputValue(inputValueInSelectedToken.toFixed(inputTokenDecimals))\n }\n\n return (\n userTier !== LaunchBondTiers.Legend &&\n bond.billVersion === BillVersion.V4 && (\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n fontSize: '12px',\n fontWeight: 400,\n flexDirection: 'column',\n position: 'relative',\n cursor: 'pointer',\n }}\n onClick={() => setIsOpen(!isOpen)}\n >\n {highestProfitableTier ? (\n <Flex\n sx={{\n border: '1px solid rgba(22, 101, 52, 0.53)',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: ['10px', '10px', '10px', '20px'],\n py: '6px',\n background: 'linear-gradient(90deg, #0A2A1A 0%, #1A2A28 100%) !important',\n color: 'rgba(134, 237, 171, 0.70)',\n minHeight: '27px',\n alignItems: 'center',\n gap: '5px',\n flexWrap: 'wrap',\n }}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'sub', mr: '4px' }}>\n <Svg icon=\"Discount\" width={14} color={'#4AD980'} />\n </span>\n <span sx={{ fontWeight: 700 }}>Congratulations!</span> With your purchase you will accumulate points to\n upgrade to {/*@ts-ignore*/}\n <span sx={{ fontWeight: 700, color: TIERS_COLORS[highestProfitableTier?.tier] }}>\n {highestProfitableTier.tierName}\n </span>{' '}\n <span sx={{ fontWeight: 700 }}>Tier!</span>\n </span>\n <Svg icon={'caret'} direction={isOpen ? 'up' : 'down'} width={10} />\n </Flex>\n ) : (\n (userTier ?? 0) < LaunchBondTiers.Mythical &&\n nextTierData && (\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n >\n <Flex sx={{ alignItems: 'center', justifyContent: 'space-between', width: '100%' }}>\n <Flex sx={{ alignItems: 'center' }}>\n <img\n src={`https://ape.bond/images/launch/${nextTierData?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n Doing a ${formatNumberSI(nextTierData?.minBreakevenWithFeeUSD!)} bond purchase will grant you a\n {/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[nextTierData?.tier], px: '3px', fontWeight: 600 }}>\n {nextTierData?.tierName}\n </span>\n Tier.\n </Flex>\n <span\n sx={{\n mx: '5px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(nextTierData.minBreakevenWithFeeUSD)\n }}\n >\n {'Upgrade now >'}\n </span>\n </Flex>\n <Svg icon={'caret'} direction={isOpen ? 'up' : 'down'} width={10} />\n </Flex>\n )\n )}\n <AnimatePresence>\n {isOpen && optimizationData && (\n <motion.div\n initial={{ height: 0 }}\n animate={{ height: 'fit-content' }}\n transition={{ opacity: { duration: 0.2 } }}\n exit={{ height: 0 }}\n sx={{ overflow: 'hidden', width: '100%', marginTop: '5px', cursor: 'pointer' }}\n >\n {optimizationData?.data?.slice(1, optimizationData?.data.length)?.map((data) => {\n return (\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n mt: '3px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n onClick={() => handleSetNextTierAmount(data.minBreakevenWithFeeUSD)}\n key={data.tierName}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${data?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(data?.minBreakevenWithFeeUSD!)} bond purchase will grant you a\n {/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[data?.tier], px: '3px', fontWeight: 600 }}>{data?.tierName}</span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={() => handleSetNextTierAmount(data.minBreakevenWithFeeUSD * 1.01)}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n }}\n onClick={() => handleSetNextTierAmount(data.minBreakevenWithFeeUSD * 1.01)}\n >\n {`Upgrade now >`}\n </span>\n </Flex>\n )\n })}\n </motion.div>\n )}\n </AnimatePresence>\n {/*TODO: delete this debugging table once we are sure all is ok*/}\n {/*<Flex sx={{ mt: '15px' }}>Debbuging table</Flex>*/}\n {/*<Flex*/}\n {/* sx={{*/}\n {/* width: '100%',*/}\n {/* mt: '10px',*/}\n {/* fontSize: '12px',*/}\n {/* fontWeight: 400,*/}\n {/* flexDirection: 'column',*/}\n {/* position: 'relative',*/}\n {/* '& > :nth-of-type(even)': {*/}\n {/* background: 'white3',*/}\n {/* },*/}\n {/* '& > :nth-of-type(odd)': {*/}\n {/* background: 'white4',*/}\n {/* },*/}\n {/* }}*/}\n {/*>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>User Points</Flex>*/}\n {/* <Flex>{formatNumberSI(getBalanceNumber(promotionalPoints!))}</Flex>*/}\n {/* </Flex>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* /!*@ts-ignore*!/*/}\n {/* <Flex>Points needed for {TIERS_NAMES[nextTierInfo?.nextTier]}</Flex>*/}\n {/* <Flex>{formatNumberSI(nextTierInfo?.pointsNeeded)}</Flex>*/}\n {/* </Flex>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>usd Abond necessary for next tier</Flex>*/}\n {/* <Flex>${formatNumberSI(necessaryUSDAmount)}</Flex>*/}\n {/* </Flex>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee percentage</Flex>*/}\n {/* <Flex>*/}\n {/* {bond.tierBoostRate}% (${formatNumberSI(feeToBeCollected)})*/}\n {/* </Flex>*/}\n {/* </Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Input Amount USD</Flex>*/}\n {/* <Flex>${formatNumberSI(inputAmountUSD)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>USD Fee to be collected</Flex>*/}\n {/* <Flex>${formatNumberSI(feeToBeCollected)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee in ABOND</Flex>*/}\n {/* <Flex>{formatNumberSI(feeInAbond)} ABOND</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Points To Be Earned through tierBoostRate</Flex>*/}\n {/* <Flex>{formatNumberSI(pointsToBeEarned, 0)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Enough points to upgrade?</Flex>*/}\n {/* <Flex>{arePointsEnough ? 'Yes 🔥' : 'No :('}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee in ABOND</Flex>*/}\n {/* <Flex>{formatNumberSI(feeInAbond)} ABOND</Flex>*/}\n {/*</Flex>*/}\n {/*</Flex>*/}\n </Flex>\n )\n )\n}\n\nexport default PointsLeftForNextTier\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PointsLeftForNextTier.js","sources":["../../../../../src/views/BuyBond/components/PointsLeftForNextTier/PointsLeftForNextTier.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport BigNumber from 'bignumber.js'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport { BondsData } from '../../../../types/bonds'\nimport useTierPoints, {\n getUserTier,\n TIERS_COLORS,\n TIERS_NAMES,\n TIERS_WEIGHT,\n} from '../../../../state/tiers/useTierPoints'\nimport { BillVersion, LaunchBondTiers } from '@ape.swap/apeswap-lists'\nimport { getBalanceNumber } from '../../../../utils/getBalanceNumber'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport { useAbondPrice } from '../../../../state/tokenPrices/useAbondPrice'\nimport Svg from '../../../../components/uikit-sdk/Svg'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { calculateOptimizationData } from '../../utils'\n\nconst UPGRADE_NOW_USD_BUFFER = 0.1\n\nconst getUpgradeNowAmountUsd = (amountUsd: number) =>\n new BigNumber(amountUsd)\n .decimalPlaces(2, BigNumber.ROUND_HALF_UP)\n .plus(UPGRADE_NOW_USD_BUFFER)\n .decimalPlaces(2, BigNumber.ROUND_CEIL)\n .toNumber()\n\nconst getNextTierInfo = (userPoints: string) => {\n const tiers = [\n { tier: LaunchBondTiers.Silver, threshold: TIERS_WEIGHT[LaunchBondTiers.Silver] },\n { tier: LaunchBondTiers.Gold, threshold: TIERS_WEIGHT[LaunchBondTiers.Gold] },\n { tier: LaunchBondTiers.Diamond, threshold: TIERS_WEIGHT[LaunchBondTiers.Diamond] },\n { tier: LaunchBondTiers.Legend, threshold: TIERS_WEIGHT[LaunchBondTiers.Legend] },\n { tier: LaunchBondTiers.Mythical, threshold: TIERS_WEIGHT[LaunchBondTiers.Mythical] },\n ]\n\n const userPointsBN = getBalanceNumber(userPoints)\n\n for (const { tier, threshold } of tiers) {\n const thresholdNumber = getBalanceNumber(threshold)\n if (userPointsBN < thresholdNumber) {\n const pointsNeeded = thresholdNumber - userPointsBN\n return { nextTier: tier, pointsNeeded }\n }\n }\n\n return null // User is at max tier (Mythical)\n}\n\ninterface GetUpToComponentProps {\n bond: BondsData\n inputAmount: string\n setInputValue: (value: string) => void\n inputTokenDecimals: number\n inputTokenPrice?: number\n}\n\nconst PointsLeftForNextTier: React.FC<GetUpToComponentProps> = ({\n bond,\n inputAmount,\n setInputValue,\n inputTokenDecimals,\n inputTokenPrice,\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n // Hooks & Data\n const { data: tierState } = useTierPoints()\n const { promotionalPoints } = tierState || {}\n const abondPrice = useAbondPrice()\n const userTier = getUserTier(promotionalPoints)\n const nextTierInfo = getNextTierInfo(promotionalPoints || '0')\n const inputAmountUSD = parseFloat(inputAmount) * (inputTokenPrice ?? 0)\n const necessaryUSDAmount = (nextTierInfo?.pointsNeeded! / 4) * abondPrice!\n const fee = ((bond.tierBoostRate ?? 0) + 100) / 100 - 1\n const feeToBeCollected = inputAmountUSD * fee\n const feeInAbond = feeToBeCollected / abondPrice!\n const pointsToBeEarned = feeInAbond * 4\n\n const optimizationData = calculateOptimizationData(inputAmount, promotionalPoints!, bond, inputTokenPrice, abondPrice)\n const nextTierData = optimizationData?.data?.[0]\n const highestProfitableTier = optimizationData?.highestProfitableTier\n const shouldRenderNextTierRow = Boolean((userTier ?? 0) < LaunchBondTiers.Mythical && nextTierData && (!highestProfitableTier || isOpen))\n const shouldShowNextTierRowCaret = !highestProfitableTier\n\n const handleSetNextTierAmount = (amount: number) => {\n const inputValueInSelectedToken = amount / (inputTokenPrice ?? 0)\n const roundedInputValue = new BigNumber(inputValueInSelectedToken)\n .decimalPlaces(inputTokenDecimals, BigNumber.ROUND_CEIL)\n .toFixed(inputTokenDecimals)\n setInputValue(roundedInputValue)\n }\n\n const handleTierSelection = (amount: number) => {\n handleSetNextTierAmount(getUpgradeNowAmountUsd(amount))\n setIsOpen(false)\n }\n\n const handleToggleOpen = (e: React.MouseEvent) => {\n e.stopPropagation()\n setIsOpen((prev) => !prev)\n }\n\n return (\n userTier !== LaunchBondTiers.Legend &&\n bond.billVersion === BillVersion.V4 && (\n <Flex\n sx={{\n width: '100%',\n mt: '10px',\n fontSize: '12px',\n fontWeight: 400,\n flexDirection: 'column',\n position: 'relative',\n cursor: 'pointer',\n }}\n onClick={() => setIsOpen(!isOpen)}\n >\n {highestProfitableTier && (\n <Flex\n sx={{\n border: '1px solid rgba(22, 101, 52, 0.53)',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: ['10px', '10px', '10px', '20px'],\n py: '6px',\n background: 'linear-gradient(90deg, #0A2A1A 0%, #1A2A28 100%) !important',\n color: 'rgba(134, 237, 171, 0.70)',\n minHeight: '27px',\n alignItems: 'center',\n gap: '5px',\n flexWrap: 'wrap',\n }}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'sub', mr: '4px' }}>\n <Svg icon=\"Discount\" width={14} color={'#4AD980'} />\n </span>\n <span sx={{ fontWeight: 700 }}>Congratulations!</span> With your purchase you will accumulate points to\n upgrade to {/*@ts-ignore*/}\n <span sx={{ fontWeight: 700, color: TIERS_COLORS[highestProfitableTier?.tier] }}>\n {highestProfitableTier.tierName}\n </span>{' '}\n <span sx={{ fontWeight: 700 }}>Tier!</span>\n </span>\n <Svg icon={'caret'} direction={isOpen ? 'up' : 'down'} width={10} />\n </Flex>\n )}\n {shouldRenderNextTierRow && (\n <Flex\n onClick={handleToggleOpen}\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n mt: highestProfitableTier ? '3px' : '0px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${nextTierData?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(nextTierData?.minBreakevenWithFeeUSD!)} bond purchase will grant you a\n {/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[nextTierData?.tier], px: '3px', fontWeight: 600 }}>{nextTierData?.tierName}</span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleTierSelection(nextTierData.minBreakevenWithFeeUSD)\n }}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleTierSelection(nextTierData.minBreakevenWithFeeUSD)\n }}\n >\n {`Upgrade now >`}\n </span>\n {shouldShowNextTierRowCaret && (\n <span\n sx={{ display: 'inline-flex', alignItems: 'center' }}\n onClick={handleToggleOpen}\n role=\"button\"\n aria-label={isOpen ? 'Collapse tier list' : 'Expand tier list'}\n >\n <Svg icon={'caret'} direction={isOpen ? 'up' : 'down'} width={10} />\n </span>\n )}\n </Flex>\n )}\n <AnimatePresence>\n {isOpen && optimizationData && (\n <motion.div\n initial={{ height: 0 }}\n animate={{ height: 'fit-content' }}\n transition={{ opacity: { duration: 0.2 } }}\n exit={{ height: 0 }}\n sx={{ overflow: 'hidden', width: '100%', marginTop: '3px', cursor: 'pointer' }}\n >\n {optimizationData?.data?.slice(1, optimizationData?.data.length)?.map((data, index) => {\n return (\n <Flex\n sx={{\n border: '1px solid #9960C5',\n borderRadius: 'normal',\n position: 'relative',\n overflow: 'hidden',\n pl: '10px',\n pr: '20px',\n py: '2px',\n mt: index === 0 ? '0px' : '3px',\n alignItems: 'center',\n background: '#312341',\n justifyContent: 'space-between',\n }}\n onClick={handleToggleOpen}\n key={data.tierName}\n >\n <span sx={{ flex: 1 }}>\n <span sx={{ display: 'inline-flex', verticalAlign: 'bottom' }}>\n <img\n src={`https://ape.bond/images/launch/${data?.tierName?.toLowerCase()}.png`}\n alt=\"minTier\"\n style={{ width: '21px', height: '21px', marginRight: '3px', zIndex: 1 }}\n />\n </span>\n Doing a ${formatNumberSI(data?.minBreakevenWithFeeUSD!)} bond purchase will grant you a\n {/*@ts-ignore*/}\n <span sx={{ color: TIERS_COLORS[data?.tier], px: '3px', fontWeight: 600 }}>{data?.tierName}</span>\n Tier.\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['inline', 'inline', 'inline', 'none'],\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(getUpgradeNowAmountUsd(data.minBreakevenWithFeeUSD))\n setIsOpen(false)\n }}\n >\n {`Upgrade now >`}\n </span>\n </span>\n <span\n sx={{\n ml: '5px',\n mr: '15px',\n color: 'primaryButton',\n fontWeight: 500,\n cursor: 'pointer',\n ':hover': { textDecoration: 'underline' },\n display: ['none', 'none', 'none', 'flex'],\n }}\n onClick={(e) => {\n e.stopPropagation()\n handleSetNextTierAmount(getUpgradeNowAmountUsd(data.minBreakevenWithFeeUSD))\n setIsOpen(false)\n }}\n >\n {`Upgrade now >`}\n </span>\n </Flex>\n )\n })}\n </motion.div>\n )}\n </AnimatePresence>\n {/*TODO: delete this debugging table once we are sure all is ok*/}\n {/*<Flex sx={{ mt: '15px' }}>Debbuging table</Flex>*/}\n {/*<Flex*/}\n {/* sx={{*/}\n {/* width: '100%',*/}\n {/* mt: '10px',*/}\n {/* fontSize: '12px',*/}\n {/* fontWeight: 400,*/}\n {/* flexDirection: 'column',*/}\n {/* position: 'relative',*/}\n {/* '& > :nth-of-type(even)': {*/}\n {/* background: 'white3',*/}\n {/* },*/}\n {/* '& > :nth-of-type(odd)': {*/}\n {/* background: 'white4',*/}\n {/* },*/}\n {/* }}*/}\n {/*>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>User Points</Flex>*/}\n {/* <Flex>{formatNumberSI(getBalanceNumber(promotionalPoints!))}</Flex>*/}\n {/* </Flex>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* /!*@ts-ignore*!/*/}\n {/* <Flex>Points needed for {TIERS_NAMES[nextTierInfo?.nextTier]}</Flex>*/}\n {/* <Flex>{formatNumberSI(nextTierInfo?.pointsNeeded)}</Flex>*/}\n {/* </Flex>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>usd Abond necessary for next tier</Flex>*/}\n {/* <Flex>${formatNumberSI(necessaryUSDAmount)}</Flex>*/}\n {/* </Flex>*/}\n {/* <Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee percentage</Flex>*/}\n {/* <Flex>*/}\n {/* {bond.tierBoostRate}% (${formatNumberSI(feeToBeCollected)})*/}\n {/* </Flex>*/}\n {/* </Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Input Amount USD</Flex>*/}\n {/* <Flex>${formatNumberSI(inputAmountUSD)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>USD Fee to be collected</Flex>*/}\n {/* <Flex>${formatNumberSI(feeToBeCollected)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee in ABOND</Flex>*/}\n {/* <Flex>{formatNumberSI(feeInAbond)} ABOND</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Points To Be Earned through tierBoostRate</Flex>*/}\n {/* <Flex>{formatNumberSI(pointsToBeEarned, 0)}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Enough points to upgrade?</Flex>*/}\n {/* <Flex>{arePointsEnough ? 'Yes 🔥' : 'No :('}</Flex>*/}\n {/*</Flex>*/}\n {/*<Flex sx={{ width: '100%', justifyContent: 'space-between', p: '3px' }}>*/}\n {/* <Flex>Fee in ABOND</Flex>*/}\n {/* <Flex>{formatNumberSI(feeInAbond)} ABOND</Flex>*/}\n {/*</Flex>*/}\n {/*</Flex>*/}\n </Flex>\n )\n )\n}\n\nexport default PointsLeftForNextTier\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|