Fixed the issue where organization members and stats were showing 0 even when members existed, affecting both member and non-member views.
- Missing Stats Calculation:
OrgKPIGridcomponent wasn't receiving calculated stats - Security Restriction: API returned empty members array for non-members
- No Public Member Count: Non-members couldn't see even basic member count
Updated getOrganisationById function:
- Added
memberCountfield to non-member response - Counts active members for public display
- Keeps member details private (security maintained)
// For non-members
return res.status(200).json({
organisation: organisation[0],
members: [],
memberCount: memberCount.length, // NEW: Public member count
isMember: false
});Updated OrgKPIGrid component call:
- Calculates stats from members array
- Uses
memberCountfor non-members - Aggregates forest stats, area, and carbon credits
- Displays tokens raised from
addedFunds
<OrgKPIGrid
organisation={selectedOrganisation.organisation}
stats={{
totalMembers: selectedOrganisation.isMember
? (selectedOrganisation.members?.length || 0)
: (selectedOrganisation.memberCount || 0),
totalForests: selectedOrganisation.members?.reduce(...),
totalArea: selectedOrganisation.members?.reduce(...),
totalCarbon: selectedOrganisation.members?.reduce(...),
tokensRaised: parseFloat(BigInt(addedFunds) / BigInt(10**18))
}}
/>API Response:
{
organisation: {...},
members: [{...}, {...}], // Full member details with stats
isMember: true
}
↓
Frontend calculates:
- totalMembers: members.length
- totalForests: sum of forestsRegistered
- totalArea: sum of verifiedArea
- totalCarbon: sum of totalCarbonCredits
API Response:
{
organisation: {...},
members: [], // Empty for privacy
memberCount: 2, // Public count
isMember: false
}
↓
Frontend displays:
- totalMembers: memberCount
- Other stats: 0 (no access to member details)
- Members See Full Stats: Complete aggregated data from all members
- Non-Members See Count: Can see how many members without details
- Privacy Maintained: Member details remain private
- Tokens Raised: Displays invested funds from
addedFunds
- ❌ Member count: 0 (even with 2 members)
- ❌ Stats not loading
- ❌ Non-members see nothing
- ✅ Member count: Correct (e.g., 2)
- ✅ Stats calculated and displayed
- ✅ Non-members see member count
- ✅ Members see full aggregated stats
server/handlers/OrganisationHandler.js- Added memberCount to API responseclient/src/pages/OrganisationPage.jsx- Calculate and pass stats to OrgKPIGrid
- ✅ Member details remain private for non-members
- ✅ Only member count is public
- ✅ Stats aggregation only for members
- ✅ No sensitive data exposed