feat: decouple auth and telemetry with event hooks

- Create authEventBus.ts with typed event hooks

- Create authTracking.ts to subscribe telemetry to auth events

- Remove direct telemetry imports from firebaseAuthStore

- Remove useCurrentUser import from MixpanelTelemetryProvider

- Breaks ~600 circular dependency cycles

Amp-Thread-ID: https://ampcode.com/threads/T-019bfe73-6a29-7638-8160-8de515af8707
Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
Alexander Brown
2026-01-27 00:10:07 -08:00
parent 7ad43c689c
commit 21ba6a6823
6 changed files with 87 additions and 11 deletions

View File

@@ -25,8 +25,8 @@ import { getComfyApiBaseUrl } from '@/config/comfyApi'
import { t } from '@/i18n'
import { WORKSPACE_STORAGE_KEYS } from '@/platform/auth/workspace/workspaceConstants'
import { isCloud } from '@/platform/distribution/types'
import { useTelemetry } from '@/platform/telemetry'
import { useDialogService } from '@/services/dialogService'
import { authEventHook, userResolvedHook } from '@/stores/authEventBus'
import { useApiKeyAuthStore } from '@/stores/apiKeyAuthStore'
import type { AuthHeader } from '@/types/authTypes'
import type { operations } from '@/types/comfyRegistryTypes'
@@ -323,10 +323,16 @@ export const useFirebaseAuthStore = defineStore('firebaseAuth', () => {
)
if (isCloud) {
useTelemetry()?.trackAuth({
authEventHook.trigger({
type: 'login',
method: 'email',
is_new_user: false
})
userResolvedHook.trigger({
userId: result.user.uid,
email: result.user.email,
displayName: result.user.displayName
})
}
return result
@@ -343,10 +349,16 @@ export const useFirebaseAuthStore = defineStore('firebaseAuth', () => {
)
if (isCloud) {
useTelemetry()?.trackAuth({
authEventHook.trigger({
type: 'register',
method: 'email',
is_new_user: true
})
userResolvedHook.trigger({
userId: result.user.uid,
email: result.user.email,
displayName: result.user.displayName
})
}
return result
@@ -361,10 +373,16 @@ export const useFirebaseAuthStore = defineStore('firebaseAuth', () => {
if (isCloud) {
const additionalUserInfo = getAdditionalUserInfo(result)
const isNewUser = additionalUserInfo?.isNewUser ?? false
useTelemetry()?.trackAuth({
authEventHook.trigger({
type: isNewUser ? 'register' : 'login',
method: 'google',
is_new_user: isNewUser
})
userResolvedHook.trigger({
userId: result.user.uid,
email: result.user.email,
displayName: result.user.displayName
})
}
return result
@@ -379,10 +397,16 @@ export const useFirebaseAuthStore = defineStore('firebaseAuth', () => {
if (isCloud) {
const additionalUserInfo = getAdditionalUserInfo(result)
const isNewUser = additionalUserInfo?.isNewUser ?? false
useTelemetry()?.trackAuth({
authEventHook.trigger({
type: isNewUser ? 'register' : 'login',
method: 'github',
is_new_user: isNewUser
})
userResolvedHook.trigger({
userId: result.user.uid,
email: result.user.email,
displayName: result.user.displayName
})
}
return result