From 350c9f7def8a4490e6b91aef753f5c9ac3f32d54 Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 29 Jan 2025 21:52:00 +0700 Subject: [PATCH] chore: maintain app distinct_id on factory reset (#4541) --- core/src/types/config/appConfigEntity.ts | 1 + web/containers/Layout/index.tsx | 14 ++++++++++++-- web/hooks/useFactoryReset.ts | 1 + web/utils/settings.ts | 22 ++++++++++++++++++++++ 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 web/utils/settings.ts diff --git a/core/src/types/config/appConfigEntity.ts b/core/src/types/config/appConfigEntity.ts index 1402aeca1..bd352d22f 100644 --- a/core/src/types/config/appConfigEntity.ts +++ b/core/src/types/config/appConfigEntity.ts @@ -1,4 +1,5 @@ export type AppConfiguration = { data_folder: string quick_ask: boolean + distinct_id?: string } diff --git a/web/containers/Layout/index.tsx b/web/containers/Layout/index.tsx index 29fda70de..7d5f61ed3 100644 --- a/web/containers/Layout/index.tsx +++ b/web/containers/Layout/index.tsx @@ -26,6 +26,8 @@ import ImportModelOptionModal from '@/screens/Settings/ImportModelOptionModal' import ImportingModelModal from '@/screens/Settings/ImportingModelModal' import SelectingModelModal from '@/screens/Settings/SelectingModelModal' +import { getAppDistinctId, updateDistinctId } from '@/utils/settings' + import LoadingModal from '../LoadingModal' import MainViewContainer from '../MainViewContainer' @@ -93,8 +95,16 @@ const BaseLayout = () => { return properties }, }) - posthog.opt_in_capturing() - posthog.register({ app_version: VERSION }) + // Attempt to restore distinct Id from app global settings + getAppDistinctId() + .then((id) => { + if (id) posthog.identify(id) + }) + .finally(() => { + posthog.opt_in_capturing() + posthog.register({ app_version: VERSION }) + updateDistinctId(posthog.get_distinct_id()) + }) } else { posthog.opt_out_capturing() } diff --git a/web/hooks/useFactoryReset.ts b/web/hooks/useFactoryReset.ts index da2e15b03..7344b2eb1 100644 --- a/web/hooks/useFactoryReset.ts +++ b/web/hooks/useFactoryReset.ts @@ -58,6 +58,7 @@ export default function useFactoryReset() { const configuration: AppConfiguration = { data_folder: defaultJanDataFolder, quick_ask: appConfiguration?.quick_ask ?? false, + distinct_id: appConfiguration?.distinct_id, } await window.core?.api?.updateAppConfiguration(configuration) } diff --git a/web/utils/settings.ts b/web/utils/settings.ts new file mode 100644 index 000000000..75a60bc52 --- /dev/null +++ b/web/utils/settings.ts @@ -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 => { + const appConfiguration: AppConfiguration = + await window.core?.api?.getAppConfigurations() + return appConfiguration.distinct_id +}