diff --git a/src/App/Container.purs b/src/App/Container.purs index e4f21c3..5426647 100644 --- a/src/App/Container.purs +++ b/src/App/Container.purs @@ -59,16 +59,12 @@ initialState _ = { token: Nothing render :: forall m. MonadAff m => State -> H.ComponentHTML Action ChildSlots m render state = HH.div_ $ - [ Bulma.columns_ [ Bulma.column_ [ render_logs ], Bulma.column_ [ render_auth_WS, render_dnsmanager_WS ] ] - , render_auth_form - , render_authd_admin_interface + [ render_auth_form , render_newdomain_interface - , div_token + , render_authd_admin_interface + , Bulma.columns_ [ Bulma.column_ [ render_logs ], Bulma.column_ [ render_auth_WS, render_dnsmanager_WS ] ] ] where - div_token :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad - div_token = Bulma.box [ Bulma.p ("User [" <> show state.uid <> "] has token: " <> show state.token) ] - render_logs :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad render_logs = Bulma.box [ HH.slot_ _log unit Log.component unit ] @@ -77,29 +73,32 @@ render state render_dnsmanager_WS :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad render_dnsmanager_WS = case state.token of - Nothing -> Bulma.p "We don't have a token right now." + Nothing -> render_nothing Just _ -> HH.slot _ws_dns unit WS.component "ws://127.0.0.1:8081" DNSManagerDEvent render_auth_form :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad render_auth_form = case state.token of Nothing -> Bulma.box [ HH.slot _af unit AF.component unit OutputAuthComponent ] - Just current_token -> Bulma.p ("Token is: " <> current_token) + Just _ -> render_nothing render_authd_admin_interface :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad - render_authd_admin_interface = Bulma.box $ case state.token of - Just _ -> + render_authd_admin_interface = case state.token of + Just _ -> Bulma.box $ [ Bulma.h1 "Administrative interface for authd" , HH.slot _aai unit AAI.component unit OutputAuthAdminComponent ] - Nothing -> [ Bulma.p "Here will be the administrative box." ] + Nothing -> render_nothing render_newdomain_interface :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad - render_newdomain_interface = Bulma.box $ case state.token of - Just token -> + render_newdomain_interface = case state.token of + Just token -> Bulma.box $ [ Bulma.h1 "New domain interface!" , HH.slot _ndi unit NewDomainInterface.component token NewDomainComponent ] - Nothing -> [ Bulma.p "Here will be the new domain box." ] + Nothing -> render_nothing + + render_nothing :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad + render_nothing = HH.div_ [] handleAction :: forall o monad. MonadAff monad => Action -> H.HalogenM State Action ChildSlots o monad Unit handleAction = case _ of @@ -124,8 +123,11 @@ handleAction = case _ of -- TODO: depending on the current page, we should provide the received message to different components. AuthDEvent ev -> case ev of - WS.MessageReceived (Tuple _ message) -> - H.tell _af unit (AF.MessageReceived message) + WS.MessageReceived (Tuple _ message) -> do + { token } <- H.get + case token of + Nothing -> H.tell _af unit (AF.MessageReceived message) + Just _ -> H.tell _aai unit (AAI.MessageReceived message) WS.WSJustConnected -> do H.tell _af unit AF.ConnectionIsUp H.tell _aai unit AAI.ConnectionIsUp