Refactor VaultAdapter.ts and AppUtils.ts
This commit is contained in:
parent
ff4362fe14
commit
36fb218170
|
@ -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];
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<DailyNote[]> {
|
||||
const rawDailyNotes: TFile[] = this.vaultAdapter.findMdWith((f: TFile) => {
|
||||
const rawDailyNotes: TFile[] = this.appUtils.findMdWith((f: TFile) => {
|
||||
return this.appUtils.getTagsFromFile(f).includes("TMS/DailyNote");
|
||||
});
|
||||
|
||||
|
|
|
@ -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];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue