feat: add annotations, user profiles, watchers, stories, search and more

This commit is contained in:
hh committed 2026-06-01 17:15:09 +02:00
1 parent ed469ba8dd
commit 2465bcd184
47 files changed
+5009 -242

No files matched your search

+53
View File
@@ -72,3 +72,56 @@ export function loadAvatar(
inflight.set(key, promise);
return promise;
}
async function fetchVariant(
account: number,
kind: AvatarKind,
id: number,
uniqueId: string,
key: string,
retry: boolean
): Promise<string | null> {
const url = `${BASE}/avatars/${kind}/${id}?account_id=${account}&unique_id=${encodeURIComponent(uniqueId)}`;
const response = await fetch(url, { headers: authHeaders() });
if (response.ok) {
const objectUrl = URL.createObjectURL(await response.blob());
ready.set(key, objectUrl);
return objectUrl;
}
if (response.status === 409 && retry) {
await delay(RETRY_DELAY);
return fetchVariant(account, kind, id, uniqueId, key, false);
}
missing.add(key);
return null;
}
export function loadAvatarVariant(
kind: AvatarKind,
id: number,
uniqueId: string
): Promise<string | null> {
const account = accounts.selectedId;
if (account === null) {
return Promise.resolve(null);
}
const key = `${cacheKey(account, kind, id)}:${uniqueId}`;
const cached = ready.get(key);
if (cached) {
return Promise.resolve(cached);
}
if (missing.has(key)) {
return Promise.resolve(null);
}
const existing = inflight.get(key);
if (existing) {
return existing;
}
const promise = fetchVariant(account, kind, id, uniqueId, key, true).finally(
() => {
inflight.delete(key);
}
);
inflight.set(key, promise);
return promise;
}