import type { Account, PeerView } from "#lib/api/types.js"; import { t } from "#lib/i18n/locale.svelte.js"; const PEER_COLOR_COUNT = 7; export function peerColorIndex(id: number): number { return Math.abs(id) % PEER_COLOR_COUNT; } export function peerName(peer: PeerView | null): string { if (!peer) { return ""; } if (peer.is_deleted_account) { return t("chat.deletedAccount"); } const parts = [peer.first_name, peer.last_name].filter(Boolean); if (parts.length > 0) { return parts.join(" "); } if (peer.username) { return `@${peer.username}`; } return t("chat.deletedAccount"); } export function accountName(account: Account): string { return ( account.label ?? account.phone ?? String(account.tg_user_id ?? account.account_id) ); } const WHITESPACE = /\s+/; export function initials(name: string): string { const words = name.trim().split(WHITESPACE).filter(Boolean); if (words.length === 0) { return "?"; } const first = words[0].charAt(0); if (words.length === 1) { return first.toUpperCase(); } const lastWord = words.at(-1); const last = lastWord ? lastWord[0] : ""; return (first + last).toUpperCase(); } export function formatPhone(phone: string): string { return phone.startsWith("+") ? phone : `+${phone}`; }