{"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 = {}): Promise {\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\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t${mime}\n\t\t\n\t`, '')\n\n\tconst eqFavorites = options.onlyFavorites\n\t\t? `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t`\n\t\t: ''\n\n\tconst onThisDay = options.onThisDay\n\t\t? `${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 `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${start.valueOf() / 1000}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${end.valueOf() / 1000}\n\t\t\t\t\n\t\t\t`\n\t\t\t}).join('\\n')}`\n\t\t: ''\n\n\tconst sourceFolders = store.state.userConfig.photosSourceFolders\n\t\t.map((folder) => `\n\t\t\t\n\t\t\t\t${joinPaths(defaultRootPath, folder)}\n\t\t\t\tinfinity\n\t\t\t`)\n\t\t.join('\\n')\n\n\toptions.data = `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t${getDefaultDavProps()}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t${sourceFolders}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${orMime}\n\t\t\t\t\t\t\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\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t${options.nbResults}\n\t\t\t\t\t${options.firstResult}\n\t\t\t\t\n\t\t\t\n\t\t`\n\n\toptions.details = true\n\n\tconst response = await davClient.search('/', options) as ResponseDataDetailed\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"}