$Boolean

Handles persistent storage of boolean values.

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.cn-greasyfork.org/scripts/449472/1081058/%24Boolean.js

  1. // ==UserScript==
  2. // @name $Boolean
  3. // @author Callum Latham <callumtylerlatham@gmail.com>
  4. // @exclude *
  5. // @description Handles persistent storage of boolean values.
  6. // ==/UserScript==
  7.  
  8. class $Boolean {
  9. constructor(KEY, DEFAULT = true) {
  10. // PRIVATE STATE
  11.  
  12. let value;
  13.  
  14. // PRIVATE FUNCTIONS
  15.  
  16. const getError = (message, error) => {
  17. if (error) {
  18. console.error(error);
  19. }
  20.  
  21. return new Error(`[$Toggle] ${message}`);
  22. };
  23.  
  24. const set = (_value) => {
  25. value = _value;
  26.  
  27. if (typeof GM.setValue !== 'function') {
  28. return Promise.reject(getError('The GM.setValue permission is required to store data.'));
  29. }
  30.  
  31. return GM.setValue(KEY, value);
  32. };
  33.  
  34. // PUBLIC FUNCTIONS
  35.  
  36. this.init = () => {
  37. if (typeof GM.getValue !== 'function') {
  38. return Promise.reject(getError('The GM.getValue permission is required to retrieve data.'));
  39. }
  40.  
  41. return GM.getValue(KEY, DEFAULT)
  42. .then(set);
  43. };
  44.  
  45. this.toggle = () => set(!value);
  46.  
  47. this.get = () => value;
  48. };
  49. }