1 line
11 KiB
Plaintext
1 line
11 KiB
Plaintext
{"version":3,"file":"SharedAlbumContent-9P45Z4uh.chunk.mjs","sources":["../src/views/SharedAlbumContent.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<div>\n\t\t<CollectionContent\n\t\t\tv-if=\"true\"\n\t\t\tref=\"collectionContent\"\n\t\t\t:collection=\"album\"\n\t\t\t:collection-file-ids=\"albumFileIds\"\n\t\t\t:loading=\"loadingCollection || loadingCollectionFiles\"\n\t\t\t:error=\"errorFetchingCollection || errorFetchingCollectionFiles\">\n\t\t\t<!-- Header -->\n\t\t\t<HeaderNavigation\n\t\t\t\tkey=\"navigation\"\n\t\t\t\tslot=\"header\"\n\t\t\t\tslot-scope=\"{ selectedFileIds, resetSelection }\"\n\t\t\t\t:loading=\"loadingCollectionFiles\"\n\t\t\t\t:params=\"{ albumName }\"\n\t\t\t\t:path=\"'/' + albumName\"\n\t\t\t\t:title=\"albumOriginalName\"\n\t\t\t\t@refresh=\"fetchAlbumContent\">\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"album !== undefined && album.attributes.location !== ''\"\n\t\t\t\t\tslot=\"subtitle\"\n\t\t\t\t\tclass=\"album__location\">\n\t\t\t\t\t<MapMarkerOutline />{{ album.attributes.location }} ⸱ {{ t('photos', 'Shared by') }} \n\t\t\t\t\t<NcUserBubble\n\t\t\t\t\t\t:display-name=\"album.attributes.collaborators[0].label\"\n\t\t\t\t\t\t:user=\"album.attributes.collaborators[0].id\" />\n\t\t\t\t</div>\n\n\t\t\t\t<template slot=\"default\">\n\t\t\t\t\t<NcButton\n\t\t\t\t\t\tv-if=\"selectedFileIds.length > 0\"\n\t\t\t\t\t\t:aria-label=\"t('photos', 'Unselect all')\"\n\t\t\t\t\t\t@click=\"resetSelection\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Close />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('photos', 'Unselect all') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</template>\n\n\t\t\t\t<template v-if=\"album !== undefined\" slot=\"right\">\n\t\t\t\t\t<NcButton\n\t\t\t\t\t\tv-if=\"album.attributes.nbItems !== 0\"\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t:aria-label=\"t('photos', 'Add photos to this album')\"\n\t\t\t\t\t\t@click=\"showAddPhotosModal = true\">\n\t\t\t\t\t\t<Plus slot=\"icon\" />\n\t\t\t\t\t\t{{ t('photos', \"Add\") }}\n\t\t\t\t\t</NcButton>\n\n\t\t\t\t\t<NcActions :force-menu=\"true\" :aria-label=\"t('photos', 'Open actions menu')\">\n\t\t\t\t\t\t<!-- TODO: enable download on shared albums -->\n\t\t\t\t\t\t<!-- <ActionDownload v-if=\"albumFileIds.length > 0\"\n\t\t\t\t\t\t\t:selected-file-ids=\"albumFileIds\"\n\t\t\t\t\t\t\t:title=\"t('photos', 'Download all files in album')\">\n\t\t\t\t\t\t\t<DownloadMultiple slot=\"icon\" />\n\t\t\t\t\t\t</ActionDownload> -->\n\n\t\t\t\t\t\t<NcActionButton\n\t\t\t\t\t\t\tv-if=\"album.attributes.collaborators[0].type === collaboratorTypes.User\"\n\t\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t\t@click=\"handleDeleteAlbum\">\n\t\t\t\t\t\t\t{{ t('photos', 'Delete album') }}\n\t\t\t\t\t\t\t<DeleteOutline slot=\"icon\" />\n\t\t\t\t\t\t</NcActionButton>\n\n\t\t\t\t\t\t<template v-if=\"selectedFileIds.length > 0\">\n\t\t\t\t\t\t\t<NcActionSeparator />\n\n\t\t\t\t\t\t\t<!-- TODO: enable download on shared albums -->\n\t\t\t\t\t\t\t<!-- <ActionDownload :selected-file-ids=\"selectedFileIds\" :title=\"t('photos', 'Download selected files')\">\n\t\t\t\t\t\t\t\t<Download slot=\"icon\" />\n\t\t\t\t\t\t\t</ActionDownload> -->\n\n\t\t\t\t\t\t\t<NcActionButton\n\t\t\t\t\t\t\t\tv-if=\"removableSelectedFiles.length !== 0\"\n\t\t\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t\t\t@click=\"handleRemoveFilesFromAlbum(removableSelectedFiles)\">\n\t\t\t\t\t\t\t\t{{ t('photos', 'Remove selection from album') }}\n\t\t\t\t\t\t\t\t<Close slot=\"icon\" />\n\t\t\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcActions>\n\t\t\t\t</template>\n\t\t\t</HeaderNavigation>\n\n\t\t\t<!-- No content -->\n\t\t\t<NcEmptyContent\n\t\t\t\tv-if=\"album !== undefined && album.attributes.nbItems === 0 && !(loadingCollectionFiles || loadingCollection)\"\n\t\t\t\tslot=\"empty-content\"\n\t\t\t\t:name=\"t('photos', 'This album does not have any photos or videos yet!')\"\n\t\t\t\tclass=\"album__empty\">\n\t\t\t\t<ImagePlusOutline slot=\"icon\" />\n\n\t\t\t\t<NcButton\n\t\t\t\t\tslot=\"action\"\n\t\t\t\t\tclass=\"album__empty__button\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t:aria-label=\"t('photos', 'Add photos to this album')\"\n\t\t\t\t\t@click=\"showAddPhotosModal = true\">\n\t\t\t\t\t<Plus slot=\"icon\" />\n\t\t\t\t\t{{ t('photos', \"Add\") }}\n\t\t\t\t</NcButton>\n\t\t\t</NcEmptyContent>\n\t\t</CollectionContent>\n\n\t\t<PhotosPicker\n\t\t\tv-if=\"album !== undefined\"\n\t\t\t:open.sync=\"showAddPhotosModal\"\n\t\t\t:name=\"t('photos', 'Add photos to {albumName}', { albumName: albumOriginalName })\"\n\t\t\t:destination=\"album.basename\"\n\t\t\t:blacklist-ids=\"albumFileIds\"\n\t\t\t:loading=\"loadingAddFilesToAlbum\"\n\t\t\t@files-picked=\"handleFilesPicked\" />\n\t</div>\n</template>\n\n<script lang='ts'>\nimport { translate } from '@nextcloud/l10n'\nimport { ShareType } from '@nextcloud/sharing'\nimport { useIsMobile } from '@nextcloud/vue/composables/useIsMobile'\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport NcActions from '@nextcloud/vue/components/NcActions'\nimport NcActionSeparator from '@nextcloud/vue/components/NcActionSeparator'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcUserBubble from '@nextcloud/vue/components/NcUserBubble'\nimport Close from 'vue-material-design-icons/Close.vue'\nimport ImagePlusOutline from 'vue-material-design-icons/ImagePlusOutline.vue'\nimport MapMarkerOutline from 'vue-material-design-icons/MapMarkerOutline.vue'\nimport Plus from 'vue-material-design-icons/Plus.vue'\nimport DeleteOutline from 'vue-material-design-icons/TrashCanOutline.vue'\n// import Download from 'vue-material-design-icons/TrayArrowDown.vue'\n// import DownloadMultiple from 'vue-material-design-icons/DownloadMultiple.vue'\nimport CollectionContent from '../components/Collection/CollectionContent.vue'\nimport HeaderNavigation from '../components/HeaderNavigation.vue'\n// import ActionDownload from '../components/Actions/ActionDownload.vue'\nimport PhotosPicker from '../components/PhotosPicker.vue'\nimport FetchCollectionContentMixin from '../mixins/FetchCollectionContentMixin.js'\nimport FetchFilesMixin from '../mixins/FetchFilesMixin.js'\nimport { albumFilesExtraProps, albumsExtraProps } from '../store/albums.ts'\n\nexport default {\n\tname: 'SharedAlbumContent',\n\tcomponents: {\n\t\tMapMarkerOutline,\n\t\tPlus,\n\t\tClose,\n\t\t// Download,\n\t\t// DownloadMultiple,\n\t\tDeleteOutline,\n\t\tImagePlusOutline,\n\t\tNcEmptyContent,\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionSeparator,\n\t\tNcButton,\n\t\tNcUserBubble,\n\t\tCollectionContent,\n\t\t// ActionDownload,\n\t\tPhotosPicker,\n\t\tHeaderNavigation,\n\t},\n\n\tmixins: [\n\t\tFetchCollectionContentMixin,\n\t\tFetchFilesMixin,\n\t],\n\n\tprops: {\n\t\talbumName: {\n\t\t\ttype: String,\n\t\t\tdefault: '/',\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst isMobile = useIsMobile()\n\t\treturn {\n\t\t\tisMobile,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowAddPhotosModal: false,\n\t\t\tloadingCount: 0,\n\t\t\tloadingAddFilesToAlbum: false,\n\t\t\tcollaboratorTypes: ShareType,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tfiles() {\n\t\t\treturn this.$store.state.files.files\n\t\t},\n\n\t\talbum() {\n\t\t\treturn this.$store.getters.getSharedAlbum(this.albumName)\n\t\t},\n\n\t\talbumFileIds() {\n\t\t\treturn this.$store.getters.getSharedAlbumFiles(this.albumName)\n\t\t},\n\n\t\talbumOriginalName(): string {\n\t\t\treturn this.albumName.replace(new RegExp(`\\\\(${this.album?.attributes.collaborators[0].id}\\\\)$`), '')\n\t\t},\n\n\t\talbumFileName(): string {\n\t\t\treturn this.$store.getters.getSharedAlbumName(this.albumName)\n\t\t},\n\n\t\tremovableSelectedFiles() {\n\t\t\treturn (this.$refs.collectionContent?.selectedFileIds as string[])\n\t\t\t\t.map((fileId) => this.$store.state.files.files[fileId])\n\t\t\t\t.filter((file) => file.attributes['photos-album-file-origin'] !== 'filters')\n\t\t\t\t.map((file) => file.fileid.toString())\n\t\t},\n\t},\n\n\tasync mounted() {\n\t\tthis.fetchAlbum()\n\t\tthis.fetchAlbumContent()\n\t},\n\n\tmethods: {\n\t\tasync fetchAlbum() {\n\t\t\tawait this.fetchCollection(\n\t\t\t\tthis.albumFileName,\n\t\t\t\talbumsExtraProps,\n\t\t\t)\n\t\t},\n\n\t\tasync fetchAlbumContent() {\n\t\t\tawait this.fetchCollectionFiles(this.albumFileName, albumFilesExtraProps)\n\t\t},\n\n\t\tasync handleFilesPicked(fileIds) {\n\t\t\tthis.showAddPhotosModal = false\n\t\t\tawait this.$store.dispatch('addFilesToCollection', { collectionFileName: this.album.root + this.album.path, fileIdsToAdd: fileIds })\n\t\t\t// Re-fetch album content to have the proper filenames.\n\t\t\tawait this.fetchAlbumContent()\n\t\t},\n\n\t\tasync handleRemoveFilesFromAlbum(fileIds: string[]) {\n\t\t\tthis.$refs.collectionContent?.onUncheckFiles(fileIds)\n\t\t\tawait this.$store.dispatch('removeFilesFromCollection', { collectionFileName: this.album.root + this.album.path, fileIdsToRemove: fileIds })\n\t\t},\n\n\t\tasync handleDeleteAlbum() {\n\t\t\tawait this.$store.dispatch('deleteCollection', { collectionFileName: this.album.root + this.album.path })\n\t\t\tthis.$router.push('/sharedalbums')\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.album {\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__title {\n\t\twidth: 100%;\n\t}\n\n\t&__name {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&__location {\n\t\tmargin-inline-start: -4px;\n\t\tdisplay: flex;\n\t\tcolor: var(--color-text-lighter);\n\t}\n}\n</style>\n"],"names":["_sfc_main","MapMarkerOutline","Plus","Close","DeleteOutline","ImagePlusOutline","NcEmptyContent","NcActions","NcActionButton","NcActionSeparator","NcButton","NcUserBubble","CollectionContent","PhotosPicker","HeaderNavigation","FetchCollectionContentMixin","FetchFilesMixin","useIsMobile","ShareType","fileId","file","albumsExtraProps","albumFilesExtraProps","fileIds","translate"],"mappings":"isDAmJA,MAAAA,EAAA,CACA,KAAA,qBACA,WAAA,CACA,iBAAAC,EACA,KAAAC,EACA,MAAAC,EAGA,cAAAC,EACA,iBAAAC,EACA,eAAAC,EACA,UAAAC,EACA,eAAAC,EACA,kBAAAC,EACA,SAAAC,EACA,aAAAC,EACA,kBAAAC,EAEA,aAAAC,EACA,iBAAAC,CACA,EAEA,OAAA,CACAC,EACAC,CACA,EAEA,MAAA,CACA,UAAA,CACA,KAAA,OACA,QAAA,GAAA,CAEA,EAEA,OAAA,CAEA,MAAA,CACA,SAFAC,EAAA,CAGA,CACA,EAEA,MAAA,CACA,MAAA,CACA,mBAAA,GACA,aAAA,EACA,uBAAA,GACA,kBAAAC,CACA,CACA,EAEA,SAAA,CACA,OAAA,CACA,OAAA,KAAA,OAAA,MAAA,MAAA,KACA,EAEA,OAAA,CACA,OAAA,KAAA,OAAA,QAAA,eAAA,KAAA,SAAA,CACA,EAEA,cAAA,CACA,OAAA,KAAA,OAAA,QAAA,oBAAA,KAAA,SAAA,CACA,EAEA,mBAAA,CACA,OAAA,KAAA,UAAA,QAAA,IAAA,OAAA,MAAA,KAAA,OAAA,WAAA,cAAA,CAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CACA,EAEA,eAAA,CACA,OAAA,KAAA,OAAA,QAAA,mBAAA,KAAA,SAAA,CACA,EAEA,wBAAA,CACA,OAAA,KAAA,MAAA,mBAAA,iBACA,IAAAC,GAAA,KAAA,OAAA,MAAA,MAAA,MAAAA,CAAA,CAAA,EACA,OAAAC,GAAAA,EAAA,WAAA,0BAAA,IAAA,SAAA,EACA,IAAAA,GAAAA,EAAA,OAAA,UAAA,CAAA,CAEA,EAEA,MAAA,SAAA,CACA,KAAA,WAAA,EACA,KAAA,kBAAA,CACA,EAEA,QAAA,CACA,MAAA,YAAA,CACA,MAAA,KAAA,gBACA,KAAA,cACAC,CACA,CACA,EAEA,MAAA,mBAAA,CACA,MAAA,KAAA,qBAAA,KAAA,cAAAC,CAAA,CACA,EAEA,MAAA,kBAAAC,EAAA,CACA,KAAA,mBAAA,GACA,MAAA,KAAA,OAAA,SAAA,uBAAA,CAAA,mBAAA,KAAA,MAAA,KAAA,KAAA,MAAA,KAAA,aAAAA,EAAA,EAEA,MAAA,KAAA,kBAAA,CACA,EAEA,MAAA,2BAAAA,EAAA,CACA,KAAA,MAAA,mBAAA,eAAAA,CAAA,EACA,MAAA,KAAA,OAAA,SAAA,4BAAA,CAAA,mBAAA,KAAA,MAAA,KAAA,KAAA,MAAA,KAAA,gBAAAA,EAAA,CACA,EAEA,MAAA,mBAAA,CACA,MAAA,KAAA,OAAA,SAAA,mBAAA,CAAA,mBAAA,KAAA,MAAA,KAAA,KAAA,MAAA,IAAA,CAAA,EACA,KAAA,QAAA,KAAA,eAAA,CACA,EAEA,EAAAC,CAAA,CAEA"} |