@@ -12,6 +12,7 @@ import Control.Coroutine as Coroutine
1212import Data.Maybe (Maybe (..))
1313import Data.Newtype (wrap )
1414import Effect (Effect )
15+ import Effect.Aff (launchAff_ )
1516import Halogen as H
1617import Halogen.Aff as HA
1718import Halogen.VDom.Driver (runUI )
@@ -21,10 +22,12 @@ import Web.DOM.Element as Element
2122import Web.DOM.Node as Node
2223import Web.DOM.ParentNode as ParentNode
2324import Web.DOM.Text as Text
25+ import Web.Event.EventTarget (addEventListener , eventListener )
2426import Web.HTML as HTML
2527import Web.HTML.HTMLDocument as HTMLDocument
2628import Web.HTML.HTMLElement (fromElement )
2729import Web.HTML.Window as Window
30+ import Web.HTML.Event.HashChangeEvent.EventTypes (hashchange )
2831
2932main :: Effect Unit
3033main = do
@@ -57,7 +60,18 @@ main = do
5760
5861 -- We need to read the URI hash only when both components are initialized and
5962 -- the search field is subscribed to the main component.
60- sfio.query (SearchField.ReadURIHash unit)
63+ void $ sfio.query $ H .tell SearchField.ReadURIHash
64+
65+ -- Subscribe to URI hash updates
66+ H .liftEffect do
67+
68+ listener <-
69+ eventListener \event ->
70+ launchAff_ do
71+ sfio.query $ H .tell SearchField.ReadURIHash
72+
73+ addEventListener hashchange listener true (Window .toEventTarget win)
74+
6175
6276insertStyle :: Document.Document -> Effect Unit
6377insertStyle doc = do
0 commit comments