mirror of
https://github.com/panatgithub/AnkiHeadingSync.git
synced 2026-07-22 06:51:43 +00:00
在 include 模式下允许选中文件夹改用与全局 folderDeckMode 相反的映射规则 Add include-scope folder overrides that apply the opposite global folderDeckMode mapping 取消勾选文件夹时会清理该路径及其子树的覆盖记录,并把规则接入设置页与 deck fingerprint Clears override records for deselected folders and descendants, and wires the rules into the settings UI and deck fingerprint
55 lines
No EOL
1.7 KiB
TypeScript
55 lines
No EOL
1.7 KiB
TypeScript
import type { PluginSettings } from "@/application/config/PluginSettings";
|
|
import type { IndexedCard } from "@/domain/manual-sync/entities/IndexedCard";
|
|
import type { DeckResolutionResult } from "@/domain/manual-sync/value-objects/DeckResolution";
|
|
|
|
import { DeckNormalizationService } from "./DeckNormalizationService";
|
|
import { FolderDeckMappingService } from "./FolderDeckMappingService";
|
|
|
|
export class DeckResolutionService {
|
|
constructor(
|
|
private readonly folderDeckMappingService = new FolderDeckMappingService(),
|
|
private readonly deckNormalizationService = new DeckNormalizationService(),
|
|
) {}
|
|
|
|
resolve(card: IndexedCard, settings: Pick<PluginSettings, "defaultDeck" | "folderDeckMode" | "alternateFolderDeckModeFolders">): DeckResolutionResult {
|
|
if (card.deckHint) {
|
|
return {
|
|
resolvedDeck: {
|
|
value: this.deckNormalizationService.normalize(card.deckHint),
|
|
source: card.deckHintSource ?? "body",
|
|
},
|
|
warnings: [...card.deckWarnings],
|
|
};
|
|
}
|
|
|
|
const folderMapping = this.folderDeckMappingService.mapFilePathToDeck(
|
|
card.filePath,
|
|
settings.folderDeckMode,
|
|
settings.alternateFolderDeckModeFolders,
|
|
);
|
|
if (folderMapping.deck) {
|
|
return {
|
|
resolvedDeck: {
|
|
value: folderMapping.deck,
|
|
source: "folder",
|
|
},
|
|
warnings: [...card.deckWarnings, ...folderMapping.warnings],
|
|
};
|
|
}
|
|
|
|
return {
|
|
resolvedDeck: {
|
|
value: this.deckNormalizationService.normalize(settings.defaultDeck),
|
|
source: "default",
|
|
},
|
|
warnings: [
|
|
...card.deckWarnings,
|
|
...folderMapping.warnings,
|
|
{
|
|
filePath: card.filePath,
|
|
code: "deck_fallback_default",
|
|
},
|
|
],
|
|
};
|
|
}
|
|
} |