@@ -12,6 +12,7 @@
1212{-# LANGUAGE LambdaCase #-}
1313{-# LANGUAGE MultiParamTypeClasses #-}
1414{-# LANGUAGE OverloadedStrings #-}
15+{-# LANGUAGE PatternGuards #-}
1516{-# LANGUAGE PolyKinds #-}
1617{-# LANGUAGE RankNTypes #-}
1718{-# LANGUAGE RecursiveDo #-}
@@ -54,7 +55,7 @@ module Reflex.Dom.Builder.Hydration
5455
5556import Control.Concurrent
5657import Control.Exception (bracketOnError)
57−import Control.Lens hiding (element, ix)
58+import Control.Lens (Identity(..), imapM_, iforM_, (^.))
5859import Control.Monad.Exception
5960import Control.Monad.Primitive
6061import Control.Monad.Reader
@@ -652,11 +653,11 @@ instance (SupportsHydrationDomBuilder t m) => DomBuilder t (HydrationDomBuilderT
652653 type DomBuilderSpace (HydrationDomBuilderT t m) = HydrationDomSpace
653654 {-# INLINABLE textNode #-}
654655 textNode (TextNodeConfig initialContents mSetContents) = do
655− t <- textNodeInternal initialContents mSetContents
656+ _ <- textNodeInternal initialContents mSetContents
656657 return $ TextNode ()
657658 {-# INLINABLE commentNode #-}
658659 commentNode (CommentNodeConfig initialContents mSetContents) = do
659− c <- commentNodeInternal initialContents mSetContents
660+ _ <- commentNodeInternal initialContents mSetContents
660661 return $ CommentNode ()
661662 {-# INLINABLE element #-}
662663 element elementTag cfg child = do
@@ -1003,12 +1004,13 @@ instance (Adjustable t m, MonadJSM m, MonadHold t m, MonadFix m, PrimMonad m) =>
10031004 let updateChildUnreadiness (p :: PatchDMapWithMove k (Compose (TraverseChild t m (Some k)) v')) old = do
10041005 let new :: forall a. k a -> PatchDMapWithMove.NodeInfo k (Compose (TraverseChild t m (Some k)) v') a -> IO (PatchDMapWithMove.NodeInfo k (Constant (IORef (ChildReadyState (Some k)))) a)
10051006 new k = PatchDMapWithMove.nodeInfoMapFromM $ \case
1006− PatchDMapWithMove.From_Insert (Compose (TraverseChild (Right myTypeImmediate) _)) -> do
1007− readIORef (_traverseChildImmediate_childReadyState myTypeImmediate) >>= \case
1007+ PatchDMapWithMove.From_Insert (Compose (TraverseChild (Left _hydration) _)) -> return PatchDMapWithMove.From_Delete
1008+ PatchDMapWithMove.From_Insert (Compose (TraverseChild (Right immediate) _)) -> do
1009+ readIORef (_traverseChildImmediate_childReadyState immediate) >>= \case
10081010 ChildReadyState_Ready -> return PatchDMapWithMove.From_Delete
10091011 ChildReadyState_Unready _ -> do
1010− writeIORef (_traverseChildImmediate_childReadyState myTypeImmediate) $ ChildReadyState_Unready $ Just $ This k
1011− return $ PatchDMapWithMove.From_Insert $ Constant (_traverseChildImmediate_childReadyState myTypeImmediate)
1012+ writeIORef (_traverseChildImmediate_childReadyState immediate) $ ChildReadyState_Unready $ Just $ This k
1013+ return $ PatchDMapWithMove.From_Insert $ Constant (_traverseChildImmediate_childReadyState immediate)
10121014 PatchDMapWithMove.From_Delete -> return PatchDMapWithMove.From_Delete
10131015 PatchDMapWithMove.From_Move fromKey -> return $ PatchDMapWithMove.From_Move fromKey
10141016 deleteOrMove :: forall a. k a -> Product (Constant (IORef (ChildReadyState (Some k)))) (ComposeMaybe k) a -> IO (Constant () a)
@@ -1069,7 +1071,7 @@ traverseDMapWithKeyWithAdjust' = do
10691071 let new :: forall a. k a -> ComposeMaybe (Compose (TraverseChild t m (Some k)) v') a -> IO (ComposeMaybe (Constant (IORef (ChildReadyState (Some k)))) a)
10701072 new k (ComposeMaybe m) = ComposeMaybe <$> case m of
10711073 Nothing -> return Nothing
1072− Just (Compose (TraverseChild (Left hydration) _)) -> pure Nothing
1074+ Just (Compose (TraverseChild (Left _hydration) _)) -> pure Nothing
10731075 Just (Compose (TraverseChild (Right immediate) _)) -> do
10741076 readIORef (_traverseChildImmediate_childReadyState immediate) >>= \case
10751077 ChildReadyState_Ready -> return Nothing -- Delete this child, since it's ready
@@ -1143,8 +1145,9 @@ traverseIntMapWithKeyWithAdjust' = do
11431145 let filtered :: PatchIntMap DOM.Text
11441146 filtered = PatchIntMap $ flip IntMap.mapMaybe p $ \case
11451147 Nothing -> Just Nothing -- deletion
1146− Just tc | Left _ <- _traverseChild_mode tc -> Nothing
1147− Just tc | Right immediate <- _traverseChild_mode tc -> Just $ Just $ _traverseChildImmediate_placeholder immediate
1148+ Just tc
1149+ | Right immediate <- _traverseChild_mode tc -> Just $ Just $ _traverseChildImmediate_placeholder immediate
1150+ | otherwise -> Nothing
11481151 liftIO $ writeIORef placeholders $! fromMaybe phs $ apply filtered phs
11491152
11501153data ChildReadyState a