Browse Source

feat: notify updates

close violentmonkey/violentmonkey#104
Gerald 8 năm trước cách đây
mục cha
commit
9b41384e8a

+ 9 - 0
src/_locales/cs/messages.yml

@@ -384,3 +384,12 @@ editLabelMeta:
 labelKeepOriginal:
 labelKeepOriginal:
   description: Option to keep the original match or ignore rules.
   description: Option to keep the original match or ignore rules.
   message: ''
   message: ''
+titleScriptUpdated:
+  description: Notification title for script updates.
+  message: ''
+msgScriptUpdated:
+  description: Notification message for script updates.
+  message: ''
+labelNotifyUpdates:
+  description: Option to show notification when script is updated.
+  message: ''

+ 9 - 0
src/_locales/de/messages.yml

@@ -382,3 +382,12 @@ editLabelMeta:
 labelKeepOriginal:
 labelKeepOriginal:
   description: Option to keep the original match or ignore rules.
   description: Option to keep the original match or ignore rules.
   message: Ursprüngliche Regeln beibehalten
   message: Ursprüngliche Regeln beibehalten
+titleScriptUpdated:
+  description: Notification title for script updates.
+  message: ''
+msgScriptUpdated:
+  description: Notification message for script updates.
+  message: ''
+labelNotifyUpdates:
+  description: Option to show notification when script is updated.
+  message: ''

+ 9 - 0
src/_locales/en/messages.yml

@@ -384,3 +384,12 @@ editLabelMeta:
 labelKeepOriginal:
 labelKeepOriginal:
   description: Option to keep the original match or ignore rules.
   description: Option to keep the original match or ignore rules.
   message: Keep original
   message: Keep original
+titleScriptUpdated:
+  description: Notification title for script updates.
+  message: Update
+msgScriptUpdated:
+  description: Notification message for script updates.
+  message: 'Script [$1] is updated!'
+labelNotifyUpdates:
+  description: Option to show notification when script is updated.
+  message: Notify script updates

+ 9 - 0
src/_locales/es/messages.yml

@@ -388,3 +388,12 @@ editLabelMeta:
 labelKeepOriginal:
 labelKeepOriginal:
   description: Option to keep the original match or ignore rules.
   description: Option to keep the original match or ignore rules.
   message: ''
   message: ''
+titleScriptUpdated:
+  description: Notification title for script updates.
+  message: ''
+msgScriptUpdated:
+  description: Notification message for script updates.
+  message: ''
+labelNotifyUpdates:
+  description: Option to show notification when script is updated.
+  message: ''

+ 9 - 0
src/_locales/id/messages.yml

@@ -386,3 +386,12 @@ editLabelMeta:
 labelKeepOriginal:
 labelKeepOriginal:
   description: Option to keep the original match or ignore rules.
   description: Option to keep the original match or ignore rules.
   message: ''
   message: ''
+titleScriptUpdated:
+  description: Notification title for script updates.
+  message: ''
+msgScriptUpdated:
+  description: Notification message for script updates.
+  message: ''
+labelNotifyUpdates:
+  description: Option to show notification when script is updated.
+  message: ''

+ 9 - 0
src/_locales/ja/messages.yml

@@ -384,3 +384,12 @@ editLabelMeta:
 labelKeepOriginal:
 labelKeepOriginal:
   description: Option to keep the original match or ignore rules.
   description: Option to keep the original match or ignore rules.
   message: ''
   message: ''
+titleScriptUpdated:
+  description: Notification title for script updates.
+  message: ''
+msgScriptUpdated:
+  description: Notification message for script updates.
+  message: ''
+labelNotifyUpdates:
+  description: Option to show notification when script is updated.
+  message: ''

+ 9 - 0
src/_locales/pl/messages.yml

@@ -384,3 +384,12 @@ editLabelMeta:
 labelKeepOriginal:
 labelKeepOriginal:
   description: Option to keep the original match or ignore rules.
   description: Option to keep the original match or ignore rules.
   message: ''
   message: ''
+titleScriptUpdated:
+  description: Notification title for script updates.
+  message: ''
+msgScriptUpdated:
+  description: Notification message for script updates.
+  message: ''
+labelNotifyUpdates:
+  description: Option to show notification when script is updated.
+  message: ''

+ 9 - 0
src/_locales/ro/messages.yml

@@ -384,3 +384,12 @@ editLabelMeta:
 labelKeepOriginal:
 labelKeepOriginal:
   description: Option to keep the original match or ignore rules.
   description: Option to keep the original match or ignore rules.
   message: ''
   message: ''
+titleScriptUpdated:
+  description: Notification title for script updates.
+  message: ''
+msgScriptUpdated:
+  description: Notification message for script updates.
+  message: ''
+labelNotifyUpdates:
+  description: Option to show notification when script is updated.
+  message: ''

+ 9 - 0
src/_locales/ru/messages.yml

@@ -382,3 +382,12 @@ editLabelMeta:
 labelKeepOriginal:
 labelKeepOriginal:
   description: Option to keep the original match or ignore rules.
   description: Option to keep the original match or ignore rules.
   message: Использовать оригинальные правила
   message: Использовать оригинальные правила
+titleScriptUpdated:
+  description: Notification title for script updates.
+  message: ''
+msgScriptUpdated:
+  description: Notification message for script updates.
+  message: ''
+labelNotifyUpdates:
+  description: Option to show notification when script is updated.
+  message: ''

+ 9 - 0
src/_locales/sr/messages.yml

@@ -384,3 +384,12 @@ editLabelMeta:
 labelKeepOriginal:
 labelKeepOriginal:
   description: Option to keep the original match or ignore rules.
   description: Option to keep the original match or ignore rules.
   message: ''
   message: ''
+titleScriptUpdated:
+  description: Notification title for script updates.
+  message: ''
+msgScriptUpdated:
+  description: Notification message for script updates.
+  message: ''
+labelNotifyUpdates:
+  description: Option to show notification when script is updated.
+  message: ''

+ 12 - 3
src/_locales/vi/messages.yml

@@ -346,8 +346,8 @@ labelCustomCSS:
 descCustomCSS:
 descCustomCSS:
   description: Description of custom CSS section.
   description: Description of custom CSS section.
   message: >-
   message: >-
-    CSS tùy chỉnh cho trang tùy chọn và trang script đã cài đặt
-    Nếu không hiểu rõ xin đừng sửa.
+    CSS tùy chỉnh cho trang tùy chọn và trang script đã cài đặt Nếu không hiểu
+    rõ xin đừng sửa.
 buttonSaveCustomCSS:
 buttonSaveCustomCSS:
   description: Label for button to save custom CSS.
   description: Label for button to save custom CSS.
   message: Lưu
   message: Lưu
@@ -383,4 +383,13 @@ editLabelMeta:
   message: Tuỳ chỉnh thẻ dữ liệu
   message: Tuỳ chỉnh thẻ dữ liệu
 labelKeepOriginal:
 labelKeepOriginal:
   description: Option to keep the original match or ignore rules.
   description: Option to keep the original match or ignore rules.
-  message: Giữ bản gốc
+  message: Giữ bản gốc
+titleScriptUpdated:
+  description: Notification title for script updates.
+  message: ''
+msgScriptUpdated:
+  description: Notification message for script updates.
+  message: ''
+labelNotifyUpdates:
+  description: Option to show notification when script is updated.
+  message: ''

+ 9 - 0
src/_locales/zh/messages.yml

@@ -382,3 +382,12 @@ editLabelMeta:
 labelKeepOriginal:
 labelKeepOriginal:
   description: Option to keep the original match or ignore rules.
   description: Option to keep the original match or ignore rules.
   message: 保留原有规则
   message: 保留原有规则
+titleScriptUpdated:
+  description: Notification title for script updates.
+  message: 更新
+msgScriptUpdated:
+  description: Notification message for script updates.
+  message: 脚本【$1】已更新!
+labelNotifyUpdates:
+  description: Option to show notification when script is updated.
+  message: 脚本更新时提示

+ 1 - 10
src/background/app.js

@@ -1,5 +1,6 @@
 import { i18n, defaultImage } from 'src/common';
 import { i18n, defaultImage } from 'src/common';
 import * as sync from './sync';
 import * as sync from './sync';
+import { notify } from './utils';
 import { getRequestId, httpRequest, abortRequest, confirmInstall } from './utils/requests';
 import { getRequestId, httpRequest, abortRequest, confirmInstall } from './utils/requests';
 import cache from './utils/cache';
 import cache from './utils/cache';
 import { newScript, parseMeta } from './utils/script';
 import { newScript, parseMeta } from './utils/script';
@@ -223,16 +224,6 @@ vmdb.initialized.then(() => {
 
 
 // Common functions
 // Common functions
 
 
-function notify(options) {
-  browser.notifications.create(options.id || 'ViolentMonkey', {
-    type: 'basic',
-    iconUrl: defaultImage,
-    title: `${options.title} - ${i18n('extName')}`,
-    message: options.body,
-    isClickable: options.isClickable,
-  });
-}
-
 const badges = {};
 const badges = {};
 function setBadge(num, src) {
 function setBadge(num, src) {
   let data = badges[src.id];
   let data = badges[src.id];

+ 11 - 0
src/background/utils/index.js

@@ -0,0 +1,11 @@
+import { i18n, defaultImage } from 'src/common';
+
+export function notify(options) {
+  browser.notifications.create(options.id || 'ViolentMonkey', {
+    type: 'basic',
+    iconUrl: defaultImage,
+    title: `${options.title} - ${i18n('extName')}`,
+    message: options.body,
+    isClickable: options.isClickable,
+  });
+}

+ 1 - 0
src/background/utils/options.js

@@ -17,6 +17,7 @@ const defaults = {
   sync: null,
   sync: null,
   customCSS: null,
   customCSS: null,
   importSettings: true,
   importSettings: true,
+  notifyUpdates: true,
 };
 };
 let changes = {};
 let changes = {};
 const hooks = initHooks();
 const hooks = initHooks();

+ 22 - 13
src/background/utils/update.js

@@ -1,6 +1,8 @@
-import { i18n, request, noop } from 'src/common';
+import { i18n, request } from 'src/common';
 import { parseScript } from './db';
 import { parseScript } from './db';
 import { parseMeta, compareVersion } from './script';
 import { parseMeta, compareVersion } from './script';
+import { getOption } from './options';
+import { notify } from '.';
 
 
 const processes = {};
 const processes = {};
 
 
@@ -65,18 +67,25 @@ export default function checkUpdate(script) {
   if (!promise) {
   if (!promise) {
     let updated = false;
     let updated = false;
     promise = doCheckUpdate(script)
     promise = doCheckUpdate(script)
-    .then(code => (
-      parseScript({
-        code,
-        id: script.id,
-      })
-      .then(res => {
-        res.data.checking = false;
-        browser.runtime.sendMessage(res);
-        updated = true;
-      })
-    ))
-    .catch(noop)
+    .then(code => parseScript({
+      code,
+      id: script.id,
+    }))
+    .then(res => {
+      const { data } = res;
+      data.checking = false;
+      browser.runtime.sendMessage(res);
+      updated = true;
+      if (getOption('notifyUpdates')) {
+        notify({
+          title: i18n('titleScriptUpdated'),
+          body: i18n('msgScriptUpdated', [data.meta.name || i18n('labelNoName')]),
+        });
+      }
+    })
+    .catch(err => {
+      if (process.env.DEBUG) console.error(err);
+    })
     .then(() => {
     .then(() => {
       delete processes[script.id];
       delete processes[script.id];
       return updated;
       return updated;

+ 6 - 0
src/options/views/tab-settings/index.vue

@@ -27,6 +27,12 @@
           <span v-text="i18n('labelAutoReloadCurrentTab')"></span>
           <span v-text="i18n('labelAutoReloadCurrentTab')"></span>
         </label>
         </label>
       </div>
       </div>
+      <div class="mb-1">
+        <label>
+          <input type=checkbox v-setting="'notifyUpdates'">
+          <span v-text="i18n('labelNotifyUpdates')"></span>
+        </label>
+      </div>
     </section>
     </section>
     <vm-import></vm-import>
     <vm-import></vm-import>
     <vm-export></vm-export>
     <vm-export></vm-export>