pref.js 928 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /**
  2. * @author oldj
  3. * @blog http://oldj.net
  4. */
  5. 'use strict'
  6. const fs = require('fs')
  7. const paths = require('./paths')
  8. const io = require('./io')
  9. let is_loaded
  10. let data = {}
  11. let _t
  12. function load () {
  13. if (io.isFile(paths.preference_path)) {
  14. let cnt = fs.readFileSync(paths.preference_path, 'utf-8')
  15. try {
  16. data = JSON.parse(cnt)
  17. } catch (e) {
  18. console.log(e)
  19. }
  20. }
  21. return data
  22. }
  23. function get (key, default_value = null) {
  24. if (!is_loaded) load()
  25. return key in data ? data[key] : default_value
  26. }
  27. function set (key, value, callback) {
  28. clearTimeout(_t)
  29. if (!is_loaded) load()
  30. data[key] = value
  31. _t = setTimeout(() => {
  32. fs.writeFile(paths.preference_path, JSON.stringify(data), 'utf-8', (err) => {
  33. if (err) {
  34. console.log(err)
  35. }
  36. typeof callback === 'function' && callback(err)
  37. })
  38. }, 100)
  39. }
  40. module.exports = {
  41. load: load,
  42. get: get,
  43. set: set
  44. }