aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/src/files_sharing_tab.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_sharing/src/files_sharing_tab.js')
-rw-r--r--apps/files_sharing/src/files_sharing_tab.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/apps/files_sharing/src/files_sharing_tab.js b/apps/files_sharing/src/files_sharing_tab.js
new file mode 100644
index 00000000000..6afcfa76717
--- /dev/null
+++ b/apps/files_sharing/src/files_sharing_tab.js
@@ -0,0 +1,71 @@
+/**
+ * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import Vue from 'vue'
+import { getCSPNonce } from '@nextcloud/auth'
+import { t, n } from '@nextcloud/l10n'
+
+import ShareSearch from './services/ShareSearch.js'
+import ExternalLinkActions from './services/ExternalLinkActions.js'
+import ExternalShareActions from './services/ExternalShareActions.js'
+import TabSections from './services/TabSections.js'
+
+// eslint-disable-next-line n/no-missing-import, import/no-unresolved
+import ShareVariant from '@mdi/svg/svg/share-variant.svg?raw'
+
+// eslint-disable-next-line camelcase
+__webpack_nonce__ = getCSPNonce()
+
+// Init Sharing Tab Service
+if (!window.OCA.Sharing) {
+ window.OCA.Sharing = {}
+}
+Object.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })
+Object.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })
+Object.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })
+Object.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })
+
+Vue.prototype.t = t
+Vue.prototype.n = n
+
+// Init Sharing tab component
+let TabInstance = null
+
+window.addEventListener('DOMContentLoaded', function() {
+ if (OCA.Files && OCA.Files.Sidebar) {
+ OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({
+ id: 'sharing',
+ name: t('files_sharing', 'Sharing'),
+ iconSvg: ShareVariant,
+
+ async mount(el, fileInfo, context) {
+ const SharingTab = (await import('./views/SharingTab.vue')).default
+ const View = Vue.extend(SharingTab)
+
+ if (TabInstance) {
+ TabInstance.$destroy()
+ }
+ TabInstance = new View({
+ // Better integration with vue parent component
+ parent: context,
+ })
+ // Only mount after we have all the info we need
+ await TabInstance.update(fileInfo)
+ TabInstance.$mount(el)
+ },
+
+ update(fileInfo) {
+ TabInstance.update(fileInfo)
+ },
+
+ destroy() {
+ if (TabInstance) {
+ TabInstance.$destroy()
+ TabInstance = null
+ }
+ },
+ }))
+ }
+})