aboutsummaryrefslogtreecommitdiff
path: root/src/client/Main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/Main.hs')
-rw-r--r--src/client/Main.hs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/client/Main.hs b/src/client/Main.hs
new file mode 100644
index 0000000..c5f2c50
--- /dev/null
+++ b/src/client/Main.hs
@@ -0,0 +1,41 @@
+module Main
+ ( main
+ ) where
+
+import qualified Data.Aeson as Aeson
+import qualified Data.ByteString.Lazy as LB
+import Data.JSString.Text (textFromJSString)
+import qualified Data.Text.Encoding as T
+import qualified GHCJS.DOM as Dom
+import qualified GHCJS.DOM.NonElementParentNode as Dom
+import GHCJS.DOM.Types (JSM, Element, JSString)
+import Prelude hiding (init, error)
+
+import Common.Model (InitResult(InitEmpty))
+import qualified Common.Message as Message
+import qualified Common.Message.Key as Key
+
+import qualified View.App as App
+
+main :: JSM ()
+main = do
+ initResult <- readInit
+ putStrLn . show $ initResult
+ App.widget initResult
+
+readInit :: JSM InitResult
+readInit = do
+ document <- Dom.currentDocumentUnchecked
+ initNode <- Dom.getElementById document "init"
+ case initNode of
+ Just node -> do
+ text <- textFromJSString <$> js_getInnerText node
+ return $ case Aeson.decode (LB.fromStrict . T.encodeUtf8 $ text) of
+ Just init -> init
+ Nothing -> initParseError
+ _ ->
+ return initParseError
+ where initParseError = InitEmpty (Left $ Message.get Key.SignIn_ParseError)
+
+foreign import javascript unsafe "$1[\"innerText\"]"
+ js_getInnerText :: Element -> IO JSString