diff --git a/app/routes/api/webhooks/clerk.ts b/app/routes/api/webhooks/clerk.ts index 10b8595..c1cd1de 100644 --- a/app/routes/api/webhooks/clerk.ts +++ b/app/routes/api/webhooks/clerk.ts @@ -1,6 +1,6 @@ import { Webhook } from "svix"; import type { Route } from "./+types/clerk"; -import { findOrCreateUser, updateUserByClerkId } from "~/models/user"; +import { findOrCreateUser } from "~/models/user"; export async function action({ request }: Route.ActionArgs) { // Get the webhook secret from environment @@ -65,29 +65,16 @@ export async function action({ request }: Route.ActionArgs) { `User created in database: ${user.id} (${user.username || user.displayName})` ); } else { - // Update existing user - const email = email_addresses?.[0]?.email_address; - if (!email) { - throw new Error("User must have an email address"); - } - - // Generate display name - let displayName = ""; - if (first_name || last_name) { - displayName = [first_name, last_name] - .filter(Boolean) - .join(" ") - .trim(); - } else { - displayName = email.split("@")[0]; - } - - const user = await updateUserByClerkId(id, { - email, + // Update existing user (or create if doesn't exist) + const user = await findOrCreateUser({ + id, + emailAddresses: + email_addresses?.map((e: any) => ({ + emailAddress: e.email_address, + })) || [], username, - displayName, - firstName: first_name || undefined, - lastName: last_name || undefined, + firstName: first_name, + lastName: last_name, imageUrl: image_url, }); console.log(