aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_external/src/init.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_external/src/init.ts')
-rw-r--r--apps/files_external/src/init.ts64
1 files changed, 64 insertions, 0 deletions
diff --git a/apps/files_external/src/init.ts b/apps/files_external/src/init.ts
new file mode 100644
index 00000000000..a8a265500dd
--- /dev/null
+++ b/apps/files_external/src/init.ts
@@ -0,0 +1,64 @@
+/**
+ * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+import { loadState } from '@nextcloud/initial-state'
+import { translate as t } from '@nextcloud/l10n'
+import { View, getNavigation, Column, registerFileAction } from '@nextcloud/files'
+import FolderNetworkSvg from '@mdi/svg/svg/folder-network-outline.svg?raw'
+
+import { action as enterCredentialsAction } from './actions/enterCredentialsAction'
+import { action as inlineStorageCheckAction } from './actions/inlineStorageCheckAction'
+import { action as openInFilesAction } from './actions/openInFilesAction'
+import { getContents } from './services/externalStorage'
+
+const allowUserMounting = loadState('files_external', 'allowUserMounting', false)
+
+// Register view
+const Navigation = getNavigation()
+Navigation.register(new View({
+ id: 'extstoragemounts',
+ name: t('files_external', 'External storage'),
+ caption: t('files_external', 'List of external storage.'),
+
+ emptyCaption: allowUserMounting
+ ? t('files_external', 'There is no external storage configured. You can configure them in your Personal settings.')
+ : t('files_external', 'There is no external storage configured and you don\'t have the permission to configure them.'),
+ emptyTitle: t('files_external', 'No external storage'),
+
+ icon: FolderNetworkSvg,
+ order: 30,
+
+ columns: [
+ new Column({
+ id: 'storage-type',
+ title: t('files_external', 'Storage type'),
+ render(node) {
+ const backend = node.attributes?.backend || t('files_external', 'Unknown')
+ const span = document.createElement('span')
+ span.textContent = backend
+ return span
+ },
+ }),
+ new Column({
+ id: 'scope',
+ title: t('files_external', 'Scope'),
+ render(node) {
+ const span = document.createElement('span')
+ let scope = t('files_external', 'Personal')
+ if (node.attributes?.scope === 'system') {
+ scope = t('files_external', 'System')
+ }
+ span.textContent = scope
+ return span
+ },
+ }),
+ ],
+
+ getContents,
+}))
+
+// Register actions
+registerFileAction(enterCredentialsAction)
+registerFileAction(inlineStorageCheckAction)
+registerFileAction(openInFilesAction)