Skip to content

Commit 545320c

Browse files
committed
User based onboarding
1 parent be5f254 commit 545320c

File tree

41 files changed

+8833
-458
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+8833
-458
lines changed

apps/console/src/models.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,4 @@ export {
4242
webhooks,
4343
} from '@latitude-data/core/schema/models/webhooks'
4444
export { workspaceFeatures } from '@latitude-data/core/schema/models/workspaceFeatures'
45-
export { workspaceOnboarding } from '@latitude-data/core/schema/models/workspaceOnboarding'
4645
export { workspaces } from '@latitude-data/core/schema/models/workspaces'
Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
'use server'
22

3-
import { markWorkspaceOnboardingComplete } from '@latitude-data/core/services/workspaceOnboarding/update'
4-
import { getWorkspaceOnboarding } from '@latitude-data/core/services/workspaceOnboarding/get'
3+
import { markUserOnboardingComplete } from '@latitude-data/core/services/users/completeOnboarding'
54
import { authProcedure } from '../procedures'
65
import { frontendRedirect } from '$/lib/frontendRedirect'
76
import { ROUTES } from '$/services/routes'
87
import { z } from 'zod'
98
import { RunSourceGroup } from '@latitude-data/constants'
109

11-
/**
12-
* Mark onboarding as complete
13-
*/
1410
export const completeOnboardingAction = authProcedure
1511
.inputSchema(
1612
z.object({
@@ -20,15 +16,11 @@ export const completeOnboardingAction = authProcedure
2016
)
2117
.action(async ({ parsedInput, ctx }) => {
2218
const { projectId, commitUuid } = parsedInput
23-
const onboarding = await getWorkspaceOnboarding({
24-
workspace: ctx.workspace,
25-
}).then((r) => r.unwrap())
2619

27-
await markWorkspaceOnboardingComplete({
28-
onboarding,
20+
await markUserOnboardingComplete({
21+
user: ctx.user,
2922
}).then((r) => r.unwrap())
3023

31-
// Default redirect to the project's runs page
3224
return frontendRedirect(
3325
ROUTES.projects
3426
.detail({ id: projectId })
@@ -39,3 +31,4 @@ export const completeOnboardingAction = authProcedure
3931
}),
4032
)
4133
})
34+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
'use server'
2+
3+
import { markUserOnboardingComplete } from '@latitude-data/core/services/users/completeOnboarding'
4+
import { authProcedure } from '../procedures'
5+
import { frontendRedirect } from '$/lib/frontendRedirect'
6+
import { ROUTES } from '$/services/routes'
7+
8+
export const skipOnboardingAction = authProcedure.action(async ({ ctx }) => {
9+
await markUserOnboardingComplete({
10+
user: ctx.user,
11+
}).then((r) => r.unwrap())
12+
13+
return frontendRedirect(ROUTES.dashboard.root)
14+
})
15+

apps/web/src/actions/user/setupAction.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ import { errorHandlingProcedure } from '../procedures'
1111
import { frontendRedirect } from '$/lib/frontendRedirect'
1212
import { UserTitle } from '@latitude-data/constants/users'
1313
import { env } from '@latitude-data/env'
14-
import { markWorkspaceOnboardingComplete } from '@latitude-data/core/services/workspaceOnboarding/update'
15-
import { getWorkspaceOnboarding } from '@latitude-data/core/services/workspaceOnboarding/get'
14+
import { markUserOnboardingComplete } from '@latitude-data/core/services/users/completeOnboarding'
1615

1716
export const setupAction = errorHandlingProcedure
1817
.inputSchema(
@@ -62,14 +61,9 @@ export const setupAction = errorHandlingProcedure
6261
if (isCloud) {
6362
return frontendRedirect(ROUTES.onboarding.choice)
6463
}
65-
// If user is self-hosted and they're in the new prompt engineering onboarding, we complete the onboarding and redirect to the dashboard as they cannot generate the dataset with copilot
66-
const onboarding = await getWorkspaceOnboarding({
67-
workspace,
68-
}).then((r) => r.unwrap())
69-
70-
await markWorkspaceOnboardingComplete({
71-
onboarding,
72-
}).then((r) => r.unwrap())
64+
// If user is self-hosted, complete the onboarding and redirect to the dashboard
65+
// as they cannot generate the dataset with copilot
66+
await markUserOnboardingComplete({ user }).then((r) => r.unwrap())
7367

7468
return frontendRedirect(ROUTES.dashboard.root)
7569
}

apps/web/src/actions/workspaceOnboarding/skip.ts

Lines changed: 0 additions & 20 deletions
This file was deleted.

apps/web/src/app/(onboarding)/onboarding-prompt-engineering/layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use server'
22

3-
import { getOnboardingResources } from '$/data-access/workspaceOnboarding'
3+
import { getOnboardingResources } from '$/data-access/onboarding'
44
import { redirect } from 'next/navigation'
55
import { ROUTES } from '$/services/routes'
66
import { ProjectProvider } from '$/app/providers/ProjectProvider'

apps/web/src/app/(onboarding)/onboarding-prompt-engineering/run-experiment/_components/RunExperiment/index.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ import { useExperiments } from '$/stores/experiments'
1515
import useDatasets from '$/stores/datasets'
1616
import { envClient } from '$/envClient'
1717
import { usePromptEngineeringOnboarding } from '$/app/(onboarding)/onboarding-prompt-engineering/usePromptEngineeringOnboarding'
18-
import useWorkspaceOnboarding from '$/stores/workspaceOnboarding'
1918
import useLatitudeAction from '$/hooks/useLatitudeAction'
2019
import { publishEventAction } from '$/actions/events/publishEventAction'
20+
import { completeOnboardingAction } from '$/actions/onboarding/complete'
2121
import { User } from '@latitude-data/core/schema/models/types/User'
2222
import { Workspace } from '@latitude-data/core/schema/models/types/Workspace'
2323
import {
@@ -41,7 +41,7 @@ export default function RunExperimentBody({
4141
user: User
4242
workspace: Workspace
4343
}) {
44-
const { executeCompleteOnboarding } = useWorkspaceOnboarding()
44+
const { execute: completeOnboarding } = useLatitudeAction(completeOnboardingAction)
4545
const { execute: publishEvent } = useLatitudeAction(publishEventAction)
4646
const { project } = useCurrentProject()
4747
const { commit } = useCurrentCommit()
@@ -77,7 +77,7 @@ export default function RunExperimentBody({
7777
{
7878
onCreate: async () => {
7979
setReplayOnboarding(false)
80-
executeCompleteOnboarding({
80+
completeOnboarding({
8181
projectId: project.id,
8282
commitUuid: commit.uuid,
8383
})

apps/web/src/app/(onboarding)/onboarding/choice/page.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { ROUTES } from '$/services/routes'
1212
import { useHover } from '@latitude-data/web-ui/browser'
1313
import { cn } from '@latitude-data/web-ui/utils'
1414

15-
type OnboardingChoice = 'scratch' | 'existing' | null
15+
type OnboardingChoice = 'product_engineer' | 'developer' | null
1616

1717
function ChoiceCard({
1818
icon,
@@ -66,12 +66,12 @@ export default function OnboardingChoicePage() {
6666
})
6767

6868
const handleStartFromScratch = useCallback(() => {
69-
setOnboardingChoice('scratch')
69+
setOnboardingChoice('product_engineer')
7070
router.push(ROUTES.onboarding.promptEngineering.pasteYourPrompt)
7171
}, [setOnboardingChoice, router])
7272

7373
const handleExistingProject = useCallback(() => {
74-
setOnboardingChoice('existing')
74+
setOnboardingChoice('developer')
7575
router.push(ROUTES.onboarding.install)
7676
}, [setOnboardingChoice, router])
7777

apps/web/src/app/(onboarding)/onboarding/install/_components/InviteDeveloperModal.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import { Text } from '@latitude-data/web-ui/atoms/Text'
1515
import { TableSkeleton } from '@latitude-data/web-ui/molecules/TableSkeleton'
1616
import useUsers from '$/stores/users'
1717
import useCurrentWorkspace from '$/stores/currentWorkspace'
18+
import useLatitudeAction from '$/hooks/useLatitudeAction'
19+
import { publishEventAction } from '$/actions/events/publishEventAction'
1820
import { useCallback, useState } from 'react'
1921

2022
function NewUserRow({
@@ -75,10 +77,17 @@ export default function InviteDeveloperModal({
7577
}) {
7678
const { data: workspace } = useCurrentWorkspace()
7779
const { data: users, isLoading, invite } = useUsers()
80+
const { execute: publishEvent } = useLatitudeAction(publishEventAction)
7881

7982
const onInviteUser = useCallback(
80-
(name: string, email: string) => invite({ name, email }),
81-
[invite],
83+
(name: string, email: string) => {
84+
invite({ name, email })
85+
publishEvent({
86+
eventType: 'onboardingUserInvited',
87+
payload: { invitedEmail: email },
88+
})
89+
},
90+
[invite, publishEvent],
8291
)
8392

8493
return (

apps/web/src/app/(onboarding)/onboarding/install/_lib/OnboardingInstallProvider.tsx

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)