on master help sign in
Prerender changes

- HasJS added - Updated route instances of Prerender to use upstream simplification

commitea593a9b9ac047e557476d99d4863cf39588f4ae authorTom Smalley <tfsmalley@gmail.com> dateThu 31 Jan 2019, 09:35 (8 years ago) parent242048f
3 files changed+18−21
dep/reflex-platform/github.json+2−2 lib/frontend/src/Obelisk/Frontend.hs+4−4 lib/route/src/Obelisk/Route/Frontend.hs+12−15
dep/reflex-platform/github.json+2−2
@@ -2,6 +2,6 @@
22 "owner": "reflex-frp",
33 "repo": "reflex-platform",
44 "branch": "ts-hydration",
5− "rev": "02a516ac547526fd7cd13cca8ce4b48581d3405c",
6− "sha256": "10fnky14w359whcwg991g9w0q0dyyqpkk4g1422pkwssc2x8digx"
5+ "rev": "8ebec7aec005c8a21012be8527187a424175975e",
6+ "sha256": "1xyvm9kmzpahc1a06ycdlmmxr1l44k5gpampd6n4naa3kmgj06zf"
77}
lib/frontend/src/Obelisk/Frontend.hs+4−4
@@ -50,7 +50,7 @@ import qualified Reflex.TriggerEvent.Base as TriggerEvent
5050
5151makePrisms ''Sum
5252
53−type ObeliskWidget t route m =
53+type ObeliskWidget js t route m =
5454 ( DomBuilder t m
5555 , MonadFix m
5656 , MonadHold t m
@@ -66,7 +66,7 @@ type ObeliskWidget t route m =
6666 , Ref (Performable m) ~ Ref IO
6767 , MonadFix (Performable m)
6868 , PrimMonad m
69− , Prerender t m
69+ , Prerender js t m
7070 , SetRoute t route m
7171 , SetRoute t route (Client m)
7272 , RouteToUrl route m
@@ -75,8 +75,8 @@ type ObeliskWidget t route m =
7575 )
7676
7777data Frontend route = Frontend
78− { _frontend_head :: !(forall t m. ObeliskWidget t route m => RoutedT t route m ())
79− , _frontend_body :: !(forall t m. ObeliskWidget t route m => RoutedT t route m ())
78+ { _frontend_head :: !(forall js t m. ObeliskWidget js t route m => RoutedT t route m ())
79+ , _frontend_body :: !(forall js t m. ObeliskWidget js t route m => RoutedT t route m ())
8080 }
8181
8282runFrontend :: forall backendRoute route. Encoder Identity Identity (R (Sum backendRoute (ObeliskRoute route))) PageName -> Frontend (R route) -> JSM ()
lib/route/src/Obelisk/Route/Frontend.hs+12−15
@@ -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