Преглед на файлове

Found the correct way to add event listeners

jherve преди 1 година
родител
ревизия
c25c635ced
променени са 3 файла, в които са добавени 13 реда и са изтрити 32 реда
  1. 0 14
      src/Background.js
  2. 13 11
      src/Background.purs
  3. 0 7
      src/background.js

+ 0 - 14
src/Background.js

@@ -3,17 +3,3 @@ export function onClickedAddListener (fn) {
     return browser.browserAction.onClicked.addListener(fn);
   }
 }
-
-export function onClickedAddListener1 (fn) {
-  return function () {
-    return browser.browserAction.onClicked.addListener(fn);
-  }
-}
-
-export function mkListenerOne (fn) {
-  return function () {
-    return function (one) {
-      return fn(one)();
-    }
-  }
-};

+ 13 - 11
src/Background.purs

@@ -3,22 +3,24 @@ module ExampleWebExt.Background where
 import Prelude
 
 import Effect (Effect)
-import Effect.Aff (Aff, launchAff_)
-import Effect.Class.Console (log)
+import Effect.Class.Console (log, logShow)
+import Effect.Uncurried (EffectFn1, mkEffectFn1)
 
-type Listener0 = Effect Unit
-type Listener a = (a -> Effect Unit)
+type Tab = { id :: Int, index :: Int }
 
-foreign import onClickedAddListener :: Listener0 -> Effect Unit
-foreign import onClickedAddListener1 :: forall a. Listener a -> Effect Unit
+type Listener a = EffectFn1 a Unit
 
-foreign import mkListenerOne :: forall a. (Listener a) -> Effect (Listener a)
+foreign import onClickedAddListener :: Listener Tab -> Effect Unit
 
 main :: Effect Unit
 main = do
-  listener <- mkListenerOne $ \e -> do
-    log "Clicked PS 1"
+  let
+    listenerEff = mkEffectFn1 $ \e -> do
+      logShow e
+      log "Executed listener mkEffectFn1"
+
   log "[bg] starting up"
-  onClickedAddListener $ log "Clicked PS 0"
-  onClickedAddListener1 listener
+
+  onClickedAddListener listenerEff
+
   log "[bg] registered"

+ 0 - 7
src/background.js

@@ -1,13 +1,6 @@
 var Background = require("../output/ExampleWebExt.Background");
 
 function main() {
-  browser.browserAction.onClicked.addListener(async (tab) => {
-    console.log("clicked !");
-  });
-  browser.browserAction.onClicked.addListener(async (tab) => {
-    console.log("clicked 2 !");
-  });
-
   Background.main();
 }