import { useRoute, useRouter } from '@starpad/ui' import { useMutation } from '@vue/apollo-composable' import gql from 'graphql-tag' export interface UserSetupInput { consentText: string subscribeToNewsletter?: boolean info: any } export interface SetupCurrentUserResult { id: string setupDone: boolean } export interface UseSetupCurrentUserOptions { fragment?: string } export function useSetupCurrentUser (options: UseSetupCurrentUserOptions = {}) { const mutation = useMutation(gql` mutation setupCurrentUser ($input: SetupCurrentUserInput!) { setupCurrentUser (input: $input) { id setupDone ${options.fragment || ''} } } `) const route = useRoute() const router = useRouter() async function setupCurrentUser (input: UserSetupInput) { const result = await mutation.mutate({ input, }) if (route.value.query?.route) { router.replace(route.value.query?.route as string) } return result } return { ...mutation, mutate: setupCurrentUser, } }