@@ -8,8 +8,6 @@
88{-# LANGUAGE TemplateHaskell #-}
99module Obelisk.Backend
1010 ( Backend (..)
11− , StaticAssets (..)
12− , serveDefaultObeliskApp'
1311 -- * Re-exports
1412 , Default (def)
1513 , getPageName
@@ -57,11 +55,8 @@ data GhcjsApp route = GhcjsApp
5755
5856-- | Serve a frontend, which must be the same frontend that Obelisk has built and placed in the default location
5957--TODO: The frontend should be provided together with the asset paths so that this isn't so easily breakable; that will probably make this function obsolete
60−serveDefaultObeliskApp :: MonadSnap m => Frontend (R appRoute) -> R (ObeliskRoute appRoute) -> m ()
61−serveDefaultObeliskApp = serveDefaultObeliskApp' defaultStaticAssets
62−
63−serveDefaultObeliskApp' :: MonadSnap m => StaticAssets -> Frontend (R appRoute) -> R (ObeliskRoute appRoute) -> m ()
64−serveDefaultObeliskApp' staticAssets frontend = serveObeliskApp staticAssets frontendApp
58+serveDefaultObeliskApp :: MonadSnap m => ([Text] -> m ()) -> Frontend (R appRoute) -> R (ObeliskRoute appRoute) -> m ()
59+serveDefaultObeliskApp serveStaticAsset frontend = serveObeliskApp serveStaticAsset frontendApp
6560 where frontendApp = GhcjsApp
6661 { _ghcjsApp_compiled = defaultFrontendGhcjsAssets
6762 , _ghcjsApp_value = frontend
@@ -112,11 +107,11 @@ getRouteWith e = do
112107 pageName <- getPageName
113108 return $ tryDecode e pageName
114109
115−serveObeliskApp :: MonadSnap m => StaticAssets -> GhcjsApp (R appRoute) -> R (ObeliskRoute appRoute) -> m ()
116−serveObeliskApp staticAssets frontendApp = \case
110+serveObeliskApp :: MonadSnap m => ([Text] -> m ()) -> GhcjsApp (R appRoute) -> R (ObeliskRoute appRoute) -> m ()
111+serveObeliskApp serveStaticAsset frontendApp = \case
117112 ObeliskRoute_App appRouteComponent :=> Identity appRouteRest -> serveGhcjsApp frontendApp $ GhcjsAppRoute_App appRouteComponent :/ appRouteRest
118113 ObeliskRoute_Resource resComponent :=> Identity resRest -> case resComponent :=> Identity resRest of
119− ResourceRoute_Static :=> Identity pathSegments -> serveStaticAssets staticAssets pathSegments
114+ ResourceRoute_Static :=> Identity pathSegments -> serveStaticAsset pathSegments
120115 ResourceRoute_Ghcjs :=> Identity pathSegments -> serveGhcjsApp frontendApp $ GhcjsAppRoute_Resource :/ pathSegments
121116 ResourceRoute_JSaddleWarp :=> Identity _ -> do
122117 let msg = "Error: Obelisk.Backend received jsaddle request"
@@ -151,7 +146,7 @@ runBackend backend frontend = case checkEncoder $ _backend_routeEncoder backend
151146 getRouteWith validFullEncoder >>= \case
152147 Identity r -> case r of
153148 InL backendRoute :=> Identity a -> serveRoute $ backendRoute :/ a
154− InR obeliskRoute :=> Identity a -> serveDefaultObeliskApp frontend $ obeliskRoute :/ a
149+ InR obeliskRoute :=> Identity a -> serveDefaultObeliskApp (serveStaticAssets defaultStaticAssets) frontend $ obeliskRoute :/ a
155150
156151renderGhcjsFrontend :: route -> Frontend route -> IO ByteString
157152renderGhcjsFrontend route f = do