feat(profile): show real telegram avatars in messenger chips
This commit is contained in:
51
app/composables/useMessengerConnectionPresentation.ts
Normal file
51
app/composables/useMessengerConnectionPresentation.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
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)}`;
|
||||
}
|
||||
Reference in New Issue
Block a user