UNPKG

@hocgin/browser-addone-kit

Version:
472 lines (469 loc) 34.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.serviceWorkerUpdate = exports.serviceWorkerInit = exports.reloadUserContextMenus = exports.ServiceWorkerOptions = void 0; var _index = require("../index"); var _i18n = require("../i18n"); var _queryString = require("query-string"); var _tbk = _interopRequireDefault(require("../wws/service/tbk")); var _storage = require("./storage"); var _lang = require("../lang"); var _types = require("../types"); var _hkit = require("@hocgin/hkit"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var defaultOptions = { projectId: "unknown", canLogin: true, provider: _hkit.Provider.Rabbit, getUpdateURL: function getUpdateURL(extensionId, projectId) { var queryStr = (0, _queryString.stringify)({ extensionId: extensionId, active: 'changelog', update: true }); return "https://logspot.hocgin.top/".concat(projectId, "?").concat(queryStr); }, getInstallURL: function getInstallURL(extensionId, projectId) { var queryStr = (0, _queryString.stringify)({ extensionId: extensionId, install: true }); return "https://logspot.hocgin.top/".concat(projectId, "?").concat(queryStr); }, getUninstallURL: function getUninstallURL(extensionId, projectId) { var queryStr = (0, _queryString.stringify)({ extensionId: extensionId, projectId: projectId, active: 'feedback', uninstall: true }); return "https://logspot.hocgin.top/".concat(projectId, "?").concat(queryStr); }, getLoginURL: function getLoginURL(extensionId, projectId) { var provider = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _hkit.Provider.Rabbit; if (provider === _hkit.Provider.Rabbit) { var queryStr = (0, _queryString.stringify)({ grantType: 'token', extensionId: extensionId, projectId: projectId, forward: true, delay: 0, redirectUrl: "https://sso.hocgin.top/addone/".concat(projectId, "/redirect") }); // https://sso.hocgin.top/login?grantType=token&delay=0&redirectUrl=https://sso.hocgin.top/addone/567gsvdbjb/redirect&forward=true return "https://sso.hocgin.top/login?".concat(queryStr); } return "https://sso.hocgin.com/?redirectUrl=http://sso.hocgin.com/addone/".concat(projectId, "/redirect"); }, getProURL: function getProURL(extensionId, projectId) { var queryStr = (0, _queryString.stringify)({ extensionId: extensionId, active: 'pro' }); return "https://logspot.hocgin.top/".concat(projectId, "?").concat(queryStr); } }; var ServiceWorkerOptions = exports.ServiceWorkerOptions = /*#__PURE__*/_createClass(function ServiceWorkerOptions() { _classCallCheck(this, ServiceWorkerOptions); _defineProperty(this, "projectId", void 0); // 是否有登陆按钮 _defineProperty(this, "canLogin", void 0); _defineProperty(this, "provider", void 0); _defineProperty(this, "getUpdateURL", void 0); _defineProperty(this, "getInstallURL", void 0); _defineProperty(this, "getUninstallURL", void 0); _defineProperty(this, "getLoginURL", void 0); _defineProperty(this, "getProURL", void 0); }); _defineProperty(ServiceWorkerOptions, "default", defaultOptions); var serviceWorkerInit = exports.serviceWorkerInit = function serviceWorkerInit(browser, options) { var _options$projectId, _options$provider, _browser$runtime$onMe, _browser$runtime$onIn, _browser$runtime$onIn2, _browser$contextMenus, _browser$contextMenus2, _browser$notification3, _browser$notification4; updateContextMenus(browser, options === null || options === void 0 ? void 0 : options.canLogin); // 更新项目编号 var projectId = (_options$projectId = options === null || options === void 0 ? void 0 : options.projectId) !== null && _options$projectId !== void 0 ? _options$projectId : 'unknown'; var provider = (_options$provider = options === null || options === void 0 ? void 0 : options.provider) !== null && _options$provider !== void 0 ? _options$provider : _hkit.Provider.Rabbit; (_browser$runtime$onMe = browser.runtime.onMessage) === null || _browser$runtime$onMe === void 0 || _browser$runtime$onMe.addListener( /*#__PURE__*/function () { var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(message, sender, sendResponse) { var _sender$tab; var tabId, _message$value; return _regeneratorRuntime().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: tabId = sender === null || sender === void 0 || (_sender$tab = sender.tab) === null || _sender$tab === void 0 ? void 0 : _sender$tab.id; if (!((message === null || message === void 0 ? void 0 : message.type) === _types.MessageType.RedirectUrl)) { _context.next = 5; break; } browser.kit.replaceTab(tabId, message === null || message === void 0 ? void 0 : message.value); _context.next = 23; break; case 5: if (!((message === null || message === void 0 ? void 0 : message.type) === _types.MessageType.TbkSync)) { _context.next = 10; break; } try { // TODO.加数据缓存, 异常取消下一次请求 _tbk.default.batchAsUrl((_message$value = message === null || message === void 0 ? void 0 : message.value) !== null && _message$value !== void 0 ? _message$value : []).then(sendResponse); } catch (e) { console.info('ignore', e); } return _context.abrupt("return", true); case 10: if (!(message.type === _types.MessageType.Logged)) { _context.next = 15; break; } _context.next = 13; return browser.kit.setUserToken(message === null || message === void 0 ? void 0 : message.value); case 13: _context.next = 23; break; case 15: if (!(message.type === _types.MessageType.Logout)) { _context.next = 20; break; } _context.next = 18; return browser.kit.logout(); case 18: _context.next = 23; break; case 20: if (!(message.type === _types.MessageType.CloseTab && browser !== null && browser !== void 0 && browser.tabs)) { _context.next = 23; break; } _context.next = 23; return browser.tabs.remove(tabId); case 23: case "end": return _context.stop(); } }, _callee); })); return function (_x, _x2, _x3) { return _ref.apply(this, arguments); }; }()); (_browser$runtime$onIn = browser.runtime.onInstalled) === null || _browser$runtime$onIn === void 0 || (_browser$runtime$onIn2 = _browser$runtime$onIn.addListener) === null || _browser$runtime$onIn2 === void 0 || _browser$runtime$onIn2.call(_browser$runtime$onIn, /*#__PURE__*/function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(details) { var manifest, extensionId, _options$getUninstall, uninstallURL, installURL, prevVersion, nextVersion, diffVersion, _browser$notification, _browser$notification2; return _regeneratorRuntime().wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: manifest = _index.WebExtension.runtime.getManifest(); extensionId = browser.kit.getExtensionId(); _context2.next = 4; return _storage.SysCloudKit.setProjectConfig({ projectId: projectId, provider: provider, proURL: options === null || options === void 0 ? void 0 : options.getProURL(extensionId, projectId), loginURL: options === null || options === void 0 ? void 0 : options.getLoginURL(extensionId, projectId, provider) }); case 4: // 如果有卸载地址 if (options !== null && options !== void 0 && options.getUninstallURL) { uninstallURL = options === null || options === void 0 || (_options$getUninstall = options.getUninstallURL) === null || _options$getUninstall === void 0 ? void 0 : _options$getUninstall.call(options, extensionId, projectId); if (uninstallURL) { browser.runtime.setUninstallURL(uninstallURL); } } // 如果是安装 if (details.reason === 'install') { // 第一次安装跳转到帮助界面 if (options !== null && options !== void 0 && options.getInstallURL) { installURL = options === null || options === void 0 ? void 0 : options.getInstallURL(extensionId, projectId); if (installURL) { browser.kit.openURL(installURL); } } } // 如果是版本更新 else if (details.reason === 'update') { prevVersion = details.previousVersion; nextVersion = manifest === null || manifest === void 0 ? void 0 : manifest.version; diffVersion = _lang.LangKit.diffVersion(prevVersion, nextVersion); // 大版本更新,弹窗询问是否查看更新内容 if (options !== null && options !== void 0 && options.getUpdateURL && (diffVersion.isLargeUpdate() || diffVersion.isMediumUpdate())) { (_browser$notification = browser.notifications) === null || _browser$notification === void 0 || (_browser$notification2 = _browser$notification.create) === null || _browser$notification2 === void 0 || _browser$notification2.call(_browser$notification, _types.NotificationId.UpdateNotify, { type: 'basic', iconUrl: _index.WebExtension.runtime.getURL('/logo.png'), title: _index.I18nKit.getMessageOrDefault(_i18n.LocaleKey.UpdateNotifyTitle, "版本更新"), message: _index.I18nKit.getMessageOrDefault(_i18n.LocaleKey.UpdateNotifyMessage, '🎉 发生较大的版本更新,点击查看') }, function (id) { return setTimeout(function () { return _index.WebExtension.notifications.clear(id, function () {}); }, 5000); }); } } case 6: case "end": return _context2.stop(); } }, _callee2); })); return function (_x4) { return _ref2.apply(this, arguments); }; }()); (_browser$contextMenus = browser.contextMenus) === null || _browser$contextMenus === void 0 || (_browser$contextMenus = _browser$contextMenus.onClicked) === null || _browser$contextMenus === void 0 || (_browser$contextMenus2 = _browser$contextMenus.addListener) === null || _browser$contextMenus2 === void 0 || _browser$contextMenus2.call(_browser$contextMenus, /*#__PURE__*/function () { var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(info, tab) { var extensionId, deviceId, querySearch, _querySearch, _querySearch2, _options$getLoginURL, loginURL; return _regeneratorRuntime().wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: extensionId = browser.kit.getExtensionId(); _context3.next = 3; return browser.kit.getDeviceId(); case 3: deviceId = _context3.sent; if (!(info.menuItemId === _types.ContextMenusId.Feedback)) { _context3.next = 9; break; } querySearch = { extensionId: extensionId, projectId: projectId, deviceId: deviceId, active: 'feedback' }; browser.kit.openURL("https://logspot.hocgin.top/".concat(projectId, "?").concat((0, _queryString.stringify)(querySearch))); _context3.next = 34; break; case 9: if (!(info.menuItemId === _types.ContextMenusId.Donate)) { _context3.next = 14; break; } _querySearch = { extensionId: extensionId, projectId: projectId, deviceId: deviceId }; browser.kit.openURL("https://logspot.hocgin.top/donate?".concat((0, _queryString.stringify)(_querySearch))); _context3.next = 34; break; case 14: if (!(info.menuItemId === _types.ContextMenusId.Help)) { _context3.next = 19; break; } _querySearch2 = { extensionId: extensionId, projectId: projectId, deviceId: deviceId }; browser.kit.openURL("https://logspot.hocgin.top/".concat(projectId, "?").concat((0, _queryString.stringify)(_querySearch2))); _context3.next = 34; break; case 19: if (!(info.menuItemId === _types.ContextMenusId.Recommend)) { _context3.next = 23; break; } browser.kit.openRecommendURL(); _context3.next = 34; break; case 23: if (!(info.menuItemId === _types.ContextMenusId.UserLogged)) { _context3.next = 26; break; } _context3.next = 34; break; case 26: if (!(info.menuItemId === _types.ContextMenusId.UserUnLogged && options !== null && options !== void 0 && options.getLoginURL)) { _context3.next = 31; break; } loginURL = options === null || options === void 0 || (_options$getLoginURL = options.getLoginURL) === null || _options$getLoginURL === void 0 ? void 0 : _options$getLoginURL.call(options, extensionId, projectId, provider); if (loginURL) { browser.kit.openURL(loginURL); } _context3.next = 34; break; case 31: if (!(info.menuItemId === _types.ContextMenusId.Logout)) { _context3.next = 34; break; } _context3.next = 34; return browser.kit.logout(); case 34: case "end": return _context3.stop(); } }, _callee3); })); return function (_x5, _x6) { return _ref3.apply(this, arguments); }; }()); (_browser$notification3 = browser.notifications) === null || _browser$notification3 === void 0 || (_browser$notification3 = _browser$notification3.onClicked) === null || _browser$notification3 === void 0 || (_browser$notification4 = _browser$notification3.addListener) === null || _browser$notification4 === void 0 || _browser$notification4.call(_browser$notification3, /*#__PURE__*/function () { var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(notificationId) { var _options$getUpdateURL, _extensionId, updateURL; return _regeneratorRuntime().wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: if (notificationId === _types.NotificationId.UpdateNotify && options !== null && options !== void 0 && options.getUpdateURL) { _extensionId = browser.kit.getExtensionId(); updateURL = (_options$getUpdateURL = options.getUpdateURL) === null || _options$getUpdateURL === void 0 ? void 0 : _options$getUpdateURL.call(options, _extensionId, projectId); if (updateURL) browser.kit.openURL(updateURL); } case 1: case "end": return _context4.stop(); } }, _callee4); })); return function (_x7) { return _ref4.apply(this, arguments); }; }()); }; var reloadUserContextMenus = exports.reloadUserContextMenus = /*#__PURE__*/function () { var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(browser) { var userInfo, isLogged; return _regeneratorRuntime().wrap(function _callee5$(_context5) { while (1) switch (_context5.prev = _context5.next) { case 0: _context5.next = 2; return browser.kit.getUserInfo(); case 2: userInfo = _context5.sent; isLogged = !!userInfo; try { if (isLogged) { browser.contextMenus.update(_types.ContextMenusId.UserUnLogged, { visible: false }); browser.contextMenus.update(_types.ContextMenusId.UserLogged, { visible: true, title: "\uD83D\uDE0A ".concat(userInfo === null || userInfo === void 0 ? void 0 : userInfo.nickname) }); } else { browser.contextMenus.update(_types.ContextMenusId.UserLogged, { visible: false }); browser.contextMenus.update(_types.ContextMenusId.UserUnLogged, { visible: true }); } } catch (e) { console.warn("reloadUserContextMenus \u5931\u8D25", e); } return _context5.abrupt("return", isLogged); case 6: case "end": return _context5.stop(); } }, _callee5); })); return function reloadUserContextMenus(_x8) { return _ref5.apply(this, arguments); }; }(); var serviceWorkerUpdate = exports.serviceWorkerUpdate = /*#__PURE__*/function () { var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(browser, options) { return _regeneratorRuntime().wrap(function _callee6$(_context6) { while (1) switch (_context6.prev = _context6.next) { case 0: _context6.prev = 0; if (!(options !== null && options !== void 0 && options.canLogin)) { _context6.next = 4; break; } _context6.next = 4; return reloadUserContextMenus(browser); case 4: _context6.next = 9; break; case 6: _context6.prev = 6; _context6.t0 = _context6["catch"](0); console.warn("serviceWorkerUpdate \u5931\u8D25", _context6.t0); case 9: case "end": return _context6.stop(); } }, _callee6, null, [[0, 6]]); })); return function serviceWorkerUpdate(_x9, _x10) { return _ref6.apply(this, arguments); }; }(); var updateContextMenus = function updateContextMenus(browser) { var canLogin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; try { browser.contextMenus.removeAll(); // 登陆状态 { var _browser$contextMenus3, _browser$contextMenus4, _browser$contextMenus5, _browser$contextMenus6, _browser$contextMenus7, _browser$contextMenus8; (_browser$contextMenus3 = browser.contextMenus) === null || _browser$contextMenus3 === void 0 || (_browser$contextMenus4 = _browser$contextMenus3.create) === null || _browser$contextMenus4 === void 0 || _browser$contextMenus4.call(_browser$contextMenus3, { id: _types.ContextMenusId.UserUnLogged, visible: canLogin, title: _index.I18nKit.getMessageOrDefault(_i18n.LocaleKey.UserUnLogged, "😑 未登录"), contexts: ["action"] }); (_browser$contextMenus5 = browser.contextMenus) === null || _browser$contextMenus5 === void 0 || (_browser$contextMenus6 = _browser$contextMenus5.create) === null || _browser$contextMenus6 === void 0 || _browser$contextMenus6.call(_browser$contextMenus5, { id: _types.ContextMenusId.UserLogged, visible: false, title: _index.I18nKit.getMessageOrDefault(_i18n.LocaleKey.UserInfo, "😊 账户信息"), contexts: ["action"] }); (_browser$contextMenus7 = browser.contextMenus) === null || _browser$contextMenus7 === void 0 || (_browser$contextMenus8 = _browser$contextMenus7.create) === null || _browser$contextMenus8 === void 0 || _browser$contextMenus8.call(_browser$contextMenus7, { id: _types.ContextMenusId.Logout, parentId: _types.ContextMenusId.UserLogged, title: _index.I18nKit.getMessageOrDefault(_i18n.LocaleKey.Logout, "退出登录"), contexts: ["action"] }); } // 关于作者 { var _browser$contextMenus9, _browser$contextMenus10, _browser$contextMenus11, _browser$contextMenus12, _browser$contextMenus13, _browser$contextMenus14, _browser$contextMenus15, _browser$contextMenus16, _browser$contextMenus17, _browser$contextMenus18; (_browser$contextMenus9 = browser.contextMenus) === null || _browser$contextMenus9 === void 0 || (_browser$contextMenus10 = _browser$contextMenus9.create) === null || _browser$contextMenus10 === void 0 || _browser$contextMenus10.call(_browser$contextMenus9, { id: _types.ContextMenusId.About, title: _index.I18nKit.getMessageOrDefault(_i18n.LocaleKey.About, "🎉 关于作者"), contexts: ["action"] }); (_browser$contextMenus11 = browser.contextMenus) === null || _browser$contextMenus11 === void 0 || (_browser$contextMenus12 = _browser$contextMenus11.create) === null || _browser$contextMenus12 === void 0 || _browser$contextMenus12.call(_browser$contextMenus11, { id: _types.ContextMenusId.Help, parentId: _types.ContextMenusId.About, title: _index.I18nKit.getMessageOrDefault(_i18n.LocaleKey.Help, "🎶 帮助文档"), contexts: ["action"] }); (_browser$contextMenus13 = browser.contextMenus) === null || _browser$contextMenus13 === void 0 || (_browser$contextMenus14 = _browser$contextMenus13.create) === null || _browser$contextMenus14 === void 0 || _browser$contextMenus14.call(_browser$contextMenus13, { id: _types.ContextMenusId.Feedback, parentId: _types.ContextMenusId.About, title: _index.I18nKit.getMessageOrDefault(_i18n.LocaleKey.Feedback, "🤔 意见反馈"), contexts: ["action"] }); (_browser$contextMenus15 = browser.contextMenus) === null || _browser$contextMenus15 === void 0 || (_browser$contextMenus16 = _browser$contextMenus15.create) === null || _browser$contextMenus16 === void 0 || _browser$contextMenus16.call(_browser$contextMenus15, { id: _types.ContextMenusId.Donate, parentId: _types.ContextMenusId.About, title: _index.I18nKit.getMessageOrDefault(_i18n.LocaleKey.Donate, "💕 鼓励作者"), contexts: ["action"] }); (_browser$contextMenus17 = browser.contextMenus) === null || _browser$contextMenus17 === void 0 || (_browser$contextMenus18 = _browser$contextMenus17.create) === null || _browser$contextMenus18 === void 0 || _browser$contextMenus18.call(_browser$contextMenus17, { id: _types.ContextMenusId.Recommend, parentId: _types.ContextMenusId.About, title: _index.I18nKit.getMessageOrDefault(_i18n.LocaleKey.Recommend, "🧵 更多作品"), contexts: ["action"] }); } } catch (e) { console.warn("updateContextMenus \u5931\u8D25", e); } };