diff --git a/app/handle-event.go b/app/handle-event.go index 3fb7224..6576e2e 100644 --- a/app/handle-event.go +++ b/app/handle-event.go @@ -207,12 +207,6 @@ func (l *Listener) HandleEvent(msg []byte) (err error) { } } } - - // Check if the event is ephemeral (kinds 20000-29999) and just deliver to subscribers. - if kind.IsEphemeral(env.E.Kind) { - go l.publishers.Deliver(env.E) - return - } // store the event - use a separate context to prevent cancellation issues saveCtx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() diff --git a/app/web/src/App.svelte b/app/web/src/App.svelte index 1bdb138..98136bd 100644 --- a/app/web/src/App.svelte +++ b/app/web/src/App.svelte @@ -139,12 +139,6 @@ return kindNames[kind] || `Kind ${kind}`; } - function formatTimestamp(timestamp) { - if (!timestamp) return 'Unknown time'; - const date = new Date(timestamp * 1000); - return date.toLocaleString(); - } - function truncatePubkey(pubkey) { return pubkey.slice(0, 8) + '...' + pubkey.slice(-8); } @@ -1500,7 +1494,7 @@
{#if filteredEvents.length > 0} {#each filteredEvents as event} -
+
toggleEventExpansion(event.id)} on:keydown={(e) => e.key === 'Enter' && toggleEventExpansion(event.id)} role="button" tabindex="0">
👤
@@ -1699,7 +1693,7 @@
handleSearchScroll(e, searchTab.id)}> {#if searchResults.get(searchTab.id)?.events?.length > 0} {#each searchResults.get(searchTab.id).events as event} -
+
toggleEventExpansion(event.id)} on:keydown={(e) => e.key === 'Enter' && toggleEventExpansion(event.id)} role="button" tabindex="0">
👤
diff --git a/pkg/database/get-serials-by-range.go b/pkg/database/get-serials-by-range.go index ea21650..3fff222 100644 --- a/pkg/database/get-serials-by-range.go +++ b/pkg/database/get-serials-by-range.go @@ -31,9 +31,9 @@ func (d *D) GetSerialsByRange(idx Range) ( for it.Seek(endBoundary); it.Valid(); it.Next() { item := it.Item() var key []byte - key = item.Key()[:len(key)-5] + key = item.Key() if bytes.Compare( - key, idx.Start, + key[:len(key)-5], idx.Start, ) < 0 { // didn't find it within the timestamp range return diff --git a/pkg/database/save-event.go b/pkg/database/save-event.go index b22aea4..96d3510 100644 --- a/pkg/database/save-event.go +++ b/pkg/database/save-event.go @@ -108,16 +108,10 @@ func (d *D) SaveEvent(c context.Context, ev *event.E) (kc, vc int, err error) { err = errors.New("nil event") return } - - // Check if the event is ephemeral (kinds 20000-29999) and reject if so - if kind.IsEphemeral(ev.Kind) { - err = errors.New("blocked: ephemeral events (kinds 20000-29999) are not stored") - return - } // check if the event already exists var ser *types.Uint40 if ser, err = d.GetSerialById(ev.ID); err == nil && ser != nil { - err = errors.New("blocked: event already exists") + err = errors.New("blocked: event already exists: " + hex.Enc(ev.ID[:])) return } diff --git a/pkg/database/save-event_test.go b/pkg/database/save-event_test.go index 025f461..8b496ac 100644 --- a/pkg/database/save-event_test.go +++ b/pkg/database/save-event_test.go @@ -215,7 +215,7 @@ func TestSaveExistingEvent(t *testing.T) { } // Verify the error message - expectedErrorPrefix := "blocked: event already exists" + expectedErrorPrefix := "blocked: event already exists: " if !bytes.HasPrefix([]byte(err.Error()), []byte(expectedErrorPrefix)) { t.Fatalf( "Expected error message to start with '%s', got '%s'", @@ -223,70 +223,3 @@ func TestSaveExistingEvent(t *testing.T) { ) } } - -// TestEphemeralEventRejection tests that ephemeral events (kinds 20000-29999) are rejected. -func TestEphemeralEventRejection(t *testing.T) { - // Create a temporary directory for the database - tempDir, err := os.MkdirTemp("", "test-db-*") - if err != nil { - t.Fatalf("Failed to create temporary directory: %v", err) - } - defer os.RemoveAll(tempDir) // Clean up after the test - - // Create a context and cancel function for the database - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - // Initialize the database - db, err := New(ctx, cancel, tempDir, "info") - if err != nil { - t.Fatalf("Failed to create database: %v", err) - } - defer db.Close() - - // Create a signer - sign := new(p256k.Signer) - if err := sign.Generate(); chk.E(err) { - t.Fatal(err) - } - - // Test different ephemeral event kinds - ephemeralKinds := []uint16{ - 20000, // EphemeralStart - 21000, // LightningPubRPC - 22242, // ClientAuthentication - 23194, // NWCWalletRequest - 23195, // NWCWalletResponse - 23196, // NWCNotification - 23197, // WalletNotification - 24133, // NostrConnect - 27235, // HTTPAuth - 29998, // Just before EphemeralEnd - } - - for _, kindValue := range ephemeralKinds { - // Create an ephemeral event - ev := event.New() - ev.Kind = kindValue - ev.Pubkey = sign.Pub() - ev.CreatedAt = timestamp.Now().V - ev.Content = []byte("Ephemeral event") - ev.Tags = tag.NewS() - ev.Sign(sign) - - // Try to save the ephemeral event, it should be rejected - _, _, err = db.SaveEvent(ctx, ev) - if err == nil { - t.Fatalf("Expected ephemeral event with kind %d to be rejected, but it was accepted", kindValue) - } - - // Verify the error message - expectedError := "blocked: ephemeral events (kinds 20000-29999) are not stored" - if err.Error() != expectedError { - t.Fatalf( - "Expected error message '%s', got '%s' for kind %d", - expectedError, err.Error(), kindValue, - ) - } - } -} diff --git a/pkg/version/version b/pkg/version/version index 73c11a9..1af39b3 100644 --- a/pkg/version/version +++ b/pkg/version/version @@ -1 +1 @@ -v0.13.2 \ No newline at end of file +v0.12.3 \ No newline at end of file