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

1 line
6.3 KiB
XML

{"version":3,"file":"PhotoSearch-DdDD9daK.chunk.mjs","sources":["../src/services/PhotoSearch.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { File } from '@nextcloud/files'\nimport type { ResponseDataDetailed, SearchOptions, SearchResult } from 'webdav'\n\nimport { defaultRootPath, resultToNode } from '@nextcloud/files/dav'\nimport moment from '@nextcloud/moment'\nimport { joinPaths } from '@nextcloud/paths'\nimport store from '../store/index.js'\nimport { allMimes } from './AllowedMimes.js'\nimport { davClient } from './DavClient.ts'\nimport { getDefaultDavProps } from './DavRequest.ts'\n\nexport type PhotoSearchOptions = SearchOptions & {\n\tfirstResult: number // Index of the first result that we want (starts at 0). Default: 0.\n\tnbResults: number // The number of file to fetch. Default: 200.\n\tmimesType: string[] // Mime type of the files. Default: allMimes.\n\tfull: boolean // get full data of the files. Default: false.\n\tonThisDay: boolean // get only items from this day of year. Default: false.\n\tonlyFavorites: boolean // get only favorite items. Default: false.\n\textraFilters: string // a raw dav string that will be added in the 'where' clause. Default: ''.\n}\n\n/**\n * List files from a folder and filter out unwanted mimes\n *\n * @param _options\n */\nexport default async function(_options: Partial<PhotoSearchOptions> = {}): Promise<File[]> {\n\t// default function options\n\tconst options: PhotoSearchOptions = {\n\t\tfirstResult: 0,\n\t\tnbResults: 200,\n\t\tmimesType: allMimes,\n\t\tonThisDay: false,\n\t\tonlyFavorites: false,\n\t\tfull: false,\n\t\textraFilters: '',\n\t\t..._options,\n\t}\n\n\t// generating the search or condition\n\t// based on the allowed mimetypes\n\tconst orMime = options.mimesType.reduce((str, mime) => `${str}\n\t\t<d:eq>\n\t\t\t<d:prop>\n\t\t\t\t<d:getcontenttype/>\n\t\t\t</d:prop>\n\t\t\t<d:literal>${mime}</d:literal>\n\t\t</d:eq>\n\t`, '')\n\n\tconst eqFavorites = options.onlyFavorites\n\t\t? `<d:eq>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<oc:favorite/>\n\t\t\t\t</d:prop>\n\t\t\t\t<d:literal>1</d:literal>\n\t\t\t</d:eq>`\n\t\t: ''\n\n\tconst onThisDay = options.onThisDay\n\t\t? `<d:or>${Array(20).fill(1)\n\t\t\t.map((_, years) => {\n\t\t\t\tconst start = moment(Date.now()).startOf('day').subtract(3, 'd').subtract(years + 1, 'y')\n\t\t\t\tconst end = moment(Date.now()).endOf('day').add(3, 'd').subtract(years + 1, 'y')\n\t\t\t\treturn `<d:and>\n\t\t\t\t<d:gt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<nc:metadata-photos-original_date_time/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${start.valueOf() / 1000}</d:literal>\n\t\t\t\t</d:gt>\n\t\t\t\t<d:lt>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t<nc:metadata-photos-original_date_time/>\n\t\t\t\t\t</d:prop>\n\t\t\t\t\t<d:literal>${end.valueOf() / 1000}</d:literal>\n\t\t\t\t</d:lt>\n\t\t\t</d:and>`\n\t\t\t}).join('\\n')}</d:or>`\n\t\t: ''\n\n\tconst sourceFolders = store.state.userConfig.photosSourceFolders\n\t\t.map((folder) => `\n\t\t\t<d:scope>\n\t\t\t\t<d:href>${joinPaths(defaultRootPath, folder)}</d:href>\n\t\t\t\t<d:depth>infinity</d:depth>\n\t\t\t</d:scope>`)\n\t\t.join('\\n')\n\n\toptions.data = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\t\t<d:searchrequest xmlns:d=\"DAV:\"\n\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\txmlns:ns=\"https://github.com/icewind1991/SearchDAV/ns\"\n\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t<d:basicsearch>\n\t\t\t\t<d:select>\n\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t${getDefaultDavProps()}\n\t\t\t\t\t</d:prop>\n\t\t\t\t</d:select>\n\t\t\t\t<d:from>\n\t\t\t\t\t${sourceFolders}\n\t\t\t\t</d:from>\n\t\t\t\t<d:where>\n\t\t\t\t\t<d:and>\n\t\t\t\t\t\t<d:or>\n\t\t\t\t\t\t\t${orMime}\n\t\t\t\t\t\t</d:or>\n\t\t\t\t\t\t${eqFavorites}\n\t\t\t\t\t\t${onThisDay}\n\t\t\t\t\t\t${options.extraFilters}\n\t\t\t\t\t</d:and>\n\t\t\t\t</d:where>\n\t\t\t\t<d:orderby>\n\t\t\t\t\t<d:order>\n\t\t\t\t\t\t<d:prop><nc:metadata-photos-original_date_time/></d:prop>\n\t\t\t\t\t\t<d:descending/>\n\t\t\t\t\t</d:order>\n\t\t\t\t\t<d:order>\n\t\t\t\t\t\t<d:prop><d:getlastmodified/></d:prop>\n\t\t\t\t\t\t<d:descending/>\n\t\t\t\t\t</d:order>\n\t\t\t\t</d:orderby>\n\t\t\t\t<d:limit>\n\t\t\t\t\t<d:nresults>${options.nbResults}</d:nresults>\n\t\t\t\t\t<ns:firstresult>${options.firstResult}</ns:firstresult>\n\t\t\t\t</d:limit>\n\t\t\t</d:basicsearch>\n\t\t</d:searchrequest>`\n\n\toptions.details = true\n\n\tconst response = await davClient.search('/', options) as ResponseDataDetailed<SearchResult>\n\n\treturn response.data.results\n\t\t.map((data) => {\n\t\t\tdata.filename = data.filename.replace(/^\\/remote.php\\/dav/, '')\n\t\t\treturn data\n\t\t})\n\t\t.map((data) => resultToNode(data) as File)\n}\n"],"names":["getPhotos","_options","options","allMimes","orMime","str","mime","eqFavorites","onThisDay","_","years","start","moment","end","sourceFolders","store","folder","joinPaths","defaultRootPath","getDefaultDavProps","davClient","data","resultToNode"],"mappings":"uLA+B8B,eAAAA,EAAAC,EAAwC,CAAA,EAAqB,CAE1F,MAAMC,EAA8B,CACnC,YAAa,EACb,UAAW,IACX,UAAWC,EACX,UAAW,GACX,cAAe,GACf,KAAM,GACN,aAAc,GACd,GAAGF,CACJ,EAIMG,EAASF,EAAQ,UAAU,OAAO,CAACG,EAAKC,IAAS,GAAGD,CAAG;AAAA;AAAA;AAAA;AAAA;AAAA,gBAK9CC,CAAI;AAAA;AAAA,GAEhB,EAAE,EAECC,EAAcL,EAAQ,cACzB;AAAA;AAAA;AAAA;AAAA;AAAA,YAMA,GAEGM,EAAYN,EAAQ,UACvB,SAAS,MAAM,EAAE,EAAE,KAAK,CAAC,EACzB,IAAI,CAACO,EAAGC,IAAU,CAClB,MAAMC,EAAQC,EAAO,KAAK,IAAK,CAAA,EAAE,QAAQ,KAAK,EAAE,SAAS,EAAG,GAAG,EAAE,SAASF,EAAQ,EAAG,GAAG,EAClFG,EAAMD,EAAO,KAAK,IAAK,CAAA,EAAE,MAAM,KAAK,EAAE,IAAI,EAAG,GAAG,EAAE,SAASF,EAAQ,EAAG,GAAG,EACxE,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAKOC,EAAM,QAAQ,EAAI,GAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMtBE,EAAI,QAAQ,EAAI,GAAI;AAAA;AAAA,YAGlC,CAAA,EAAE,KAAK;AAAA,CAAI,CAAC,UACZ,GAEGC,EAAgBC,EAAM,MAAM,WAAW,oBAC3C,IAAKC,GAAW;AAAA;AAAA,cAELC,EAAUC,EAAiBF,CAAM,CAAC;AAAA;AAAA,cAElC,EACX,KAAK;AAAA,CAAI,EAEX,OAAAd,EAAQ,KAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASRiB,EAAoB,CAAA;AAAA;AAAA;AAAA;AAAA,OAIrBL,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA,SAKXV,CAAM;AAAA;AAAA,QAEPG,CAAW;AAAA,QACXC,CAAS;AAAA,QACTN,EAAQ,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAcTA,EAAQ,SAAS;AAAA,uBACbA,EAAQ,WAAW;AAAA;AAAA;AAAA,sBAKzCA,EAAQ,QAAU,IAED,MAAMkB,EAAU,OAAO,IAAKlB,CAAO,GAEpC,KAAK,QACnB,IAAKmB,IACLA,EAAK,SAAWA,EAAK,SAAS,QAAQ,qBAAsB,EAAE,EACvDA,EACP,EACA,IAAKA,GAASC,EAAaD,CAAI,CAAS,CAC3C"}