mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-29 18:13:47 +00:00
fix: batch bug fixes matching backend changes
- Promo code errors: add inactive/not_yet_valid translations (4 locales) + Balance.tsx parser - Daily 100% discount: render price block when originalDailyPrice > 0 - Webvisor: enable in Yandex Metrika init config - Referral attribution: consume campaign/referral slugs only after successful auth (all login methods) - registerWithEmail: consume referral code after success - AdminSettings: move TARIFF_MODE_SETTINGS to module scope (fix eslint warning)
This commit is contained in:
@@ -43,6 +43,9 @@ const ChevronRightIcon = () => (
|
||||
</svg>
|
||||
);
|
||||
|
||||
// Settings that require SALES_MODE=tariffs to be visible
|
||||
const TARIFF_MODE_SETTINGS = ['MULTI_TARIFF_ENABLED', 'MAX_ACTIVE_SUBSCRIPTIONS'];
|
||||
|
||||
export default function AdminSettings() {
|
||||
const { t } = useTranslation();
|
||||
const navigate = useNavigate();
|
||||
@@ -85,9 +88,6 @@ export default function AdminSettings() {
|
||||
}
|
||||
}
|
||||
|
||||
// Settings that require SALES_MODE=tariffs to be visible
|
||||
const TARIFF_MODE_SETTINGS = ['MULTI_TARIFF_ENABLED', 'MAX_ACTIVE_SUBSCRIPTIONS'];
|
||||
|
||||
// Check if tariffs mode is active
|
||||
const isTariffsMode = useMemo(() => {
|
||||
if (!allSettings || !Array.isArray(allSettings)) return false;
|
||||
|
||||
@@ -177,15 +177,20 @@ export default function Balance() {
|
||||
} catch (error: unknown) {
|
||||
const axiosError = error as { response?: { data?: { detail?: string } } };
|
||||
const errorDetail = axiosError.response?.data?.detail || 'server_error';
|
||||
const errorKey = errorDetail.toLowerCase().includes('not found')
|
||||
const detail = errorDetail.toLowerCase();
|
||||
const errorKey = detail.includes('not found')
|
||||
? 'not_found'
|
||||
: errorDetail.toLowerCase().includes('expired')
|
||||
? 'expired'
|
||||
: errorDetail.toLowerCase().includes('fully used')
|
||||
? 'used'
|
||||
: errorDetail.toLowerCase().includes('already used')
|
||||
? 'already_used_by_user'
|
||||
: 'server_error';
|
||||
: detail.includes('deactivated')
|
||||
? 'inactive'
|
||||
: detail.includes('not yet active')
|
||||
? 'not_yet_valid'
|
||||
: detail.includes('expired')
|
||||
? 'expired'
|
||||
: detail.includes('fully used')
|
||||
? 'used'
|
||||
: detail.includes('already used')
|
||||
? 'already_used_by_user'
|
||||
: 'server_error';
|
||||
setPromocodeError(t(`balance.promocode.errors.${errorKey}`));
|
||||
setPromoSelectSubs(null);
|
||||
setPromoSelectCode(null);
|
||||
|
||||
@@ -873,7 +873,7 @@ export default function SubscriptionPurchase() {
|
||||
const dailyPrice =
|
||||
tariff.daily_price_kopeks ?? tariff.price_per_day_kopeks ?? 0;
|
||||
const originalDailyPrice = tariff.original_daily_price_kopeks || 0;
|
||||
if (dailyPrice > 0) {
|
||||
if (dailyPrice > 0 || originalDailyPrice > 0) {
|
||||
const promoDaily = applyPromoDiscount(
|
||||
dailyPrice,
|
||||
originalDailyPrice > dailyPrice ? originalDailyPrice : undefined,
|
||||
|
||||
@@ -4,7 +4,7 @@ import { useTranslation } from 'react-i18next';
|
||||
import { authApi } from '../api/auth';
|
||||
import { useAuthStore } from '../store/auth';
|
||||
import { useShallow } from 'zustand/shallow';
|
||||
import { consumeCampaignSlug } from '../utils/campaign';
|
||||
import { consumeCampaignSlug, getPendingCampaignSlug } from '../utils/campaign';
|
||||
import { tokenStorage } from '../utils/token';
|
||||
import LanguageSwitcher from '../components/LanguageSwitcher';
|
||||
|
||||
@@ -39,8 +39,9 @@ export default function VerifyEmail() {
|
||||
|
||||
const verify = async () => {
|
||||
try {
|
||||
const campaignSlug = consumeCampaignSlug();
|
||||
const campaignSlug = getPendingCampaignSlug();
|
||||
const response = await authApi.verifyEmail(token, campaignSlug);
|
||||
consumeCampaignSlug();
|
||||
// Save tokens and log user in
|
||||
tokenStorage.setTokens(response.access_token, response.refresh_token);
|
||||
setTokens(response.access_token, response.refresh_token);
|
||||
|
||||
Reference in New Issue
Block a user