{"version":3,"file":"ActivityTab-DXhtLLEq.chunk.mjs","sources":["../node_modules/@nextcloud/sharing/dist/share/ShareType.js","../src/components/ActivitySidebarPlugin.vue","../node_modules/@mdi/svg/svg/download-circle.svg?raw","../src/components/DownloadSummary.vue","../src/views/ActivityTab.vue"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nexport var ShareType;\n(function (ShareType) {\n    ShareType[ShareType[\"User\"] = 0] = \"User\";\n    ShareType[ShareType[\"Group\"] = 1] = \"Group\";\n    ShareType[ShareType[\"Link\"] = 3] = \"Link\";\n    ShareType[ShareType[\"Email\"] = 4] = \"Email\";\n    ShareType[ShareType[\"Remote\"] = 6] = \"Remote\";\n    /**\n     * Was called `Circle` before Nextcloud 29\n     */\n    ShareType[ShareType[\"Team\"] = 7] = \"Team\";\n    ShareType[ShareType[\"Guest\"] = 8] = \"Guest\";\n    ShareType[ShareType[\"RemoteGroup\"] = 9] = \"RemoteGroup\";\n    ShareType[ShareType[\"Room\"] = 10] = \"Room\";\n    ShareType[ShareType[\"Deck\"] = 12] = \"Deck\";\n    /**\n     * @since 26.0.0\n     */\n    ShareType[ShareType[\"FederatedGroup\"] = 14] = \"FederatedGroup\";\n    /**\n     * Third party share types\n     *\n     * @since 25.0.0\n     */\n    ShareType[ShareType[\"ScienceMesh\"] = 15] = \"ScienceMesh\";\n})(ShareType || (ShareType = {}));\n","<!--\n  - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div ref=\"attachTarget\" />\n</template>\n\n<script setup lang=\"ts\">\nimport type { INode } from '@nextcloud/files'\nimport type { IActivitySidebarAction } from '../models/ActivityAPI.ts'\n\nimport { getCurrentInstance, onBeforeUnmount, onMounted, ref } from 'vue'\n\nconst props = defineProps<{\n\t/** The sidebar plugin */\n\tplugin: IActivitySidebarAction\n\t/**\n\t * The current node (file or folder)\n\t */\n\tnode: INode\n}>()\n\nconst emit = defineEmits<{\n\t(e: 'reload-activities'): void\n}>()\n\nconst attachTarget = ref<HTMLDivElement>()\n\nonMounted(() => props.plugin.mount(attachTarget.value as HTMLDivElement, {\n\tnode: props.node,\n\tcontext: getCurrentInstance()?.proxy ?? undefined,\n\treload: () => emit('reload-activities'),\n}))\nonBeforeUnmount(() => props.plugin.unmount())\n</script>\n","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"mdi-download-circle\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2M8 17H16V15H8V17M16 10H13.5V6H10.5V10H8L12 14L16 10Z\\\" /></svg>\"","<!--\n  - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div v-if=\"totalCount > 0\" class=\"download-summary\">\n\t\t<span class=\"download-summary__icon\">\n\t\t\t<NcIconSvgWrapper :svg=\"downloadSVG\" :size=\"20\" />\n\t\t</span>\n\t\t<span class=\"download-summary__text\">{{ summaryText }}</span>\n\t</div>\n</template>\n\n<script lang=\"ts\">\nimport downloadSVG from '@mdi/svg/svg/download-circle.svg?raw'\nimport axios from '@nextcloud/axios'\nimport { translate as t, n } from '@nextcloud/l10n'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { defineComponent } from 'vue'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport logger from '../utils/logger.ts'\n\nexport default defineComponent({\n\tname: 'DownloadSummary',\n\n\tcomponents: {\n\t\tNcIconSvgWrapper,\n\t},\n\n\tprops: {\n\t\tfileId: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttotalCount: 0,\n\t\t\tmonthlyCount: 0,\n\t\t\tdownloadSVG,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tsummaryText(): string {\n\t\t\tif (this.monthlyCount > 0 && this.monthlyCount < this.totalCount) {\n\t\t\t\treturn n(\n\t\t\t\t\t'activity',\n\t\t\t\t\t'Downloaded %n time (%s in the last 30 days)',\n\t\t\t\t\t'Downloaded %n times (%s in the last 30 days)',\n\t\t\t\t\tthis.totalCount,\n\t\t\t\t\t[String(this.monthlyCount)],\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn n(\n\t\t\t\t'activity',\n\t\t\t\t'Downloaded %n time',\n\t\t\t\t'Downloaded %n times',\n\t\t\t\tthis.totalCount,\n\t\t\t)\n\t\t},\n\t},\n\n\twatch: {\n\t\tfileId: {\n\t\t\timmediate: true,\n\t\t\thandler() {\n\t\t\t\tthis.fetchCounts()\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync fetchCounts() {\n\t\t\tif (!this.fileId) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.totalCount = 0\n\t\t\tthis.monthlyCount = 0\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(generateOcsUrl('apps/activity/api/v2/activity/downloads/count'), {\n\t\t\t\t\tparams: { format: 'json', object_type: 'files', object_id: this.fileId },\n\t\t\t\t})\n\t\t\t\tthis.totalCount = response.data.ocs.data.total\n\t\t\t\tthis.monthlyCount = response.data.ocs.data.last30d\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Failed to fetch download counts', { error })\n\t\t\t}\n\t\t},\n\n\t\tt,\n\t\tn,\n\t},\n})\n</script>\n\n<style scoped lang=\"scss\">\n.download-summary {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tpadding: 8px 0;\n\tmargin-bottom: calc(var(--default-grid-baseline) * 2);\n\tcolor: var(--color-text-maxcontrast);\n\n\t&__icon {\n\t\tflex-shrink: 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 20px;\n\t\theight: 20px;\n\t\tmargin-top: 2px;\n\t\topacity: 0.5;\n\t}\n\n\t&__text {\n\t\tpadding: 0 5px;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t}\n}\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div\n\t\t:class=\"{ 'icon-loading': loading }\"\n\t\tclass=\"activity\">\n\t\t<!-- error message -->\n\t\t<NcEmptyContent v-if=\"error || !node\" :name=\"error\">\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :svg=\"lightningBoltSVG\" />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\t\t<template v-else>\n\t\t\t<!-- activities actions -->\n\t\t\t<div v-if=\"sidebarPlugins.length > 0\" class=\"activity__actions\">\n\t\t\t\t<ActivitySidebarPlugin\n\t\t\t\t\tv-for=\"(plugin, index) of sidebarPlugins\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:plugin=\"plugin\"\n\t\t\t\t\t:node=\"node\"\n\t\t\t\t\t@reload-activities=\"getActivities()\" />\n\t\t\t</div>\n\n\t\t\t<!-- download summary -->\n\t\t\t<DownloadSummary\n\t\t\t\tv-if=\"hasPublicLink && node.fileid\"\n\t\t\t\t:file-id=\"node.fileid\" />\n\n\t\t\t<!-- activities content -->\n\t\t\t<NcEmptyContent\n\t\t\t\tv-if=\"loading\"\n\t\t\t\tclass=\"activity__empty-content\"\n\t\t\t\t:name=\"t('activity', 'Loading activities')\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<NcLoadingIcon />\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\t\t\t<NcEmptyContent\n\t\t\t\tv-else-if=\"activities.length === 0\"\n\t\t\t\tclass=\"activity__empty-content\"\n\t\t\t\t:name=\"t('activity', 'No activity yet')\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<NcIconSvgWrapper :svg=\"lightningBoltSVG\" />\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\t\t\t<ul v-else class=\"activity__list\" aria-live=\"polite\" aria-relevant=\"additions\">\n\t\t\t\t<ActivityComponent\n\t\t\t\t\tv-for=\"activity in activities\"\n\t\t\t\t\t:key=\"activity.id\"\n\t\t\t\t\t:activity=\"activity\"\n\t\t\t\t\t:show-previews=\"false\"\n\t\t\t\t\t@reload=\"getActivities()\" />\n\t\t\t</ul>\n\t\t</template>\n\t</div>\n</template>\n\n<script lang='ts'>\nimport type { IFolder, INode, IView } from '@nextcloud/files'\nimport type { PropType } from 'vue'\nimport type { IActivitySidebarAction, IActivitySidebarEntry } from '../models/ActivityAPI.ts'\n\nimport lightningBoltSVG from '@mdi/svg/svg/lightning-bolt.svg?raw'\nimport axios from '@nextcloud/axios'\nimport { translate as t } from '@nextcloud/l10n'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { ShareType } from '@nextcloud/sharing'\nimport { defineComponent, nextTick } from 'vue'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport ActivityComponent from '../components/ActivityComponent.vue'\nimport ActivitySidebarPlugin from '../components/ActivitySidebarPlugin.vue'\nimport DownloadSummary from '../components/DownloadSummary.vue'\nimport ActivityModel from '../models/ActivityModel.ts'\nimport { getActivityFilters, getAdditionalEntries, getSidebarActions } from '../utils/api.ts'\nimport logger from '../utils/logger.ts'\n\nconst ActivityTab = defineComponent({\n\tname: 'ActivityTab',\n\n\tcomponents: {\n\t\tActivityComponent,\n\t\tDownloadSummary,\n\t\tNcEmptyContent,\n\t\tNcIconSvgWrapper,\n\t\tNcLoadingIcon,\n\t\tActivitySidebarPlugin,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The node currently displayed in the sidebar\n\t\t */\n\t\tnode: {\n\t\t\ttype: Object as PropType<INode>,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * The folder shown in the files app\n\t\t */\n\t\t// eslint-disable-next-line vue/no-unused-properties\n\t\tfolder: {\n\t\t\ttype: Object as PropType<IFolder | undefined>,\n\t\t\trequired: false,\n\t\t\tdefault: undefined,\n\t\t},\n\n\t\t/**\n\t\t * The view shown in the files app\n\t\t */\n\t\t// eslint-disable-next-line vue/no-unused-properties\n\t\tview: {\n\t\t\ttype: Object as PropType<IView | undefined>,\n\t\t\trequired: false,\n\t\t\tdefault: undefined,\n\t\t},\n\t},\n\n\texpose: ['update'],\n\n\tdata() {\n\t\treturn {\n\t\t\terror: '',\n\t\t\tloading: true,\n\t\t\tactivities: [] as (IActivitySidebarEntry | ActivityModel)[],\n\t\t\tlightningBoltSVG,\n\t\t\tsidebarPlugins: [] as IActivitySidebarAction[],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\thasPublicLink(): boolean {\n\t\t\tconst shareTypes = Object.values(this.node?.attributes?.['share-types'] ?? {}).flat() as number[]\n\t\t\treturn shareTypes.includes(ShareType.Link)\n\t\t},\n\t},\n\n\twatch: {\n\t\tnode: {\n\t\t\timmediate: true,\n\t\t\tasync handler() {\n\t\t\t\tawait this.update()\n\t\t\t},\n\t\t},\n\t},\n\n\tasync mounted() {\n\t\tif (this.node) {\n\t\t\tawait this.update()\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current view and fetch new activities\n\t\t */\n\t\tasync update() {\n\t\t\tthis.sidebarPlugins = []\n\t\t\tconst sidebarPlugins = getSidebarActions()\n\t\t\tif (sidebarPlugins.length > 0) {\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tthis.sidebarPlugins = sidebarPlugins\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tthis.resetState()\n\t\t\tawait this.getActivities()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing activities\n\t\t */\n\t\tasync getActivities() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\tconst activities = await this.processActivities(await this.loadRealActivities())\n\t\t\t\tconst otherEntries = await getAdditionalEntries({ node: this.node })\n\t\t\t\tthis.activities = [...activities, ...otherEntries].sort((a, b) => b.timestamp - a.timestamp)\n\t\t\t} catch (error) {\n\t\t\t\tthis.error = t('activity', 'Unable to load the activity list')\n\t\t\t\tlogger.error('Error loading the activity list', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.activities = []\n\t\t},\n\n\t\t/**\n\t\t * Load activites from API\n\t\t */\n\t\tasync loadRealActivities() {\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.get(\n\t\t\t\t\tgenerateOcsUrl('apps/activity/api/v2/activity/filter'),\n\t\t\t\t\t{\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\t\tobject_type: 'files',\n\t\t\t\t\t\t\tobject_id: this.node.fileid,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\treturn data.ocs.data\n\t\t\t} catch (error) {\n\t\t\t\t// Status 304 is not an error.\n\t\t\t\tif (error.response !== undefined && error.response.status === 304) {\n\t\t\t\t\treturn []\n\t\t\t\t}\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the API response activities and apply filter\n\t\t *\n\t\t * @param activities the activites\n\t\t */\n\t\tprocessActivities(activities): ActivityModel[] {\n\t\t\tactivities = activities.map((activity) => new ActivityModel(activity))\n\n\t\t\tlogger.debug(`Processed ${activities.length} activity(ies)`, {\n\t\t\t\tactivities, node: this.node,\n\t\t\t})\n\n\t\t\tconst filters = getActivityFilters()\n\t\t\treturn activities.filter((activity) => !filters || filters.every((filter) => filter(activity)))\n\t\t},\n\n\t\tt,\n\t},\n})\n\nexport default ActivityTab\nexport type ActivityTabType = typeof ActivityTab\n</script>\n\n<style scoped lang=\"scss\">\n.activity {\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow: hidden;\n\theight: 100%;\n\n\t&__actions {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t}\n\n\t&__list {\n\t\tflex-grow: 1;\n\t\toverflow: scroll;\n\t}\n\n\t&__empty-content {\n\t\theight: 100%;\n\t}\n}\n\n:deep(.empty-content__icon span) {\n\tbackground-size: 64px;\n\twidth: 64px;\n\theight: 64px;\n}\n</style>\n"],"names":["ShareType","props","__props","emit","__emit","attachTarget","ref","onMounted","getCurrentInstance","onBeforeUnmount","_createElementBlock","downloadSVG","_sfc_main","defineComponent","NcIconSvgWrapper","n","response","axios","generateOcsUrl","error","logger","t","_hoisted_2","_hoisted_3","_ctx","_openBlock","_hoisted_1","_createElementVNode","_createVNode","_component_NcIconSvgWrapper","_toDisplayString","_createCommentVNode","ActivityTab","ActivityComponent","DownloadSummary","NcEmptyContent","NcLoadingIcon","ActivitySidebarPlugin","lightningBoltSVG","sidebarPlugins","getSidebarActions","nextTick","activities","otherEntries","getAdditionalEntries","a","b","data","activity","ActivityModel","filters","getActivityFilters","filter","_normalizeClass","_createBlock","_component_NcEmptyContent","_withCtx","_Fragment","_renderList","plugin","index","_component_ActivitySidebarPlugin","_cache","_component_DownloadSummary","_component_NcLoadingIcon","_component_ActivityComponent"],"mappings":"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","x_google_ignoreList":[0,2]}