Background.purs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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.Aff (launchAff_)
  9. import Effect.Class (class MonadEffect)
  10. import Effect.Class.Console (log, logShow)
  11. import ExampleWebExt.NativeMessage (NativeMessage(..), connectToNativeApplication, onNativeMessageAddListener, sendMessageToNative)
  12. import ExampleWebExt.RuntimeMessage (RuntimeMessage(..), mkRuntimeMessageHandler, sendMessageToContent)
  13. import ExampleWebExt.Storage (getJobsPath, setJobsPath)
  14. main :: Effect Unit
  15. main = do
  16. log "[bg] starting up"
  17. port <- connectToNativeApplication "job_search_writer"
  18. onNativeMessageAddListener port nativeMessageHandler
  19. sendMessageToNative port $ NativeMessageBackground "hello"
  20. setJobsPath "/path/to/jobs"
  21. launchAff_ do
  22. path <- getJobsPath
  23. log $ "Read value of jobsPath : " <> show path
  24. onClickedAddListener $ mkListener browserActionOnClickedHandler
  25. onMessageAddListener $ mkRuntimeMessageHandler contentScriptMessageHandler
  26. browserActionOnClickedHandler :: Tab -> Effect Unit
  27. browserActionOnClickedHandler tab = do
  28. logShow tab
  29. _ <- sendMessageToContent tab.id RuntimeMessageRequestPageContent
  30. pure unit
  31. contentScriptMessageHandler ∷ ∀ m. MonadEffect m => RuntimeMessage → m Unit
  32. contentScriptMessageHandler m = logShow m
  33. nativeMessageHandler ∷ ∀ m. MonadEffect m ⇒ NativeMessage → m Unit
  34. nativeMessageHandler m = logShow m