mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-29 18:13:47 +00:00
fix: improve campaign stats, shared chart components, and i18n coverage
- Extract shared chart constants to constants/charts.ts - Add TREND_STYLES to stats/constants.ts for reuse - Fix useChartColors with MutationObserver for theme changes - Fix DailyChart date parsing to prevent timezone shift - Add truncate to StatCard value for overflow safety - Fix CampaignCard copy feedback inside try block - Add NaN validation and staleTime to AdminCampaignStats - Replace hardcoded strings with i18n keys in Referral page - Add missing i18n keys across all 4 locales (en, ru, zh, fa) - Add sales stats route to AdminPanel and App router
This commit is contained in:
@@ -82,6 +82,8 @@ const bonusTypeConfig: Record<
|
||||
export default function AdminCampaignStats() {
|
||||
const { t, i18n } = useTranslation();
|
||||
const { id } = useParams<{ id: string }>();
|
||||
const numericId = id ? Number(id) : null;
|
||||
const isValidId = numericId !== null && !isNaN(numericId);
|
||||
const navigate = useNavigate();
|
||||
const haptic = useHaptic();
|
||||
const { formatWithCurrency } = useCurrency();
|
||||
@@ -105,22 +107,23 @@ export default function AdminCampaignStats() {
|
||||
error,
|
||||
} = useQuery({
|
||||
queryKey: ['campaign-stats', id],
|
||||
queryFn: () => campaignsApi.getCampaignStats(Number(id)),
|
||||
enabled: !!id,
|
||||
queryFn: () => campaignsApi.getCampaignStats(numericId!),
|
||||
enabled: isValidId,
|
||||
staleTime: PARTNER_STATS.STATS_STALE_TIME,
|
||||
});
|
||||
|
||||
// Fetch registrations when users section is open
|
||||
const { data: registrationsData, isLoading: usersLoading } = useQuery({
|
||||
queryKey: ['campaign-registrations', id],
|
||||
queryFn: () => campaignsApi.getCampaignRegistrations(Number(id), 1, 50),
|
||||
enabled: !!id && showUsers,
|
||||
queryFn: () => campaignsApi.getCampaignRegistrations(numericId!, 1, 50),
|
||||
enabled: isValidId && showUsers,
|
||||
});
|
||||
|
||||
// Fetch chart data
|
||||
const { data: chartData, isLoading: chartLoading } = useQuery<AdminCampaignChartData>({
|
||||
queryKey: ['campaign-chart-data', id],
|
||||
queryFn: () => campaignsApi.getChartData(Number(id)),
|
||||
enabled: !!id,
|
||||
queryFn: () => campaignsApi.getChartData(numericId!),
|
||||
enabled: isValidId,
|
||||
staleTime: PARTNER_STATS.STATS_STALE_TIME,
|
||||
});
|
||||
|
||||
@@ -517,7 +520,9 @@ export default function AdminCampaignStats() {
|
||||
>
|
||||
<div>
|
||||
<div className="font-medium text-dark-100">
|
||||
{reg.first_name || reg.username || `User #${reg.user_id}`}
|
||||
{reg.first_name ||
|
||||
reg.username ||
|
||||
`${t('admin.campaigns.stats.users')} #${reg.user_id}`}
|
||||
</div>
|
||||
<div className="text-xs text-dark-500">{reg.telegram_id}</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user