on develop help sign in
Fix nested prerender
commitd5dbab23895c08a40d432e757de67d888e601e7b authorTom Smalley <tfsmalley@gmail.com> dateTue 27 Nov 2018, 14:38 (8 years ago) parent7b65bea
2 files changed+17−16
reflex-dom-core/src/Reflex/Dom/Builder/Hydration.hs+1 reflex-dom-core/src/Reflex/Dom/Prerender.hs+16−16
reflex-dom-core/src/Reflex/Dom/Builder/Hydration.hs+1
@@ -40,6 +40,7 @@ module Reflex.Dom.Builder.Hydration
4040 , localEnv
4141 , addHydrationStepWithSetup
4242 , addHydrationStep
43+ , getHydrationMode
4344 , hydrateNode
4445 , getPreviousNode, setPreviousNode
4546 , runHydrationDomBuilderT
reflex-dom-core/src/Reflex/Dom/Prerender.hs+16−16
@@ -81,22 +81,22 @@ instance (PrerenderClientConstraint' js m, ReflexHost t) => Prerender js (Immedi
8181
8282instance (PrerenderClientConstraint' js m, SupportsImmediateDomBuilder t m, ReflexHost t, PerformEvent t m) => Prerender js (HydrationDomBuilderT t m) where
8383 prerenderClientDict = Just Dict
84− prerenderWrapper = do
85− parent <- HydrationDomBuilderT $ asks _hydrationDomBuilderEnv_parent
86− hydrationMode <- HydrationDomBuilderT $ asks _hydrationDomBuilderEnv_hydrationMode
87− df <- Document.createDocumentFragment =<< askDocument
88− initialParent <- liftIO $ readIORef parent
89− initialHydrationMode <- liftIO $ readIORef hydrationMode
90− liftIO $ writeIORef parent $ DOM.toNode df
91− liftIO $ writeIORef hydrationMode HydrationMode_Immediate
92− pure $ do
93− liftIO $ writeIORef parent initialParent
94− liftIO $ writeIORef hydrationMode initialHydrationMode
95− addHydrationStep $ do
96− liftIO $ putStrLn "Hydration step"
97− -- Delete up to the end marker
98− after <- deleteToPrerenderEnd
99− insertBefore df after
84+ prerenderWrapper = getHydrationMode >>= \case
85+ HydrationMode_Immediate -> pure (pure ())
86+ HydrationMode_Hydrating -> do
87+ parent <- HydrationDomBuilderT $ asks _hydrationDomBuilderEnv_parent
88+ hydrationMode <- HydrationDomBuilderT $ asks _hydrationDomBuilderEnv_hydrationMode
89+ df <- Document.createDocumentFragment =<< askDocument
90+ initialParent <- liftIO $ readIORef parent
91+ liftIO $ writeIORef parent $ DOM.toNode df
92+ liftIO $ writeIORef hydrationMode HydrationMode_Immediate
93+ pure $ do
94+ liftIO $ writeIORef parent initialParent
95+ liftIO $ writeIORef hydrationMode HydrationMode_Hydrating
96+ addHydrationStep $ do
97+ -- Delete up to the end marker
98+ after <- deleteToPrerenderEnd
99+ insertBefore df after
100100
101101startMarker, endMarker :: IsString s => s
102102startMarker = "prerender/start"