mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 09:33:46 +00:00
User reported single-letter welcome "Добро пожаловать, О!" (short first_name "Олег"-style users) and a confused "Истекла" feminine label on the masculine "Пробный период истёк" trial-expired card. * Add `src/utils/displayName.ts` helper that composes `first_name + last_name` with `username` and `#telegram_id` fallbacks. Single source of truth for user-facing name rendering across the app. * Apply `displayName(user)` in Dashboard welcome, AppHeader mobile drawer, and DesktopSidebar profile chip. Now a user with `first_name="О"` and `last_name="Иванов"` sees "О Иванов" instead of just "О". * `SubscriptionCardExpired` — context-aware Russian label: for trial subscriptions render masculine "Истёк" (agrees with "пробный период"), for paid subscriptions keep feminine "Истекла" (agrees with "подписка"). Uses i18next `context: subscription.is_trial ? 'trial' : ''` — falls back to base key for EN/ZH/FA which are grammatically neutral. * Add `expiredDate_trial: "Истёк"` only to `ru.json` (no changes needed for other locales — i18next context falls back to `expiredDate`).
24 lines
808 B
TypeScript
24 lines
808 B
TypeScript
/**
|
||
* Composes a user-facing display name from first_name + last_name with sensible fallbacks.
|
||
*
|
||
* Why: single-letter first_name (e.g., "О") looked confusing alone ("Добро пожаловать, О!").
|
||
* Combining with last_name makes truncated/short first names readable.
|
||
*/
|
||
export interface NameSource {
|
||
first_name?: string | null;
|
||
last_name?: string | null;
|
||
username?: string | null;
|
||
telegram_id?: number | null;
|
||
}
|
||
|
||
export function displayName(user?: NameSource | null): string {
|
||
if (!user) return '';
|
||
const fullName = [user.first_name, user.last_name]
|
||
.filter((part): part is string => Boolean(part && part.trim()))
|
||
.join(' ');
|
||
if (fullName) return fullName;
|
||
if (user.username) return user.username;
|
||
if (user.telegram_id) return `#${user.telegram_id}`;
|
||
return '';
|
||
}
|