Skip to content

Commit 77dfbfe

Browse files
committed
Support custom and special tag folders for PDFs
Extend PDF folder path generation to handle custom and special tag folders. When the document has tags, search for matching custom and special tag folders configured in settings. Adjust the default folder path based on the found tags, ensuring the correct folder is used or falling back to the default when no matches are found. This enhancement improves organization and retrieval of documents by utilizing specific tag-based directories.
1 parent 3d1fa0f commit 77dfbfe

File tree

1 file changed

+60
-1
lines changed

1 file changed

+60
-1
lines changed

src/models/DocumentModel.ts

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,12 +434,71 @@ export class DocumentModel
434434
? (documentDate.getMonth() + 1).toString().padStart(2, '0')
435435
: '';
436436

437-
const defaultPdfFolder = documentDate
437+
// Search for the correct and **first** tag folder
438+
let tagFolder: string | undefined = undefined;
439+
let specialTagFolder: string | undefined = undefined;
440+
441+
if (Array.isArray(document.data.tags)) {
442+
// Tag Folder
443+
// `document.data.tags` is an Array, search for the first tag that matches a custom tag folder
444+
const foundTag = document.data.tags.find((tag) =>
445+
settings.documentSettings.customTagFolders.some(
446+
(folder) => folder.tag === tag,
447+
),
448+
);
449+
450+
if (foundTag) {
451+
tagFolder = settings.documentSettings.customTagFolders.find(
452+
(folder) => folder.tag === foundTag,
453+
)?.folder;
454+
}
455+
456+
// Special Tag Folder
457+
// `document.data.tags` is an Array, search for the first tag that matches a special tag folder
458+
const foundSpecialTag = document.data.tags.find((tag) =>
459+
settings.documentSettings.specialPdfFolders.some(
460+
(folder) => folder.tag === tag,
461+
),
462+
);
463+
464+
if (foundSpecialTag) {
465+
specialTagFolder =
466+
settings.documentSettings.specialPdfFolders.find(
467+
(folder) => folder.tag === foundSpecialTag,
468+
)?.folder;
469+
}
470+
} else if (document.data.tags) {
471+
// `document.data.tags` is a string, search for the custom tag folder
472+
tagFolder = settings.documentSettings.customTagFolders.find(
473+
(folder) => folder.tag === document.data.tags,
474+
)?.folder;
475+
476+
// `document.data.tags` is a string, search for the special tag folder
477+
specialTagFolder = settings.documentSettings.specialPdfFolders.find(
478+
(folder) => folder.tag === document.data.tags,
479+
)?.folder;
480+
}
481+
// If no tag folder was found, use the default folder
482+
483+
let defaultPdfFolder = documentDate
438484
? settings.documentSettings.pdfFolder
439485
.replace('{YYYY}', documentYear)
440486
.replace('{MM}', documentMonth)
441487
: undefined;
442488

489+
if (tagFolder) {
490+
defaultPdfFolder = defaultPdfFolder?.replace(
491+
'{TAG_FOLDER}',
492+
tagFolder,
493+
);
494+
} else {
495+
defaultPdfFolder = defaultPdfFolder?.replace('{TAG_FOLDER}/', '');
496+
}
497+
498+
if (specialTagFolder) {
499+
defaultPdfFolder = specialTagFolder;
500+
}
501+
443502
let desiredPdfFilePath: string | undefined;
444503

445504
// Check if file is already in the default folder

0 commit comments

Comments
 (0)