1
+ import { parseQueryError } from '$lib/error/error' ;
1
2
import { InjectionToken } from '@gitbutler/core/context' ;
2
3
import { PostHog , posthog , type Properties } from 'posthog-js' ;
3
4
import type { EventContext } from '$lib/analytics/eventContext' ;
@@ -23,6 +24,18 @@ export class PostHogWrapper {
23
24
this . _instance ?. capture ( eventName , newProperties ) ;
24
25
}
25
26
27
+ captureOnboarding ( event : OnboardingEvent , error ?: unknown ) {
28
+ const context = this . eventContext . getAll ( ) ;
29
+ const parsedError = parseQueryError ( error ) ;
30
+ const properties = {
31
+ ...context ,
32
+ error_title : parsedError . name ,
33
+ error_message : parsedError . message ,
34
+ error_code : parsedError . code
35
+ } ;
36
+ this . _instance ?. capture ( event , properties ) ;
37
+ }
38
+
26
39
async init ( ) {
27
40
const appInfo = await this . backend . getAppInfo ( ) ;
28
41
this . _instance = posthog . init ( PUBLIC_POSTHOG_API_KEY , {
@@ -78,3 +91,15 @@ export class PostHogWrapper {
78
91
}
79
92
}
80
93
}
94
+
95
+ export enum OnboardingEvent {
96
+ ConfirmedAnalytics = 'onboarding_confirmed_analytics' ,
97
+ AddLocalProject = 'onboarding_add_local_project' ,
98
+ AddLocalProjectFailed = 'onboarding_add_local_project_failed' ,
99
+ ClonedProject = 'onboarding_cloned_project' ,
100
+ ClonedProjectFailed = 'onboarding_cloned_project_failed' ,
101
+ SetTargetBranch = 'onboarding_set_target_branch' ,
102
+ SetTargetBranchFailed = 'onboarding_set_target_branch_failed' ,
103
+ SetProjectActive = 'onboarding_set_project_active' ,
104
+ SetProjectActiveFailed = 'onboarding_set_project_active_failed'
105
+ }
0 commit comments