interface AvatarUserState { avatarProvider?: string | null avatarProviderUserId?: string | null } interface IdentityRow { provider: string providerUserId: string avatar?: string | null createdAt: Date | string } export interface AvatarSource { provider: string | null providerUserId: string | null } export function resolveAvatarSource( user: AvatarUserState, identities: IdentityRow[] ): AvatarSource | null { if (user.avatarProvider) { return { provider: user.avatarProvider, providerUserId: user.avatarProviderUserId ?? null } } const sorted = [...identities].sort((a, b) => { const at = new Date(a.createdAt).getTime() const bt = new Date(b.createdAt).getTime() return at - bt }) for (const identity of sorted) { if (identity.avatar) { return { provider: identity.provider, providerUserId: identity.providerUserId } } } return null }