chore: maintain app distinct_id on factory reset (#4541)

This commit is contained in:
Louis 2025-01-29 21:52:00 +07:00 committed by GitHub
parent 144b836935
commit 350c9f7def
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 36 additions and 2 deletions

View File

@ -1,4 +1,5 @@
export type AppConfiguration = { export type AppConfiguration = {
data_folder: string data_folder: string
quick_ask: boolean quick_ask: boolean
distinct_id?: string
} }

View File

@ -26,6 +26,8 @@ import ImportModelOptionModal from '@/screens/Settings/ImportModelOptionModal'
import ImportingModelModal from '@/screens/Settings/ImportingModelModal' import ImportingModelModal from '@/screens/Settings/ImportingModelModal'
import SelectingModelModal from '@/screens/Settings/SelectingModelModal' import SelectingModelModal from '@/screens/Settings/SelectingModelModal'
import { getAppDistinctId, updateDistinctId } from '@/utils/settings'
import LoadingModal from '../LoadingModal' import LoadingModal from '../LoadingModal'
import MainViewContainer from '../MainViewContainer' import MainViewContainer from '../MainViewContainer'
@ -93,8 +95,16 @@ const BaseLayout = () => {
return properties return properties
}, },
}) })
posthog.opt_in_capturing() // Attempt to restore distinct Id from app global settings
posthog.register({ app_version: VERSION }) getAppDistinctId()
.then((id) => {
if (id) posthog.identify(id)
})
.finally(() => {
posthog.opt_in_capturing()
posthog.register({ app_version: VERSION })
updateDistinctId(posthog.get_distinct_id())
})
} else { } else {
posthog.opt_out_capturing() posthog.opt_out_capturing()
} }

View File

@ -58,6 +58,7 @@ export default function useFactoryReset() {
const configuration: AppConfiguration = { const configuration: AppConfiguration = {
data_folder: defaultJanDataFolder, data_folder: defaultJanDataFolder,
quick_ask: appConfiguration?.quick_ask ?? false, quick_ask: appConfiguration?.quick_ask ?? false,
distinct_id: appConfiguration?.distinct_id,
} }
await window.core?.api?.updateAppConfiguration(configuration) await window.core?.api?.updateAppConfiguration(configuration)
} }

22
web/utils/settings.ts Normal file
View File

@ -0,0 +1,22 @@
import { AppConfiguration } from '@janhq/core'
/**
* Update app distinct Id
* @param id
*/
export const updateDistinctId = async (id: string) => {
const appConfiguration: AppConfiguration =
await window.core?.api?.getAppConfigurations()
appConfiguration.distinct_id = id
await window.core?.api?.updateAppConfiguration(appConfiguration)
}
/**
* Retrieve app distinct Id
* @param id
*/
export const getAppDistinctId = async (): Promise<string | undefined> => {
const appConfiguration: AppConfiguration =
await window.core?.api?.getAppConfigurations()
return appConfiguration.distinct_id
}