diff --git a/obelisk/frontend/src/Pages/MagicFolders.hs b/obelisk/frontend/src/Pages/MagicFolders.hs index 1237f278efc5624d77f43a33c53664d3f5b8bf3a..a9a5fc7a2affe2e639b186d1a1961081d8f76035 100644 --- a/obelisk/frontend/src/Pages/MagicFolders.hs +++ b/obelisk/frontend/src/Pages/MagicFolders.hs @@ -76,39 +76,40 @@ magicFolders , SetRoute t (R FrontendRoute) m ) => Dynamic t (Either T.Text [MagicFolder]) -> (Either T.Text [MagicFolder] -> IO ()) -> m () magicFolders foldersDyn updateFolders = do - -- r <- askRoute -- TODO what is this for? - elAttr "header" ("class" =: "mdc-top-app-bar mdc-top-app-bar--fixed" <> "data-mdc-auto-init" =: "MDCTopAppBar") $ - divClass "mdc-top-app-bar__row" $ do - elClass "section" "mdc-top-app-bar__section mdc-top-app-bar__section--align-start" $ do - elAttr "button" ("class" =: "material-icons mdc-top-app-bar__navigation-icon mdc-icon-button ps-logo-button") $ - elAttr "img" ("src" =: logo) blank - elClass "span" "mdc-top-app-bar__title" $ - text "PrivateStorage" - - elAttr "section" ("class" =: "mdc-top-app-bar__section mdc-top-app-bar__section--align-end" <> "role" =: "toolbar") blank - - (add, _) <- elClass' "main" "magic-folder-page mdc-top-app-bar--fixed-adjust" $ do - - elAttr "ul" ("class" =: "mdc-list mdc-list--two-line inline-demo-list" <> "data-mdc-auto-init" =: "MDCList") $ - dyn_ $ either text (mapM_ folderWidget) <$> foldersDyn - - elAttr "button" ("class" =: "mdc-fab" <> "aria-label" =: "Add" <> "data-mdc-auto-init" =: "MDCRipple") $ do - divClass "mdc-fab__ripple" blank - elClass "span" "mdc-fab__icon material-icons" $ - text "add" - - -- Start out in the UI state where we're not waiting for any - -- folder invite information. We progress through the other - -- states in a circular fashion (EnteringCode, - -- ReceivingInvite, InviteFinished then back to NotAccepting) - - -- transitions: - -- click add -> EnteringCode - -- form submitted -> ReceivingInvite - -- (IO happened: folder-list updated, or...) -> InviteFinished - -- dismiss clicked -> NotAccepting - rec + elAttr "header" ("class" =: "mdc-top-app-bar mdc-top-app-bar--fixed" <> "data-mdc-auto-init" =: "MDCTopAppBar") $ + divClass "mdc-top-app-bar__row" $ do + elClass "section" "mdc-top-app-bar__section mdc-top-app-bar__section--align-start" $ do + elAttr "button" ("class" =: "material-icons mdc-top-app-bar__navigation-icon mdc-icon-button ps-logo-button") $ + elAttr "img" ("src" =: logo) blank + elClass "span" "mdc-top-app-bar__title" $ + text "PrivateStorage" + + elAttr "section" ("class" =: "mdc-top-app-bar__section mdc-top-app-bar__section--align-end" <> "role" =: "toolbar") blank + + + (add, _) <- elClass' "main" "magic-folder-page mdc-top-app-bar--fixed-adjust" $ do + indeterminateLinearProgress acceptInviteState + + elAttr "ul" ("class" =: "mdc-list mdc-list--two-line inline-demo-list" <> "data-mdc-auto-init" =: "MDCList") $ + dyn_ $ either text (mapM_ folderWidget) <$> foldersDyn + + elAttr "button" ("class" =: "mdc-fab" <> "aria-label" =: "Add" <> "data-mdc-auto-init" =: "MDCRipple") $ do + divClass "mdc-fab__ripple" blank + elClass "span" "mdc-fab__icon material-icons" $ + text "add" + + -- Start out in the UI state where we're not waiting for any + -- folder invite information. We progress through the other + -- states in a circular fashion (EnteringCode, + -- ReceivingInvite, InviteFinished then back to NotAccepting) + + -- transitions: + -- click add -> EnteringCode + -- form submitted -> ReceivingInvite + -- (IO happened: folder-list updated, or...) -> InviteFinished + -- dismiss clicked -> NotAccepting + submitEitherInviteCode <- receiveFolderInviteText acceptInviteState let cancelInvite :: Event t () @@ -127,8 +128,6 @@ magicFolders foldersDyn updateFolders = do acceptInviteState <- foldDyn const NotAccepting (leftmost inviteEvents) - indeterminateLinearProgress acceptInviteState - el "script" $ do text "mdc.autoInit();"