mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-30 10:27:49 +00:00
fix(admin): show flag for every country code, not just hardcoded 25-36
User reported the EE (Estonia) flag rendered as plain text 'EE' on the
admin servers page. Root cause: getCountryFlag() in AdminServers.tsx
and AdminServerEdit.tsx hardcoded a 25-entry codeMap that didn't
include EE; falling through to 'return code' produced raw text.
Two other admin pages (AdminRemnawaveSquadDetail, AdminUserDetail)
had bigger 35-entry maps that did include EE — so EE worked there
but MX/AR/EG/ZA and friends still wouldn't. AdminRemnawave repeated
the same 35-entry map. AdminTrafficUsage already had the correct
algorithmic ISO→regional-indicator code but as a local duplicate of
utils/subscriptionHelpers.
Unify all six on the single algorithmic helper:
- getFlagEmoji() in utils/subscriptionHelpers.ts now:
* accepts string | null | undefined (callers don't need to guard)
* trims whitespace
* validates [A-Za-z]{2} before composing regional indicators
- Each admin page now either imports getFlagEmoji directly or wraps
it with the page's preferred fallback character (e.g. '🌍' for
empty codes where the UI expects a placeholder).
This commit is contained in:
@@ -5,49 +5,12 @@ import { adminRemnawaveApi, SquadWithLocalInfo } from '../api/adminRemnawave';
|
||||
import { AdminBackButton } from '../components/admin';
|
||||
import { ServerIcon, UsersIcon, CheckIcon, XIcon } from '../components/icons';
|
||||
import Twemoji from 'react-twemoji';
|
||||
// Country flags helper
|
||||
const getCountryFlag = (code: string | null | undefined): string => {
|
||||
if (!code) return '🌍';
|
||||
const codeMap: Record<string, string> = {
|
||||
RU: '🇷🇺',
|
||||
US: '🇺🇸',
|
||||
DE: '🇩🇪',
|
||||
NL: '🇳🇱',
|
||||
GB: '🇬🇧',
|
||||
UK: '🇬🇧',
|
||||
FR: '🇫🇷',
|
||||
FI: '🇫🇮',
|
||||
SE: '🇸🇪',
|
||||
NO: '🇳🇴',
|
||||
PL: '🇵🇱',
|
||||
TR: '🇹🇷',
|
||||
JP: '🇯🇵',
|
||||
SG: '🇸🇬',
|
||||
HK: '🇭🇰',
|
||||
KR: '🇰🇷',
|
||||
AU: '🇦🇺',
|
||||
CA: '🇨🇦',
|
||||
CH: '🇨🇭',
|
||||
AT: '🇦🇹',
|
||||
IT: '🇮🇹',
|
||||
ES: '🇪🇸',
|
||||
BR: '🇧🇷',
|
||||
IN: '🇮🇳',
|
||||
AE: '🇦🇪',
|
||||
IL: '🇮🇱',
|
||||
KZ: '🇰🇿',
|
||||
UA: '🇺🇦',
|
||||
CZ: '🇨🇿',
|
||||
RO: '🇷🇴',
|
||||
LV: '🇱🇻',
|
||||
LT: '🇱🇹',
|
||||
EE: '🇪🇪',
|
||||
BG: '🇧🇬',
|
||||
HU: '🇭🇺',
|
||||
MD: '🇲🇩',
|
||||
};
|
||||
return codeMap[code.toUpperCase()] || code;
|
||||
};
|
||||
import { getFlagEmoji } from '../utils/subscriptionHelpers';
|
||||
|
||||
// Country flag helper. Алгоритмический ISO 3166-1 alpha-2 → regional indicator,
|
||||
// чтобы не плодить хардкод-словари (исторически у каждого экрана был свой
|
||||
// неполный, и EE/MX/AR не покрывались). При отсутствии кода — глобус.
|
||||
const getCountryFlag = (code: string | null | undefined): string => getFlagEmoji(code) || '🌍';
|
||||
|
||||
export default function AdminRemnawaveSquadDetail() {
|
||||
const { t } = useTranslation();
|
||||
|
||||
Reference in New Issue
Block a user