@@ -15,6 +15,8 @@ import Data.ByteString (useAsCString, packCString)
15import qualified Data.ByteString as BS (ByteString)
15import qualified Data.ByteString as BS (ByteString)
16import Data.ByteString.Lazy (ByteString, toStrict, fromStrict)
16import Data.ByteString.Lazy (ByteString, toStrict, fromStrict)
17import Data.Aeson (encode, decode)
17import Data.Aeson (encode, decode)
18+import qualified Data.Text as T (pack)
19+import Data.Text.Encoding (encodeUtf8)
19import Foreign.C.String (CString)
21import Foreign.C.String (CString)
20import Foreign.Ptr (Ptr, nullPtr)
22import Foreign.Ptr (Ptr, nullPtr)
@@ -24,6 +26,8 @@ import Language.Javascript.JSaddle (Results, Batch, JSM)
24import Language.Javascript.JSaddle.Run (runJavaScript)
26import Language.Javascript.JSaddle.Run (runJavaScript)
25import Language.Javascript.JSaddle.Run.Files (initState, runBatch, ghcjsHelpers)
27import Language.Javascript.JSaddle.Run.Files (initState, runBatch, ghcjsHelpers)
29+import System.Directory (getCurrentDirectory)
27newtype WKWebView = WKWebView (Ptr WKWebView)
31newtype WKWebView = WKWebView (Ptr WKWebView)
28newtype JSaddleHandler = JSaddleHandler (Ptr JSaddleHandler)
32newtype JSaddleHandler = JSaddleHandler (Ptr JSaddleHandler)
@@ -42,9 +46,11 @@ foreign import ccall mainBundleResourcePathC :: IO CString
43-- | Run JSaddle in WKWebView
47-- | Run JSaddle in WKWebView
44jsaddleMain :: JSM () -> WKWebView -> IO ()
48jsaddleMain :: 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"
46 jsaddleMain' f webView $
52 jsaddleMain' f webView $
47− useAsCString (toStrict indexHtmlBaseURL) $ \url ->
53+ useAsCString baseURL $ \url ->
48 useAsCString (toStrict indexHtml) $ \html ->
54 useAsCString (toStrict indexHtml) $ \html ->
49 loadHTMLStringWithBaseURL webView html url
55 loadHTMLStringWithBaseURL webView html url
@@ -125,10 +131,6 @@ jsaddleJs = ghcjsHelpers <> "\
125 \})();\n\
131 \})();\n\
129−indexHtmlBaseURL :: ByteString
130−indexHtmlBaseURL = "file:///tmp/index.html"
132indexHtml :: ByteString
134indexHtml :: ByteString
133indexHtml =
135indexHtml =
134 "<!DOCTYPE html>\n\
136 "<!DOCTYPE html>\n\