diff --git a/frontend/app/onboarding/onboarding.tsx b/frontend/app/onboarding/onboarding.tsx index fc4c566ae4..381339e6f0 100644 --- a/frontend/app/onboarding/onboarding.tsx +++ b/frontend/app/onboarding/onboarding.tsx @@ -6,7 +6,7 @@ import { Button } from "@/app/element/button"; import { FlexiModal } from "@/app/modals/modal"; import { OnboardingFeatures } from "@/app/onboarding/onboarding-features"; import { ClientModel } from "@/app/store/client-model"; -import { atoms } from "@/app/store/global"; +import { useSettingsKeyAtom } from "@/app/store/global"; import { disableGlobalKeybindings, enableGlobalKeybindings, globalRefocus } from "@/app/store/keymodel"; import { modalsModel } from "@/app/store/modalmodel"; import * as WOS from "@/app/store/wos"; @@ -29,13 +29,13 @@ type PageName = "init" | "notelemetrystar" | "features"; const pageNameAtom: PrimitiveAtom = atom("init"); const InitPage = ({ isCompact }: { isCompact: boolean }) => { - const settings = useAtomValue(atoms.settingsAtom); + const telemetrySetting = useSettingsKeyAtom("telemetry:enabled"); const clientData = useAtomValue(ClientModel.getInstance().clientAtom); - const [telemetryEnabled, setTelemetryEnabled] = useState(!!settings["telemetry:enabled"]); + const [telemetryEnabled, setTelemetryEnabled] = useState(!!telemetrySetting); const setPageName = useSetAtom(pageNameAtom); const acceptTos = () => { - if (!clientData.tosagreed) { + if (!clientData?.tosagreed) { fireAndForget(services.ClientService.AgreeTos); } if (telemetryEnabled) { @@ -310,4 +310,4 @@ const NewInstallOnboardingModal = () => { NewInstallOnboardingModal.displayName = "NewInstallOnboardingModal"; -export { NewInstallOnboardingModal }; +export { InitPage, NewInstallOnboardingModal, NoTelemetryStarPage }; diff --git a/frontend/preview/preview.tsx b/frontend/preview/preview.tsx index c38c9fe297..3b0e8d7825 100644 --- a/frontend/preview/preview.tsx +++ b/frontend/preview/preview.tsx @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import Logo from "@/app/asset/logo.svg"; +import { ClientModel } from "@/app/store/client-model"; import { setWaveWindowType } from "@/app/store/windowtype"; import { loadFonts } from "@/util/fontutil"; import React, { lazy, Suspense } from "react"; @@ -119,6 +120,8 @@ function PreviewApp() { function initPreview() { setWaveWindowType("preview"); + // Preview mode has no connected backend client object, but onboarding previews read clientAtom. + ClientModel.getInstance().initialize(null); loadFonts(); const root = createRoot(document.getElementById("main")!); root.render(); diff --git a/frontend/preview/previews/onboarding.preview.tsx b/frontend/preview/previews/onboarding.preview.tsx index 6ea2312d3e..0cf0b91e43 100644 --- a/frontend/preview/previews/onboarding.preview.tsx +++ b/frontend/preview/previews/onboarding.preview.tsx @@ -2,6 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import Logo from "@/app/asset/logo.svg"; +import { InitPage, NoTelemetryStarPage } from "@/app/onboarding/onboarding"; import { DurableSessionPage } from "@/app/onboarding/onboarding-durable"; import { FilesPage, MagnifyBlocksPage, WaveAIPage } from "@/app/onboarding/onboarding-features"; import { UpgradeOnboardingVersions } from "@/app/onboarding/onboarding-upgrade-patch"; @@ -10,6 +11,12 @@ function OnboardingFeaturesV() { const noop = () => {}; return (
+
+ +
+
+ +