UNPKG

@enjoys/react-api

Version:
1 lines 1.08 kB
import {useState}from'react';var r=class{constructor(){this.rootHandle=null;}async requestAccess(){this.rootHandle=await window.showDirectoryPicker();}async fileExists(e){if(!this.rootHandle)throw new Error("OFS not initialized");try{return await this.rootHandle.getFileHandle(e,{create:!1}),!0}catch{return false}}async isAllowed(){return this.rootHandle?await this.rootHandle.queryPermission({mode:"readwrite"})==="granted":false}async readFile(e){return await(await(await this.getFileHandle(e)).getFile()).text()}async writeFile(e,t){let s=await(await this.getFileHandle(e,true)).createWritable();await s.write(t),await s.close();}async deleteFile(e){await this.rootHandle?.removeEntry(e);}async getFileHandle(e,t=false){if(!this.rootHandle)throw new Error("OFS not initialized");return await this.rootHandle.getFileHandle(e,{create:t})}};function w(){let[i]=useState(()=>new r),[e,t]=useState(false);return {ofs:i,ready:e,requestAccess:async()=>{await i.requestAccess(),t(true);},checkPermission:async()=>{let n=await i.isAllowed();t(n);}}}export{r as OFSManager,w as useOFS};