mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-07-16 01:26:01 +00:00
62f44e38c0
Squash commits
62 lines
2.5 KiB
TypeScript
62 lines
2.5 KiB
TypeScript
import type { UXDataWriteOptions } from "@lib/common/types";
|
|
import type { IVaultAdapter } from "@lib/serviceModules/adapters";
|
|
import { toArrayBuffer } from "@lib/serviceModules/FileAccessBase";
|
|
import type { TFile, App, TFolder } from "obsidian";
|
|
|
|
/**
|
|
* Vault adapter implementation for Obsidian
|
|
*/
|
|
export class ObsidianVaultAdapter implements IVaultAdapter<TFile, TFolder> {
|
|
constructor(private app: App) {}
|
|
|
|
async read(file: TFile): Promise<string> {
|
|
return await this.app.vault.read(file);
|
|
}
|
|
|
|
async cachedRead(file: TFile): Promise<string> {
|
|
return await this.app.vault.cachedRead(file);
|
|
}
|
|
|
|
async readBinary(file: TFile): Promise<ArrayBuffer> {
|
|
return await this.app.vault.readBinary(file);
|
|
}
|
|
|
|
async modify(file: TFile, data: string, options?: UXDataWriteOptions): Promise<void> {
|
|
return await this.app.vault.modify(file, data, options);
|
|
}
|
|
|
|
async modifyBinary(file: TFile, data: ArrayBuffer, options?: UXDataWriteOptions): Promise<void> {
|
|
return await this.app.vault.modifyBinary(file, toArrayBuffer(data), options);
|
|
}
|
|
|
|
async create(path: string, data: string, options?: UXDataWriteOptions): Promise<TFile> {
|
|
return await this.app.vault.create(path, data, options);
|
|
}
|
|
|
|
async createBinary(path: string, data: ArrayBuffer, options?: UXDataWriteOptions): Promise<TFile> {
|
|
return await this.app.vault.createBinary(path, toArrayBuffer(data), options);
|
|
}
|
|
|
|
async delete(file: TFile | TFolder, force = false): Promise<void> {
|
|
if ("trashFile" in this.app.fileManager) {
|
|
// eslint-disable-next-line obsidianmd/no-unsupported-api
|
|
return await this.app.fileManager.trashFile(file);
|
|
}
|
|
// eslint-disable-next-line obsidianmd/prefer-file-manager-trash-file -- Fallback for older versions of Obsidian without trashFile support
|
|
return await this.app.vault.delete(file, force);
|
|
}
|
|
|
|
async trash(file: TFile | TFolder, force = false): Promise<void> {
|
|
if ("trashFile" in this.app.fileManager) {
|
|
// eslint-disable-next-line obsidianmd/no-unsupported-api
|
|
return await this.app.fileManager.trashFile(file);
|
|
}
|
|
// eslint-disable-next-line obsidianmd/prefer-file-manager-trash-file -- Fallback for older versions of Obsidian without trashFile support
|
|
return await this.app.vault.trash(file, force);
|
|
}
|
|
|
|
trigger(name: string, ...data: unknown[]): void {
|
|
return this.app.vault.trigger(name, ...data);
|
|
}
|
|
}
|