| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- module ExampleWebExt.Background where
- import Prelude
- import Browser.WebExt.BrowserAction (onClickedAddListener)
- import Browser.WebExt.Listener (mkListener)
- import Browser.WebExt.Runtime (onMessageAddListener)
- import Browser.WebExt.Tabs (Tab)
- import Effect (Effect)
- import Effect.Aff (launchAff_)
- import Effect.Class (class MonadEffect)
- import Effect.Class.Console (log, logShow)
- import ExampleWebExt.NativeMessage (NativeMessage(..), connectToNativeApplication, onNativeMessageAddListener, sendMessageToNative)
- import ExampleWebExt.RuntimeMessage (RuntimeMessage(..), mkRuntimeMessageHandler, sendMessageToContent)
- import ExampleWebExt.Storage (getJobsPath, setJobsPath)
- main :: Effect Unit
- main = do
- log "[bg] starting up"
- port <- connectToNativeApplication "job_search_writer"
- onNativeMessageAddListener port nativeMessageHandler
- sendMessageToNative port $ NativeMessageBackground "hello"
- setJobsPath "/path/to/jobs"
- launchAff_ do
- path <- getJobsPath
- log $ "Read value of jobsPath : " <> show path
- onClickedAddListener $ mkListener browserActionOnClickedHandler
- onMessageAddListener $ mkRuntimeMessageHandler contentScriptMessageHandler
- browserActionOnClickedHandler :: Tab -> Effect Unit
- browserActionOnClickedHandler tab = do
- logShow tab
- _ <- sendMessageToContent tab.id RuntimeMessageRequestPageContent
- pure unit
- contentScriptMessageHandler ∷ ∀ m. MonadEffect m => RuntimeMessage → m Unit
- contentScriptMessageHandler m = logShow m
- nativeMessageHandler ∷ ∀ m. MonadEffect m ⇒ NativeMessage → m Unit
- nativeMessageHandler m = logShow m
|