LiveDisplayX / src / app / onboarding / _actions.ts
_actions.ts
Raw
'use server'

import { auth, clerkClient } from '@clerk/nextjs/server'



export const completeOnboarding = async () => {
  const { userId } = await auth()
  
  if (!userId) {
    throw new Error('User not authenticated');
  }
  const client = await clerkClient()

  try {
     await client.users.updateUser(userId, {
      publicMetadata: {
        onboardingComplete: true,
      },
    });
    
    return { success: true };
  } catch (err) {
    console.error('Error updating user metadata:', err);
    throw new Error('Failed to complete onboarding');
  }
};

export const checkOnboardingStatus = async () => {
  const { userId } = await auth();
  
  if (!userId) {
    return { onboardingComplete: false };
  }
  const client = await clerkClient()

  const user = await client.users.getUser(userId);
  return {
    onboardingComplete: user.publicMetadata.onboardingComplete === true,
  };
};