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({