[email protected] пре 2 година
родитељ
комит
8eeeaf62e3

+ 0 - 2
apps/background/background.js

@@ -296,8 +296,6 @@ let BgPageInstance = (function () {
             else if (request.type === MSG_TYPE.DYNAMIC_ANY_THING) {
                 switch(request.thing){
                     case 'save-options':
-                        //管理右键菜单
-                        Menu.rebuild();
                         notifyText({
                             message: '配置修改已生效,请继续使用!',
                             autoClose: 2000

+ 48 - 12
apps/background/crx-download.js

@@ -7,6 +7,44 @@ import MSG_TYPE from '../static/js/common.js';
 
 export default (function () {
 
+    let FeJson = {notifyTimeoutId:-1};
+    /**
+     * 文本格式,可以设置一个图标和标题
+     * @param {Object} options
+     * @config {string} type notification的类型,可选值:html、text
+     * @config {string} icon 图标
+     * @config {string} title 标题
+     * @config {string} message 内容
+     */
+    let notifyText = function (options) {
+        let notifyId = 'FeJson-notify-id';
+        if(typeof options === 'string') {
+            options = {message: options};
+        }
+        clearTimeout(FeJson.notifyTimeoutId);
+        if (options.closeImmediately) {
+            return chrome.notifications.clear(notifyId);
+        }
+
+        if (!options.icon) {
+            options.icon = "static/img/fe-48.png";
+        }
+        if (!options.title) {
+            options.title = "温馨提示";
+        }
+        chrome.notifications.create(notifyId, {
+            type: 'basic',
+            title: options.title,
+            iconUrl: chrome.runtime.getURL(options.icon),
+            message: options.message
+        });
+
+        FeJson.notifyTimeoutId = setTimeout(() => {
+            chrome.notifications.clear(notifyId);
+        }, parseInt(options.autoClose || 3000, 10));
+
+    };
+
     /**
      * 检测Google chrome服务能不能访问,在2s内检测心跳
      * @param success
@@ -51,13 +89,13 @@ export default (function () {
                     saveAs: true
                 }, function (downloadId) {
                     if (chrome.runtime.lastError) {
-                        alert('抱歉,下载失败!错误信息:' + chrome.runtime.lastError.message);
+                        notifyText('抱歉,下载失败!错误信息:' + chrome.runtime.lastError.message);
                     }
                 });
             }
         }, () => {
             // google不能正常访问
-            callback ? callback() : alert('抱歉,下载失败!');
+            callback ? callback() : notifyText('抱歉,下载失败!');
         });
 
     };
@@ -88,24 +126,22 @@ export default (function () {
         if (isWebStoreDetailPage) {
             // 如果是某个chrome extension的详情页面了,直接下载当前crx文件
             downloadCrxFileFromWebStoreDetailPage(() => {
-                alert('下载失败,可能是当前网络无法访问Google站点!');
+                notifyText('下载失败,可能是当前网络无法访问Google站点!');
             });
         } else {
             // 否则,下载FeHelper并分享出去
-            if (confirm('下载最新版【FeHelper.JSON】并分享给其他小伙伴儿,走你~~~')) {
-                let crxId = MSG_TYPE.STABLE_EXTENSION_ID;
-                let crxName = chrome.runtime.getManifest().name + '-latestVersion.crx';
+            let crxId = MSG_TYPE.STABLE_EXTENSION_ID;
+            let crxName = chrome.runtime.getManifest().name + '-latestVersion.crx';
 
-                downloadCrxFileByCrxId(crxId, crxName, () => {
-                    chrome.tabs.create({
-                        url: MSG_TYPE.DOWNLOAD_FROM_GITHUB
-                    });
+            downloadCrxFileByCrxId(crxId, crxName, () => {
+                chrome.tabs.create({
+                    url: MSG_TYPE.DOWNLOAD_FROM_GITHUB
                 });
-            }
+            });
         }
     };
 
     return {
         downloadCrx: _downloadCrx
     };
-})();
+})();

+ 7 - 7
apps/background/menu.js

@@ -43,7 +43,7 @@ export default (function () {
                     toolMap[tool].menuConfig[0].onClick = function (info, tab) {
                         chrome.scripting.executeScript({
                             target: {tabId:tab.id,allFrames:false},
-                            args: [info.selectionText],
+                            args: [info.selectionText || ''],
                             func: (text) => text
                         }, resp => chrome.DynamicToolRunner({
                             tool, withContent: resp[0].result
@@ -56,7 +56,7 @@ export default (function () {
                     toolMap[tool].menuConfig[0].onClick = function (info, tab) {
                         chrome.scripting.executeScript({
                             target: {tabId:tab.id,allFrames:false},
-                            args: [info.linkUrl || info.srcUrl || info.selectionText || info.pageUrl],
+                            args: [info.linkUrl || info.srcUrl || info.selectionText || info.pageUrl || ''],
                             func: (text) => text
                         }, resp => chrome.DynamicToolRunner({
                             tool, withContent: resp[0].result
@@ -69,7 +69,7 @@ export default (function () {
                     toolMap[tool].menuConfig[0].onClick = function (info, tab) {
                         chrome.scripting.executeScript({
                             target: {tabId:tab.id,allFrames:false},
-                            args: [info.linkUrl || info.srcUrl || info.selectionText || info.pageUrl || tab.url],
+                            args: [info.linkUrl || info.srcUrl || info.selectionText || info.pageUrl || tab.url || ''],
                             func: (text) => text
                         }, resp => chrome.DynamicToolRunner({
                             tool, withContent: resp[0].result
@@ -78,7 +78,7 @@ export default (function () {
                     toolMap[tool].menuConfig[1].onClick = function (info, tab) {
                         chrome.scripting.executeScript({
                             target: {tabId:tab.id,allFrames:false},
-                            args: [info.srcUrl],
+                            args: [info.srcUrl || ''],
                             func: (text) => {
                                 try {
                                     if (typeof window.qrcodeContentScript === 'function') {
@@ -118,7 +118,7 @@ export default (function () {
         menuList && menuList.forEach && menuList.forEach(menu => {
 
             // 确保每次创建出来的是一个新的主菜单,防止onClick事件冲突
-            let menuItemId = 'fhm_c' + escape(menu.text).replace(/\W/g,'')+(new Date()*1);
+            let menuItemId = 'fhm_c' + escape(menu.text).replace(/\W/g,'') + new Date*1;
 
             chrome.contextMenus.create({
                 id: menuItemId,
@@ -157,8 +157,8 @@ export default (function () {
      */
     let _initMenus = function () {
         _removeContextMenu(() => {
-            chrome.contextMenus.create({
-                id: FeJson.contextMenuId,
+            let id = chrome.contextMenus.create({
+                id: FeJson.contextMenuId ,
                 title: "FeHelper",
                 contexts: ['page', 'selection', 'editable', 'link', 'image'],
                 documentUrlPatterns: ['http://*/*', 'https://*/*', 'file://*/*']

+ 0 - 1
apps/background/tools.js

@@ -4,7 +4,6 @@ let toolMap = {
         tips: '页面自动检测并格式化、手动格式化、乱码解码、排序、BigInt、编辑、下载、皮肤定制等',
         contentScriptJs: true,
         contentScriptCss: true,
-        offloadForbid: true,
         menuConfig: [{
             icon: '⒥',
             text: 'JSON格式化',

+ 1 - 2
apps/options/index.html

@@ -109,8 +109,7 @@
 
                     <span class="ui-fl-r x-btn-box">
                         <button class="btn btn-success btn-xs" @click="install(tool,$event)" v-if="!fhTools[tool].installed">安装<span class="x-progress"></span></button>
-                        <button class="btn btn-danger btn-xs" @click="offLoad(tool,$event)" v-if="fhTools[tool].installed && !fhTools[tool].offloadForbid">卸载</button>
-                        <button class="btn btn-disabled btn-xs" v-if="fhTools[tool].installed && fhTools[tool].offloadForbid" title="系统预装,不可被卸载">卸载</button>
+                        <button class="btn btn-danger btn-xs" @click="offLoad(tool,$event)" v-if="fhTools[tool].installed">卸载</button>
 
                         <button class="btn btn-xs" :class="fhTools[tool].menu ? 'btn-warning' : 'btn-info'" @click="menuMgr(tool,$event)" v-if="fhTools[tool].installed">{{fhTools[tool].menu ? '移出' : '加入'}}右键</button>
                     </span>

+ 13 - 61
apps/options/index.js

@@ -31,7 +31,6 @@ new Vue({
 
         this.initData().then(() => {
             this.shortCut();
-            // this.remoteUpgrade();
             this.remoteHotFix();
         });
     },
@@ -82,6 +81,7 @@ new Vue({
         },
 
         sortTools: function (repaintMenu) {
+
             let tools = {};
             let installed = {};
             Object.keys(this.fhTools).forEach(tool => {
@@ -125,57 +125,10 @@ new Vue({
             this.sortTools(true);
         },
 
-        remoteUpgrade: function () {
-            // 从服务器同步最新添加的一些工具,实现远程更新,无需提审FeHelper
-            let remoteUpgradeUrl = `${this.manifest.homepage_url}/static/js/awesome.js?v=${new Date * 1}`;
-            fetch(remoteUpgradeUrl).then(resp => resp.text()).then(jsText => {
-                try {
-                    if (!jsText) return false;
-                    window.evalCore.getEvalInstance(window)(jsText);
-
-                    // 下面是新增的工具,允许部分key重置
-                    Object.keys(RemoteAwesome.newTools).forEach(tool => {
-                        if (!this.fhTools[tool]) {
-                            this.fhTools[tool] = RemoteAwesome.newTools[tool];
-                        } else {
-                            this.fhTools[tool].name = RemoteAwesome.newTools[tool].name || this.fhTools[tool].name;
-                            this.fhTools[tool].tips = RemoteAwesome.newTools[tool].tips || this.fhTools[tool].tips;
-                            this.fhTools[tool].menuConfig = RemoteAwesome.newTools[tool].menuConfig || this.fhTools[tool].menuConfig;
-                            if (RemoteAwesome.newTools[tool].contentScript !== undefined && this.fhTools[tool].contentScript !== RemoteAwesome.newTools[tool].contentScript) {
-                                this.fhTools[tool].contentScript = RemoteAwesome.newTools[tool].contentScript;
-                                this.fhTools[tool].upgrade = true;
-                            }
-                            if (RemoteAwesome.newTools[tool].contentScriptCss !== undefined && this.fhTools[tool].contentScriptCss !== RemoteAwesome.newTools[tool].contentScriptCss) {
-                                this.fhTools[tool].contentScriptCss = RemoteAwesome.newTools[tool].contentScriptCss;
-                                this.fhTools[tool].upgrade = true;
-                            }
-                            if (RemoteAwesome.newTools[tool].offloadForbid !== undefined && this.fhTools[tool].offloadForbid !== RemoteAwesome.newTools[tool].offloadForbid) {
-                                this.fhTools[tool].offloadForbid = RemoteAwesome.newTools[tool].offloadForbid;
-                                this.fhTools[tool].upgrade = true;
-                            }
-                        }
-                    });
-
-                    // 下面是需要下架掉的旧工具
-                    RemoteAwesome.removedTools.forEach(tool => {
-                        delete this.fhTools[tool];
-                    });
-
-                    // 页面强制刷新渲染
-                    this.$forceUpdate();
-
-                    // 结果存储到本地
-                    Awesome.CodeCacheMgr.set(jsText);
-                } catch (err) {
-                    console.log(err)
-                }
-            }).catch(error => console.log('远程更新失败:', error));
-        },
-
         remoteHotFix: function () {
             let hotfix = () => {
                 // 从服务器同步最新添加的一些工具,实现远程更新,无需提审FeHelper
-                let remoteHotfixUrl = `${this.manifest.homepage_url}/static/js/hotfix.js?v=${new Date().toLocaleDateString()}`;
+                let remoteHotfixUrl = `${this.manifest.homepage_url}/static/js/hotfix.js?time=${new Date().toLocaleDateString()}`;
                 fetch(remoteHotfixUrl).then(resp => resp.text()).then(jsText => {
                     try {
                         if (!jsText) return false;
@@ -198,18 +151,6 @@ new Vue({
         },
 
         save: function () {
-
-            Settings.setOptions(this.selectedOpts, () => {
-                // 保存成功提示,同时更新Menu
-                chrome.runtime.sendMessage({
-                    type: MSG_TYPE.DYNAMIC_ANY_THING,
-                    thing: 'save-options'
-                });
-
-                // 自动开关灯一次
-                DarkModeMgr.turnLightAuto();
-            });
-
             // 还要保存两个特殊的菜单配置项
             let settingAction = this.menuFeHelperSeting ? 'install' : 'offload';
             let crxAction = this.menuDownloadCrx ? 'install' : 'offload';
@@ -220,6 +161,17 @@ new Vue({
                         action: `menu-${crxAction}`,
                         showTips: false,
                         menuOnly: true
+                    }).then(() => {
+                        Settings.setOptions(this.selectedOpts, () => {
+                            // 保存成功提示,同时更新Menu
+                            chrome.runtime.sendMessage({
+                                type: MSG_TYPE.DYNAMIC_ANY_THING,
+                                thing: 'save-options'
+                            });
+
+                            // 自动开关灯一次
+                            DarkModeMgr.turnLightAuto();
+                        });
                     });
                 });
             });