7f7db43910
Phase 3 of the invalidation cleanup. * useDeleteEvent previously invalidated only ['feed'], ['profile-feed'], ['profile-likes-infinite'], ['replies'], and ['notifications']. A deleted event can sit in many other surfaces — country feeds (agora-feed-paginated / agora-feed-new-posts), comment threads (['nostr', 'comments', ...], ['event-comments', ...], wall-comments), campaign and pledge lists, community / organization activity feeds, trending, and per-event caches. Switch to a predicate that sweeps a curated allow-list of feed-shaped query-key prefixes so the deleted post drops off every visible surface in a single refetch wave. * useCampaignModeration only invalidated its own ['campaign-moderation'] cache. Moderation labels (approve / hide / feature) gate which campaigns surface on the home page, discover shelf, and community grids, so the list queries need refetching too. Cascade to ['campaigns'], ['campaigns-all'], and ['campaigns-all-scores']. ReportDialog (kind 1984) and useRequestToVanish (kind 62) were reviewed and intentionally left alone: ReportDialog has no UI consequence inside Agora (reports only show up to external moderators), and Request to Vanish logs the user out, after which any cached state is cleared anyway.