Commit 1ddc6d3d authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

[toestand] fix tasks, sessions loading

parent efb26a3d
module Gargantext.Components.App (app) where module Gargantext.Components.App (app) where
import Data.Maybe (Maybe(..)) import Data.Maybe (Maybe(..))
import Prelude
import Reactix as R import Reactix as R
import Toestand as T import Toestand as T
import Gargantext.Prelude
import Gargantext.AsyncTasks as GAT
import Gargantext.Components.App.Data (emptyApp) import Gargantext.Components.App.Data (emptyApp)
import Gargantext.Components.Router (router) import Gargantext.Components.Router (router)
import Gargantext.Hooks (useHashRouter) import Gargantext.Hooks (useHashRouter)
import Gargantext.Router as Router import Gargantext.Router as Router
import Gargantext.Sessions as Sessions
import Gargantext.Utils.Reactix as R2 import Gargantext.Utils.Reactix as R2
here :: R2.Here here :: R2.Here
...@@ -22,6 +25,11 @@ appCpt = here.component "app" cpt where ...@@ -22,6 +25,11 @@ appCpt = here.component "app" cpt where
cpt _ _ = do cpt _ _ = do
box <- T.useBox emptyApp -- global data box <- T.useBox emptyApp -- global data
boxes <- T.useFocusedFields box {} -- read-write access for children boxes <- T.useFocusedFields box {} -- read-write access for children
tasks <- T.useBox Nothing -- storage for asynchronous tasks tasks <- T.useBox Nothing -- storage for asynchronous tasks reductor
R.useEffect' $ do
void $ Sessions.load boxes.sessions
tasksReductor <- GAT.useTasks boxes.reloadRoot boxes.reloadForest
R.useEffect' $ do
T.write (Just tasksReductor) tasks
useHashRouter Router.router boxes.route -- Install router to window useHashRouter Router.router boxes.route -- Install router to window
pure $ router { boxes, tasks } -- Render router component pure $ router { boxes, tasks } -- Render router component
...@@ -3,6 +3,7 @@ module Gargantext.Components.Router (router) where ...@@ -3,6 +3,7 @@ module Gargantext.Components.Router (router) where
import Data.Array (fromFoldable) import Data.Array (fromFoldable)
import Data.Maybe (Maybe(..)) import Data.Maybe (Maybe(..))
import Reactix as R import Reactix as R
import Reactix.DOM.HTML as H
import Record as Record import Record as Record
import Record.Extra as RE import Record.Extra as RE
import Toestand as T import Toestand as T
...@@ -43,7 +44,7 @@ here = R2.here "Gargantext.Components.Router" ...@@ -43,7 +44,7 @@ here = R2.here "Gargantext.Components.Router"
type Props = ( boxes :: Boxes, tasks :: T.Box (Maybe GAT.Reductor) ) type Props = ( boxes :: Boxes, tasks :: T.Box (Maybe GAT.Reductor) )
type SessionProps = ( session :: R.Context Session, sessionId :: SessionId | Props ) type SessionProps = ( session :: R.Context Session, sessionId :: SessionId | Props )
type SessionNodeProps = ( nodeId :: NodeID | SessionProps ) type SessionNodeProps = ( nodeId :: NodeID | SessionProps )
type Props' = ( route' :: AppRoute, backend :: Backend | Props ) type Props' = ( route' :: AppRoute, backend :: Backend | Props )
...@@ -59,29 +60,31 @@ routerCpt = here.component "router" cpt where ...@@ -59,29 +60,31 @@ routerCpt = here.component "router" cpt where
let sessionNodeProps sId nId = Record.merge { nodeId: nId } $ sessionProps sId let sessionNodeProps sId nId = Record.merge { nodeId: nId } $ sessionProps sId
showLogin <- T.useLive T.unequal boxes.showLogin showLogin <- T.useLive T.unequal boxes.showLogin
route' <- T.useLive T.unequal boxes.route route' <- T.useLive T.unequal boxes.route
pure $ if showLogin then login' boxes pure $ R.fragment
else case route' of [ if showLogin then login' boxes else H.div {} []
GR.Annuaire s n -> annuaire (sessionNodeProps s n) [] , case route' of
GR.ContactPage s a n -> contact (Record.merge { annuaireId: a } $ sessionNodeProps s n) [] GR.Annuaire s n -> annuaire (sessionNodeProps s n) []
GR.Corpus s n -> corpus (sessionNodeProps s n) [] GR.ContactPage s a n -> contact (Record.merge { annuaireId: a } $ sessionNodeProps s n) []
GR.CorpusDocument s c l n -> corpusDocument (Record.merge { corpusId: c, listId: l } $ sessionNodeProps s n) [] GR.Corpus s n -> corpus (sessionNodeProps s n) []
GR.Dashboard s n -> dashboard (sessionNodeProps s n) [] GR.CorpusDocument s c l n -> corpusDocument (Record.merge { corpusId: c, listId: l } $ sessionNodeProps s n) []
GR.Document s l n -> document (Record.merge { listId: l } $ sessionNodeProps s n) [] GR.Dashboard s n -> dashboard (sessionNodeProps s n) []
GR.Folder s n -> corpus (sessionNodeProps s n) [] GR.Document s l n -> document (Record.merge { listId: l } $ sessionNodeProps s n) []
GR.FolderPrivate s n -> corpus (sessionNodeProps s n) [] GR.Folder s n -> corpus (sessionNodeProps s n) []
GR.FolderPublic s n -> corpus (sessionNodeProps s n) [] GR.FolderPrivate s n -> corpus (sessionNodeProps s n) []
GR.FolderShared s n -> corpus (sessionNodeProps s n) [] GR.FolderPublic s n -> corpus (sessionNodeProps s n) []
GR.Home -> home props [] GR.FolderShared s n -> corpus (sessionNodeProps s n) []
GR.Lists s n -> lists (sessionNodeProps s n) [] GR.Home -> home props []
GR.Login -> login' boxes GR.Lists s n -> lists (sessionNodeProps s n) []
GR.PGraphExplorer s g -> graphExplorer (sessionNodeProps s g) [] GR.Login -> login' boxes
GR.RouteFile s n -> routeFile (sessionNodeProps s n) [] GR.PGraphExplorer s g -> graphExplorer (sessionNodeProps s g) []
GR.RouteFrameCalc s n -> routeFrame (Record.merge { nodeType: NodeFrameCalc } $ sessionNodeProps s n) [] GR.RouteFile s n -> routeFile (sessionNodeProps s n) []
GR.RouteFrameCode s n -> routeFrame (Record.merge { nodeType: NodeFrameNotebook } $ sessionNodeProps s n) [] GR.RouteFrameCalc s n -> routeFrame (Record.merge { nodeType: NodeFrameCalc } $ sessionNodeProps s n) []
GR.RouteFrameWrite s n -> routeFrame (Record.merge { nodeType: NodeFrameWrite } $ sessionNodeProps s n) [] GR.RouteFrameCode s n -> routeFrame (Record.merge { nodeType: NodeFrameNotebook } $ sessionNodeProps s n) []
GR.Team s n -> team (sessionNodeProps s n) [] GR.RouteFrameWrite s n -> routeFrame (Record.merge { nodeType: NodeFrameWrite } $ sessionNodeProps s n) []
GR.Texts s n -> texts (sessionNodeProps s n) [] GR.Team s n -> team (sessionNodeProps s n) []
GR.UserPage s n -> user (sessionNodeProps s n) [] GR.Texts s n -> texts (sessionNodeProps s n) []
GR.UserPage s n -> user (sessionNodeProps s n) []
]
forested :: R2.Component Props forested :: R2.Component Props
forested = R.createElement forestedCpt forested = R.createElement forestedCpt
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment