Skip to content

Commit d5f2914

Browse files
committed
Sync settings with URL
1 parent 0dfc21d commit d5f2914

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

client/src/Try/Container.purs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ import Data.String as String
1313
import Data.String (Pattern(..))
1414
import Data.String.Regex as Regex
1515
import Data.String.Regex.Flags as RegexFlags
16+
import Data.Tuple (Tuple(..))
1617
import Effect (Effect)
1718
import Effect.Aff (Aff, Milliseconds(..), delay, makeAff)
1819
import Effect.Aff as Aff
1920
import Effect.Class.Console (error)
2021
import Effect.Uncurried (EffectFn3, runEffectFn3)
2122
import Partial.Unsafe (unsafeCrashWith)
23+
import Foreign.Object as Object
2224
import Halogen as H
2325
import Halogen.HTML as HH
2426
import Halogen.HTML.Events as HE
@@ -30,7 +32,7 @@ import Try.Editor (MarkerType(..), toStringMarkerType)
3032
import Try.Editor as Editor
3133
import Try.Gist (getGistById, tryLoadFileFromGist)
3234
import Try.GitHub (getRawGitHubFile)
33-
import Try.QueryString (compressToEncodedURIComponent, decompressFromEncodedURIComponent, getQueryStringMaybe, setQueryString)
35+
import Try.QueryString (compressToEncodedURIComponent, decompressFromEncodedURIComponent, getQueryStringMaybe, setQueryString, setQueryStrings)
3436
import Try.SharedConfig as SharedConfig
3537
import Type.Proxy (Proxy(..))
3638
import Web.HTML (window)
@@ -74,6 +76,12 @@ parseViewModeParam = case _ of
7476
"output" -> Just Output
7577
_ -> Nothing
7678

79+
encodeViewModeParam :: ViewMode -> String
80+
encodeViewModeParam = case _ of
81+
SideBySide -> "sidebyside"
82+
Code -> "code"
83+
Output -> "output"
84+
7785
data Action
7886
= Initialize
7987
| EncodeInURL String
@@ -134,6 +142,12 @@ component = H.mkComponent
134142
UpdateSettings k -> do
135143
old <- H.get
136144
new <- H.modify \state -> state { settings = k state.settings }
145+
H.liftEffect do
146+
setQueryStrings $ Object.fromFoldable
147+
[ Tuple "view" (encodeViewModeParam new.settings.viewMode)
148+
, Tuple "js" (show new.settings.showJs)
149+
, Tuple "compile" (show new.settings.autoCompile)
150+
]
137151
when (old.settings.showJs /= new.settings.showJs) do
138152
if new.settings.showJs then
139153
H.liftEffect teardownIFrame

0 commit comments

Comments
 (0)