fix(files): only show template picker menu entries if possible

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This commit is contained in:
Ferdinand Thiessen 2026-05-06 16:55:35 +02:00
parent ad2fab1c5e
commit 315fbd1411
No known key found for this signature in database
GPG key ID: 7E849AE05218500F

View file

@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { Folder, NewMenuEntry, Node } from '@nextcloud/files'
import type { IFolder, INode, NewMenuEntry } from '@nextcloud/files'
import type { ComponentInstance } from 'vue'
import type { TemplateFile } from '../types.ts'
@ -22,7 +22,7 @@ let TemplatePicker: ComponentInstance & { open: (n: string, t: TemplateFile) =>
*
* @param context
*/
async function getTemplatePicker(context: Folder) {
async function getTemplatePicker(context: IFolder) {
if (TemplatePicker === null) {
// Create document root
const mountingPoint = document.createElement('div')
@ -63,13 +63,18 @@ export function registerTemplateEntries() {
addNewFileMenuEntry({
id: `template-new-${provider.app}-${index}`,
displayName: provider.label,
iconClass: provider.iconClass || 'icon-file',
iconSvgInline: provider.iconSvgInline,
enabled(context: Folder): boolean {
return (context.permissions & Permission.CREATE) !== 0
enabled(context: IFolder): boolean {
if (context.attributes['is-encrypted']) {
return false
}
// templates are only supported in folders where the user has read and create permissions
return (context.permissions & Permission.READ) !== 0
&& (context.permissions & Permission.CREATE) !== 0
},
order: 11,
async handler(context: Folder, content: Node[]) {
async handler(context: IFolder, content: INode[]) {
const templatePicker = getTemplatePicker(context)
const name = await newNodeName(`${provider.label}${provider.extension}`, content, {
label: t('files', 'Filename'),