+1
-1
index.html
+1
-1
index.html
···
3
3
<head>
4
4
<meta charset="utf-8" />
5
5
<meta name="viewport" content="width=device-width, initial-scale=1" />
6
-
<link rel="icon" href="/favicon.png" />
6
+
<link rel="icon" href="/favicon.ico" />
7
7
<meta property="og:title" content="PDSls" />
8
8
<meta property="og:type" content="website" />
9
9
<meta property="og:url" content="https://pdsls.dev" />
public/favicon.png
public/favicon.ico
public/favicon.png
public/favicon.ico
+1
-1
public/manifest.json
+1
-1
public/manifest.json
+1
-1
public/oauth-client-metadata.json
+1
-1
public/oauth-client-metadata.json
···
2
2
"client_id": "https://pdsls.dev/oauth-client-metadata.json",
3
3
"client_name": "PDSls",
4
4
"client_uri": "https://pdsls.dev",
5
-
"logo_uri": "https://pdsls.dev/favicon.png",
5
+
"logo_uri": "https://pdsls.dev/favicon.ico",
6
6
"redirect_uris": ["https://pdsls.dev/"],
7
7
"scope": "atproto transition:generic",
8
8
"grant_types": ["authorization_code", "refresh_token"],
+46
-18
src/views/repo.tsx
+46
-18
src/views/repo.tsx
···
395
395
: true,
396
396
)}
397
397
>
398
-
{(authority) => (
399
-
<div class="dark:hover:bg-dark-200 flex flex-col rounded-lg p-1 hover:bg-neutral-200">
400
-
<For
401
-
each={nsids()?.[authority].nsids.filter((nsid) =>
402
-
filter() ? nsid.startsWith(filter()!.split(".").slice(2).join(".")) : true,
403
-
)}
404
-
>
405
-
{(nsid) => (
406
-
<A
407
-
href={`/at://${did}/${authority}.${nsid}`}
408
-
class="hover:underline active:underline"
398
+
{(authority) => {
399
+
const reversedDomain = authority.split(".").reverse().join(".");
400
+
const [faviconError, setFaviconError] = createSignal(false);
401
+
402
+
return (
403
+
<div class="dark:hover:bg-dark-200 flex items-start gap-2 rounded-lg p-1 hover:bg-neutral-200">
404
+
<div class="flex h-5 w-4 shrink-0 items-center justify-center">
405
+
<Show
406
+
when={!faviconError()}
407
+
fallback={
408
+
<span class="iconify lucide--globe size-4 text-neutral-400 dark:text-neutral-500" />
409
+
}
409
410
>
410
-
<span>{authority}</span>
411
-
<span class="text-neutral-500 dark:text-neutral-400">.{nsid}</span>
412
-
</A>
413
-
)}
414
-
</For>
415
-
</div>
416
-
)}
411
+
<img
412
+
src={
413
+
reversedDomain === "bsky.app" ?
414
+
"https://web-cdn.bsky.app/static/apple-touch-icon.png"
415
+
: `https://${reversedDomain}/favicon.ico`
416
+
}
417
+
alt={`${reversedDomain} favicon`}
418
+
class="h-4 w-4"
419
+
onError={() => setFaviconError(true)}
420
+
/>
421
+
</Show>
422
+
</div>
423
+
<div class="flex flex-1 flex-col">
424
+
<For
425
+
each={nsids()?.[authority].nsids.filter((nsid) =>
426
+
filter() ?
427
+
nsid.startsWith(filter()!.split(".").slice(2).join("."))
428
+
: true,
429
+
)}
430
+
>
431
+
{(nsid) => (
432
+
<A
433
+
href={`/at://${did}/${authority}.${nsid}`}
434
+
class="hover:underline active:underline"
435
+
>
436
+
<span>{authority}</span>
437
+
<span class="text-neutral-500 dark:text-neutral-400">.{nsid}</span>
438
+
</A>
439
+
)}
440
+
</For>
441
+
</div>
442
+
</div>
443
+
);
444
+
}}
417
445
</For>
418
446
</div>
419
447
</Show>