Ensure logging.

This commit is contained in:
vorotamoroz committed 2023-01-28 21:20:26 +09:00
1 parent fad9fed5ca
commit e6025b92d8
1 file changed
+39 -10
+39 -10
View File
@@ -1920,10 +1920,25 @@ export default class ObsidianLiveSyncPlugin extends Plugin {
await this.syncAllFiles(showingNotice); await this.syncAllFiles(showingNotice);
} }
if (this.settings.syncInternalFiles) { if (this.settings.syncInternalFiles) {
try {
Logger("Synchronizing hidden files...");
await this.syncInternalFilesAndDatabase("push", showingNotice); await this.syncInternalFilesAndDatabase("push", showingNotice);
Logger("Synchronizing hidden files done");
} catch (ex) {
Logger("Synchronizing hidden files failed");
Logger(ex, LOG_LEVEL.VERBOSE)
}
} }
if (this.settings.usePluginSync) { if (this.settings.usePluginSync) {
try {
Logger("Scanning plugins...");
await this.sweepPlugin(showingNotice); await this.sweepPlugin(showingNotice);
Logger("Scanning plugins done");
} catch (ex) {
Logger("Scanning plugins failed");
Logger(ex, LOG_LEVEL.VERBOSE)
}
} }
this.isReady = true; this.isReady = true;
// run queued event once. // run queued event once.
@@ -2990,6 +3005,7 @@ export default class ObsidianLiveSyncPlugin extends Plugin {
const content = await arrayBufferToBase64(contentBin); const content = await arrayBufferToBase64(contentBin);
const mtime = file.mtime; const mtime = file.mtime;
return await runWithLock("file-" + id, false, async () => { return await runWithLock("file-" + id, false, async () => {
try {
const old = await this.localDatabase.getDBEntry(id, null, false, false); const old = await this.localDatabase.getDBEntry(id, null, false, false);
let saveData: LoadedEntry; let saveData: LoadedEntry;
if (old === false) { if (old === false) {
@@ -3025,6 +3041,11 @@ export default class ObsidianLiveSyncPlugin extends Plugin {
const ret = await this.localDatabase.putDBEntry(saveData, true); const ret = await this.localDatabase.putDBEntry(saveData, true);
Logger(`STORAGE --> DB:${file.path}: (hidden) Done`); Logger(`STORAGE --> DB:${file.path}: (hidden) Done`);
return ret; return ret;
} catch (ex) {
Logger(`STORAGE --> DB:${file.path}: (hidden) Failed`);
Logger(ex, LOG_LEVEL.VERBOSE);
return false;
}
}); });
} }
@@ -3032,6 +3053,7 @@ export default class ObsidianLiveSyncPlugin extends Plugin {
const id = filename2idInternalMetadata(path2id(filename)); const id = filename2idInternalMetadata(path2id(filename));
const mtime = new Date().getTime(); const mtime = new Date().getTime();
await runWithLock("file-" + id, false, async () => { await runWithLock("file-" + id, false, async () => {
try {
const old = await this.localDatabase.getDBEntry(id, null, false, false) as InternalFileEntry | false; const old = await this.localDatabase.getDBEntry(id, null, false, false) as InternalFileEntry | false;
let saveData: InternalFileEntry; let saveData: InternalFileEntry;
if (old === false) { if (old === false) {
@@ -3061,7 +3083,11 @@ export default class ObsidianLiveSyncPlugin extends Plugin {
} }
await this.localDatabase.localDatabase.put(saveData); await this.localDatabase.localDatabase.put(saveData);
Logger(`STORAGE -x> DB:${filename}: (hidden) Done`); Logger(`STORAGE -x> DB:${filename}: (hidden) Done`);
} catch (ex) {
Logger(`STORAGE -x> DB:${filename}: (hidden) Failed`);
Logger(ex, LOG_LEVEL.VERBOSE);
return false;
}
}); });
} }
async ensureDirectoryEx(fullPath: string) { async ensureDirectoryEx(fullPath: string) {
@@ -3089,6 +3115,7 @@ export default class ObsidianLiveSyncPlugin extends Plugin {
const id = filename2idInternalMetadata(path2id(filename)); const id = filename2idInternalMetadata(path2id(filename));
return await runWithLock("file-" + id, false, async () => { return await runWithLock("file-" + id, false, async () => {
try {
const fileOnDB = await this.localDatabase.getDBEntry(id, null, false, false) as false | LoadedEntry; const fileOnDB = await this.localDatabase.getDBEntry(id, null, false, false) as false | LoadedEntry;
if (fileOnDB === false) throw new Error(`File not found on database.:${id}`); if (fileOnDB === false) throw new Error(`File not found on database.:${id}`);
const deleted = "deleted" in fileOnDB ? fileOnDB.deleted : false; const deleted = "deleted" in fileOnDB ? fileOnDB.deleted : false;
@@ -3107,10 +3134,6 @@ export default class ObsidianLiveSyncPlugin extends Plugin {
Logger(`STORAGE <-- DB:${filename}: written (hidden,new${force ? ", force" : ""})`); Logger(`STORAGE <-- DB:${filename}: written (hidden,new${force ? ", force" : ""})`);
return true; return true;
} else { } else {
try {
// const stat = await this.app.vault.adapter.stat(filename);
// const fileMTime = ~~(stat.mtime/1000);
// const docMtime = ~~(old.mtime/1000);
const contentBin = await this.app.vault.adapter.readBinary(filename); const contentBin = await this.app.vault.adapter.readBinary(filename);
const content = await arrayBufferToBase64(contentBin); const content = await arrayBufferToBase64(contentBin);
if (content == fileOnDB.data && !force) { if (content == fileOnDB.data && !force) {
@@ -3120,10 +3143,12 @@ export default class ObsidianLiveSyncPlugin extends Plugin {
await this.app.vault.adapter.writeBinary(filename, base64ToArrayBuffer(fileOnDB.data), { mtime: fileOnDB.mtime, ctime: fileOnDB.ctime }); await this.app.vault.adapter.writeBinary(filename, base64ToArrayBuffer(fileOnDB.data), { mtime: fileOnDB.mtime, ctime: fileOnDB.ctime });
Logger(`STORAGE <-- DB:${filename}: written (hidden, overwrite${force ? ", force" : ""})`); Logger(`STORAGE <-- DB:${filename}: written (hidden, overwrite${force ? ", force" : ""})`);
return true; return true;
} catch (ex) {
Logger(ex);
return false;
} }
} catch (ex) {
Logger(`STORAGE <-- DB:${filename}: written (hidden, overwrite${force ? ", force" : ""}) Failed`);
Logger(ex, LOG_LEVEL.VERBOSE);
return false;
} }
}); });
} }
@@ -3154,7 +3179,7 @@ export default class ObsidianLiveSyncPlugin extends Plugin {
} }
async resolveConflictOnInternalFile(id: string): Promise<boolean> { async resolveConflictOnInternalFile(id: string): Promise<boolean> {
// Retrieve data try {// Retrieve data
const doc = await this.localDatabase.localDatabase.get(id, { conflicts: true }); const doc = await this.localDatabase.localDatabase.get(id, { conflicts: true });
// If there is no conflict, return with false. // If there is no conflict, return with false.
if (!("_conflicts" in doc)) return false; if (!("_conflicts" in doc)) return false;
@@ -3201,7 +3226,11 @@ export default class ObsidianLiveSyncPlugin extends Plugin {
Logger(`Older one has been deleted:${id2filenameInternalMetadata(id)}`); Logger(`Older one has been deleted:${id2filenameInternalMetadata(id)}`);
// check the file again // check the file again
return this.resolveConflictOnInternalFile(id); return this.resolveConflictOnInternalFile(id);
} catch (ex) {
Logger("Failed to resolve conflict (Hidden)")
Logger(ex, LOG_LEVEL.VERBOSE);
return false;
}
} }
//TODO: Tidy up. Even though it is experimental feature, So dirty... //TODO: Tidy up. Even though it is experimental feature, So dirty...
async syncInternalFilesAndDatabase(direction: "push" | "pull" | "safe", showMessage: boolean, files: InternalFileInfo[] | false = false, targetFiles: string[] | false = false) { async syncInternalFilesAndDatabase(direction: "push" | "pull" | "safe", showMessage: boolean, files: InternalFileInfo[] | false = false, targetFiles: string[] | false = false) {