Bläddra i källkod

Add onRuntimeMessageAddListener in RuntimeMessage module

jherve 1 år sedan
förälder
incheckning
34d4a1ea90
3 ändrade filer med 12 tillägg och 11 borttagningar
  1. 2 3
      src/Background.purs
  2. 2 3
      src/Content.purs
  3. 8 5
      src/RuntimeMessage.purs

+ 2 - 3
src/Background.purs

@@ -5,7 +5,6 @@ import Prelude
 import Browser.WebExt.BrowserAction (onClickedAddListener)
 import Browser.WebExt.Listener (mkListener)
 import Browser.WebExt.Port (Port)
-import Browser.WebExt.Runtime (onMessageAddListener)
 import Browser.WebExt.Tabs (Tab)
 import Data.Argonaut.Decode (printJsonDecodeError)
 import Data.Either (Either(..))
@@ -14,7 +13,7 @@ import Effect.Aff (launchAff_)
 import Effect.Class (class MonadEffect, liftEffect)
 import Effect.Class.Console (log, logShow)
 import ExampleWebExt.NativeMessage (NativeMessage(..), connectToNativeApplication, onNativeMessageAddListener, sendMessageToNative)
-import ExampleWebExt.RuntimeMessage (RuntimeMessage(..), mkRuntimeMessageHandler, sendMessageToContent)
+import ExampleWebExt.RuntimeMessage (RuntimeMessage(..), onRuntimeMessageAddListener, sendMessageToContent)
 import ExampleWebExt.Storage (getJobsPath)
 
 main :: Effect Unit
@@ -26,7 +25,7 @@ main = do
   sendConfigurationToNative port
 
   onClickedAddListener $ mkListener browserActionOnClickedHandler
-  onMessageAddListener $ mkRuntimeMessageHandler contentScriptMessageHandler
+  onRuntimeMessageAddListener contentScriptMessageHandler
 
 browserActionOnClickedHandler :: Tab -> Effect Unit
 browserActionOnClickedHandler tab = do

+ 2 - 3
src/Content.purs

@@ -3,12 +3,11 @@ module ExampleWebExt.Content where
 import Prelude
 
 import Browser.DOM (getBrowserDom)
-import Browser.WebExt.Runtime (onMessageAddListener)
 import Data.Either (Either(..))
 import Effect (Effect)
 import Effect.Class.Console (logShow, warn)
 import Effect.Console (log)
-import ExampleWebExt.RuntimeMessage (RuntimeMessage(..), mkRuntimeMessageHandler, sendMessageToBackground)
+import ExampleWebExt.RuntimeMessage (RuntimeMessage(..), onRuntimeMessageAddListener, sendMessageToBackground)
 import LinkedIn (extractFromDocument, getContext)
 import LinkedIn.PageUrl (PageUrl(..))
 
@@ -19,7 +18,7 @@ main = do
   dom <- getBrowserDom
   ctx <- getContext dom
 
-  onMessageAddListener $ mkRuntimeMessageHandler backgroundMessageHandler
+  onRuntimeMessageAddListener backgroundMessageHandler
   _ <- sendMessageToBackground RuntimeMessageContentInit
 
   case ctx of

+ 8 - 5
src/RuntimeMessage.purs

@@ -4,6 +4,7 @@ import Prelude
 
 import Browser.WebExt.Listener (Listener, mkListener)
 import Browser.WebExt.Message (Message, mkMessage, unwrapMessage)
+import Browser.WebExt.Runtime (onMessageAddListener)
 import Browser.WebExt.Runtime as Runtime
 import Browser.WebExt.Tabs (TabId)
 import Browser.WebExt.Tabs as Tabs
@@ -47,8 +48,10 @@ decodeRuntimeMessage m =
     Left err -> Left $ printJsonDecodeError err
     Right m' -> Right m'
 
-mkRuntimeMessageHandler ∷ (RuntimeMessage → Effect Unit) → Listener Json
-mkRuntimeMessageHandler f = mkListener \m -> do
-  case decodeRuntimeMessage m of
-    Left err -> log err
-    Right m' -> f m'
+onRuntimeMessageAddListener ∷ (RuntimeMessage → Effect Unit) → Effect Unit
+onRuntimeMessageAddListener f = onMessageAddListener runtimeMessageHandler
+  where
+    runtimeMessageHandler = mkListener \m -> do
+      case decodeRuntimeMessage m of
+        Left err -> log err
+        Right m' -> f m'