Bläddra i källkod

Add settings page, in JS (for now)

jherve 2 år sedan
förälder
incheckning
16d3fb410e
6 ändrade filer med 35 tillägg och 4 borttagningar
  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});
+});