fix(mixpanel): simplify mixpanel logic
This commit is contained in:
@@ -60,7 +60,7 @@ import { useAddByUrl } from '~/lib/core/composables/addByUrl'
|
||||
import { getSlugFromHostAppNameAndVersion } from '~/lib/common/helpers/hostAppSlug'
|
||||
import type { CardSetting } from '~/lib/models/card/setting'
|
||||
|
||||
const { trackEvent, trackSettingsChange } = useMixpanel()
|
||||
const { trackEvent } = useMixpanel()
|
||||
|
||||
const showReceiveDialog = defineModel<boolean>('open', { default: false })
|
||||
|
||||
@@ -86,7 +86,6 @@ const selectedWorkspace = ref<WorkspaceListWorkspaceItemFragment>()
|
||||
const selectedProject = ref<ProjectListProjectItemFragment>()
|
||||
const selectedModel = ref<ModelListModelItemFragment>()
|
||||
const receieveSettings = ref<CardSetting[] | undefined>(undefined)
|
||||
const settingsWereChanged = ref(false)
|
||||
|
||||
const { tryParseUrl, urlParsedData, urlParseError } = useAddByUrl()
|
||||
const updateSearchText = (text: string | undefined) => {
|
||||
@@ -140,6 +139,16 @@ const handleUpdateSettings = (settings: CardSetting[]) => {
|
||||
settingsWereChanged.value = true
|
||||
}
|
||||
|
||||
watch(receieveSettings, (newSettings) => {
|
||||
const settingProperties = Object.fromEntries(
|
||||
newSettings?.map((setting) => [setting.id, setting.value]) ?? []
|
||||
)
|
||||
void trackEvent('DUI3 Action', {
|
||||
name: 'Load Settings Changed',
|
||||
...settingProperties
|
||||
})
|
||||
})
|
||||
|
||||
// accountId, serverUrl, ModelListModelItemFragment, VersionListItemFragment
|
||||
const selectVersionAndAddModel = async (
|
||||
version: VersionListItemFragment,
|
||||
@@ -151,17 +160,6 @@ const selectVersionAndAddModel = async (
|
||||
hasSelectedLatestVersion: version.id === latestVersion.id
|
||||
})
|
||||
|
||||
// track settings only if user changed them on receive
|
||||
if (settingsWereChanged.value && receieveSettings.value) {
|
||||
trackSettingsChange(
|
||||
'Load Settings Changed',
|
||||
receieveSettings.value,
|
||||
hostAppStore.receiveSettings || [],
|
||||
selectedAccountId.value,
|
||||
true
|
||||
)
|
||||
}
|
||||
|
||||
const existingModel = hostAppStore.models.find(
|
||||
(m) =>
|
||||
m.modelId === selectedModel.value?.id &&
|
||||
|
||||
@@ -27,7 +27,7 @@ import { useMixpanel } from '~/lib/core/composables/mixpanel'
|
||||
import { useHostAppStore } from '~/store/hostApp'
|
||||
import type { CardSetting } from '~/lib/models/card/setting'
|
||||
|
||||
const { trackSettingsChange } = useMixpanel()
|
||||
const { trackEvent } = useMixpanel()
|
||||
|
||||
const props = defineProps<{
|
||||
settings?: CardSetting[]
|
||||
@@ -48,11 +48,13 @@ const updateSettings = (settings: CardSetting[]) => {
|
||||
}
|
||||
|
||||
const saveSettings = async () => {
|
||||
trackSettingsChange(
|
||||
'Model Card Settings Updated',
|
||||
newSettings,
|
||||
store.sendSettings || []
|
||||
const settingProperties = Object.fromEntries(
|
||||
newSettings?.map((setting) => [setting.id, setting.value]) ?? []
|
||||
)
|
||||
void trackEvent('DUI3 Action', {
|
||||
name: 'Load Settings Changed',
|
||||
...settingProperties
|
||||
})
|
||||
|
||||
await store.patchModel(props.modelCardId, {
|
||||
settings: newSettings,
|
||||
|
||||
+11
-13
@@ -62,7 +62,7 @@ import { useMixpanel } from '~/lib/core/composables/mixpanel'
|
||||
import type { CardSetting } from '~/lib/models/card/setting'
|
||||
import { useAddByUrl } from '~/lib/core/composables/addByUrl'
|
||||
|
||||
const { trackEvent, trackSettingsChange } = useMixpanel()
|
||||
const { trackEvent } = useMixpanel()
|
||||
|
||||
const showSendDialog = defineModel<boolean>('open', { default: false })
|
||||
|
||||
@@ -77,7 +77,6 @@ const selectedProject = ref<ProjectListProjectItemFragment>()
|
||||
const selectedModel = ref<ModelListModelItemFragment>()
|
||||
const filter = ref<ISendFilter | undefined>(undefined)
|
||||
const settings = ref<CardSetting[] | undefined>(undefined)
|
||||
const settingsWereChanged = ref(false)
|
||||
|
||||
const { tryParseUrl, urlParsedData, urlParseError } = useAddByUrl()
|
||||
const updateSearchText = (text: string | undefined) => {
|
||||
@@ -98,6 +97,16 @@ watch(showSendDialog, (newVal) => {
|
||||
}
|
||||
})
|
||||
|
||||
watch(settings, (newSettings) => {
|
||||
const settingProperties = Object.fromEntries(
|
||||
newSettings?.map((setting) => [setting.id, setting.value]) ?? []
|
||||
)
|
||||
void trackEvent('DUI3 Action', {
|
||||
name: 'Publish Settings Changed',
|
||||
...settingProperties
|
||||
})
|
||||
})
|
||||
|
||||
const selectProject = (accountId: string, project: ProjectListProjectItemFragment) => {
|
||||
step.value++
|
||||
selectedAccountId.value = accountId
|
||||
@@ -140,17 +149,6 @@ const addModel = async () => {
|
||||
filter: filter.value?.typeDiscriminator
|
||||
})
|
||||
|
||||
// track settings only if user changed them
|
||||
if (settingsWereChanged.value && settings.value) {
|
||||
trackSettingsChange(
|
||||
'Publish Settings Changed',
|
||||
settings.value,
|
||||
hostAppStore.sendSettings || [],
|
||||
selectedAccountId.value,
|
||||
true
|
||||
)
|
||||
}
|
||||
|
||||
const existingModel = hostAppStore.models.find(
|
||||
(m) =>
|
||||
m.modelId === selectedModel.value?.id &&
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import md5 from '~/lib/common/helpers/md5'
|
||||
import { useHostAppStore } from '~/store/hostApp'
|
||||
import { useAccountStore } from '~/store/accounts'
|
||||
import type { CardSetting } from '~/lib/models/card/setting'
|
||||
|
||||
interface CustomProperties {
|
||||
[key: string]: object | string | boolean | number | undefined | null
|
||||
@@ -189,39 +188,5 @@ export function useMixpanel() {
|
||||
}
|
||||
}
|
||||
|
||||
function trackSettingsChange(
|
||||
eventName: string,
|
||||
settings: CardSetting[],
|
||||
defaultSettings: CardSetting[],
|
||||
accountId?: string,
|
||||
requireChanges: boolean = false
|
||||
) {
|
||||
// building dynamic properties
|
||||
// since this can change based on HostApp
|
||||
const settingProperties: Record<string, string | boolean | number> = {
|
||||
name: eventName
|
||||
}
|
||||
|
||||
let hasAnyChange = false
|
||||
settings.forEach((setting) => {
|
||||
const defaultSetting = defaultSettings.find((s) => s.id === setting.id)
|
||||
if (defaultSetting) {
|
||||
const isDefault = setting.value === defaultSetting.value
|
||||
if (!isDefault) {
|
||||
hasAnyChange = true
|
||||
}
|
||||
// if user selects default, just use 'default'
|
||||
settingProperties['setting_' + setting.id] = isDefault
|
||||
? `${setting.value} (default)`
|
||||
: setting.value
|
||||
}
|
||||
})
|
||||
|
||||
// only track if user changed a setting
|
||||
if (!requireChanges || hasAnyChange) {
|
||||
void trackEvent('DUI3 Action', settingProperties, accountId)
|
||||
}
|
||||
}
|
||||
|
||||
return { trackEvent, trackSettingsChange, addConnectorToProfile, identifyProfile }
|
||||
return { trackEvent, addConnectorToProfile, identifyProfile }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user