diff --git a/app/handle-delete.go b/app/handle-delete.go index 7c9d932..17b5727 100644 --- a/app/handle-delete.go +++ b/app/handle-delete.go @@ -30,6 +30,15 @@ func (l *Listener) HandleDelete(env *eventenvelope.Submission) (err error) { log.I.F("HandleDelete: tag %d: %s = %s", i, string(t.Key()), string(t.Value())) } + // Debug: log admin and owner lists + log.I.F("HandleDelete: checking against %d admins and %d owners", len(l.Admins), len(l.Owners)) + for i, pk := range l.Admins { + log.I.F("HandleDelete: admin[%d] = %0x", i, pk) + } + for i, pk := range l.Owners { + log.I.F("HandleDelete: owner[%d] = %0x", i, pk) + } + var ownerDelete bool for _, pk := range l.Admins { if utils.FastEqual(pk, env.E.Pubkey) { diff --git a/app/handle-event.go b/app/handle-event.go index 3799135..21311e8 100644 --- a/app/handle-event.go +++ b/app/handle-event.go @@ -199,8 +199,13 @@ func (l *Listener) HandleEvent(msg []byte) (err error) { // if the event is a delete, process the delete if env.E.Kind == kind.EventDeletion.K { log.I.F("processing delete event %0x", env.E.ID) - if err = l.HandleDelete(env); err != nil { - log.E.F("HandleDelete failed for event %0x: %v", env.E.ID, err) + + // Store the delete event itself FIRST to ensure it's available for queries + saveCtx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + defer cancel() + log.I.F("attempting to save delete event %0x from pubkey %0x", env.E.ID, env.E.Pubkey) + if _, _, err = l.SaveEvent(saveCtx, env.E); err != nil { + log.E.F("failed to save delete event %0x: %v", env.E.ID, err) if strings.HasPrefix(err.Error(), "blocked:") { errStr := err.Error()[len("blocked: "):len(err.Error())] if err = Ok.Error( @@ -210,19 +215,14 @@ func (l *Listener) HandleEvent(msg []byte) (err error) { } return } - // For non-blocked errors, still send OK but log the error - log.W.F("Delete processing failed but continuing: %v", err) - } else { - log.I.F("HandleDelete completed successfully for event %0x", env.E.ID) - } - // Send OK response for delete events - if err = Ok.Ok(l, env, ""); chk.E(err) { + chk.E(err) return } - // Store the delete event itself - saveCtx, cancel := context.WithTimeout(context.Background(), 30*time.Second) - defer cancel() - if _, _, err = l.SaveEvent(saveCtx, env.E); err != nil { + log.I.F("successfully saved delete event %0x", env.E.ID) + + // Now process the deletion (remove target events) + if err = l.HandleDelete(env); err != nil { + log.E.F("HandleDelete failed for event %0x: %v", env.E.ID, err) if strings.HasPrefix(err.Error(), "blocked:") { errStr := err.Error()[len("blocked: "):len(err.Error())] if err = Ok.Error( @@ -232,9 +232,17 @@ func (l *Listener) HandleEvent(msg []byte) (err error) { } return } - chk.E(err) + // For non-blocked errors, still send OK but log the error + log.W.F("Delete processing failed but continuing: %v", err) + } else { + log.I.F("HandleDelete completed successfully for event %0x", env.E.ID) + } + + // Send OK response for delete events + if err = Ok.Ok(l, env, ""); chk.E(err) { return } + // Deliver the delete event to subscribers clonedEvent := env.E.Clone() go l.publishers.Deliver(clonedEvent) diff --git a/app/web/src/App.svelte b/app/web/src/App.svelte index b2270d8..6b218c7 100644 --- a/app/web/src/App.svelte +++ b/app/web/src/App.svelte @@ -1,6 +1,6 @@