index.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /**
  2. * FeHelper Options Page
  3. */
  4. let Settings = Tarp.require('./settings');
  5. new Vue({
  6. el: '#pageContainer',
  7. data: {
  8. defaultKey: 'Alt+Shift+F',
  9. selectedOpts: [],
  10. maxJsonKeysNumber: 0,
  11. auto_text_decode: false,
  12. manifest: {},
  13. menuOpts: {},
  14. selectedMenu: [],
  15. defaultMenu: Settings.getDefaultContextMenus()
  16. },
  17. created: function () {
  18. // 获取当前热键
  19. chrome.commands && chrome.commands.getAll && chrome.commands.getAll(keys => {
  20. keys.some(key => {
  21. if (key.name === '_execute_browser_action' && key.shortcut) {
  22. this.defaultKey = key.shortcut;
  23. return true;
  24. }
  25. });
  26. });
  27. Settings.getOptions((opts) => {
  28. this.selectedOpts = Object.keys(opts).filter(k => {
  29. if (typeof(opts[k]) === 'string' && /^MENU_/.test(k)) {
  30. this.selectedMenu.push(k);
  31. return false;
  32. }
  33. return typeof(opts[k]) === 'string' && !['MAX_JSON_KEYS_NUMBER', 'AUTO_TEXT_DECODE'].includes(k)
  34. });
  35. this.maxJsonKeysNumber = opts['MAX_JSON_KEYS_NUMBER'];
  36. this.auto_text_decode = opts['AUTO_TEXT_DECODE'] === 'true';
  37. // 如果还没设置过menu,就用默认的了
  38. Settings.askMenuSavedOrNot(saved => {
  39. if (!saved) {
  40. this.selectedMenu = this.defaultMenu;
  41. }
  42. });
  43. });
  44. this.manifest = chrome.runtime.getManifest();
  45. this.menuOpts = Settings.getMenuOpts();
  46. },
  47. methods: {
  48. close: () => {
  49. chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {
  50. chrome.tabs.remove(tabs[0].id);
  51. });
  52. },
  53. cancel: function () {
  54. this.close();
  55. },
  56. save: function () {
  57. Settings.setOptions(this.selectedOpts.concat([
  58. {MAX_JSON_KEYS_NUMBER: parseInt(this.maxJsonKeysNumber, 10)},
  59. {AUTO_TEXT_DECODE: String(this.auto_text_decode)},
  60. ]).concat(this.selectedMenu));
  61. setTimeout(() => {
  62. this.close();
  63. }, 1000);
  64. },
  65. setShortcuts: function () {
  66. chrome.tabs.create({
  67. url: 'chrome://extensions/shortcuts'
  68. });
  69. return false;
  70. }
  71. }
  72. });