this repo has no description

Fix users with no profile record not being shown (#7)

Co-authored-by: Casey <hatkidchan@gmail.com>
Co-authored-by: Ari <ariadna@hey.com>
Reviewed-on: https://git.witchcraft.systems/scientific-witchery/pds-dash/pulls/7
Reviewed-by: Ariadna <ariadna@hey.com>

Changed files
+35 -13
src
themes
express
witchcraft
+7 -3
src/lib/AccountComponent.svelte
··· 12 alt="avatar of {account.displayName}" 13 src="{Config.PDS_URL}/xrpc/com.atproto.sync.getBlob?did={account.did}&cid={account.avatarCid}" 14 /> 15 {/if} 16 - <div id="accountName"> 17 - {account.displayName || account.handle || account.did} 18 - </div> 19 </div> 20 </a> 21
··· 12 alt="avatar of {account.displayName}" 13 src="{Config.PDS_URL}/xrpc/com.atproto.sync.getBlob?did={account.did}&cid={account.avatarCid}" 14 /> 15 + <div id="accountName"> 16 + {account.displayName || account.handle || account.did} 17 + </div> 18 + {:else} 19 + <div id="accountName" class="no-avatar"> 20 + {account.displayName || account.handle || account.did} 21 + </div> 22 {/if} 23 </div> 24 </a> 25
+17 -10
src/lib/pdsfetch.ts
··· 132 const getAccountMetadata = async ( 133 did: `did:${string}:${string}`, 134 ) => { 135 - // gonna assume self exists in the app.bsky.actor.profile 136 try { 137 const { data } = await rpc.get("com.atproto.repo.getRecord", { 138 params: { ··· 142 }, 143 }); 144 const value = data.value as AppBskyActorProfile.Record; 145 - const handle = await blueskyHandleFromDid(did); 146 - const account: AccountMetadata = { 147 - did: did, 148 - handle: handle, 149 - displayName: value.displayName || "", 150 - avatarCid: null, 151 - }; 152 if (value.avatar) { 153 account.avatarCid = value.avatar.ref["$link"]; 154 } 155 - return account; 156 } catch (e) { 157 - console.error(`Error fetching metadata for ${did}:`, e); 158 return null; 159 } 160 }; 161 162 const getAllMetadataFromPds = async (): Promise<AccountMetadata[]> => {
··· 132 const getAccountMetadata = async ( 133 did: `did:${string}:${string}`, 134 ) => { 135 + const account: AccountMetadata = { 136 + did: did, 137 + handle: "", // Guaranteed to be filled out later 138 + displayName: "", 139 + avatarCid: null, 140 + }; 141 + 142 try { 143 const { data } = await rpc.get("com.atproto.repo.getRecord", { 144 params: { ··· 148 }, 149 }); 150 const value = data.value as AppBskyActorProfile.Record; 151 + account.displayName = value.displayName || ""; 152 if (value.avatar) { 153 account.avatarCid = value.avatar.ref["$link"]; 154 } 155 + } catch (e) { 156 + console.warn(`Error fetching profile for ${did}:`, e); 157 + } 158 + 159 + try { 160 + account.handle = await blueskyHandleFromDid(did); 161 } catch (e) { 162 + console.error(`Error fetching handle for ${did}:`, e); 163 return null; 164 } 165 + 166 + return account; 167 }; 168 169 const getAllMetadataFromPds = async (): Promise<AccountMetadata[]> => {
+5
themes/express/theme.css
··· 237 margin-right: 4px; 238 border: 4px solid var(--border-color); 239 box-shadow: var(--border-color) 10px 10px; 240 } 241 #accountName { 242 margin-left: 10px; ··· 247 overflow: hidden; 248 text-overflow: ellipsis; 249 white-space: nowrap; 250 } 251 252 /* App.Svelte */
··· 237 margin-right: 4px; 238 border: 4px solid var(--border-color); 239 box-shadow: var(--border-color) 10px 10px; 240 + min-height: 30px; 241 } 242 #accountName { 243 margin-left: 10px; ··· 248 overflow: hidden; 249 text-overflow: ellipsis; 250 white-space: nowrap; 251 + } 252 + 253 + .no-avatar { 254 + margin-left: 40px !important; 255 } 256 257 /* App.Svelte */
+6
themes/witchcraft/theme.css
··· 235 padding: 0px; 236 margin-bottom: 15px; 237 border: 1px solid var(--border-color); 238 } 239 #accountName { 240 margin-left: 10px; ··· 245 overflow: hidden; 246 text-overflow: ellipsis; 247 white-space: nowrap; 248 } 249 250 /* App.Svelte */
··· 235 padding: 0px; 236 margin-bottom: 15px; 237 border: 1px solid var(--border-color); 238 + min-height: 30px; 239 } 240 #accountName { 241 margin-left: 10px; ··· 246 overflow: hidden; 247 text-overflow: ellipsis; 248 white-space: nowrap; 249 + } 250 + 251 + 252 + .no-avatar { 253 + margin-left: 70px !important; 254 } 255 256 /* App.Svelte */