Sfoglia il codice sorgente

Add settings page, in JS (for now)

jherve 1 anno fa
parent
commit
16d3fb410e
6 ha cambiato i file con 35 aggiunte e 4 eliminazioni
  1. 1 0
      .gitignore
  2. 3 0
      extension/manifest.json
  3. 2 2
      package.json
  4. 1 2
      src/Background.purs
  5. 19 0
      src/settings.html
  6. 9 0
      src/settings.js

+ 1 - 0
.gitignore

@@ -16,4 +16,5 @@
 /extension/background.js.map
 /extension/background.js.map
 /extension/content.js
 /extension/content.js
 /extension/content.js.map
 /extension/content.js.map
+/extension/settings.*
 /pure_tabs.xpi
 /pure_tabs.xpi

+ 3 - 0
extension/manifest.json

@@ -21,5 +21,8 @@
     "scripts": ["background.js"],
     "scripts": ["background.js"],
     "persistent": true
     "persistent": true
   },
   },
+  "options_ui": {
+    "page": "settings.html"
+  },
   "permissions": ["activeTab", "tabs", "storage", "nativeMessaging"]
   "permissions": ["activeTab", "tabs", "storage", "nativeMessaging"]
 }
 }

+ 2 - 2
package.json

@@ -7,8 +7,8 @@
   },
   },
   "scripts": {
   "scripts": {
     "parcel": "parcel",
     "parcel": "parcel",
-    "dev": "concurrently --kill-others \"spago build --watch\" \"parcel watch src/background.js src/content.js --dist-dir extension/\"",
-    "build": "spago build && parcel build src/background.js src/content.js --dist-dir extension/",
+    "dev": "concurrently --kill-others \"spago build --watch\" \"parcel watch src/background.js src/content.js src/settings.html src/settings.js --dist-dir extension/\"",
+    "build": "spago build && parcel build src/background.js src/content.js src/settings.html src/settings.js --dist-dir extension/",
     "build-lib": "spago bundle-module -m LinkedIn",
     "build-lib": "spago bundle-module -m LinkedIn",
     "test": "spago test",
     "test": "spago test",
     "clean": "rm -rf .cache .psci_modules modules dist extension/background.js extension/background.js.map extension/content.js extension/content.js.map",
     "clean": "rm -rf .cache .psci_modules modules dist extension/background.js extension/background.js.map extension/content.js extension/content.js.map",

+ 1 - 2
src/Background.purs

@@ -15,7 +15,7 @@ import Effect.Class (class MonadEffect, liftEffect)
 import Effect.Class.Console (log, logShow)
 import Effect.Class.Console (log, logShow)
 import ExampleWebExt.NativeMessage (NativeMessage(..), connectToNativeApplication, onNativeMessageAddListener, sendMessageToNative)
 import ExampleWebExt.NativeMessage (NativeMessage(..), connectToNativeApplication, onNativeMessageAddListener, sendMessageToNative)
 import ExampleWebExt.RuntimeMessage (RuntimeMessage(..), mkRuntimeMessageHandler, sendMessageToContent)
 import ExampleWebExt.RuntimeMessage (RuntimeMessage(..), mkRuntimeMessageHandler, sendMessageToContent)
-import ExampleWebExt.Storage (getJobsPath, setJobsPath)
+import ExampleWebExt.Storage (getJobsPath)
 
 
 main :: Effect Unit
 main :: Effect Unit
 main = do
 main = do
@@ -23,7 +23,6 @@ main = do
   port <- connectToNativeApplication "job_search_writer"
   port <- connectToNativeApplication "job_search_writer"
   onNativeMessageAddListener port nativeMessageHandler
   onNativeMessageAddListener port nativeMessageHandler
 
 
-  setJobsPath "/tmp/dummy/path/value"
   sendConfigurationToNative port
   sendConfigurationToNative port
 
 
   onClickedAddListener $ mkListener browserActionOnClickedHandler
   onClickedAddListener $ mkListener browserActionOnClickedHandler

+ 19 - 0
src/settings.html

@@ -0,0 +1,19 @@
+<!doctype html>
+<html lang="en">
+
+<head>
+    <meta charset="utf-8" />
+</head>
+
+<body>
+    <form>
+        <label>Jobs catalog path
+            <input type="text" id="jobs-path" name="jobs-path" placeholder="path to the jobs catalog" />
+        </label>
+        <button type="submit">Save</button>
+    </form>
+
+    <script src="settings.js"></script>
+</body>
+
+</html>

+ 9 - 0
src/settings.js

@@ -0,0 +1,9 @@
+document.addEventListener("DOMContentLoaded", async (e) => {
+    const jobsPath = await browser.storage.sync.get("jobsPath");
+    document.querySelector("#jobs-path").value = jobsPath.jobsPath || "";
+});
+
+document.querySelector("form").addEventListener("submit", (e) => {
+    e.preventDefault();
+    browser.storage.sync.set({jobsPath: document.querySelector("#jobs-path").value});
+});