Browse Source

refactor: operate scripts via plugin APIs

Gerald 7 years ago
parent
commit
6eebab3706
2 changed files with 22 additions and 16 deletions
  1. 15 7
      src/background/plugin/index.js
  2. 7 9
      src/background/sync/base.js

+ 15 - 7
src/background/plugin/index.js

@@ -1,14 +1,18 @@
-import { parseScript, getScripts, getScriptCode } from '../utils/db';
+import {
+  parseScript,
+  getScripts,
+  getScriptCode,
+  removeScript,
+} from '../utils/db';
 
 // eslint-disable-next-line import/prefer-default-export
 export const script = {
-  update({ id, code }) {
+  update(data) {
     // Update an existing script by ID
-    return parseScript({ id, code });
-  },
-  add({ code }) {
-    // Set id=-1 to skip checking @name and @namespace
-    return parseScript({ id: -1, code });
+    // data: {
+    //   id, code, message, isNew, config, custom, props, update,
+    // }
+    return parseScript(data);
   },
   list() {
     // List all available scripts, without script code
@@ -18,4 +22,8 @@ export const script = {
     // Get script code of an existing script
     return getScriptCode(id);
   },
+  remove(id) {
+    // Remove script by id
+    return removeScript(id);
+  },
 };

+ 7 - 9
src/background/sync/base.js

@@ -8,13 +8,10 @@ import {
   getEventEmitter, getOption, setOption, hookOptions, sendMessageOrIgnore,
 } from '../utils';
 import {
-  getScripts,
-  getScriptCode,
-  parseScript,
-  removeScript,
   sortScripts,
   updateScriptInfo,
 } from '../utils/db';
+import { script as pluginScript } from '../plugin';
 
 const serviceNames = [];
 const serviceClasses = [];
@@ -336,7 +333,7 @@ export const BaseService = serviceFactory({
     });
   },
   getLocalData() {
-    return getScripts();
+    return pluginScript.list();
   },
   getSyncData() {
     return this.getMeta()
@@ -440,12 +437,12 @@ export const BaseService = serviceFactory({
             if (!getOption('syncScriptStatus') && data.config) {
               delete data.config.enabled;
             }
-            return parseScript(data);
+            return pluginScript.update(data);
           });
         }),
         ...putRemote.map(({ local, remote }) => {
           this.log('Upload script:', local.props.uri);
-          return getScriptCode(local.props.id)
+          return pluginScript.get(local.props.id)
           .then(code => {
             // XXX use version 1 to be compatible with Violentmonkey on other platforms
             const data = getScriptData(local, 1, { code });
@@ -468,7 +465,7 @@ export const BaseService = serviceFactory({
         }),
         ...delLocal.map(({ local }) => {
           this.log('Remove local script:', local.props.uri);
-          return removeScript(local.props.id);
+          return pluginScript.remove(local.props.id);
         }),
         ...updateLocal.map(({ local, info }) => {
           const updates = {};
@@ -481,7 +478,8 @@ export const BaseService = serviceFactory({
       promiseQueue.push(Promise.all(promiseQueue).then(() => sortScripts()).then(changed => {
         if (!changed) return;
         remoteChanged = true;
-        return getScripts().then(scripts => {
+        return pluginScript.list()
+        .then(scripts => {
           scripts.forEach(script => {
             const remoteInfo = remoteMetaData.info[script.props.uri];
             if (remoteInfo) remoteInfo.position = script.props.position;