preferences.mjs 899 B

123456789101112
  1. import {readFile,writeFile,rename,mkdir,rm} from 'node:fs/promises'
  2. import {join} from 'node:path'
  3. import {randomUUID} from 'node:crypto'
  4. export class DesktopPreferences {
  5. constructor(home){this.home=home;this.path=join(home,'desktop-preferences.json');this.value={backgroundAtLogin:false}}
  6. async load(){try{const value=JSON.parse(await readFile(this.path,'utf8'));this.value={backgroundAtLogin:value.backgroundAtLogin===true}}catch(error){if(error.code!=='ENOENT')throw new Error('无法读取桌面偏好设置')}return this.value}
  7. async setBackgroundAtLogin(enabled){
  8. const value={backgroundAtLogin:enabled===true},temporary=this.path+'.'+randomUUID()
  9. await mkdir(this.home,{recursive:true,mode:0o700})
  10. try{await writeFile(temporary,JSON.stringify(value),{flag:'wx',mode:0o600});await rename(temporary,this.path);this.value=value}finally{await rm(temporary,{force:true})}
  11. }
  12. }