@@ -1,4 +1,5 @@
11{-# LANGUAGE CPP #-}
2+{-# LANGUAGE LambdaCase #-}
23{-# LANGUAGE OverloadedStrings #-}
34{-# LANGUAGE RankNTypes #-}
45{-# LANGUAGE TypeFamilies #-}
@@ -32,7 +33,25 @@ run jsm = do
3233 putStrLn $ "Running jsaddle-warp server on port " <> show port
3334 JW.run port jsm
3435#elif defined(MIN_VERSION_jsaddle_wkwebview)
36+#if defined(ios_HOST_OS)
37+import Data.Default
38+import Language.Javascript.JSaddle (JSM)
39+import Language.Javascript.JSaddle.WKWebView (run', mainBundleResourcePath)
40+import Language.Javascript.JSaddle.WKWebView.Internal (jsaddleMainHTMLWithBaseURL)
41+
42+-- TODO: upstream to jsaddle-wkwebview
43+run :: JSM () -> IO ()
44+run jsm = do
45+ let indexHtml = "<!DOCTYPE html><html><head></head><body></body></html>"
46+ baseUrl <- mainBundleResourcePath >>= \case
47+ Nothing -> do
48+ putStrLn "Reflex.Dom.run: unable to find main bundle resource path. Assets may not load properly."
49+ return ""
50+ Just p -> return $ "file://" <> p <> "/index.html"
51+ run' def $ jsaddleMainHTMLWithBaseURL indexHtml baseUrl jsm
52+#else
3553import Language.Javascript.JSaddle.WKWebView (run)
54+#endif
3655#elif defined(ANDROID)
3756import Android.HaskellActivity
3857import Control.Monad