mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-03-30 21:55:18 +00:00
- The plug-in automatically fetches the missing chunks even if `Fetch chunks on demand` is disabled.
- This change is to avoid loss of data when receiving a bulk of revisions.
- This can be prevented by enabling `Use Only Local Chunks` in the settings.
- Storage application now saved during each event and restored on startup.
- Synchronisation result application is also now saved during each event and restored on startup.
- These may avoid some unexpected loss of data when the editor crashes.
### Fixed
- Now the plug-in waits for the application of pended batch changes before the synchronisation starts.
- This may avoid some unexpected loss or unexpected conflicts.
Plug-in sends custom headers correctly when RequestAPI is used.
- No longer causing unexpected chunk creation during `Reset synchronisation on This Device` with bucket sync.
### Refactored
- Synchronisation result application process has been refactored.
- Storage application process has been refactored.
- Please report if you find any unexpected behaviour after this update. A bit of large refactoring.
62 lines
2.5 KiB
TypeScript
62 lines
2.5 KiB
TypeScript
import type {
|
|
FilePath,
|
|
FilePathWithPrefix,
|
|
UXDataWriteOptions,
|
|
UXFileInfo,
|
|
UXFileInfoStub,
|
|
UXFolderInfo,
|
|
UXStat,
|
|
} from "../../lib/src/common/types";
|
|
import type { CustomRegExp } from "../../lib/src/common/utils";
|
|
|
|
export interface StorageAccess {
|
|
restoreState(): Promise<void>;
|
|
processWriteFile<T>(file: UXFileInfoStub | FilePathWithPrefix, proc: () => Promise<T>): Promise<T>;
|
|
processReadFile<T>(file: UXFileInfoStub | FilePathWithPrefix, proc: () => Promise<T>): Promise<T>;
|
|
isFileProcessing(file: UXFileInfoStub | FilePathWithPrefix): boolean;
|
|
|
|
deleteVaultItem(file: FilePathWithPrefix | UXFileInfoStub | UXFolderInfo): Promise<void>;
|
|
|
|
writeFileAuto(path: string, data: string | ArrayBuffer, opt?: UXDataWriteOptions): Promise<boolean>;
|
|
|
|
readFileAuto(path: string): Promise<string | ArrayBuffer>;
|
|
readFileText(path: string): Promise<string>;
|
|
isExists(path: string): Promise<boolean>;
|
|
writeHiddenFileAuto(path: string, data: string | ArrayBuffer, opt?: UXDataWriteOptions): Promise<boolean>;
|
|
appendHiddenFile(path: string, data: string, opt?: UXDataWriteOptions): Promise<boolean>;
|
|
|
|
stat(path: string): Promise<UXStat | null>;
|
|
statHidden(path: string): Promise<UXStat | null>;
|
|
removeHidden(path: string): Promise<boolean>;
|
|
readHiddenFileAuto(path: string): Promise<string | ArrayBuffer>;
|
|
readHiddenFileBinary(path: string): Promise<ArrayBuffer>;
|
|
readHiddenFileText(path: string): Promise<string>;
|
|
isExistsIncludeHidden(path: string): Promise<boolean>;
|
|
// This could be work also for the hidden files.
|
|
ensureDir(path: string): Promise<boolean>;
|
|
triggerFileEvent(event: string, path: string): void;
|
|
triggerHiddenFile(path: string): Promise<void>;
|
|
|
|
getFileStub(path: string): UXFileInfoStub | null;
|
|
readStubContent(stub: UXFileInfoStub): Promise<UXFileInfo | false>;
|
|
getStub(path: string): UXFileInfoStub | UXFolderInfo | null;
|
|
|
|
getFiles(): UXFileInfoStub[];
|
|
getFileNames(): FilePathWithPrefix[];
|
|
|
|
touched(file: UXFileInfoStub | FilePathWithPrefix): Promise<void>;
|
|
recentlyTouched(file: UXFileInfoStub | FilePathWithPrefix): boolean;
|
|
clearTouched(): void;
|
|
|
|
// -- Low-Level
|
|
delete(file: FilePathWithPrefix | UXFileInfoStub | string, force: boolean): Promise<void>;
|
|
trash(file: FilePathWithPrefix | UXFileInfoStub | string, system: boolean): Promise<void>;
|
|
|
|
getFilesIncludeHidden(
|
|
basePath: string,
|
|
includeFilter?: CustomRegExp[],
|
|
excludeFilter?: CustomRegExp[],
|
|
skipFolder?: string[]
|
|
): Promise<FilePath[]>;
|
|
}
|