f7cloud_client/apps/photos/js/FetchFilesMixin-Dh0XuSuT.chunk.mjs
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

3 lines
1.9 KiB
JavaScript

import{d as F,Q as d,J as f,t as l}from"./vue.runtime.esm-Ct3_M7aQ.chunk.mjs";import{l as r,p as g,al as u,aj as p,aq as m}from"./index-BMeBqg0T.chunk.mjs";import{g as w}from"./PhotoSearch-DdDD9daK.chunk.mjs";import{A as S}from"./AbortControllerMixin-KqbYNBDv.chunk.mjs";const R=F({name:"FetchFilesMixin",mixins:[S],data(){return{errorFetchingFiles:null,loadingFiles:!1,doneFetchingFiles:!1,fetchSemaphore:new m(1),fetchedFileIds:[]}},watch:{"$route.path":function(){this.resetFetchFilesState()}},methods:{async fetchFiles(h={},o,n=!1){if(this.doneFetchingFiles&&!n||this.loadingFiles)return[];const a=this.abortController.signal,c=await this.fetchSemaphore.acquire();try{this.errorFetchingFiles=null,this.loadingFiles=!0;const e=200;let i=await w({firstResult:this.fetchedFileIds.length,nbResults:e,...h,signal:a});i.length!==e&&(this.doneFetchingFiles=!0),o!==void 0&&(i=i.filter(o));const t=i.map(s=>s.fileid).filter(s=>!this.fetchedFileIds.includes(s));return this.fetchedFileIds.push(...t),this.$store.dispatch("appendFiles",i),r.debug(`[FetchFilesMixin] Fetched ${t.length} new files: `,{fileIds:t}),t}catch(e){if(e.response?.status===404){const i=g.state.userConfig.photosSourceFolders;for(const t of i)if(e.response?.data?.match(`File with name /${t} could not be located`)!==null){r.debug(`The ${t} folder does not exist, creating it.`);try{return await u.createDirectory(d(f,t)),this.resetFetchFilesState(),[]}catch(s){this.errorFetchingFiles=404,r.error("Fail to create source directory",{error:s})}}}else{if(e instanceof DOMException&&e.code===e.ABORT_ERR)return[];this.errorFetchingFiles=e}p(l("photos","Error fetching files")),r.error(l("photos","Error fetching files"),{error:e})}finally{this.loadingFiles=!1,this.fetchSemaphore.release(c)}return[]},resetFetchFilesState(){this.abortPendingRequest(),this.doneFetchingFiles=!1,this.errorFetchingFiles=null,this.loadingFiles=!1,this.fetchedFileIds=[]}}});export{R as F};
//# sourceMappingURL=FetchFilesMixin-Dh0XuSuT.chunk.mjs.map