- Add NIP-65 relay list service to fetch kind 10002 events from relays - Replace configurable relay page with read-only NIP-65 relay display - Update identity page to show display name and username in same badge - Use reglisse heading font for titles throughout the UI - Navigate to You page after vault unlock instead of identities list - Add autofocus to vault password input field - Add profile metadata service for fetching kind 0 events - Add readonly mode to relay-rw component Files modified: - package.json (version bump to 0.0.6) - projects/common/src/lib/services/relay-list/relay-list.service.ts (new) - projects/common/src/lib/services/profile-metadata/profile-metadata.service.ts (new) - projects/common/src/lib/constants/fallback-relays.ts (new) - projects/*/src/app/components/home/identity/* (UI improvements) - projects/*/src/app/components/edit-identity/relays/* (NIP-65 display) - projects/*/src/app/components/vault-login/* (autofocus, navigation) - projects/common/src/lib/styles/* (heading fonts) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
62 lines
1.6 KiB
HTML
62 lines
1.6 KiB
HTML
<!-- RELAY_TEMPLATE -->
|
|
<ng-template #relayTemplate let-relay="relay">
|
|
<div class="sam-flex-row gap relay">
|
|
<div class="sam-flex-column sam-flex-grow">
|
|
<span>{{ relay.url | visualRelay }}</span>
|
|
<div class="sam-flex-row gap-h">
|
|
<lib-relay-rw
|
|
type="read"
|
|
[model]="relay.read"
|
|
[readonly]="true"
|
|
></lib-relay-rw>
|
|
<lib-relay-rw
|
|
type="write"
|
|
[model]="relay.write"
|
|
[readonly]="true"
|
|
></lib-relay-rw>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</ng-template>
|
|
|
|
<div class="header-pane">
|
|
<lib-icon-button
|
|
icon="chevron-left"
|
|
(click)="navigateBack()"
|
|
></lib-icon-button>
|
|
<span class="header-title">Relays</span>
|
|
</div>
|
|
|
|
<div class="info-banner">
|
|
<i class="bi bi-info-circle"></i>
|
|
<span>These relays are fetched from your NIP-65 relay list (kind 10002). To update your relay list, use a Nostr client that supports NIP-65.</span>
|
|
</div>
|
|
|
|
@if(loading) {
|
|
<div class="loading-state">
|
|
<i class="bi bi-circle color-activity"></i>
|
|
<span>Fetching relay list...</span>
|
|
</div>
|
|
}
|
|
|
|
@if(!loading && errorMessage) {
|
|
<div class="error-state">
|
|
<i class="bi bi-exclamation-triangle sam-color-danger"></i>
|
|
<span>{{ errorMessage }}</span>
|
|
</div>
|
|
}
|
|
|
|
@if(!loading && !errorMessage && relays.length === 0) {
|
|
<div class="empty-state">
|
|
<i class="bi bi-broadcast"></i>
|
|
<span>No relay list found</span>
|
|
<span class="hint">Publish a NIP-65 relay list using a Nostr client to see your relays here.</span>
|
|
</div>
|
|
}
|
|
|
|
@for(relay of relays; track relay.url) {
|
|
<ng-container
|
|
*ngTemplateOutlet="relayTemplate; context: { relay: relay }"
|
|
></ng-container>
|
|
}
|