@@ -3,6 +3,7 @@ module Language.Javascript.JSaddle.WKWebView.Internal
3 ( jsaddleMain
3 ( jsaddleMain
4 , jsaddleMainFile
4 , jsaddleMainFile
5 , WKWebView(..)
5 , WKWebView(..)
6+ , mainBundleResourcePath
8import Control.Monad (void, join)
9import Control.Monad (void, join)
@@ -15,7 +16,7 @@ import Data.ByteString.Lazy (ByteString, toStrict, fromStrict)
15import Data.Aeson (encode, decode)
16import Data.Aeson (encode, decode)
17import Foreign.C.String (CString)
18import Foreign.C.String (CString)
18−import Foreign.Ptr (Ptr)
19+import Foreign.Ptr (Ptr, nullPtr)
19import Foreign.StablePtr (StablePtr, newStablePtr, deRefStablePtr)
20import Foreign.StablePtr (StablePtr, newStablePtr, deRefStablePtr)
21import Language.Javascript.JSaddle (Results, JSM)
22import Language.Javascript.JSaddle (Results, JSM)
@@ -31,6 +32,7 @@ foreign import ccall addJSaddleHandler :: WKWebView -> StablePtr (IO ()) -> Stab
31foreign import ccall loadHTMLString :: WKWebView -> CString -> IO ()
32foreign import ccall loadHTMLString :: WKWebView -> CString -> IO ()
32foreign import ccall loadBundleFile :: WKWebView -> CString -> CString -> IO ()
33foreign import ccall loadBundleFile :: WKWebView -> CString -> CString -> IO ()
33foreign import ccall evaluateJavaScript :: WKWebView -> CString -> IO ()
34foreign import ccall evaluateJavaScript :: WKWebView -> CString -> IO ()
35+foreign import ccall mainBundleResourcePathC :: IO CString
35-- | Run JSaddle in WKWebView
37-- | Run JSaddle in WKWebView
36jsaddleMain :: JSM () -> WKWebView -> IO ()
38jsaddleMain :: JSM () -> WKWebView -> IO ()
@@ -99,3 +101,10 @@ indexHtml =
99 \<body>\n\
101 \<body>\n\
100 \</body>\n\
102 \</body>\n\
101 \</html>"
103 \</html>"
105+mainBundleResourcePath :: IO (Maybe BS.ByteString)
106+mainBundleResourcePath = do
107+ bs <- mainBundleResourcePathC
110+ else Just <$> packCString bs