diff --git a/app/src/adapters/VaultAdapter.ts b/app/src/adapters/VaultAdapter.ts deleted file mode 100644 index d0ec535..0000000 --- a/app/src/adapters/VaultAdapter.ts +++ /dev/null @@ -1,41 +0,0 @@ -import {App, CachedMetadata, TFile} from "obsidian"; -import KObject from "../../../core/src/domain/KObject"; -import AppUtils from "../utils/AppUtils"; - -export default class VaultAdapter { - constructor(private app: App, private appUtils: AppUtils) { - } - - getAllMdFiles() { - return this.app.vault.getMarkdownFiles(); - } - - getFileCache(file: TFile): CachedMetadata | null { - return this.app.metadataCache.getFileCache(file); - } - - findMdWith(filter: (f: TFile) => boolean) { - return this.getAllMdFiles().filter(filter); - } - - getObjectFileOrThrow(ko: KObject): TFile { - let res = this.getObjectFile(ko); - if (!res) { - throw new Error("Object file not found for " + ko); - } - return res; - } - - getObjectFile(ko: KObject): TFile | null { - const a = this.findMdWith(f => { - const frontmatter = this.appUtils.getFrontmatterOrNull(f); - if (!frontmatter) { - return false; - } - - const id: string = frontmatter["uid"]; - return id === ko.id; - }); - return a[0]; - } -} diff --git a/app/src/adapters/input/OpenCurrentDailyNoteExoCommand.ts b/app/src/adapters/input/OpenCurrentDailyNoteExoCommand.ts index 74b2e32..971ea63 100644 --- a/app/src/adapters/input/OpenCurrentDailyNoteExoCommand.ts +++ b/app/src/adapters/input/OpenCurrentDailyNoteExoCommand.ts @@ -17,11 +17,6 @@ export default class OpenCurrentDailyNoteExoCommand implements ExoCommand { throw new Error("No current daily note found"); } - let file = this.ctx.vaultAdapter.getObjectFile(currentDN); - if (!file) { - throw new Error("Daily note file not found"); - } - - await this.ctx.appUtils.openFile(file); + await this.ctx.appUtils.openKObject(currentDN); } } diff --git a/app/src/adapters/output/DailyNotePersistenceAdapter.ts b/app/src/adapters/output/DailyNotePersistenceAdapter.ts index 41bc57b..c825603 100644 --- a/app/src/adapters/output/DailyNotePersistenceAdapter.ts +++ b/app/src/adapters/output/DailyNotePersistenceAdapter.ts @@ -1,13 +1,11 @@ import DailyNote from "../../../../core/src/domain/DailyNote"; import {TFile} from "obsidian"; -import VaultAdapter from "../VaultAdapter"; import DailyNoteCreator from "../../utils/DailyNoteCreator"; import AppUtils from "../../utils/AppUtils"; import DailyNoteRepository from "../../../../core/src/ports/output/DailyNoteRepository"; export default class DailyNotePersistenceAdapter implements DailyNoteRepository { constructor(private appUtils: AppUtils, - private vaultAdapter: VaultAdapter, private dailyNoteCreator: DailyNoteCreator) { } @@ -18,7 +16,7 @@ export default class DailyNotePersistenceAdapter implements DailyNoteRepository } async findAll(): Promise { - const rawDailyNotes: TFile[] = this.vaultAdapter.findMdWith((f: TFile) => { + const rawDailyNotes: TFile[] = this.appUtils.findMdWith((f: TFile) => { return this.appUtils.getTagsFromFile(f).includes("TMS/DailyNote"); }); diff --git a/app/src/utils/AppUtils.ts b/app/src/utils/AppUtils.ts index 46c8eae..1abd18c 100644 --- a/app/src/utils/AppUtils.ts +++ b/app/src/utils/AppUtils.ts @@ -1,4 +1,5 @@ -import {App, FrontMatterCache, TFile} from "obsidian"; +import {App, CachedMetadata, FrontMatterCache, TFile} from "obsidian"; +import KObject from "../../../core/src/domain/KObject"; export default class AppUtils { constructor(private app: App) { @@ -8,6 +9,11 @@ export default class AppUtils { await this.app.vault.create(path, textContent); } + async openKObject(ko: KObject) { + const file = this.getObjectFileOrThrow(ko); + await this.openFile(file); + } + async openFile(file: TFile) { const leaf = this.app.workspace.getLeaf(false); await leaf.openFile(file); @@ -65,4 +71,36 @@ export default class AppUtils { } + getAllMdFiles() { + return this.app.vault.getMarkdownFiles(); + } + + getFileCache(file: TFile): CachedMetadata | null { + return this.app.metadataCache.getFileCache(file); + } + + findMdWith(filter: (f: TFile) => boolean) { + return this.getAllMdFiles().filter(filter); + } + + getObjectFileOrThrow(ko: KObject): TFile { + let res = this.getObjectFile(ko); + if (!res) { + throw new Error("Object file not found for " + ko); + } + return res; + } + + getObjectFile(ko: KObject): TFile | null { + const a = this.findMdWith(f => { + const frontmatter = this.getFrontmatterOrNull(f); + if (!frontmatter) { + return false; + } + + const id: string = frontmatter["uid"]; + return id === ko.id; + }); + return a[0]; + } } diff --git a/common/ExoContext.ts b/common/ExoContext.ts index bc3894c..3d9a9c0 100644 --- a/common/ExoContext.ts +++ b/common/ExoContext.ts @@ -2,7 +2,6 @@ import {App} from "obsidian"; import DailyNoteRepository from "../core/src/ports/output/DailyNoteRepository"; import Utils from "../core/src/utils/Utils"; import DailyNoteCreator from "../app/src/utils/DailyNoteCreator"; -import VaultAdapter from "../app/src/adapters/VaultAdapter"; import KObjectCreator from "../app/src/utils/KObjectCreator"; import AppUtils from "../app/src/utils/AppUtils"; import CountNotesUseCase from "../core/src/ports/input/CountNotesUseCase"; @@ -23,7 +22,6 @@ export default class ExoContext { public readonly dailyNoteRepository: DailyNoteRepository; public readonly kObjectUtility: KObjectUtility; - public readonly vaultAdapter: VaultAdapter; public readonly appUtils: AppUtils; public readonly countNotesUseCase: CountNotesUseCase; @@ -34,13 +32,12 @@ export default class ExoContext { constructor(public app: App) { this.utils = new Utils(this.app); this.appUtils = new AppUtils(this.app); - this.vaultAdapter = new VaultAdapter(this.app, this.appUtils); this.kObjectCreator = new KObjectCreator(this.appUtils); this.dailyNoteCreator = new DailyNoteCreator(this.appUtils); - this.dailyNoteRepository = new DailyNotePersistenceAdapter(this.appUtils, this.vaultAdapter, this.dailyNoteCreator); + this.dailyNoteRepository = new DailyNotePersistenceAdapter(this.appUtils, this.dailyNoteCreator); this.kObjectUtility = new KObjectUtility(this); - this.countNotesUseCase = new CountNotesService(this.vaultAdapter); + this.countNotesUseCase = new CountNotesService(this.appUtils); this.getCurrentDNUseCase = new GetCurrentDailyNoteService(this.dailyNoteRepository); this.effortRepository = new EffortPersistenceAdapter(this); this.createEffortUseCase = new CreateEffortService(this.effortRepository); diff --git a/core/src/service/CountNotesService.ts b/core/src/service/CountNotesService.ts index a895b76..f97bff7 100644 --- a/core/src/service/CountNotesService.ts +++ b/core/src/service/CountNotesService.ts @@ -1,12 +1,12 @@ import CountNotesUseCase from "../ports/input/CountNotesUseCase"; -import VaultAdapter from "../../../app/src/adapters/VaultAdapter"; +import AppUtils from "../../../app/src/utils/AppUtils"; export default class CountNotesService implements CountNotesUseCase { - constructor(private vaultAdapter: VaultAdapter) { + constructor(private appUtils: AppUtils) { } count(): number { - return this.vaultAdapter.getAllMdFiles().length; + return this.appUtils.getAllMdFiles().length; } }