···14141515// rate limit window in ms (env var is in seconds, default 86400 = 24h)
1616export const INVITE_RATE_WINDOW = (parseInt(env.INVITE_RATE_WINDOW ?? '86400', 10) || 86400) * 1000;
1717+1818+// comma-separated DIDs to pin at the top of the account list
1919+export const PINNED_DIDS: string[] = (env.PINNED_DIDS ?? '')
2020+ .split(',')
2121+ .map((d) => d.trim())
2222+ .filter(Boolean);
+15-3
src/routes/+page.server.ts
···11import type { PageServerLoad } from './$types';
22import { publicRpc } from '$lib/server/pds';
33-import { CDN_URL } from '$lib/server/env';
33+import { CDN_URL, PINNED_DIDS } from '$lib/server/env';
4455const DID_RE = /^did:[a-z]+:[a-zA-Z0-9._:%-]+$/;
66···71717272 let displayName: string | null = null;
7373 let avatarUrl: string | null = null;
7474- if (profileResult.status === 'fulfilled') {
7575- const value = profileResult.value.data.value as Record<string, unknown>;
7474+ const value =
7575+ profileResult.status === 'fulfilled'
7676+ ? (profileResult.value.data.value as Record<string, unknown> | undefined)
7777+ : undefined;
7878+ if (value) {
7679 if (typeof value.displayName === 'string' && value.displayName.trim()) {
7780 displayName = value.displayName.trim().slice(0, 640);
7881 }
···9598 const accounts: Account[] = results
9699 .filter((r) => r.status === 'fulfilled')
97100 .map((r) => (r as PromiseFulfilledResult<Account>).value);
101101+102102+ if (PINNED_DIDS.length) {
103103+ const pinSet = new Set(PINNED_DIDS);
104104+ accounts.sort((a, b) => {
105105+ const ap = pinSet.has(a.did) ? PINNED_DIDS.indexOf(a.did) : Infinity;
106106+ const bp = pinSet.has(b.did) ? PINNED_DIDS.indexOf(b.did) : Infinity;
107107+ return ap - bp;
108108+ });
109109+ }
9811099111 return { accounts, contactEmail };
100112};