Hydrate Telegram avatars on demand in frontend API
This commit is contained in:
@@ -123,9 +123,11 @@ function resolveContactMessageAudioUrl(message: {
|
||||
function resolveContactAvatarUrl(contact: {
|
||||
id: string;
|
||||
avatarUrl: string | null;
|
||||
}) {
|
||||
}, hasTelegramChannel: boolean) {
|
||||
const raw = String(contact.avatarUrl ?? "").trim();
|
||||
if (!raw) return "";
|
||||
if (!raw) {
|
||||
return hasTelegramChannel ? `/api/omni/telegram/avatar?contactId=${encodeURIComponent(contact.id)}` : "";
|
||||
}
|
||||
if (raw.startsWith(TELEGRAM_AUDIO_FILE_MARKER)) {
|
||||
return `/api/omni/telegram/avatar?contactId=${encodeURIComponent(contact.id)}`;
|
||||
}
|
||||
@@ -493,11 +495,13 @@ async function getContacts(auth: AuthContext | null) {
|
||||
if (total === 0) return true;
|
||||
return (visibleInboxesByContactId.get(c.id) ?? 0) > 0;
|
||||
})
|
||||
.map((c) => ({
|
||||
.map((c) => {
|
||||
const channels = Array.from(channelsByContactId.get(c.id) ?? []);
|
||||
return {
|
||||
id: c.id,
|
||||
name: c.name,
|
||||
avatar: resolveContactAvatarUrl(c),
|
||||
channels: Array.from(channelsByContactId.get(c.id) ?? []),
|
||||
avatar: resolveContactAvatarUrl(c, channels.includes("Telegram")),
|
||||
channels,
|
||||
lastContactAt: c.messages[0]?.occurredAt?.toISOString?.() ?? c.updatedAt.toISOString(),
|
||||
lastMessageText: c.messages[0]?.content ?? "",
|
||||
lastMessageChannel: c.messages[0]?.channel ? mapChannel(c.messages[0].channel) : "",
|
||||
@@ -505,7 +509,8 @@ async function getContacts(auth: AuthContext | null) {
|
||||
? (!readAtByContactId.has(c.id) || c.messages[0].occurredAt > readAtByContactId.get(c.id)!)
|
||||
: false,
|
||||
description: c.note?.content ?? "",
|
||||
}));
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
async function getCommunications(auth: AuthContext | null) {
|
||||
|
||||
Reference in New Issue
Block a user