diff --git a/apps/api/src/helpers/helpers.ts b/apps/api/src/helpers/helpers.ts index 0f9f636..4b0833b 100644 --- a/apps/api/src/helpers/helpers.ts +++ b/apps/api/src/helpers/helpers.ts @@ -291,8 +291,12 @@ export const createInvitedUser = async ( streamServerClient: StreamChat, transporter: Transporter, recipientEmail: string, - senderEmail: string + senderEmail: string, + options?: { + isTemporary?: boolean; + } ): Promise<{ success: boolean; error?: string; userId?: string }> => { + const isTemporary = options?.isTemporary ?? true; const xtabloUrl = process.env.XTABLO_URL || "https://app.xtablo.com"; // Create a new user account for the invited email @@ -318,6 +322,16 @@ export const createInvitedUser = async ( return { success: false, error: createUserError.message }; } + const { error: updateProfileError } = await supabase + .from("profiles") + .update({ is_temporary: isTemporary }) + .eq("id", newUser.user.id); + + if (updateProfileError) { + console.error("Error setting invited user temporary status:", updateProfileError); + return { success: false, error: updateProfileError.message }; + } + await streamServerClient.upsertUser({ id: newUser.user.id, name: recipientEmail.split("@")[0], diff --git a/apps/api/src/routers/invite.ts b/apps/api/src/routers/invite.ts index 28c8a37..b48c440 100644 --- a/apps/api/src/routers/invite.ts +++ b/apps/api/src/routers/invite.ts @@ -58,7 +58,8 @@ const bookSlot = factory.createHandlers(async (c) => { streamServerClient, transporter, data.user_details.email, - ownerData.email + ownerData.email, + { isTemporary: true } ); if (!result.success) { diff --git a/apps/api/src/routers/tablo.ts b/apps/api/src/routers/tablo.ts index 90b9f52..f466c85 100644 --- a/apps/api/src/routers/tablo.ts +++ b/apps/api/src/routers/tablo.ts @@ -33,7 +33,11 @@ const upsertStreamUserFromProfile = async ( streamServerClient: AuthEnv["Variables"]["streamServerClient"], userId: string ) => { - const { data: profile } = await supabase.from("profiles").select("name").eq("id", userId).maybeSingle(); + const { data: profile } = await supabase + .from("profiles") + .select("name") + .eq("id", userId) + .maybeSingle(); await streamServerClient.upsertUser({ id: userId, @@ -255,10 +259,7 @@ const deleteTablo = factory.createHandlers(async (c) => { } } - const { error } = await supabase - .from("tablos") - .update({ deleted_at: deletedAt }) - .eq("id", id); + const { error } = await supabase.from("tablos").update({ deleted_at: deletedAt }).eq("id", id); if (error) { return c.json({ error: error.message }, 500); @@ -352,7 +353,8 @@ const inviteToTablo = ( streamServerClient, transporter, recipientEmail, - sender.email + sender.email, + { isTemporary: true } ); if (!result.success) { @@ -427,9 +429,7 @@ ${introEmail ? `
${introEmail}
` : ""} }); }); -const cancelPendingInvite = ( - middlewareManager: ReturnType