/** * 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.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)