atmosphere explorer
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

add did doc fetching fallback for feedgens

Juliet 3d7a4c3b 8655d3fd

+89 -76
+89 -76
src/views/repo.tsx
··· 111 111 const fetchRepo = async () => { 112 112 try { 113 113 pds = await resolvePDS(did); 114 + setDidDoc(didDocCache[did] as DidDocument); 114 115 } catch { 115 - if (!did.startsWith("did:")) { 116 + // Fallback for feedgens 117 + if (did.startsWith("did:web")) { 118 + try { 119 + const res = await fetch(`https://${did.replace("did:web:", "")}/.well-known/did.json`); 120 + const didDoc = await res.json(); 121 + setDidDoc(didDoc); 122 + } catch {} 123 + } else if (!did.startsWith("did:")) { 116 124 try { 117 125 const did = await resolveHandle(params.repo as Handle); 118 126 navigate(location.pathname.replace(params.repo!, did), { replace: true }); ··· 130 138 } 131 139 } 132 140 } 133 - setDidDoc(didDocCache[did] as DidDocument); 141 + 134 142 if (did.startsWith("did:plc")) getRotationKeys(); 135 - 136 143 validateHandles(); 137 144 138 145 if (!pds) { ··· 524 531 </div> 525 532 526 533 {/* Aliases Section */} 527 - <div> 528 - <p class="font-semibold">Aliases</p> 529 - <For each={didDocument().alsoKnownAs}> 530 - {(alias) => ( 531 - <div class="flex items-center gap-1 text-sm text-neutral-700 dark:text-neutral-300"> 532 - <span>{alias}</span> 533 - <Show when={alias.startsWith("at://")}> 534 - <Tooltip 535 - text={ 536 - validHandles[alias] === true ? "Valid handle" 537 - : validHandles[alias] === undefined ? 538 - "Validating" 539 - : "Invalid handle" 540 - } 541 - > 542 - <span 543 - classList={{ 544 - "iconify lucide--check text-green-600 dark:text-green-400": 545 - validHandles[alias] === true, 546 - "iconify lucide--x text-red-500 dark:text-red-400": 547 - validHandles[alias] === false, 548 - "iconify lucide--loader-circle animate-spin": 549 - validHandles[alias] === undefined, 550 - }} 551 - ></span> 552 - </Tooltip> 553 - </Show> 554 - </div> 555 - )} 556 - </For> 557 - </div> 558 - 559 - {/* Services Section */} 560 - <div> 561 - <p class="font-semibold">Services</p> 562 - <div class="flex flex-col gap-1"> 563 - <For each={didDocument().service}> 564 - {(service) => ( 565 - <div class="grid grid-cols-[auto_1fr] items-center gap-x-1 text-sm text-neutral-700 dark:text-neutral-300"> 566 - <span class="iconify lucide--hash"></span> 567 - <span>{service.id.split("#")[1]}</span> 568 - <span></span> 569 - <a 570 - class="w-fit underline hover:text-blue-500 dark:hover:text-blue-400" 571 - href={service.serviceEndpoint.toString()} 572 - target="_blank" 573 - rel="noopener" 574 - > 575 - {service.serviceEndpoint.toString()} 576 - </a> 534 + <Show when={didDocument().alsoKnownAs}> 535 + <div> 536 + <p class="font-semibold">Aliases</p> 537 + <For each={didDocument().alsoKnownAs}> 538 + {(alias) => ( 539 + <div class="flex items-center gap-1 text-sm text-neutral-700 dark:text-neutral-300"> 540 + <span>{alias}</span> 541 + <Show when={alias.startsWith("at://")}> 542 + <Tooltip 543 + text={ 544 + validHandles[alias] === true ? "Valid handle" 545 + : validHandles[alias] === undefined ? 546 + "Validating" 547 + : "Invalid handle" 548 + } 549 + > 550 + <span 551 + classList={{ 552 + "iconify lucide--check text-green-600 dark:text-green-400": 553 + validHandles[alias] === true, 554 + "iconify lucide--x text-red-500 dark:text-red-400": 555 + validHandles[alias] === false, 556 + "iconify lucide--loader-circle animate-spin": 557 + validHandles[alias] === undefined, 558 + }} 559 + ></span> 560 + </Tooltip> 561 + </Show> 577 562 </div> 578 563 )} 579 564 </For> 580 565 </div> 581 - </div> 566 + </Show> 567 + 568 + {/* Services Section */} 569 + <Show when={didDocument().service}> 570 + <div> 571 + <p class="font-semibold">Services</p> 572 + <div class="flex flex-col gap-1"> 573 + <For each={didDocument().service}> 574 + {(service) => ( 575 + <div class="grid grid-cols-[auto_1fr] items-center gap-x-1 text-sm text-neutral-700 dark:text-neutral-300"> 576 + <span class="iconify lucide--hash"></span> 577 + <span>{service.id.split("#")[1]}</span> 578 + <span></span> 579 + <a 580 + class="w-fit underline hover:text-blue-500 dark:hover:text-blue-400" 581 + href={service.serviceEndpoint.toString()} 582 + target="_blank" 583 + rel="noopener" 584 + > 585 + {service.serviceEndpoint.toString()} 586 + </a> 587 + </div> 588 + )} 589 + </For> 590 + </div> 591 + </div> 592 + </Show> 582 593 583 594 {/* Verification Methods Section */} 584 - <div> 585 - <p class="font-semibold">Verification Methods</p> 586 - <div class="flex flex-col gap-1"> 587 - <For each={didDocument().verificationMethod}> 588 - {(verif) => ( 589 - <Show when={verif.publicKeyMultibase}> 590 - {(key) => ( 591 - <div class="grid grid-cols-[auto_1fr] items-center gap-x-1 text-sm text-neutral-700 dark:text-neutral-300"> 592 - <span class="iconify lucide--hash"></span> 593 - <div class="flex items-center gap-2"> 594 - <span>{verif.id.split("#")[1]}</span> 595 - <div class="flex items-center gap-1 text-neutral-500 dark:text-neutral-400"> 596 - <span class="iconify lucide--key-round"></span> 597 - <span>{detectKeyType(key())}</span> 595 + <Show when={didDocument().verificationMethod}> 596 + <div> 597 + <p class="font-semibold">Verification Methods</p> 598 + <div class="flex flex-col gap-1"> 599 + <For each={didDocument().verificationMethod}> 600 + {(verif) => ( 601 + <Show when={verif.publicKeyMultibase}> 602 + {(key) => ( 603 + <div class="grid grid-cols-[auto_1fr] items-center gap-x-1 text-sm text-neutral-700 dark:text-neutral-300"> 604 + <span class="iconify lucide--hash"></span> 605 + <div class="flex items-center gap-2"> 606 + <span>{verif.id.split("#")[1]}</span> 607 + <div class="flex items-center gap-1 text-neutral-500 dark:text-neutral-400"> 608 + <span class="iconify lucide--key-round"></span> 609 + <span>{detectKeyType(key())}</span> 610 + </div> 598 611 </div> 612 + <span></span> 613 + <div class="font-mono break-all">{key()}</div> 599 614 </div> 600 - <span></span> 601 - <div class="font-mono break-all">{key()}</div> 602 - </div> 603 - )} 604 - </Show> 605 - )} 606 - </For> 615 + )} 616 + </Show> 617 + )} 618 + </For> 619 + </div> 607 620 </div> 608 - </div> 621 + </Show> 609 622 610 623 {/* Rotation Keys Section */} 611 624 <Show when={rotationKeys().length > 0}>