diff --git a/src/hooks/useCommunityBookmarks.ts b/src/hooks/useCommunityBookmarks.ts index 7215ff9d..26600ace 100644 --- a/src/hooks/useCommunityBookmarks.ts +++ b/src/hooks/useCommunityBookmarks.ts @@ -113,6 +113,8 @@ export function useCommunityBookmarks() { queryClient.invalidateQueries({ queryKey: ['community-bookmarks', user?.pubkey] }); queryClient.invalidateQueries({ queryKey: ['my-communities'] }); queryClient.invalidateQueries({ queryKey: ['community-activity-feed'] }); + queryClient.invalidateQueries({ queryKey: ['followed-organizations'] }); + queryClient.invalidateQueries({ queryKey: ['organization-home-activity-feed'] }); queryClient.invalidateQueries({ queryKey: ['following-feed'] }); toast({ title: removed ? 'Community unfollowed' : 'Community followed', diff --git a/src/pages/CommunitiesPage.tsx b/src/pages/CommunitiesPage.tsx index 74c2e082..609c1189 100644 --- a/src/pages/CommunitiesPage.tsx +++ b/src/pages/CommunitiesPage.tsx @@ -37,6 +37,7 @@ import { formatSatsShort } from '@/lib/formatCampaignAmount'; export function CommunitiesPage() { const { config } = useAppContext(); const { user } = useCurrentUser(); + const userOrganizations = useUserOrganizations(); const navigate = useNavigate(); const { toast } = useToast(); @@ -69,7 +70,10 @@ export function CommunitiesPage() {
- +
@@ -81,7 +85,7 @@ export function CommunitiesPage() {
- +
@@ -265,7 +269,15 @@ function CommunitiesHero({ onCreateCommunity }: CommunitiesHeroProps) { // Community shelves // ═══════════════════════════════════════════════════════════════════════════════ -function MyCommunitiesShelf({ onCreateCommunity }: { onCreateCommunity: () => void }) { +type UserOrganizationsResult = ReturnType; + +function MyCommunitiesShelf({ + userOrganizations, + onCreateCommunity, +}: { + userOrganizations: UserOrganizationsResult; + onCreateCommunity: () => void; +}) { const { user } = useCurrentUser(); if (!user) { @@ -279,14 +291,25 @@ function MyCommunitiesShelf({ onCreateCommunity }: { onCreateCommunity: () => vo ); } - return ; + return ( + + ); } -function MyCommunitiesShelfContent({ onCreateCommunity }: { onCreateCommunity: () => void }) { +function MyCommunitiesShelfContent({ + userOrganizations, + onCreateCommunity, +}: { + userOrganizations: UserOrganizationsResult; + onCreateCommunity: () => void; +}) { // "My organizations" = orgs the user founded, moderates, or follows. // Sorting is founder first, moderator second, followed-only last, with // newest community definition revisions first inside each bucket. - const { data: organizations, isLoading } = useUserOrganizations(); + const { data: organizations, isLoading } = userOrganizations; if (isLoading) { return ( @@ -357,9 +380,9 @@ function FeaturedOrganizationsShelf() { ); } -function OrganizationActivityFeed() { +function OrganizationActivityFeed({ userOrganizations }: { userOrganizations: UserOrganizationsResult }) { const { user } = useCurrentUser(); - const { data: organizations, isLoading: organizationsLoading } = useUserOrganizations(); + const { data: organizations, isLoading: organizationsLoading } = userOrganizations; const { membersOnly, toggle } = useOrganizationMembersOnlyFilter(); const feed = useOrganizationHomeActivityFeed(organizations, membersOnly, !!user && !organizationsLoading); const { scrollRef } = useInfiniteScroll({