14.05.2026 rip
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { useConverter, progressPercent, findTier } from '@widgets/currency-converter'
|
import { useConverter, progressPercent } from '@widgets/currency-converter'
|
||||||
import { useDebounce } from '@shared/lib/hooks/useDebounce'
|
import { useDebounce } from '@shared/lib/hooks/useDebounce'
|
||||||
import { usePaymentQuote, usePaymentConfig, useCreateOrder } from '@features/payment'
|
import { usePaymentQuote, usePaymentConfig, useCreateOrder } from '@features/payment'
|
||||||
import { CommissionPanel } from './CommissionPanel'
|
import { CommissionPanel } from './CommissionPanel'
|
||||||
@@ -15,14 +15,11 @@ export function ConverterSection() {
|
|||||||
const configUsdtRate = Number(config?.usdt_exchange_rate) || 0
|
const configUsdtRate = Number(config?.usdt_exchange_rate) || 0
|
||||||
const gasPriceRub = Number(config?.gas_fee) * configUsdtRate
|
const gasPriceRub = Number(config?.gas_fee) * configUsdtRate
|
||||||
|
|
||||||
const usdtRate = Number(quote?.usdt_exchange_rate) || 0
|
|
||||||
|
|
||||||
const rubTotal = quote?.total_price ?? ''
|
const rubTotal = quote?.total_price ?? ''
|
||||||
const rubTotalNum = Number(rubTotal) || 0
|
const rubTotalNum = Number(rubTotal) || 0
|
||||||
|
|
||||||
const tier = findTier(rubTotalNum)
|
const commission = Number(quote?.service_fee) || 0
|
||||||
const commission = (rubTotalNum * tier.pct) / 100
|
const effectiveRate = c.numRub > 0 ? rubTotalNum / c.numRub : 0
|
||||||
const effectiveRate = usdtRate * (1 + tier.pct / 100)
|
|
||||||
|
|
||||||
const { mutate: submitOrder, isPending } = useCreateOrder()
|
const { mutate: submitOrder, isPending } = useCreateOrder()
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import { USDT_RATE, GAS_PRICE } from '@shared/config/constants'
|
import { USDT_RATE, GAS_PRICE } from '@shared/config/constants'
|
||||||
import { useConverter } from '../model/useConverter'
|
import { useConverter } from '../model/useConverter'
|
||||||
import { findTier, progressPercent } from '../model/tiers'
|
import { progressPercent } from '../model/tiers'
|
||||||
import { usePaymentConfig } from '@features/payment'
|
import { usePaymentConfig, usePaymentQuote } from '@features/payment'
|
||||||
|
import { useDebounce } from '@shared/lib/hooks/useDebounce'
|
||||||
import { AgreementCheckbox } from './AgreementCheckbox'
|
import { AgreementCheckbox } from './AgreementCheckbox'
|
||||||
import { CommissionTable } from './CommissionTable'
|
import { CommissionTable } from './CommissionTable'
|
||||||
import styles from './Converter.module.css'
|
import styles from './Converter.module.css'
|
||||||
@@ -15,13 +16,14 @@ export function Converter() {
|
|||||||
|
|
||||||
const c = useConverter({ usdtRate: configUsdtRate })
|
const c = useConverter({ usdtRate: configUsdtRate })
|
||||||
|
|
||||||
// c.rubVal / c.numRub used as USDT input; RUB is computed
|
const debouncedUsdt = useDebounce(c.numRub, 400)
|
||||||
const numUsdt = c.numRub
|
const { data: quote } = usePaymentQuote(debouncedUsdt)
|
||||||
const approxRub = numUsdt * configUsdtRate
|
|
||||||
const { pct } = findTier(approxRub)
|
const rubTotal = quote?.total_price ?? ''
|
||||||
const effectiveRate = configUsdtRate * (1 + pct / 100)
|
const rubTotalNum = Number(rubTotal) || 0
|
||||||
const rubOutput = numUsdt > 0 ? (numUsdt * effectiveRate).toFixed(2) : ''
|
|
||||||
const commission = (approxRub * pct) / 100
|
const commission = Number(quote?.service_fee) || 0
|
||||||
|
const effectiveRate = c.numRub > 0 ? rubTotalNum / c.numRub : 0
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className={styles.section} id="converter">
|
<section className={styles.section} id="converter">
|
||||||
@@ -98,7 +100,7 @@ export function Converter() {
|
|||||||
|
|
||||||
<div className={styles.field}>
|
<div className={styles.field}>
|
||||||
<div className={styles.fieldInput}>
|
<div className={styles.fieldInput}>
|
||||||
<input type="text" value={rubOutput} readOnly placeholder="0" />
|
<input type="text" value={rubTotal} readOnly placeholder="0" />
|
||||||
<div className={styles.currency}>
|
<div className={styles.currency}>
|
||||||
<span className={`${styles.currencyIcon} ${styles.currencyRub}`}>₽</span> RUB
|
<span className={`${styles.currencyIcon} ${styles.currencyRub}`}>₽</span> RUB
|
||||||
</div>
|
</div>
|
||||||
@@ -107,8 +109,8 @@ export function Converter() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<CommissionTable
|
<CommissionTable
|
||||||
amount={approxRub}
|
amount={rubTotalNum}
|
||||||
progress={progressPercent(approxRub)}
|
progress={progressPercent(rubTotalNum)}
|
||||||
commission={commission}
|
commission={commission}
|
||||||
effectiveRate={effectiveRate}
|
effectiveRate={effectiveRate}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Reference in New Issue
Block a user