@@ -15,6 +15,8 @@ import Data.ByteString (useAsCString, packCString)
1515import qualified Data.ByteString as BS (ByteString)
1616import Data.ByteString.Lazy (ByteString, toStrict, fromStrict)
1717import Data.Aeson (encode, decode)
18+import qualified Data.Text as T (pack)
19+import Data.Text.Encoding (encodeUtf8)
1820
1921import Foreign.C.String (CString)
2022import Foreign.Ptr (Ptr, nullPtr)
@@ -24,6 +26,8 @@ import Language.Javascript.JSaddle (Results, Batch, JSM)
2426import Language.Javascript.JSaddle.Run (runJavaScript)
2527import Language.Javascript.JSaddle.Run.Files (initState, runBatch, ghcjsHelpers)
2628
29+import System.Directory (getCurrentDirectory)
30+
2731newtype WKWebView = WKWebView (Ptr WKWebView)
2832newtype JSaddleHandler = JSaddleHandler (Ptr JSaddleHandler)
2933
@@ -42,9 +46,11 @@ foreign import ccall mainBundleResourcePathC :: IO CString
4246
4347-- | Run JSaddle in WKWebView
4448jsaddleMain :: JSM () -> WKWebView -> IO ()
45−jsaddleMain f webView =
49+jsaddleMain f webView = do
50+ pwd <- getCurrentDirectory
51+ let baseURL = encodeUtf8 $ "file://" <> T.pack pwd <> "/index.html"
4652 jsaddleMain' f webView $
47− useAsCString (toStrict indexHtmlBaseURL) $ \url ->
53+ useAsCString baseURL $ \url ->
4854 useAsCString (toStrict indexHtml) $ \html ->
4955 loadHTMLStringWithBaseURL webView html url
5056
@@ -125,10 +131,6 @@ jsaddleJs = ghcjsHelpers <> "\
125131 \})();\n\
126132 \"
127133
128−
129−indexHtmlBaseURL :: ByteString
130−indexHtmlBaseURL = "file:///tmp/index.html"
131−
132134indexHtml :: ByteString
133135indexHtml =
134136 "<!DOCTYPE html>\n\