Forráskód Böngészése

Try to use consistent naming

jherve 1 éve
szülő
commit
137b3f7222

+ 6 - 2
src/Background.purs

@@ -2,7 +2,11 @@ module ExampleWebExt.Background where
 
 import Prelude
 
-import Browser.WebExt.Runtime (Tab, mkListener, onClickedAddListener, onMessageAddListener, tabsSendMessage)
+import Browser.WebExt.BrowserAction (onClickedAddListener)
+import Browser.WebExt.Listener (mkListener)
+import Browser.WebExt.Runtime (onMessageAddListener)
+import Browser.WebExt.Tabs (Tab)
+import Browser.WebExt.Tabs as Tabs
 import Effect (Effect)
 import Effect.Class (class MonadEffect)
 import Effect.Class.Console (log)
@@ -16,7 +20,7 @@ main = do
 
 browserActionOnClickedHandler :: Tab -> Effect Unit
 browserActionOnClickedHandler tab = do
-  _ <- tabsSendMessage tab.id "Clicked browser action"
+  _ <- Tabs.sendMessage tab.id "Clicked browser action"
   pure unit
 
 contentScriptMessageHandler ∷ ∀ m (a ∷ Type). MonadEffect m ⇒ Show a ⇒ a → m Unit

+ 3 - 0
src/Browser/WebExt/BrowserAction.js

@@ -0,0 +1,3 @@
+export function onClickedAddListenerImpl (fn) {
+  return browser.browserAction.onClicked.addListener(fn);
+}

+ 15 - 0
src/Browser/WebExt/BrowserAction.purs

@@ -0,0 +1,15 @@
+module Browser.WebExt.BrowserAction (
+  onClickedAddListener
+) where
+
+import Prelude
+
+import Browser.WebExt.Listener (Listener)
+import Browser.WebExt.Tabs (Tab)
+import Effect (Effect)
+import Effect.Uncurried (EffectFn1, runEffectFn1)
+
+foreign import onClickedAddListenerImpl :: EffectFn1 (Listener Tab) Unit
+
+onClickedAddListener ∷ Listener Tab → Effect Unit
+onClickedAddListener = runEffectFn1 onClickedAddListenerImpl

+ 14 - 0
src/Browser/WebExt/Listener.purs

@@ -0,0 +1,14 @@
+module Browser.WebExt.Listener (
+  Listener,
+  mkListener
+) where
+
+import Prelude
+
+import Effect (Effect)
+import Effect.Uncurried (EffectFn1, mkEffectFn1)
+
+type Listener a = EffectFn1 a Unit
+
+mkListener :: forall a. (a -> Effect Unit) -> Listener a
+mkListener = mkEffectFn1

+ 3 - 0
src/Browser/WebExt/Message.purs

@@ -0,0 +1,3 @@
+module Browser.WebExt.Message (Message) where
+
+type Message = String

+ 0 - 8
src/Browser/WebExt/Runtime.js

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

+ 7 - 29
src/Browser/WebExt/Runtime.purs

@@ -1,43 +1,21 @@
 module Browser.WebExt.Runtime (
-  Tab,
-  TabId,
-  Message,
-  Listener,
-  tabsSendMessage,
-  runtimeSendMessage,
-  onClickedAddListener,
-  onMessageAddListener,
-  mkListener
+  sendMessage,
+  onMessageAddListener
 ) where
 
 import Prelude
 
+import Browser.WebExt.Listener (Listener)
+import Browser.WebExt.Message (Message)
 import Effect (Effect)
-import Effect.Uncurried (EffectFn1, EffectFn2, mkEffectFn1, runEffectFn1, runEffectFn2)
+import Effect.Uncurried (EffectFn1, runEffectFn1)
 import Promise (Promise)
 
-type Tab = { id :: Int, index :: Int }
-type TabId = Int
-type Message = String
-
-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
 foreign import runtimeSendMessageImpl :: EffectFn1 Message (Promise Message)
 
-onClickedAddListener ∷ Listener Tab → Effect Unit
-onClickedAddListener = runEffectFn1 onClickedAddListenerImpl
-
-tabsSendMessage ∷ TabId → Message → Effect (Promise Message)
-tabsSendMessage = runEffectFn2 tabsSendMessageImpl
-
 onMessageAddListener ∷ Listener Message → Effect Unit
 onMessageAddListener = runEffectFn1 onMessageAddListenerImpl
 
-runtimeSendMessage ∷ Message → Effect (Promise Message)
-runtimeSendMessage = runEffectFn1 runtimeSendMessageImpl
-
-mkListener :: forall a. (a -> Effect Unit) -> Listener a
-mkListener = mkEffectFn1
+sendMessage ∷ Message → Effect (Promise Message)
+sendMessage = runEffectFn1 runtimeSendMessageImpl

+ 3 - 0
src/Browser/WebExt/Tabs.js

@@ -0,0 +1,3 @@
+export function sendMessageImpl (tabId, message) {
+  return browser.tabs.sendMessage(tabId, message);
+}

+ 18 - 0
src/Browser/WebExt/Tabs.purs

@@ -0,0 +1,18 @@
+module Browser.WebExt.Tabs (
+  Tab,
+  TabId,
+  sendMessage
+) where
+
+import Browser.WebExt.Message (Message)
+import Effect (Effect)
+import Effect.Uncurried (EffectFn2,runEffectFn2)
+import Promise (Promise)
+
+type Tab = { id :: Int, index :: Int }
+type TabId = Int
+
+foreign import sendMessageImpl :: EffectFn2 TabId Message (Promise Message)
+
+sendMessage ∷ TabId → Message → Effect (Promise Message)
+sendMessage = runEffectFn2 sendMessageImpl

+ 4 - 3
src/Content.purs

@@ -3,7 +3,8 @@ module ExampleWebExt.Content where
 import Prelude
 
 import Browser.DOM (getBrowserDom)
-import Browser.WebExt.Runtime (mkListener, onMessageAddListener, runtimeSendMessage)
+import Browser.WebExt.Listener (mkListener)
+import Browser.WebExt.Runtime as Runtime
 import Effect (Effect)
 import Effect.Class.Console (logShow)
 import Effect.Console (log)
@@ -13,8 +14,8 @@ main :: Effect Unit
 main = do
   log "[content] starting up"
 
-  onMessageAddListener $ mkListener messageListener
-  _ <- runtimeSendMessage "message from content"
+  Runtime.onMessageAddListener $ mkListener messageListener
+  _ <- Runtime.sendMessage "message from content"
 
   dom <- getBrowserDom
   getContext dom >>= logShow