aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/src/actions/sharingStatusAction.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_sharing/src/actions/sharingStatusAction.ts')
-rw-r--r--apps/files_sharing/src/actions/sharingStatusAction.ts147
1 files changed, 0 insertions, 147 deletions
diff --git a/apps/files_sharing/src/actions/sharingStatusAction.ts b/apps/files_sharing/src/actions/sharingStatusAction.ts
deleted file mode 100644
index 98a7d3d6112..00000000000
--- a/apps/files_sharing/src/actions/sharingStatusAction.ts
+++ /dev/null
@@ -1,147 +0,0 @@
-/**
- * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
- *
- * @author John Molakvoæ <skjnldsv@protonmail.com>
- *
- * @license AGPL-3.0-or-later
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-import { Node, View, registerFileAction, FileAction, Permission } from '@nextcloud/files'
-import { translate as t } from '@nextcloud/l10n'
-import { Type } from '@nextcloud/sharing'
-
-import AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw'
-import AccountPlusSvg from '@mdi/svg/svg/account-plus.svg?raw'
-import LinkSvg from '@mdi/svg/svg/link.svg?raw'
-import CircleSvg from '../../../../core/img/apps/circles.svg?raw'
-
-import { action as sidebarAction } from '../../../files/src/actions/sidebarAction'
-import { generateUrl } from '@nextcloud/router'
-import { getCurrentUser } from '@nextcloud/auth'
-
-import './sharingStatusAction.scss'
-
-const generateAvatarSvg = (userId: string) => {
- const avatarUrl = generateUrl('/avatar/{userId}/32', { userId })
- return `<svg width="32" height="32" viewBox="0 0 32 32"
- xmlns="http://www.w3.org/2000/svg" class="sharing-status__avatar">
- <image href="${avatarUrl}" height="32" width="32" />
- </svg>`
-}
-
-export const action = new FileAction({
- id: 'sharing-status',
- displayName(nodes: Node[]) {
- const node = nodes[0]
- const shareTypes = Object.values(node?.attributes?.['share-types'] || {}).flat() as number[]
- const ownerId = node?.attributes?.['owner-id']
-
- if (shareTypes.length > 0
- || (ownerId && ownerId !== getCurrentUser()?.uid)) {
- return t('files_sharing', 'Shared')
- }
-
- return ''
- },
-
- title(nodes: Node[]) {
- const node = nodes[0]
- const ownerId = node?.attributes?.['owner-id']
- const ownerDisplayName = node?.attributes?.['owner-display-name']
-
- // Mixed share types
- if (Array.isArray(node.attributes?.['share-types'])) {
- return t('files_sharing', 'Shared multiple times with different people')
- }
-
- if (ownerId && ownerId !== getCurrentUser()?.uid) {
- return t('files_sharing', 'Shared by {ownerDisplayName}', { ownerDisplayName })
- }
-
- return t('files_sharing', 'Show sharing options')
- },
-
- iconSvgInline(nodes: Node[]) {
- const node = nodes[0]
- const shareTypes = Object.values(node?.attributes?.['share-types'] || {}).flat() as number[]
-
- // Mixed share types
- if (Array.isArray(node.attributes?.['share-types'])) {
- return AccountPlusSvg
- }
-
- // Link shares
- if (shareTypes.includes(Type.SHARE_TYPE_LINK)
- || shareTypes.includes(Type.SHARE_TYPE_EMAIL)) {
- return LinkSvg
- }
-
- // Group shares
- if (shareTypes.includes(Type.SHARE_TYPE_GROUP)
- || shareTypes.includes(Type.SHARE_TYPE_REMOTE_GROUP)) {
- return AccountGroupSvg
- }
-
- // Circle shares
- if (shareTypes.includes(Type.SHARE_TYPE_CIRCLE)) {
- return CircleSvg
- }
-
- const ownerId = node?.attributes?.['owner-id']
- if (ownerId && ownerId !== getCurrentUser()?.uid) {
- return generateAvatarSvg(ownerId)
- }
-
- return AccountPlusSvg
- },
-
- enabled(nodes: Node[]) {
- if (nodes.length !== 1) {
- return false
- }
-
- const node = nodes[0]
- const ownerId = node?.attributes?.['owner-id']
- const isMixed = Array.isArray(node.attributes?.['share-types'])
-
- // If the node is shared multiple times with
- // different share types to the current user
- if (isMixed) {
- return true
- }
-
- // If the node is shared by someone else
- if (ownerId && ownerId !== getCurrentUser()?.uid) {
- return true
- }
-
- return (node.permissions & Permission.SHARE) !== 0
- },
-
- async exec(node: Node, view: View, dir: string) {
- // You need read permissions to see the sidebar
- if ((node.permissions & Permission.READ) !== 0) {
- window.OCA?.Files?.Sidebar?.setActiveTab?.('sharing')
- return sidebarAction.exec(node, view, dir)
- }
- return null
- },
-
- inline: () => true,
-
-})
-
-registerFileAction(action)