Commit Graph

3 Commits

Author SHA1 Message Date
mkfain 6ccdeefdee Fill in partial query invalidation for pledges, campaigns, and moderation
Phase 2 of the invalidation cleanup. Each mutation below already invalidated
some of its consumer queries but missed sibling surfaces that display the
same data, so users had to refresh to see their action reflected everywhere.

* ProfileReactionButton (kind 7 on a kind 0 profile) didn't refresh any
  stats. Bump the profile's nip85-event-stats and nip85-addr-stats keys
  via invalidateEventStats + an explicit '0:<pubkey>:' addr sweep.

* BanConfirmDialog only invalidated ['community-members', aTag], so a
  removed post remained visible in the org's activity feed until refresh.
  Mirror CommunityReportDialog's predicate-match on
  ['community-activity-feed', aTagsKey] and also refresh
  ['organization-activity', aTag].

* CreateActionDialog (the quick-create pledge dialog inside an org)
  refreshed community-actions and the activity feed but skipped
  ['organization-activity', communityATag], so the new pledge didn't
  appear on the same org-detail page that launched the dialog.

* ActionsPage delete handler only invalidated ['agora-actions'] and
  ['agora-action']. Extract any organization 'A' tag from the pledge
  event and cascade to organization-activity, community-actions, and
  the community-activity-feed predicate.

* CampaignDetailPage delete handler skipped campaigns-all (the discover
  list), the campaign's organization shelf, and the country feed if the
  campaign carried a country code. Add all three.

* CreateCampaignPage onSuccess refreshed only the single-campaign key
  and one org-activity key. Add the campaigns/campaigns-all list keys
  and the country-feed keys so newly launched or edited campaigns show
  up everywhere they're displayed.
2026-05-22 15:49:40 -05:00
Alex Gleason cc702027b0 Add native haptic feedback to all key interactions
Install @capacitor/haptics and add a centralized haptics utility
(src/lib/haptics.ts) that uses the native taptic engine on iOS/Android
and falls back to navigator.vibrate() on web.

Haptics added to:
- Switch component (covers 36+ toggle switches app-wide)
- PullToRefresh threshold (covers 15+ pages)
- MobileBottomNav tab taps
- ReactionButton (like/unlike, double-click heart)
- RepostMenu (repost/undo repost)
- ZapDialog button press + payment success (NWC and WebLN)
- FollowButton and ProfilePage follow toggle
- ComposeBox (post, voice message, and poll publish success)
- NoteMoreMenu (bookmark, pin, mute)
- VinesFeedPage reaction and repost buttons
- ProfileReactionButton and ExternalReactionButton
- NoteCard share button
- BlobbiRoomShell swipe navigation

Replaces raw navigator.vibrate() calls in GameControls and
SendAnimation with the new cross-platform haptics utility, fixing
haptic feedback on iOS where the Vibration API is not available.
2026-04-14 11:06:18 -05:00
Alex Gleason d12e75ae5c Replace zap button with emoji reaction button on user profiles
Add ProfileReactionButton component that opens an emoji picker to send
kind 7 reactions to a user's profile with a, e, and p tags. Update
notifications to display 'reacted to your profile' for profile reactions
and skip rendering the referenced card for kind 0 events.
2026-03-30 11:06:32 -05:00