feat: implement complex selection flow

This commit is contained in:
Jose Selesan
2026-04-20 15:47:47 -03:00
parent a5e39c94c5
commit 28fd51f926
17 changed files with 453 additions and 38 deletions

View File

@@ -1,5 +1,6 @@
import { createHash } from 'node:crypto';
import type { User } from '@/lib/auth';
import { db } from '@/lib/prisma';
import type { UserProfile } from '@repo/api-contract';
function getGravatarUrl(email: string): string {
@@ -7,12 +8,29 @@ function getGravatarUrl(email: string): string {
return `https://www.gravatar.com/avatar/${hash}?d=identicon`;
}
export function getUserProfile(user: User): UserProfile {
export async function getUserProfile(user: User, complexId?: string): Promise<UserProfile> {
let role = 'member';
if (complexId) {
const complexUser = await db.complexUser.findUnique({
where: {
complexId_userId: {
complexId,
userId: user.id,
},
},
});
if (complexUser) {
role = complexUser.role.toLowerCase();
}
}
return {
id: user.id,
fullName: user.name,
email: user.email,
role: (user as any).role || 'member',
role,
avatarUrl: user.image || getGravatarUrl(user.email),
createdAt: user.createdAt.toISOString(),
};