@@ -63,7 +63,6 @@ import Control.Monad.Trans
6363import Control.Monad.Trans.Control
6464import Control.Monad.Trans.Reader
6565import Data.Coerce
66−import Data.Constraint (Dict (..))
6766import Data.Dependent.Sum (DSum (..))
6867import Data.GADT.Compare
6968import Data.Monoid
@@ -109,11 +108,11 @@ instance HasJSContext m => HasJSContext (RoutedT t r m) where
109108 type JSContextPhantom (RoutedT t r m) = JSContextPhantom m
110109 askJSContext = lift askJSContext
111110
112−instance (Prerender t m, Monad m) => Prerender t (RoutedT t r m) where
111+instance (Prerender js t m, Monad m) => Prerender js t (RoutedT t r m) where
113112 type Client (RoutedT t r m) = RoutedT t r (Client m)
114− prerenderImpl (RoutedT server) client = RoutedT $ do
113+ prerender server client = RoutedT $ do
115114 r <- ask
116− prerenderImpl server (runRoutedT client r)
115+ lift $ prerender (runRoutedT server r) (runRoutedT client r)
117116
118117instance Requester t m => Requester t (RoutedT t r m) where
119118 type Request (RoutedT t r m) = Request m
@@ -265,16 +264,14 @@ instance (Reflex t, Monad m) => SetRoute t r (SetRouteT t r m) where
265264instance (Monad m, SetRoute t r m) => SetRoute t r (RoutedT t r' m) where
266265 modifyRoute = lift . modifyRoute
267266
268−instance (PerformEvent t m, MonadIO (Performable m), Prerender t m, Monad m, Reflex t, MonadIO m) => Prerender t (SetRouteT t r m) where
267+instance (PerformEvent t m, Prerender js t m, Monad m, Reflex t) => Prerender js t (SetRouteT t r m) where
269268 type Client (SetRouteT t r m) = SetRouteT t r (Client m)
270− prerenderImpl server client = do
271− liftIO $ putStrLn "SetRouteT prerenderImpl"
272− (ma, dt) :: (Maybe a, Dynamic t (b, Event t (Endo r))) <- lift $ prerenderImpl
273− (do ((a, b), e) <- runSetRouteT server; pure (a, (b, e)))
274− (runSetRouteT client)
269+ prerender server client = do
270+ d <- lift $ prerender (runSetRouteT server) (runSetRouteT client)
271+ let (a, r) = splitDynPure d
275272 -- Must be prompt here
276− SetRouteT $ tellEvent $ switchPromptlyDyn $ Prelude.snd <$> dt
277− pure (ma, Prelude.fst <$> dt)
273+ SetRouteT . tellEvent $ switchPromptlyDyn r
274+ pure a
278275
279276instance Requester t m => Requester t (SetRouteT t r m) where
280277 type Request (SetRouteT t r m) = Request m
@@ -344,11 +341,11 @@ instance HasJSContext m => HasJSContext (RouteToUrlT r m) where
344341 type JSContextPhantom (RouteToUrlT r m) = JSContextPhantom m
345342 askJSContext = lift askJSContext
346343
347−instance (Prerender t m, Monad m) => Prerender t (RouteToUrlT r m) where
344+instance (Prerender js t m, Monad m) => Prerender js t (RouteToUrlT r m) where
348345 type Client (RouteToUrlT r m) = RouteToUrlT r (Client m)
349− prerenderImpl (RouteToUrlT server) client = do
346+ prerender server client = do
350347 r <- RouteToUrlT ask
351− RouteToUrlT $ prerenderImpl server (runRouteToUrlT client r)
348+ lift $ prerender (runRouteToUrlT server r) (runRouteToUrlT client r)
352349
353350instance Requester t m => Requester t (RouteToUrlT r m) where
354351 type Request (RouteToUrlT r m) = Request m