main.js 995 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { defineStore } from 'pinia';
  2. import defu from 'defu';
  3. import browser from 'webextension-polyfill';
  4. import deepmerge from 'lodash.merge';
  5. export const useStore = defineStore('main', {
  6. storageMap: {
  7. settings: 'settings',
  8. },
  9. state: () => ({
  10. copiedEls: {
  11. edges: [],
  12. nodes: [],
  13. },
  14. settings: {
  15. locale: 'en',
  16. deleteLogAfter: 30,
  17. logsLimit: 1000,
  18. editor: {
  19. minZoom: 0.3,
  20. maxZoom: 1.3,
  21. arrow: true,
  22. snapToGrid: false,
  23. lineType: 'default',
  24. snapGrid: { 0: 15, 1: 15 },
  25. },
  26. },
  27. retrieved: true,
  28. }),
  29. actions: {
  30. loadSettings() {
  31. return browser.storage.local.get('settings').then(({ settings }) => {
  32. this.settings = defu(settings || {}, this.settings);
  33. this.retrieved = true;
  34. });
  35. },
  36. async updateSettings(settings = {}) {
  37. this.settings = deepmerge(this.settings, settings);
  38. await this.saveToStorage('settings');
  39. },
  40. },
  41. });