浏览代码

Add settings page, in JS (for now)

jherve 2 年之前
父节点
当前提交
aa90bf0def
共有 6 个文件被更改,包括 35 次插入4 次删除
  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});
+});