|
49 | 49 | const selectedIdentity = $derived( |
50 | 50 | initialIdentities.find( |
51 | 51 | (identity) => identity.identityNumber === initialSelected, |
52 | | - ), |
| 52 | + )!, |
53 | 53 | ); |
54 | 54 | const selectedLogo = $derived( |
55 | 55 | selectedIdentity !== undefined && |
|
66 | 66 | (identity) => identity.identityNumber !== initialSelected, |
67 | 67 | ), |
68 | 68 | ); |
| 69 | + const passkeyNameCounts = $derived.by(() => { |
| 70 | + const counts = new Map<string | undefined, number>(); |
| 71 | +
|
| 72 | + for (const identity of otherIdentities) { |
| 73 | + if (!("passkey" in identity.authMethod)) { |
| 74 | + continue; |
| 75 | + } |
| 76 | +
|
| 77 | + counts.set(identity.name, (counts.get(identity.name) ?? 0) + 1); |
| 78 | + } |
| 79 | +
|
| 80 | + return counts; |
| 81 | + }); |
69 | 82 |
|
70 | 83 | const handleSwitchIdentity = async (identityNumber: bigint) => { |
71 | 84 | try { |
|
137 | 150 | <p |
138 | 151 | class="text-text-primary max-w-full overflow-hidden text-sm font-semibold text-ellipsis whitespace-nowrap" |
139 | 152 | > |
140 | | - {selectedIdentity!.name ?? selectedIdentity!.identityNumber} |
| 153 | + {selectedIdentity.name ?? selectedIdentity.identityNumber} |
141 | 154 | </p> |
142 | 155 | <p |
143 | 156 | class="text-text-tertiary mb-6 max-w-full overflow-hidden text-sm text-ellipsis whitespace-nowrap" |
144 | 157 | > |
145 | | - {#if "openid" in selectedIdentity!.authMethod} |
| 158 | + {#if "openid" in selectedIdentity.authMethod && selectedIdentity.authMethod.openid.metadata !== undefined} |
146 | 159 | <span |
147 | 160 | >{getMetadataString( |
148 | | - selectedIdentity!.authMethod.openid.metadata!, |
| 161 | + selectedIdentity.authMethod.openid.metadata, |
149 | 162 | "email", |
150 | 163 | ) ?? $t`Hidden email`}</span |
151 | 164 | > |
|
188 | 201 | ) |
189 | 202 | : undefined} |
190 | 203 | {@const notUnique = |
191 | | - otherIdentities.filter( |
192 | | - (otherIdentity) => |
193 | | - "passkey" in identity.authMethod && |
194 | | - "passkey" in otherIdentity.authMethod && |
195 | | - identity.name === otherIdentity.name, |
196 | | - ).length > 1} |
| 204 | + "passkey" in identity.authMethod && |
| 205 | + (passkeyNameCounts.get(identity.name) ?? 0) > 1} |
197 | 206 | <li class="mx-4"> |
198 | 207 | <button |
199 | 208 | onclick={() => handleSwitchIdentity(identity.identityNumber)} |
|
217 | 226 | <span |
218 | 227 | class="text-text-tertiary overflow-hidden text-sm text-ellipsis whitespace-nowrap" |
219 | 228 | > |
220 | | - {#if "openid" in identity.authMethod} |
| 229 | + {#if "openid" in identity.authMethod && identity.authMethod.openid.metadata !== undefined} |
221 | 230 | <span |
222 | 231 | >{getMetadataString( |
223 | | - identity.authMethod.openid.metadata!, |
| 232 | + identity.authMethod.openid.metadata, |
224 | 233 | "email", |
225 | 234 | ) ?? $t`Hidden email`}</span |
226 | 235 | > |
|
0 commit comments