diff --git a/src/backend/model/extension/ExtensionManager.ts b/src/backend/model/extension/ExtensionManager.ts index f5256861..8344b049 100644 --- a/src/backend/model/extension/ExtensionManager.ts +++ b/src/backend/model/extension/ExtensionManager.ts @@ -55,6 +55,7 @@ export class ExtensionManager implements IObjectManager { invalidateDirectoryCovers: new ExtensionEvent(), }, DiskManager: { + excludeDir: new ExtensionEvent(), scanDirectory: new ExtensionEvent() }, ImageRenderer: { diff --git a/src/backend/model/extension/IExtension.ts b/src/backend/model/extension/IExtension.ts index ea8da419..c6ed3de4 100644 --- a/src/backend/model/extension/IExtension.ts +++ b/src/backend/model/extension/IExtension.ts @@ -73,6 +73,11 @@ export interface IExtensionEvents { * photos, videos and metafiles */ DiskManager: { + excludeDir: IExtensionEvent<[{ + name: string, + parentDirRelativeName: string, + parentDirAbsoluteName: string + }], boolean>, scanDirectory: IExtensionEvent<[ string, DirectoryScanSettings], ParentDirectoryDTO> diff --git a/src/backend/model/fileaccess/DiskManager.ts b/src/backend/model/fileaccess/DiskManager.ts index 9226e25c..e07ff2e3 100644 --- a/src/backend/model/fileaccess/DiskManager.ts +++ b/src/backend/model/fileaccess/DiskManager.ts @@ -49,19 +49,20 @@ export class DiskManager { return path.basename(dirPath); } - public static async excludeDir( + @ExtensionDecorator(e => e.gallery.DiskManager.excludeDir) + public static async excludeDir(dir: { name: string, - relativeDirectoryName: string, - absoluteDirectoryName: string - ): Promise { + parentDirRelativeName: string, + parentDirAbsoluteName: string + }): Promise { if ( Config.Indexing.excludeFolderList.length === 0 && Config.Indexing.excludeFileList.length === 0 ) { return false; } - const absoluteName = path.normalize(path.join(absoluteDirectoryName, name)); - const relativeName = path.normalize(path.join(relativeDirectoryName, name)); + const absoluteName = path.normalize(path.join(dir.parentDirAbsoluteName, dir.name)); + const relativeName = path.normalize(path.join(dir.parentDirRelativeName, dir.name)); for (const exclude of Config.Indexing.excludeFolderList) { if (exclude.startsWith('/')) { @@ -73,7 +74,7 @@ export class DiskManager { return true; } } else { - if (exclude === name) { + if (exclude === dir.name) { return true; } } @@ -155,11 +156,11 @@ export class DiskManager { if ( settings.noDirectory === true || settings.coverOnly === true || - (await DiskManager.excludeDir( - file, - relativeDirectoryName, - absoluteDirectoryName - )) + (await DiskManager.excludeDir({ + name: file, + parentDirRelativeName: relativeDirectoryName, + parentDirAbsoluteName: absoluteDirectoryName + })) ) { continue; }