diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fec2da..4299bf5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [1.29.1](https://github.com/BEDOLAGA-DEV/bedolaga-cabinet/compare/v1.29.0...v1.29.1) (2026-03-10) + + +### Bug Fixes + +* daily tariff renewal uses purchaseTariff instead of renewSubscription ([8629cfe](https://github.com/BEDOLAGA-DEV/bedolaga-cabinet/commit/8629cfea18aab9daf818f1f6c8e250ede29054d4)) +* show fallback when tariff has no available periods for renewal ([ea06ad1](https://github.com/BEDOLAGA-DEV/bedolaga-cabinet/commit/ea06ad1d8f7894f5460d150fa72d094617b9fbbe)) + ## [1.29.0](https://github.com/BEDOLAGA-DEV/bedolaga-cabinet/compare/v1.28.0...v1.29.0) (2026-03-09) diff --git a/package-lock.json b/package-lock.json index ff91b9d..4e4baf0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cabinet-frontend", - "version": "1.29.0", + "version": "1.29.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cabinet-frontend", - "version": "1.29.0", + "version": "1.29.1", "license": "AGPL-3.0", "dependencies": { "@dnd-kit/core": "^6.3.1", diff --git a/package.json b/package.json index 4cd52c6..239dc2f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cabinet-frontend", "private": true, - "version": "1.29.0", + "version": "1.29.1", "description": "Remnawave Bedolaga Web App", "license": "AGPL-3.0", "type": "module", diff --git a/src/components/PaymentMethodIcon.tsx b/src/components/PaymentMethodIcon.tsx index 8fd00a4..9609e4c 100644 --- a/src/components/PaymentMethodIcon.tsx +++ b/src/components/PaymentMethodIcon.tsx @@ -1,3 +1,5 @@ +import { useId } from 'react'; + interface PaymentMethodIconProps { method: string; className?: string; @@ -7,6 +9,8 @@ export default function PaymentMethodIcon({ method, className = 'h-8 w-8', }: PaymentMethodIconProps) { + const uid = useId(); + switch (method) { case 'telegram_stars': return ( @@ -171,16 +175,17 @@ export default function PaymentMethodIcon({ ); - case 'kassa_ai': + case 'kassa_ai': { + const kassaGradId = `${uid}-kassaAi`; return ( - + - + AI @@ -188,6 +193,27 @@ export default function PaymentMethodIcon({ ); + } + + case 'riopay': { + const riopayGradId = `${uid}-riopay`; + return ( + + + + + + + + + + + RP + + + + ); + } default: return ( diff --git a/src/components/sales-stats/DepositsTab.tsx b/src/components/sales-stats/DepositsTab.tsx index cbcf3f2..8b1078c 100644 --- a/src/components/sales-stats/DepositsTab.tsx +++ b/src/components/sales-stats/DepositsTab.tsx @@ -4,6 +4,7 @@ import { useTranslation } from 'react-i18next'; import type { SalesStatsParams } from '../../api/adminSalesStats'; import { salesStatsApi } from '../../api/adminSalesStats'; +import { METHOD_LABELS } from '../../constants/paymentMethods'; import { SALES_STATS } from '../../constants/salesStats'; import { useCurrency } from '../../hooks/useCurrency'; import { StatCard } from '../stats'; @@ -16,21 +17,6 @@ interface DepositsTabProps { params: SalesStatsParams; } -const METHOD_LABELS: Record = { - telegram_stars: 'Telegram Stars', - tribute: 'Tribute', - yookassa: 'YooKassa', - cryptobot: 'CryptoBot', - heleket: 'Heleket', - mulenpay: 'Mulenpay', - pal24: 'Pal24', - wata: 'Wata', - platega: 'Platega', - cloudpayments: 'CloudPayments', - freekassa: 'FreeKassa', - kassa_ai: 'Kassa AI', -}; - export function DepositsTab({ params }: DepositsTabProps) { const { t } = useTranslation(); const { formatWithCurrency } = useCurrency(); diff --git a/src/constants/paymentMethods.ts b/src/constants/paymentMethods.ts new file mode 100644 index 0000000..52b6477 --- /dev/null +++ b/src/constants/paymentMethods.ts @@ -0,0 +1,17 @@ +export const METHOD_LABELS: Record = { + telegram_stars: 'Telegram Stars', + tribute: 'Tribute', + cryptobot: 'CryptoBot', + heleket: 'Heleket', + yookassa: 'YooKassa', + mulenpay: 'MulenPay', + pal24: 'PayPalych', + platega: 'Platega', + wata: 'WATA', + freekassa: 'Freekassa', + freekassa_sbp: 'Freekassa СБП', + freekassa_card: 'Freekassa Карта', + cloudpayments: 'CloudPayments', + kassa_ai: 'Kassa AI', + riopay: 'RioPay', +}; diff --git a/src/pages/AdminPaymentMethodEdit.tsx b/src/pages/AdminPaymentMethodEdit.tsx index a0ebdc4..2f76918 100644 --- a/src/pages/AdminPaymentMethodEdit.tsx +++ b/src/pages/AdminPaymentMethodEdit.tsx @@ -3,6 +3,7 @@ import { useParams, useNavigate } from 'react-router'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { adminPaymentMethodsApi } from '../api/adminPaymentMethods'; +import { METHOD_LABELS } from '../constants/paymentMethods'; import type { PromoGroupSimple } from '../types'; import { usePlatform } from '../platform/hooks/usePlatform'; import { createNumberInputHandler, toNumber } from '../utils/inputHelpers'; @@ -18,23 +19,6 @@ const BackIcon = () => ( ); -const METHOD_LABELS: Record = { - telegram_stars: 'Telegram Stars', - tribute: 'Tribute', - cryptobot: 'CryptoBot', - heleket: 'Heleket', - yookassa: 'YooKassa', - mulenpay: 'MulenPay', - pal24: 'PayPalych', - platega: 'Platega', - wata: 'WATA', - freekassa: 'Freekassa', - freekassa_sbp: 'Freekassa СБП', - freekassa_card: 'Freekassa Карта', - cloudpayments: 'CloudPayments', - kassa_ai: 'Kassa AI', -}; - const CheckIcon = () => (