Curation Mode

{#if message}
{message}
{/if} {#if !isConfigured}

Initial Configuration

Configure curating mode before the relay will accept events. Select which event kinds to allow and set rate limiting parameters.

Allowed Event Kinds

Select categories of events to allow. At least one must be selected.

{#each curationKindCategories as category} {/each}

Rate Limiting

This will publish a kind 30078 event to activate curating mode.

{:else} {#if selectedUser}

User Events

{formatPubkey(selectedUser)} {userEventsTotal} events
{#if selectedUserType === "trusted"} {:else if selectedUserType === "blacklisted"} {:else} {/if}
{#if loadingEvents && userEvents.length === 0}
Loading events...
{:else if userEvents.length === 0}
No events found for this user.
{:else} {#each userEvents as event}
{getKindName(event.kind)} {formatPubkey(event.id)} {formatDate(event.created_at * 1000)}
{#if expandedEvents[event.id] || !isContentTruncated(event.content)}
{event.content || "(empty)"}
{:else}
{truncateContent(event.content)}...
{/if}
{#if isContentTruncated(event.content)} {/if}
{/each} {#if userEvents.length < userEventsTotal}
{/if} {/if}
{:else}
{#if activeTab === "trusted"}

Trusted Publishers

Trusted users can publish unlimited events without rate limiting.

{#if trustedPubkeys.length > 0} {#each trustedPubkeys as item}
openUserDetail(item.pubkey, "trusted")}>
{formatPubkey(item.pubkey)} {#if item.note} {item.note} {/if}
{/each} {:else}
No trusted pubkeys yet.
{/if}
{/if} {#if activeTab === "blacklist"}

Blacklisted Publishers

Blacklisted users cannot publish any events.

{#if blacklistedPubkeys.length > 0} {#each blacklistedPubkeys as item}
openUserDetail(item.pubkey, "blacklisted")}>
{formatPubkey(item.pubkey)} {#if item.reason} {item.reason} {/if}
{/each} {:else}
No blacklisted pubkeys.
{/if}
{/if} {#if activeTab === "unclassified"}

Unclassified Users

Users who have posted events but haven't been classified. Sorted by event count.

{#if unclassifiedUsers.length > 0} {#each unclassifiedUsers as user}
openUserDetail(user.pubkey, "unclassified")}>
{formatPubkey(user.pubkey)} {user.event_count} events
{/each} {:else}
No unclassified users.
{/if}
{/if} {#if activeTab === "spam"}

Spam Events

Events flagged as spam are hidden from query results but remain in the database.

{#if spamEvents.length > 0} {#each spamEvents as event}
{formatPubkey(event.event_id)} by {formatPubkey(event.pubkey)} {#if event.reason} {event.reason} {/if}
{/each} {:else}
No spam events flagged.
{/if}
{/if} {#if activeTab === "ips"}

Blocked IP Addresses

IP addresses blocked due to rate limit violations.

{#if blockedIPs.length > 0} {#each blockedIPs as ip}
{ip.ip} {#if ip.reason} {ip.reason} {/if} {#if ip.expires_at} Expires: {formatDate(ip.expires_at)} {/if}
{/each} {:else}
No blocked IPs.
{/if}
{/if} {#if activeTab === "settings"}

Curating Configuration

Update curating mode settings. Changes will publish a new configuration event.

Allowed Event Kinds

{#each curationKindCategories as category} {/each}

Rate Limiting

{/if}
{/if} {/if}