REUSE compliance of nextcloud/activity

Congratulations, github.com/nextcloud/activity is REUSE compliant! This project adopts the recommendations to make software licensing easy for humans and machines alike.

Badge

To add the badge to your project's README.md file, use the following snippet:

[![REUSE status](https://api.reuse.software/badge/github.com/nextcloud/activity)](https://api.reuse.software/info/github.com/nextcloud/activity)

Machine-readable information

The API provides machine-readable artifacts for automatic analysis.

  • All information about the latest compliance check can also be accessed via a machine-parsable JSON file.
  • You can gather the automatically generated SPDX SBOM in Tag:Value format, based on the reuse spdx command.

Last lint output

Commit d5b48ae82c9ddb35cd89d1a89926bf2193ebe504 was checked on 10 Sep 2024 12:43:15 UTC with the following result:

reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport type { ActivityFactoryQueryOptions, IActivityFactory, IActivityFilter, IActivitySidebarAction } from '../models/ActivityAPI'\nimport logger from './logger'\n\ndeclare global {\n\tinterface Window {\n\t\tOCA?: {\n\t\t\tActivity?: {\n\t\t\t\t/**\n\t\t\t\t * Register new actions for a given activity type\n\t\t\t\t */\n\t\t\t\tregisterSidebarEntries: (factory: IActivityFactory) => void\n\t\t\t\t/**\n\t\t\t\t * Register an external action that should be shown in the Activity sidebar panel\n\t\t\t\t */\n\t\t\t\tregisterSidebarAction: (action: IActivitySidebarAction) => void\n\t\t\t\t/**\n\t\t\t\t * Register an filter function to filter out activities on the sidebar, useful together with `registerSidebarEntries`\n\t\t\t\t */\n\t\t\t\tregisterSidebarFilter: (filter: IActivityFilter) => void\n\t\t\t\t__sidebar_actions: IActivitySidebarAction[]\n\t\t\t\t__sidebar_factories: IActivityFactory[]\n\t\t\t\t__sidebar_filters: IActivityFilter[]\n\t\t\t},\n\t\t\tViewer?: {\n\t\t\t\topen(options: { path?: string, fileInfo?: unknown }): void\n\t\t\t\tget mimetypes(): string[]\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Register the global API\n */\nexport function registerGlobalAPI() {\n\twindow.OCA = window.OCA ?? {}\n\twindow.OCA.Activity = {\n\t\t...window.OCA.Activity,\n\t\t__sidebar_actions: window.OCA.Activity?.__sidebar_actions ?? [],\n\t\t__sidebar_factories: window.OCA.Activity?.__sidebar_factories ?? [],\n\t\t__sidebar_filters: window.OCA.Activity?.__sidebar_filters ?? [],\n\n\t\tregisterSidebarAction(action: IActivitySidebarAction) {\n\t\t\twindow.OCA!.Activity!.__sidebar_actions.push(action)\n\t\t\tlogger.debug('Registered new sidebar action')\n\t\t},\n\n\t\tregisterSidebarEntries(factory: IActivityFactory) {\n\t\t\twindow!.OCA!.Activity!.__sidebar_factories.push(factory)\n\t\t\tlogger.debug('Registered new sidebar actions factory')\n\t\t},\n\n\t\tregisterSidebarFilter(filter: IActivityFilter) {\n\t\t\twindow!.OCA!.Activity!.__sidebar_filters.push(filter)\n\t\t},\n\t}\n\n\tlogger.info('Activity API registered')\n}\n\n/**\n * Get all external actions that should be showed in the Activity panel\n */\nexport function getSidebarActions() {\n\treturn window.OCA?.Activity?.__sidebar_actions ?? []\n}\n\n/**\n * Get all additional activity stream entries for a given file object\n * @param options Filter options for the additonal entries\n */\nexport async function getAdditionalEntries(options: ActivityFactoryQueryOptions) {\n\tif (window.OCA?.Activity?.__sidebar_factories === undefined) {\n\t\treturn []\n\t}\n\n\tconst allPromises = window.OCA.Activity.__sidebar_factories.map(async (factory) => await factory(options))\n\treturn (await Promise.all(allPromises)).flat()\n}\n\n/**\n * Get all sidebar entry filters\n */\nexport function getActivityFilters() {\n\treturn window.OCA?.Activity?.__sidebar_filters ?? []\n}\n"],"names":["registerGlobalAPI","_a","_b","_c","_d","_e","_f","_g","action","logger","factory","filter","getSidebarActions","getAdditionalEntries","options","allPromises","getActivityFilters"],"mappings":"gDAuCO,SAASA,GAAoB,CAvCpC,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAwCC,OAAO,KAAMN,EAAA,OAAO,MAAP,KAAAA,EAAc,GAC3B,OAAO,IAAI,SAAW,CACrB,GAAG,OAAO,IAAI,SACd,mBAAmBE,GAAOD,EAAA,OAAA,IAAI,WAAX,KAAqB,OAAAA,EAAA,oBAArB,OAA0C,CAAC,EAC9D,qBAAqBG,GAAOD,EAAA,OAAA,IAAI,WAAX,KAAqB,OAAAA,EAAA,sBAArB,OAA4C,CAAC,EAClE,mBAAmBG,GAAOD,EAAA,OAAA,IAAI,WAAX,KAAqB,OAAAA,EAAA,oBAArB,OAA0C,CAAC,EAE9D,sBAAsBE,EAAgC,CACrD,OAAO,IAAK,SAAU,kBAAkB,KAAKA,CAAM,EACnDC,EAAO,MAAM,+BAA+B,CAC7C,EAEA,uBAAuBC,EAA2B,CACjD,OAAQ,IAAK,SAAU,oBAAoB,KAAKA,CAAO,EACvDD,EAAO,MAAM,wCAAwC,CACtD,EAEA,sBAAsBE,EAAyB,CAC9C,OAAQ,IAAK,SAAU,kBAAkB,KAAKA,CAAM,CACrD,CAAA,EAGDF,EAAO,KAAK,yBAAyB,CACtC,CAKO,SAASG,GAAoB,CApEpC,IAAAX,EAAAC,EAAAC,EAqEC,OAAOA,eAAO,MAAP,KAAA,OAAAF,EAAY,WAAZ,KAAsB,OAAAC,EAAA,oBAAtB,OAA2C,EACnD,CAMA,eAAsBW,EAAqBC,EAAsC,CA5EjF,IAAAb,E'
reuse._util - ERROR - 'js/api-wy7VpNU4.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\nimport Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\n// eslint-disable-next-line import/no-unresolved\nimport LightningBolt from '@mdi/svg/svg/lightning-bolt.svg?raw'\n\nVue.prototype.t = t\nVue.prototype.n = n\n\n// Init Activity tab component\nlet ActivityTabView = null\nlet ActivityTabInstance = null\nconst activityTab = new OCA.Files.Sidebar.Tab({\n\tid: 'activity',\n\tname: t('activity', 'Activity'),\n\ticonSvg: LightningBolt,\n\n\tasync mount(el, fileInfo, context) {\n\t\t// only load if needed\n\t\tif (ActivityTabView === null) {\n\t\t\tconst { default: ActivityTab } = await import('./views/ActivityTab.vue')\n\t\t\tActivityTabView = ActivityTabView ?? Vue.extend(ActivityTab)\n\t\t}\n\t\t// destroy previous instance if available\n\t\tif (ActivityTabInstance) {\n\t\t\tActivityTabInstance.$destroy()\n\t\t}\n\t\tActivityTabInstance = new ActivityTabView({\n\t\t\t// Better integration with vue parent component\n\t\t\tparent: context,\n\t\t})\n\t\t// No need to await this, we will show a loading indicator instead\n\t\tActivityTabInstance.update(fileInfo)\n\t\tActivityTabInstance.$mount(el)\n\t},\n\tupdate(fileInfo) {\n\t\tActivityTabInstance.update(fileInfo)\n\t},\n\tdestroy() {\n\t\tActivityTabInstance.$destroy()\n\t\tActivityTabInstance = null\n\t},\n})\n\nwindow.addEventListener('DOMContentLoaded', async function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(activityTab)\n\t\tconst { default: ActivityTab } = await import('./views/ActivityTab.vue')\n\t\tActivityTabView = ActivityTabView ?? Vue.extend(ActivityTab)\n\t}\n})\n"],"file":"js/activity-sidebar.mjs"'
reuse._util - ERROR - 'js/activity-sidebar.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcSettingsSection :name=\"t('activity', 'Notification')\">\n\t\t<NcCheckboxRadioSwitch type=\"checkbox\"\n\t\t\t:checked=\"emailEnabled\"\n\t\t\t@update:checked=\"toggleEmailEnabled({emailEnabled: $event})\">\n\t\t\t{{ t('activity', 'Enable notification emails') }}\n\t\t</NcCheckboxRadioSwitch>\n\t</NcSettingsSection>\n</template>\n\n<script>\nimport { mapActions, mapState } from 'vuex'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\n\nexport default {\n\tname: 'AdminSettings',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t},\n\n\tcomputed: {\n\t\t...mapState({\n\t\t\temailEnabled: 'emailEnabled',\n\t\t}),\n\t\tsettingDescription() {\n\t\t\tif (this.emailEnabled) {\n\t\t\t\treturn t('activity', 'Choose for which activities you want to get an email or push notification.')\n\t\t\t} else {\n\t\t\t\treturn t('activity', 'Choose for which activities you want to get a push notification.')\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.setEndpoint({ endpoint: '/apps/activity/settings/admin' })\n\t},\n\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'setEndpoint',\n\t\t\t'toggleEmailEnabled',\n\t\t]),\n\t},\n}\n\n</script>\n","<!--\n  - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcSettingsSection :name=\"t('activity', 'Default settings')\"\n\t\t:description=\"t('activity', 'Configure the default notification settings for new accounts.')\">\n\t\t<ActivityGrid />\n\t</NcSettingsSection>\n</template>\n\n<script>\nimport { mapActions, mapState } from 'vuex'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\nimport ActivityGrid from '../components/ActivityGrid.vue'\n\nexport default {\n\tname: 'DefaultActivitySettings',\n\tcomponents: {\n\t\tActivityGrid,\n\t\tNcSettingsSection,\n\t},\n\n\tcomputed: {\n\t\t...mapState({\n\t\t\temailEnabled: 'emailEnabled',\n\t\t}),\n\t},\n\n\tmounted() {\n\t\tthis.setEndpoint({ endpoint: '/apps/activity/settings/admin' })\n\t},\n\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'setEndpoint',\n\t\t\t'toggleEmailEnabled',\n\t\t]),\n\t},\n}\n\n</script>\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\n\nimport AdminSettings from './views/AdminSettings.vue'\nimport DefaultActivitySettings from './views/DefaultActivitySettings.vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport store from './store/settings-store.js'\n\nVue.prototype.t = t\nVue.prototype.n = n\n\nVue.use(Vuex)\n\nexport default {\n\tadminSetting: new Vue({\n\t\tel: '#activity-admin-settings',\n\t\tstore,\n\t\tname: 'ActivityPersonalSettings',\n\t\trender: h => h(AdminSettings),\n\t}),\n\tdefaultSetting: new Vue({\n\t\tel: '#activity-default-settings',\n\t\tstore,\n\t\tname: 'ActivityDefaultSettings',\n\t\trender: h => h(DefaultActivitySettings),\n\t}),\n}\n"],"names":["_sfc_main","NcCheckboxRadioSwitch","NcSettingsSection","mapState","mapActions","ActivityGrid","Vue","t","n","Vuex","store","h","AdminSettings","DefaultActivitySettings"],"mappings":"0WAoBA,MAAAA,EAAA,CACA,KAAA,gBACA,WAAA,CACA,sBAAAC,EACA,kBAAAC,CACA,EAEA,SAAA,CACA,GAAAC,EAAA,CACA,aAAA,cACA,CAAA,EACA,oBAAA,CACA,OAAA,KAAA,aACA,EAAA,WAAA,4EAAA,EAEA,EAAA,WAAA,kEAAA,CAEA,CACA,EAEA,SAAA,CACA,KAAA,YAAA,CAAA,SAAA,+BAAA,CAAA,CACA,EAEA,QAAA,CACA,GAAAC,EAAA,CACA,cACA,oBACA,CAAA,CACA,CACA,2YCjCAJ,EAAA,CACA,KAAA,0BACA,WAAA,CACA,aAAAK,EACA,kBAAAH,CACA,EAEA,SAAA,CACA,GAAAC,EAAA,CACA,aAAA,cACA,CAAA,CACA,EAEA,SAAA,CACA,'
reuse._util - ERROR - 'js/activity-adminSettings.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<div ref=\"attachTarget\" />\n</template>\n\n<script setup lang=\"ts\">\nimport type { IActivitySidebarAction } from '../models/ActivityAPI'\nimport { getCurrentInstance, onBeforeUnmount, onMounted, ref } from 'vue'\n\nconst props = defineProps<{\n\t/** The sidebar plugin */\n\tplugin: IActivitySidebarAction\n  fileInfo: object | null\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\tcontext: getCurrentInstance()?.proxy,\n\tfileInfo: props.fileInfo,\n\treload: () => emit('reload-activities'),\n}))\nonBeforeUnmount(() => props.plugin.unmount())\n</script>\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 :class=\"{ 'icon-loading': loading }\"\n\t\tclass=\"activity\">\n\t\t<!-- error message -->\n\t\t<NcEmptyContent v-if=\"error\" :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 v-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:file-info=\"fileInfo\"\n\t\t\t\t\t@reload-activities=\"getActivities()\" />\n\t\t\t</div>\n\n\t\t\t<!-- activities content -->\n\t\t\t<NcEmptyContent v-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 v-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<span class=\"icon-activity\" />\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\t\t\t<ul v-else class=\"activity__list\">\n\t\t\t\t<Activity v-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>\nimport axios from '@nextcloud/axios'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { translate as t } from '@nextcloud/l10n'\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\nimport { getAdditionalEntries, getSidebarActions, getActivityFilters } from '../utils/api.ts'\n\nimport logger from '../utils/logger.ts'\nimport Activity from '../components/Activity.vue'\nimport ActivityModel from '../models/ActivityModel.ts'\nimport ActivitySidebarPlugin from '../components/ActivitySidebarPlugin.vue'\n\nimport lightningBoltSVG from '@mdi/svg/svg/lightning-bolt.svg?raw'\n\nexport default {\n\tname: 'ActivityTab',\n\tcomponents: {\n\t\tActivity,\n\t\tNcEmptyContent,\n\t\tNcIconSvgWrapper,\n\t\tNcLoadingIcon,\n\t\tActivitySidebarPlugin,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: '',\n\t\t\tloading: true,\n\t\t\tfileInfo: null,\n\t\t\tactivities: [],\n\t\t\tlightningBoltSVG,\n\t\t\tsidebarPlugins: [],\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.sidebarPlugins = getSidebarActions()\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new activities\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.sidebarPlugins = []\n\t\t\tlet si'
reuse._util - ERROR - 'js/ActivityTab-BsQMAymC.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nexport default {\n\tEmailFrequency: {\n\t\tEMAIL_SEND_HOURLY: 0,\n\t\tEMAIL_SEND_DAILY: 1,\n\t\tEMAIL_SEND_WEEKLY: 2,\n\t\tEMAIL_SEND_ASAP: 3,\n\t},\n}\n","<!--\n  - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div v-if=\"emailEnabled\">\n\t\t<p v-if=\"!isEmailSet\">\n\t\t\t<strong>{{ t('activity', 'You need to set up your email address before you can receive notification emails.') }}</strong>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"activity_setting_batchtime\" class=\"activity-frequency__label\">\n\t\t\t\t{{ t('activity', 'Send activity emails') }}\n\t\t\t</label>\n\t\t\t<select id=\"activity_setting_batchtime\"\n\t\t\t\tclass=\"notification-frequency__select\"\n\t\t\t\tname=\"activity_setting_batchtime\"\n\t\t\t\t@change=\"setSettingBatchtime({settingBatchtime: $event.target.value})\">\n\t\t\t\t<option :value=\"EmailFrequency.EMAIL_SEND_ASAP\"\n\t\t\t\t\t:selected=\"settingBatchtime === EmailFrequency.EMAIL_SEND_ASAP\">\n\t\t\t\t\t{{ t('activity', 'As soon as possible') }}\n\t\t\t\t</option>\n\t\t\t\t<option :value=\"EmailFrequency.EMAIL_SEND_HOURLY\"\n\t\t\t\t\t:selected=\"settingBatchtime === EmailFrequency.EMAIL_SEND_HOURLY\">\n\t\t\t\t\t{{ t('activity', 'Hourly') }}\n\t\t\t\t</option>\n\t\t\t\t<option :value=\"EmailFrequency.EMAIL_SEND_DAILY\"\n\t\t\t\t\t:selected=\"settingBatchtime === EmailFrequency.EMAIL_SEND_DAILY\">\n\t\t\t\t\t{{ t('activity', 'Daily') }}\n\t\t\t\t</option>\n\t\t\t\t<option :value=\"EmailFrequency.EMAIL_SEND_WEEKLY\"\n\t\t\t\t\t:selected=\"settingBatchtime === EmailFrequency.EMAIL_SEND_WEEKLY\">\n\t\t\t\t\t{{ t('activity', 'Weekly') }}\n\t\t\t\t</option>\n\t\t\t</select>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport { mapActions, mapState } from 'vuex'\nimport EmailFrequency from '../models/EmailFrequency.js'\n\nexport default {\n\tname: 'EmailSettings',\n\n\tdata() {\n\t\treturn {\n\t\t\tEmailFrequency: EmailFrequency.EmailFrequency,\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapState([\n\t\t\t'emailEnabled',\n\t\t\t'isEmailSet',\n\t\t\t'settingBatchtime',\n\t\t]),\n\t},\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'setSettingBatchtime',\n\t\t]),\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n.activity-frequency__label {\n\tmargin-top: 24px;\n\tdisplay: inline-block;\n}\n\n.notification-frequency__select {\n\tmargin-left: calc(var(--default-grid-baseline) * 2);\n}\n\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcSettingsSection :name=\"t('activity', 'Activity')\"\n\t\t:description=\"settingDescription\">\n\t\t<ActivityGrid />\n\t\t<EmailSettings />\n\t</NcSettingsSection>\n</template>\n\n<script>\nimport { mapActions, mapState } from 'vuex'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\nimport EmailSettings from '../components/EmailSettings.vue'\nimport ActivityGrid from '../components/ActivityGrid.vue'\n\nexport default {\n\tname: 'UserSettings',\n\tcomponents: {\n\t\tNcSettingsSection,\n\t\tEmailSettings,\n\t\tActivityGrid,\n\t},\n\n\tcomputed: {\n\t\t...mapState({\n\t\t\temailEnabled: 'emailEnabled',\n\t\t}),\n\t\tsettingDescription() {\n\t\t\tif (this.emailEnabled) {\n\t\t\t\treturn t('activity', 'Choose for which activities you want to get an email or push notification.')\n\t\t\t} else {\n\t\t\t\treturn t('activity', 'Choose for which activities you want to get a push notification.')\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.setEndpoint({ endpoint: '/apps/activity/settings' })\n\t},\n\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'setEndpoint',\n\t\t\t'
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n \nimport { registerGlobalAPI } from './utils/api.js'\n\nregisterGlobalAPI()\n"],"names":["registerGlobalAPI"],"mappings":"+HAOAA,EAAkB"'
reuse._util - ERROR - 'js/activity-personalSettings.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - 'js/activity-api.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport type { ActivityFactoryQueryOptions, IActivityFactory, IActivityFilter, IActivitySidebarAction } from '../models/ActivityAPI'\nimport logger from './logger'\n\ndeclare global {\n\tinterface Window {\n\t\tOCA?: {\n\t\t\tActivity?: {\n\t\t\t\t/**\n\t\t\t\t * Register new actions for a given activity type\n\t\t\t\t */\n\t\t\t\tregisterSidebarEntries: (factory: IActivityFactory) => void\n\t\t\t\t/**\n\t\t\t\t * Register an external action that should be shown in the Activity sidebar panel\n\t\t\t\t */\n\t\t\t\tregisterSidebarAction: (action: IActivitySidebarAction) => void\n\t\t\t\t/**\n\t\t\t\t * Register an filter function to filter out activities on the sidebar, useful together with `registerSidebarEntries`\n\t\t\t\t */\n\t\t\t\tregisterSidebarFilter: (filter: IActivityFilter) => void\n\t\t\t\t__sidebar_actions: IActivitySidebarAction[]\n\t\t\t\t__sidebar_factories: IActivityFactory[]\n\t\t\t\t__sidebar_filters: IActivityFilter[]\n\t\t\t},\n\t\t\tViewer?: {\n\t\t\t\topen(options: { path?: string, fileInfo?: unknown }): void\n\t\t\t\tget mimetypes(): string[]\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Register the global API\n */\nexport function registerGlobalAPI() {\n\twindow.OCA = window.OCA ?? {}\n\twindow.OCA.Activity = {\n\t\t...window.OCA.Activity,\n\t\t__sidebar_actions: window.OCA.Activity?.__sidebar_actions ?? [],\n\t\t__sidebar_factories: window.OCA.Activity?.__sidebar_factories ?? [],\n\t\t__sidebar_filters: window.OCA.Activity?.__sidebar_filters ?? [],\n\n\t\tregisterSidebarAction(action: IActivitySidebarAction) {\n\t\t\twindow.OCA!.Activity!.__sidebar_actions.push(action)\n\t\t\tlogger.debug('Registered new sidebar action')\n\t\t},\n\n\t\tregisterSidebarEntries(factory: IActivityFactory) {\n\t\t\twindow!.OCA!.Activity!.__sidebar_factories.push(factory)\n\t\t\tlogger.debug('Registered new sidebar actions factory')\n\t\t},\n\n\t\tregisterSidebarFilter(filter: IActivityFilter) {\n\t\t\twindow!.OCA!.Activity!.__sidebar_filters.push(filter)\n\t\t},\n\t}\n\n\tlogger.info('Activity API registered')\n}\n\n/**\n * Get all external actions that should be showed in the Activity panel\n */\nexport function getSidebarActions() {\n\treturn window.OCA?.Activity?.__sidebar_actions ?? []\n}\n\n/**\n * Get all additional activity stream entries for a given file object\n * @param options Filter options for the additonal entries\n */\nexport async function getAdditionalEntries(options: ActivityFactoryQueryOptions) {\n\tif (window.OCA?.Activity?.__sidebar_factories === undefined) {\n\t\treturn []\n\t}\n\n\tconst allPromises = window.OCA.Activity.__sidebar_factories.map(async (factory) => await factory(options))\n\treturn (await Promise.all(allPromises)).flat()\n}\n\n/**\n * Get all sidebar entry filters\n */\nexport function getActivityFilters() {\n\treturn window.OCA?.Activity?.__sidebar_filters ?? []\n}\n"],"names":["registerGlobalAPI","_a","_b","_c","_d","_e","_f","_g","action","logger","factory","filter","getSidebarActions","getAdditionalEntries","options","allPromises","getActivityFilters"],"mappings":"gDAuCO,SAASA,GAAoB,CAvCpC,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAwCC,OAAO,KAAMN,EAAA,OAAO,MAAP,KAAAA,EAAc,GAC3B,OAAO,IAAI,SAAW,CACrB,GAAG,OAAO,IAAI,SACd,mBAAmBE,GAAOD,EAAA,OAAA,IAAI,WAAX,KAAqB,OAAAA,EAAA,oBAArB,OAA0C,CAAC,EAC9D,qBAAqBG,GAAOD,EAAA,OAAA,IAAI,WAAX,KAAqB,OAAAA,EAAA,sBAArB,OAA4C,CAAC,EAClE,mBAAmBG,GAAOD,EAAA,OAAA,IAAI,WAAX,KAAqB,OAAAA,EAAA,oBAArB,OAA0C,CAAC,EAE9D,sBAAsBE,EAAgC,CACrD,OAAO,IAAK,SAAU,kBAAkB,KAAKA,CAAM,EACnDC,EAAO,MAAM,+BAA+B,CAC7C,EAEA,uBAAuBC,EAA2B,CACjD,OAAQ,IAAK,SAAU,oBAAoB,KAAKA,CAAO,EACvDD,EAAO,MAAM,wCAAwC,CACtD,EAEA,sBAAsBE,EAAyB,CAC9C,OAAQ,IAAK,SAAU,kBAAkB,KAAKA,CAAM,CACrD,CAAA,EAGDF,EAAO,KAAK,yBAAyB,CACtC,CAKO,SAASG,GAAoB,CApEpC,IAAAX,EAAAC,EAAAC,EAqEC,OAAOA,eAAO,MAAP,KAAA,OAAAF,EAAY,WAAZ,KAAsB,OAAAC,EAAA,oBAAtB,OAA2C,EACnD,CAMA,eAAsBW,EAAqBC,EAAsC,CA5EjF,IAAAb,E'
reuse._util - ERROR - 'js/api-wy7VpNU4.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\nimport Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\n// eslint-disable-next-line import/no-unresolved\nimport LightningBolt from '@mdi/svg/svg/lightning-bolt.svg?raw'\n\nVue.prototype.t = t\nVue.prototype.n = n\n\n// Init Activity tab component\nlet ActivityTabView = null\nlet ActivityTabInstance = null\nconst activityTab = new OCA.Files.Sidebar.Tab({\n\tid: 'activity',\n\tname: t('activity', 'Activity'),\n\ticonSvg: LightningBolt,\n\n\tasync mount(el, fileInfo, context) {\n\t\t// only load if needed\n\t\tif (ActivityTabView === null) {\n\t\t\tconst { default: ActivityTab } = await import('./views/ActivityTab.vue')\n\t\t\tActivityTabView = ActivityTabView ?? Vue.extend(ActivityTab)\n\t\t}\n\t\t// destroy previous instance if available\n\t\tif (ActivityTabInstance) {\n\t\t\tActivityTabInstance.$destroy()\n\t\t}\n\t\tActivityTabInstance = new ActivityTabView({\n\t\t\t// Better integration with vue parent component\n\t\t\tparent: context,\n\t\t})\n\t\t// No need to await this, we will show a loading indicator instead\n\t\tActivityTabInstance.update(fileInfo)\n\t\tActivityTabInstance.$mount(el)\n\t},\n\tupdate(fileInfo) {\n\t\tActivityTabInstance.update(fileInfo)\n\t},\n\tdestroy() {\n\t\tActivityTabInstance.$destroy()\n\t\tActivityTabInstance = null\n\t},\n})\n\nwindow.addEventListener('DOMContentLoaded', async function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(activityTab)\n\t\tconst { default: ActivityTab } = await import('./views/ActivityTab.vue')\n\t\tActivityTabView = ActivityTabView ?? Vue.extend(ActivityTab)\n\t}\n})\n"],"file":"js/activity-sidebar.mjs"'
reuse._util - ERROR - 'js/activity-sidebar.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcSettingsSection :name=\"t('activity', 'Notification')\">\n\t\t<NcCheckboxRadioSwitch type=\"checkbox\"\n\t\t\t:checked=\"emailEnabled\"\n\t\t\t@update:checked=\"toggleEmailEnabled({emailEnabled: $event})\">\n\t\t\t{{ t('activity', 'Enable notification emails') }}\n\t\t</NcCheckboxRadioSwitch>\n\t</NcSettingsSection>\n</template>\n\n<script>\nimport { mapActions, mapState } from 'vuex'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\n\nexport default {\n\tname: 'AdminSettings',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t},\n\n\tcomputed: {\n\t\t...mapState({\n\t\t\temailEnabled: 'emailEnabled',\n\t\t}),\n\t\tsettingDescription() {\n\t\t\tif (this.emailEnabled) {\n\t\t\t\treturn t('activity', 'Choose for which activities you want to get an email or push notification.')\n\t\t\t} else {\n\t\t\t\treturn t('activity', 'Choose for which activities you want to get a push notification.')\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.setEndpoint({ endpoint: '/apps/activity/settings/admin' })\n\t},\n\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'setEndpoint',\n\t\t\t'toggleEmailEnabled',\n\t\t]),\n\t},\n}\n\n</script>\n","<!--\n  - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcSettingsSection :name=\"t('activity', 'Default settings')\"\n\t\t:description=\"t('activity', 'Configure the default notification settings for new accounts.')\">\n\t\t<ActivityGrid />\n\t</NcSettingsSection>\n</template>\n\n<script>\nimport { mapActions, mapState } from 'vuex'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\nimport ActivityGrid from '../components/ActivityGrid.vue'\n\nexport default {\n\tname: 'DefaultActivitySettings',\n\tcomponents: {\n\t\tActivityGrid,\n\t\tNcSettingsSection,\n\t},\n\n\tcomputed: {\n\t\t...mapState({\n\t\t\temailEnabled: 'emailEnabled',\n\t\t}),\n\t},\n\n\tmounted() {\n\t\tthis.setEndpoint({ endpoint: '/apps/activity/settings/admin' })\n\t},\n\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'setEndpoint',\n\t\t\t'toggleEmailEnabled',\n\t\t]),\n\t},\n}\n\n</script>\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\n\nimport AdminSettings from './views/AdminSettings.vue'\nimport DefaultActivitySettings from './views/DefaultActivitySettings.vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport store from './store/settings-store.js'\n\nVue.prototype.t = t\nVue.prototype.n = n\n\nVue.use(Vuex)\n\nexport default {\n\tadminSetting: new Vue({\n\t\tel: '#activity-admin-settings',\n\t\tstore,\n\t\tname: 'ActivityPersonalSettings',\n\t\trender: h => h(AdminSettings),\n\t}),\n\tdefaultSetting: new Vue({\n\t\tel: '#activity-default-settings',\n\t\tstore,\n\t\tname: 'ActivityDefaultSettings',\n\t\trender: h => h(DefaultActivitySettings),\n\t}),\n}\n"],"names":["_sfc_main","NcCheckboxRadioSwitch","NcSettingsSection","mapState","mapActions","ActivityGrid","Vue","t","n","Vuex","store","h","AdminSettings","DefaultActivitySettings"],"mappings":"0WAoBA,MAAAA,EAAA,CACA,KAAA,gBACA,WAAA,CACA,sBAAAC,EACA,kBAAAC,CACA,EAEA,SAAA,CACA,GAAAC,EAAA,CACA,aAAA,cACA,CAAA,EACA,oBAAA,CACA,OAAA,KAAA,aACA,EAAA,WAAA,4EAAA,EAEA,EAAA,WAAA,kEAAA,CAEA,CACA,EAEA,SAAA,CACA,KAAA,YAAA,CAAA,SAAA,+BAAA,CAAA,CACA,EAEA,QAAA,CACA,GAAAC,EAAA,CACA,cACA,oBACA,CAAA,CACA,CACA,2YCjCAJ,EAAA,CACA,KAAA,0BACA,WAAA,CACA,aAAAK,EACA,kBAAAH,CACA,EAEA,SAAA,CACA,GAAAC,EAAA,CACA,aAAA,cACA,CAAA,CACA,EAEA,SAAA,CACA,'
reuse._util - ERROR - 'js/activity-adminSettings.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<div ref=\"attachTarget\" />\n</template>\n\n<script setup lang=\"ts\">\nimport type { IActivitySidebarAction } from '../models/ActivityAPI'\nimport { getCurrentInstance, onBeforeUnmount, onMounted, ref } from 'vue'\n\nconst props = defineProps<{\n\t/** The sidebar plugin */\n\tplugin: IActivitySidebarAction\n  fileInfo: object | null\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\tcontext: getCurrentInstance()?.proxy,\n\tfileInfo: props.fileInfo,\n\treload: () => emit('reload-activities'),\n}))\nonBeforeUnmount(() => props.plugin.unmount())\n</script>\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 :class=\"{ 'icon-loading': loading }\"\n\t\tclass=\"activity\">\n\t\t<!-- error message -->\n\t\t<NcEmptyContent v-if=\"error\" :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 v-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:file-info=\"fileInfo\"\n\t\t\t\t\t@reload-activities=\"getActivities()\" />\n\t\t\t</div>\n\n\t\t\t<!-- activities content -->\n\t\t\t<NcEmptyContent v-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 v-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<span class=\"icon-activity\" />\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\t\t\t<ul v-else class=\"activity__list\">\n\t\t\t\t<Activity v-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>\nimport axios from '@nextcloud/axios'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { translate as t } from '@nextcloud/l10n'\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\nimport { getAdditionalEntries, getSidebarActions, getActivityFilters } from '../utils/api.ts'\n\nimport logger from '../utils/logger.ts'\nimport Activity from '../components/Activity.vue'\nimport ActivityModel from '../models/ActivityModel.ts'\nimport ActivitySidebarPlugin from '../components/ActivitySidebarPlugin.vue'\n\nimport lightningBoltSVG from '@mdi/svg/svg/lightning-bolt.svg?raw'\n\nexport default {\n\tname: 'ActivityTab',\n\tcomponents: {\n\t\tActivity,\n\t\tNcEmptyContent,\n\t\tNcIconSvgWrapper,\n\t\tNcLoadingIcon,\n\t\tActivitySidebarPlugin,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: '',\n\t\t\tloading: true,\n\t\t\tfileInfo: null,\n\t\t\tactivities: [],\n\t\t\tlightningBoltSVG,\n\t\t\tsidebarPlugins: [],\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.sidebarPlugins = getSidebarActions()\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new activities\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.sidebarPlugins = []\n\t\t\tlet si'
reuse._util - ERROR - 'js/ActivityTab-BsQMAymC.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nexport default {\n\tEmailFrequency: {\n\t\tEMAIL_SEND_HOURLY: 0,\n\t\tEMAIL_SEND_DAILY: 1,\n\t\tEMAIL_SEND_WEEKLY: 2,\n\t\tEMAIL_SEND_ASAP: 3,\n\t},\n}\n","<!--\n  - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div v-if=\"emailEnabled\">\n\t\t<p v-if=\"!isEmailSet\">\n\t\t\t<strong>{{ t('activity', 'You need to set up your email address before you can receive notification emails.') }}</strong>\n\t\t</p>\n\t\t<p>\n\t\t\t<label for=\"activity_setting_batchtime\" class=\"activity-frequency__label\">\n\t\t\t\t{{ t('activity', 'Send activity emails') }}\n\t\t\t</label>\n\t\t\t<select id=\"activity_setting_batchtime\"\n\t\t\t\tclass=\"notification-frequency__select\"\n\t\t\t\tname=\"activity_setting_batchtime\"\n\t\t\t\t@change=\"setSettingBatchtime({settingBatchtime: $event.target.value})\">\n\t\t\t\t<option :value=\"EmailFrequency.EMAIL_SEND_ASAP\"\n\t\t\t\t\t:selected=\"settingBatchtime === EmailFrequency.EMAIL_SEND_ASAP\">\n\t\t\t\t\t{{ t('activity', 'As soon as possible') }}\n\t\t\t\t</option>\n\t\t\t\t<option :value=\"EmailFrequency.EMAIL_SEND_HOURLY\"\n\t\t\t\t\t:selected=\"settingBatchtime === EmailFrequency.EMAIL_SEND_HOURLY\">\n\t\t\t\t\t{{ t('activity', 'Hourly') }}\n\t\t\t\t</option>\n\t\t\t\t<option :value=\"EmailFrequency.EMAIL_SEND_DAILY\"\n\t\t\t\t\t:selected=\"settingBatchtime === EmailFrequency.EMAIL_SEND_DAILY\">\n\t\t\t\t\t{{ t('activity', 'Daily') }}\n\t\t\t\t</option>\n\t\t\t\t<option :value=\"EmailFrequency.EMAIL_SEND_WEEKLY\"\n\t\t\t\t\t:selected=\"settingBatchtime === EmailFrequency.EMAIL_SEND_WEEKLY\">\n\t\t\t\t\t{{ t('activity', 'Weekly') }}\n\t\t\t\t</option>\n\t\t\t</select>\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport { mapActions, mapState } from 'vuex'\nimport EmailFrequency from '../models/EmailFrequency.js'\n\nexport default {\n\tname: 'EmailSettings',\n\n\tdata() {\n\t\treturn {\n\t\t\tEmailFrequency: EmailFrequency.EmailFrequency,\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapState([\n\t\t\t'emailEnabled',\n\t\t\t'isEmailSet',\n\t\t\t'settingBatchtime',\n\t\t]),\n\t},\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'setSettingBatchtime',\n\t\t]),\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n.activity-frequency__label {\n\tmargin-top: 24px;\n\tdisplay: inline-block;\n}\n\n.notification-frequency__select {\n\tmargin-left: calc(var(--default-grid-baseline) * 2);\n}\n\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcSettingsSection :name=\"t('activity', 'Activity')\"\n\t\t:description=\"settingDescription\">\n\t\t<ActivityGrid />\n\t\t<EmailSettings />\n\t</NcSettingsSection>\n</template>\n\n<script>\nimport { mapActions, mapState } from 'vuex'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\nimport EmailSettings from '../components/EmailSettings.vue'\nimport ActivityGrid from '../components/ActivityGrid.vue'\n\nexport default {\n\tname: 'UserSettings',\n\tcomponents: {\n\t\tNcSettingsSection,\n\t\tEmailSettings,\n\t\tActivityGrid,\n\t},\n\n\tcomputed: {\n\t\t...mapState({\n\t\t\temailEnabled: 'emailEnabled',\n\t\t}),\n\t\tsettingDescription() {\n\t\t\tif (this.emailEnabled) {\n\t\t\t\treturn t('activity', 'Choose for which activities you want to get an email or push notification.')\n\t\t\t} else {\n\t\t\t\treturn t('activity', 'Choose for which activities you want to get a push notification.')\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.setEndpoint({ endpoint: '/apps/activity/settings' })\n\t},\n\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'setEndpoint',\n\t\t\t'
reuse._util - ERROR - 'js/activity-personalSettings.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n \nimport { registerGlobalAPI } from './utils/api.js'\n\nregisterGlobalAPI()\n"],"names":["registerGlobalAPI"],"mappings":"+HAOAA,EAAkB"'
reuse._util - ERROR - 'js/activity-api.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file

# SUMMARY

* Bad licenses: 0
* Deprecated licenses: 0
* Licenses without file extension: 0
* Missing licenses: 0
* Unused licenses: 0
* Used licenses: CC0-1.0, AGPL-3.0-or-later, MIT, AGPL-3.0-only, Apache-2.0
* Read errors: 0
* Files with copyright information: 449 / 449
* Files with license information: 449 / 449

Congratulations! Your project is compliant with version 3.2 of the REUSE Specification :-)