Background.purs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. module ExampleWebExt.Background where
  2. import Prelude
  3. import Browser.WebExt.BrowserAction (onClickedAddListener)
  4. import Browser.WebExt.Listener (mkListener)
  5. import Browser.WebExt.Runtime (onMessageAddListener)
  6. import Browser.WebExt.Tabs (Tab)
  7. import Effect (Effect)
  8. import Effect.Class (class MonadEffect)
  9. import Effect.Class.Console (log, logShow)
  10. import ExampleWebExt.NativeMessage (NativeMessage(..), connectToNativeApplication, onNativeMessageAddListener, sendMessageToNative)
  11. import ExampleWebExt.RuntimeMessage (RuntimeMessage(..), mkRuntimeMessageHandler, sendMessageToContent)
  12. main :: Effect Unit
  13. main = do
  14. log "[bg] starting up"
  15. port <- connectToNativeApplication "job_search_writer"
  16. onNativeMessageAddListener port nativeMessageHandler
  17. sendMessageToNative port $ NativeMessageBackground "hello"
  18. onClickedAddListener $ mkListener browserActionOnClickedHandler
  19. onMessageAddListener $ mkRuntimeMessageHandler contentScriptMessageHandler
  20. browserActionOnClickedHandler :: Tab -> Effect Unit
  21. browserActionOnClickedHandler tab = do
  22. logShow tab
  23. _ <- sendMessageToContent tab.id RuntimeMessageRequestPageContent
  24. pure unit
  25. contentScriptMessageHandler ∷ ∀ m. MonadEffect m => RuntimeMessage → m Unit
  26. contentScriptMessageHandler m = logShow m
  27. nativeMessageHandler ∷ ∀ m. MonadEffect m ⇒ NativeMessage → m Unit
  28. nativeMessageHandler m = logShow m