diff --git a/src/app/shared/components/addons/storage-item-selector/storage-item-selector.component.html b/src/app/shared/components/addons/storage-item-selector/storage-item-selector.component.html index c74bdb3ba..0d860844d 100644 --- a/src/app/shared/components/addons/storage-item-selector/storage-item-selector.component.html +++ b/src/app/shared/components/addons/storage-item-selector/storage-item-selector.component.html @@ -51,17 +51,16 @@

{{ 'settings.addons.configureAddon.folderName' | translate }}

{{ 'settings.addons.configureAddon.selectFolder' | translate }}

@if (operationInvocationResult().length) { - @for (folder of operationInvocationResult(); track folder.itemId) { - @let operationName = - folder.mayContainRootCandidates ? OperationNames.LIST_CHILD_ITEMS : OperationNames.GET_ITEM_INFO; - @let itemId = folder.itemId || '/'; - @let isLinkDisabled = !folder.mayContainRootCandidates || folder.itemType !== StorageItemType.Folder; + @for (resultItem of operationInvocationResult(); track resultItem.itemId) { + @let operationName = getOperationNameForItem(resultItem); + @let itemId = resultItem.itemId || '/'; + @let isLinkDisabled = isItemDisabled(resultItem);
- @if (folder.canBeRoot) { + @if (resultItem.canBeRoot) { }
diff --git a/src/app/shared/components/addons/storage-item-selector/storage-item-selector.component.ts b/src/app/shared/components/addons/storage-item-selector/storage-item-selector.component.ts index 6d36a4dfb..d153d7f01 100644 --- a/src/app/shared/components/addons/storage-item-selector/storage-item-selector.component.ts +++ b/src/app/shared/components/addons/storage-item-selector/storage-item-selector.component.ts @@ -69,7 +69,7 @@ export class StorageItemSelectorComponent implements OnInit { operationInvocationResult = input.required(); accountNameControl = input(new FormControl()); isCreateMode = input(false); - currentAddonType = input(AddonType.STORAGE); + currentAddonType = input(AddonType.STORAGE); supportedResourceTypes = input([]); selectedStorageItemId = model('/'); @@ -259,6 +259,30 @@ export class StorageItemSelectorComponent implements OnInit { } } + isItemDisabled(item: StorageItem): boolean { + return !item.mayContainRootCandidates || !this.isDirectory(item); + } + + isDirectory(item: StorageItem): boolean { + return item.itemType === StorageItemType.Folder || item.itemType === StorageItemType.Collection; + } + + getOperationNameForItem(item: StorageItem): OperationNames | null { + const addonType = this.currentAddonType(); + if (addonType == AddonType.STORAGE || addonType === AddonType.LINK) { + if (item.mayContainRootCandidates) { + return OperationNames.LIST_CHILD_ITEMS; + } else { + return OperationNames.GET_ITEM_INFO; + } + } else if (addonType == AddonType.CITATION) { + if (item.mayContainRootCandidates) { + return OperationNames.LIST_COLLECTION_ITEMS; + } + } + return null; + } + private trimBreadcrumbs(itemId: string): void { const currentBreadcrumbs = this.breadcrumbItems(); diff --git a/src/app/shared/enums/storage-item-type.enum.ts b/src/app/shared/enums/storage-item-type.enum.ts index 91ab6cfcf..7c32fd2a3 100644 --- a/src/app/shared/enums/storage-item-type.enum.ts +++ b/src/app/shared/enums/storage-item-type.enum.ts @@ -2,5 +2,6 @@ export enum StorageItemType { Folder = 'FOLDER', Resource = 'RESOURCE', Document = 'DOCUMENT', + File = 'FILE', Collection = 'COLLECTION', }