|
2 | 2 |
|
3 | 3 | import type { FernNavigation } from "@fern-api/fdr-sdk"; |
4 | 4 | import { useIsomorphicLayoutEffect, useLazyRef } from "@fern-ui/react-commons"; |
5 | | -import { atom, useAtomValue } from "jotai"; |
| 5 | +import { atom, useAtomValue, useSetAtom } from "jotai"; |
6 | 6 | import { useHydrateAtoms } from "jotai/utils"; |
7 | 7 | import React from "react"; |
8 | 8 | import { create, type StoreApi, type UseBoundStore } from "zustand"; |
@@ -137,25 +137,39 @@ export function SetCurrentNavigationNode({ |
137 | 137 | }) { |
138 | 138 | const useStore = React.useContext(RootNodeStoreContext); |
139 | 139 | const dispatch = useStore((s) => s.dispatch); |
140 | | - |
141 | | - // Hydrate atoms with initial values during SSR to prevent hydration mismatches |
142 | | - useHydrateAtoms( |
143 | | - [ |
144 | | - [currentSidebarRootNodeIdAtom, sidebarRootNodeId], |
145 | | - [currentNodeIdAtom, nodeId], |
146 | | - [currentTabIdAtom, tabId], |
147 | | - [currentProductIdAtom, productId], |
148 | | - [currentProductSlugAtom, productSlug], |
149 | | - [currentVersionIdAtom, versionId], |
150 | | - [currentVersionSlugAtom, versionSlug], |
151 | | - [currentVariantIdAtom, variantId], |
152 | | - [currentVersionIsDefaultAtom, versionIsDefault ?? false], |
153 | | - [currentProductIsDefaultAtom, productIsDefault ?? false] |
154 | | - ], |
155 | | - { |
156 | | - dangerouslyForceHydrate: true |
157 | | - } |
158 | | - ); |
| 140 | + const setCurrentSidebarRootNodeId = useSetAtom(currentSidebarRootNodeIdAtom); |
| 141 | + const setCurrentNodeId = useSetAtom(currentNodeIdAtom); |
| 142 | + const setCurrentTabId = useSetAtom(currentTabIdAtom); |
| 143 | + const setCurrentProductId = useSetAtom(currentProductIdAtom); |
| 144 | + const setCurrentProductSlug = useSetAtom(currentProductSlugAtom); |
| 145 | + const setCurrentVersionId = useSetAtom(currentVersionIdAtom); |
| 146 | + const setCurrentVersionSlug = useSetAtom(currentVersionSlugAtom); |
| 147 | + const setCurrentVariantId = useSetAtom(currentVariantIdAtom); |
| 148 | + const setCurrentVersionIsDefault = useSetAtom(currentVersionIsDefaultAtom); |
| 149 | + const setCurrentProductIsDefault = useSetAtom(currentProductIsDefaultAtom); |
| 150 | + useIsomorphicLayoutEffect(() => { |
| 151 | + setCurrentSidebarRootNodeId(sidebarRootNodeId); |
| 152 | + setCurrentNodeId(nodeId); |
| 153 | + setCurrentProductId(productId); |
| 154 | + setCurrentProductSlug(productSlug); |
| 155 | + setCurrentTabId(tabId); |
| 156 | + setCurrentVersionId(versionId); |
| 157 | + setCurrentVersionSlug(versionSlug); |
| 158 | + setCurrentVariantId(variantId); |
| 159 | + setCurrentVersionIsDefault(versionIsDefault ?? false); |
| 160 | + setCurrentProductIsDefault(productIsDefault ?? false); |
| 161 | + }, [ |
| 162 | + nodeId, |
| 163 | + tabId, |
| 164 | + sidebarRootNodeId, |
| 165 | + productId, |
| 166 | + productSlug, |
| 167 | + versionId, |
| 168 | + versionSlug, |
| 169 | + variantId, |
| 170 | + versionIsDefault, |
| 171 | + productIsDefault |
| 172 | + ]); |
159 | 173 |
|
160 | 174 | useIsomorphicLayoutEffect(() => { |
161 | 175 | if (nodeId && sidebarRootNodeId) { |
|
0 commit comments