Created
August 24, 2019 23:47
-
-
Save rizary/534f76bab1a8f32e7c754f951d7975f9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| routeLink True r w = do | |
| let cfg = (def :: ElementConfig EventResult t (DomBuilderSpace m)) | |
| & elementConfig_eventSpec %~ addEventSpecFlags (Proxy :: Proxy (DomBuilderSpace m)) Click (\_ -> preventDefault) | |
| & elementConfig_initialAttributes .~ "href" =: r | |
| (e, a) <- element "a" cfg w | |
| setRoute $ (switchPkgRoute (Just $ decodeFrag r)) <$ domEvent Click e | |
| return a | |
| routeLink False r w = do | |
| let cfg = (def :: ElementConfig EventResult t (DomBuilderSpace m)) | |
| & elementConfig_initialAttributes .~ "href" =: r | |
| (e, a) <- element "a" cfg w | |
| setRoute $ (switchPkgRoute (Just $ decodeFrag r)) <$ domEvent Click e | |
| return a | |
| routePkgIdxTs :: forall t m. (PerformEvent t m, TriggerEvent t m, MonadJSM m, MonadJSM (Performable m), PostBuild t m, MonadHold t m, MonadFix m, DomBuilder t m, SetRoute t FragRoute m) | |
| => PkgN | |
| -> Dynamic t (Set PkgIdxTs) | |
| -> Dynamic t PkgIdxTs | |
| -> m () | |
| routePkgIdxTs pn setIdx ddIdx = do | |
| let evDD = updated $ ffor2 setIdx ddIdx (\sId dVal -> createRoutePackage pn sId dVal) | |
| window <- DOM.currentWindowUnchecked | |
| location <- Window.getLocation window | |
| uri <- getLocationUri location | |
| let | |
| res = (\x -> HistoryStateUpdate | |
| { _historyStateUpdate_state = SerializedScriptValue jsNull | |
| , _historyStateUpdate_title = "" | |
| , _historyStateUpdate_uri = fromRoutePackage x uri | |
| }) <$> evDD | |
| _ <- manageHistory $ HistoryCommand_PushState <$> res | |
| setRoute $ switchPkgRoute <$> evDD | |
| pure () |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment