openInFilesAction.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /**
  2. * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>
  3. *
  4. * @author John Molakvoæ <skjnldsv@protonmail.com>
  5. *
  6. * @license AGPL-3.0-or-later
  7. *
  8. * This program is free software: you can redistribute it and/or modify
  9. * it under the terms of the GNU Affero General Public License as
  10. * published by the Free Software Foundation, either version 3 of the
  11. * License, or (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU Affero General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU Affero General Public License
  19. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  20. *
  21. */
  22. import { translate as t } from '@nextcloud/l10n'
  23. import type { Node } from '@nextcloud/files'
  24. import { registerFileAction, FileAction, DefaultType } from '../../../files/src/services/FileAction'
  25. import { sharesViewId, sharedWithYouViewId, sharedWithOthersViewId, sharingByLinksViewId } from '../views/shares'
  26. export const action = new FileAction({
  27. id: 'open-in-files',
  28. displayName: () => t('files', 'Open in Files'),
  29. iconSvgInline: () => '',
  30. enabled: (nodes, view) => [
  31. sharesViewId,
  32. sharedWithYouViewId,
  33. sharedWithOthersViewId,
  34. sharingByLinksViewId,
  35. // Deleted and pending shares are not
  36. // accessible in the files app.
  37. ].includes(view.id),
  38. async exec(node: Node) {
  39. window.OCP.Files.Router.goToRoute(
  40. null, // use default route
  41. { view: 'files', fileid: node.fileid },
  42. { dir: node.dirname },
  43. )
  44. return null
  45. },
  46. // Before openFolderAction
  47. order: -1000,
  48. default: DefaultType.HIDDEN,
  49. })
  50. registerFileAction(action)