Parcourir la source

Background message in now received in PS code

jherve il y a 1 an
Parent
commit
5349e57123
4 fichiers modifiés avec 14 ajouts et 4 suppressions
  1. 4 0
      src/Browser/Runtime.js
  2. 5 0
      src/Browser/Runtime.purs
  3. 5 0
      src/Content.purs
  4. 0 4
      src/content.js

+ 4 - 0
src/Browser/Runtime.js

@@ -5,3 +5,7 @@ export function onClickedAddListenerImpl (fn) {
 export function tabsSendMessageImpl (tabId, message) {
   return browser.tabs.sendMessage(tabId, message);
 }
+
+export function onMessageAddListenerImpl(fn) {
+  return browser.runtime.onMessage.addListener(fn);
+}

+ 5 - 0
src/Browser/Runtime.purs

@@ -5,6 +5,7 @@ module Browser.Runtime (
   Listener,
   tabsSendMessage,
   onClickedAddListener,
+  onMessageAddListener,
   mkListener
 ) where
 
@@ -22,6 +23,7 @@ type Listener a = EffectFn1 a Unit
 
 foreign import onClickedAddListenerImpl :: EffectFn1 (Listener Tab) Unit
 foreign import tabsSendMessageImpl :: EffectFn2 TabId Message (Promise Message)
+foreign import onMessageAddListenerImpl :: EffectFn1 (Listener Message) Unit
 
 onClickedAddListener ∷ Listener Tab → Effect Unit
 onClickedAddListener = runEffectFn1 onClickedAddListenerImpl
@@ -29,5 +31,8 @@ onClickedAddListener = runEffectFn1 onClickedAddListenerImpl
 tabsSendMessage ∷ TabId → Message → Effect (Promise Message)
 tabsSendMessage = runEffectFn2 tabsSendMessageImpl
 
+onMessageAddListener ∷ Listener Message → Effect Unit
+onMessageAddListener = runEffectFn1 onMessageAddListenerImpl
+
 mkListener :: forall a. (a -> Effect Unit) -> Listener a
 mkListener = mkEffectFn1

+ 5 - 0
src/Content.purs

@@ -3,6 +3,7 @@ module ExampleWebExt.Content where
 import Prelude
 
 import Browser.DOM (getBrowserDom)
+import Browser.Runtime (mkListener, onMessageAddListener)
 import Effect (Effect)
 import Effect.Class.Console (logShow)
 import Effect.Console (log)
@@ -12,7 +13,11 @@ main :: Effect Unit
 main = do
   log "[content] starting up"
 
+  onMessageAddListener $ mkListener messageListener
+
   dom <- getBrowserDom
   getContext dom >>= logShow
   extractFromDocument dom >>= logShow
 
+messageListener ∷ ∀ a. Show a ⇒ a → Effect Unit
+messageListener m = log $ "[content] Received message " <> show m

+ 0 - 4
src/content.js

@@ -4,8 +4,4 @@ function main() {
     Content.main();
 }
 
-browser.runtime.onMessage.addListener(async message => {
-    console.log("[message received]", message);
-});
-
 main();