feat(directory): add option to hide owner card in user directory

Add HIDE_OWNER_CARD environment variable to optionally hide the directory owner's card. Update UserDirectory component to display owner DID in no-users message and pass primaryUserDid prop for filtering.

ewancroft.uk 4a8e6e22 dfe2aa11

verified
Changed files
+26 -3
src
lib
components
routes
+3
.env.example
··· 4 4 # Primary user DID (required if no users configured) 5 5 DIRECTORY_OWNER=did:plc:your-did-here 6 6 7 + # Hide the directory owner's card (optional, default: false) 8 + HIDE_OWNER_CARD=false 9 + 7 10 # Multiple users (comma-separated, optional) 8 11 # These users will be displayed alongside DIRECTORY_OWNER 9 12 PUBLIC_LINKAT_USERS=did:plc:user1,did:web:user2,did:plc:user3
+5
README.md
··· 36 36 PUBLIC_LINKAT_USERS=did:plc:user1,did:web:user2 37 37 ``` 38 38 39 + Example for hiding the directory owner's card: 40 + ``` 41 + HIDE_OWNER_CARD=true 42 + ``` 43 + 39 44 4. **Run the development server:** 40 45 ```bash 41 46 npm run dev
+9 -1
src/lib/components/archive/UserDirectory.svelte
··· 4 4 import type { User } from "$lib/components/shared/interfaces"; 5 5 6 6 export let users: User[]; 7 + export let primaryUserDid: string | undefined; 7 8 8 9 let loading = true; 9 10 let userProfiles: any[] = []; ··· 52 53 </div> 53 54 {:else if userProfiles.length === 0} 54 55 <div class="text-center py-8"> 55 - <p class="text-lg opacity-75">No users configured. Add users in the configuration file.</p> 56 + <p class="text-lg opacity-75"> 57 + No users configured or found. Please check your configuration and ensure users have associated Linkat data. 58 + {#if primaryUserDid} 59 + <br />Directory owner is set to: {primaryUserDid} 60 + {:else} 61 + <br />No directory owner is set. 62 + {/if} 63 + </p> 56 64 </div> 57 65 {:else} 58 66 <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
+8 -1
src/routes/+layout.ts
··· 95 95 posts: new Map(), 96 96 dynamicLinks, 97 97 userLinkBoards, 98 - linkatUsers: userDids, 98 + linkatUsers: userDids.filter(did => { 99 + const hideOwnerCard = env.HIDE_OWNER_CARD === 'true'; 100 + if (hideOwnerCard && did === primaryUserDid) { 101 + return false; // Hide the owner's card if HIDE_OWNER_CARD is true 102 + } 103 + return userLinkBoards[did] !== undefined; 104 + }), 99 105 noUsersConfigured: false, 106 + primaryUserDid, 100 107 }; 101 108 }
+1 -1
src/routes/+page.svelte
··· 73 73 </div> 74 74 </div> 75 75 {:else} 76 - <UserDirectory users={data.linkatUsers.map(did => ({ did }))} /> 76 + <UserDirectory users={data.linkatUsers.map(did => ({ did }))} primaryUserDid={data.primaryUserDid} /> 77 77 {/if} 78 78 </div>