52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
type MessengerConnectionView = {
|
||
id: string;
|
||
type: 'TELEGRAM' | 'MAX';
|
||
channelId: string;
|
||
displayName?: string | null;
|
||
username?: string | null;
|
||
avatarAvailable?: boolean | null;
|
||
};
|
||
|
||
export function messengerConnectionName(connection: MessengerConnectionView | null | undefined) {
|
||
const displayName = String(connection?.displayName || '').trim();
|
||
if (displayName) {
|
||
return displayName;
|
||
}
|
||
|
||
const username = String(connection?.username || '').trim();
|
||
if (username) {
|
||
return `@${username.replace(/^@+/, '')}`;
|
||
}
|
||
|
||
return connection?.channelId || 'Не подключен';
|
||
}
|
||
|
||
export function messengerConnectionHandle(connection: MessengerConnectionView | null | undefined) {
|
||
const username = String(connection?.username || '').trim().replace(/^@+/, '');
|
||
if (username) {
|
||
return `@${username}`;
|
||
}
|
||
|
||
return connection?.channelId || '';
|
||
}
|
||
|
||
export function messengerConnectionInitials(connection: MessengerConnectionView | null | undefined, fallback: string) {
|
||
const base = messengerConnectionName(connection);
|
||
const initials = base
|
||
.split(' ')
|
||
.filter(Boolean)
|
||
.slice(0, 2)
|
||
.map((part) => part.charAt(0).toUpperCase())
|
||
.join('');
|
||
|
||
return initials || fallback;
|
||
}
|
||
|
||
export function messengerConnectionAvatarSrc(connection: MessengerConnectionView | null | undefined) {
|
||
if (!connection?.avatarAvailable || connection.type !== 'TELEGRAM') {
|
||
return '';
|
||
}
|
||
|
||
return `/api/messenger-avatar/${encodeURIComponent(connection.id)}`;
|
||
}
|