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',
}