diff --git a/src/components/profile/ProfileAgoraTab.tsx b/src/components/profile/ProfileAgoraTab.tsx index 8166108f..4eb77ae3 100644 --- a/src/components/profile/ProfileAgoraTab.tsx +++ b/src/components/profile/ProfileAgoraTab.tsx @@ -3,7 +3,6 @@ import { useTranslation } from 'react-i18next'; import { BadgeCheck, Megaphone } from 'lucide-react'; import { CampaignCard, CampaignCardSkeleton } from '@/components/CampaignCard'; -import { ProfileOverviewSections } from '@/components/profile/ProfileIdentityRail'; import { ProfileVerifierSection } from '@/components/profile/ProfileVerifierSection'; import { Badge } from '@/components/ui/badge'; import { Card } from '@/components/ui/card'; @@ -11,7 +10,6 @@ import { StartCampaignLink } from '@/components/StartCampaignLink'; import { useCampaignModeration } from '@/hooks/useCampaignModeration'; import { useVerifiedCampaigns } from '@/hooks/useVerifiedCampaigns'; import type { ProfileCampaignStats } from '@/hooks/useProfileCampaignStats'; -import type { Action } from '@/hooks/useActions'; import type { ParsedCampaign } from '@/lib/campaign'; interface ProfileAgoraTabProps { @@ -20,9 +18,6 @@ interface ProfileAgoraTabProps { isOwnProfile: boolean; profileCampaignStats: ProfileCampaignStats; campaigns: ParsedCampaign[]; - pledges: Action[]; - btcPrice: number | undefined; - onTabChange: (tabId: string) => void; } interface CampaignRelationship { @@ -45,9 +40,6 @@ export function ProfileAgoraTab({ isOwnProfile, profileCampaignStats, campaigns, - pledges, - btcPrice, - onTabChange, }: ProfileAgoraTabProps) { const { t } = useTranslation(); const { campaigns: verifiedCampaigns, isLoading: verifiedLoading } = useVerifiedCampaigns(pubkey); @@ -56,43 +48,34 @@ export function ProfileAgoraTab({ const authoredLoading = profileCampaignStats.isVerifying && campaigns.length === 0; const mergedCampaigns = useMemo(() => { - const byCoord = new Map(); + const seenCoords = new Set(); + const relationshipsByCoord = new Map(); for (const campaign of campaigns) { if (moderation.hiddenCoords.has(campaign.aTag)) continue; - byCoord.set(campaign.aTag, { campaign, authored: true, verified: false }); + seenCoords.add(campaign.aTag); + relationshipsByCoord.set(campaign.aTag, { campaign, authored: true, verified: false }); } for (const campaign of verifiedCampaigns) { if (moderation.hiddenCoords.has(campaign.aTag)) continue; - const existing = byCoord.get(campaign.aTag); - if (existing) { + const existing = relationshipsByCoord.get(campaign.aTag); + if (seenCoords.has(campaign.aTag) && existing) { existing.verified = true; } else { - byCoord.set(campaign.aTag, { campaign, authored: false, verified: true }); + seenCoords.add(campaign.aTag); + relationshipsByCoord.set(campaign.aTag, { campaign, authored: false, verified: true }); } } - return [...byCoord.values()].sort((a, b) => b.campaign.createdAt - a.campaign.createdAt); + return [...relationshipsByCoord.values()].sort((a, b) => b.campaign.createdAt - a.campaign.createdAt); }, [campaigns, verifiedCampaigns, moderation.hiddenCoords]); const isLoading = (authoredLoading || verifiedLoading) && mergedCampaigns.length === 0; return ( -
- - - +
+ {isLoading ? (
diff --git a/src/pages/ProfilePage.tsx b/src/pages/ProfilePage.tsx index d68c6fc2..b027eb49 100644 --- a/src/pages/ProfilePage.tsx +++ b/src/pages/ProfilePage.tsx @@ -765,7 +765,6 @@ interface ProfileTabContentProps { btcPrice: number | undefined; campaigns: ParsedCampaign[]; pledges: Action[]; - onTabChange: (tabId: string) => void; } /** @@ -783,7 +782,6 @@ function ProfileTabContent({ btcPrice, campaigns, pledges, - onTabChange, }: ProfileTabContentProps) { if (activeTab === 'agora' || activeTab === 'overview' || activeTab === 'verified' || activeTab === 'campaigns') { return ( @@ -793,9 +791,6 @@ function ProfileTabContent({ isOwnProfile={isOwnProfile} profileCampaignStats={profileCampaignStats} campaigns={campaigns} - pledges={pledges} - btcPrice={btcPrice} - onTabChange={onTabChange} /> ); } @@ -1351,7 +1346,6 @@ function FollowersListModal({ pubkey, open, onOpenChange, displayName }: Followe btcPrice={btcPrice} campaigns={profileCampaignStats.campaigns} pledges={(allActions ?? []).filter((a) => a.pubkey === pubkey)} - onTabChange={handleTabChange} /> )} @@ -1459,7 +1453,6 @@ function FollowersListModal({ pubkey, open, onOpenChange, displayName }: Followe btcPrice={btcPrice} campaigns={profileCampaignStats.campaigns} pledges={(allActions ?? []).filter((a) => a.pubkey === pubkey)} - onTabChange={handleTabChange} />