Warn after partial startup scans

This commit is contained in:
vorotamoroz
2026-09-04 13:54:36 +00:00
parent 6abc5cba64
commit 188b749326
8 changed files with 53 additions and 9 deletions
@@ -50,6 +50,7 @@ import {
MetadataDocumentRepairResults,
OfflineScanUnresolvedReasons,
repairMetadataDocumentIdentity,
VaultScanResults,
type MetadataDocumentIdentityIssue,
} from "@vrtmrz/livesync-commonlib/compat/serviceFeatures/offlineScanner";
import {
@@ -292,7 +293,8 @@ export function paneHatch(this: ObsidianLiveSyncSettingTab, paneEl: HTMLElement,
)) === repairAction,
repair: async (repairRequest) =>
await repairMetadataDocumentIdentity(this.core, repairRequest),
requestOrdinaryScan: async () => await this.services.vault.scanVault(true, false),
requestOrdinaryScan: async () =>
(await this.services.vault.scanVault(true, false)) === VaultScanResults.COMPLETED,
});
if (execution.status === MetadataIdentityRepairExecutions.CANCELLED) return;
+6 -2
View File
@@ -17,6 +17,7 @@ import type { InjectableServiceHub } from "@vrtmrz/livesync-commonlib/compat/ser
import type { LiveSyncCore } from "@/main.ts";
import { initialiseWorkerModule } from "@vrtmrz/livesync-commonlib/compat/worker/bgWorker";
import { manifestVersion, packageVersion } from "@vrtmrz/livesync-commonlib/compat/common/coreEnvVars";
import { VaultScanResults } from "@vrtmrz/livesync-commonlib/compat/serviceFeatures/offlineScanner";
export class ModuleLiveSyncMain extends AbstractModule {
async _onLiveSyncReady() {
@@ -44,12 +45,15 @@ export class ModuleLiveSyncMain extends AbstractModule {
}
// Ordinary start-up may continue when individual files could not be
// processed. Explicit Fetch and Rebuild flows retain the strict default.
const isInitialized = await this.services.databaseEvents.initialiseDatabase(false, false, false, true);
if (!isInitialized) {
const initialisationResult = await this.services.databaseEvents.initialiseDatabase(false, false, false, true);
if (initialisationResult === VaultScanResults.FAILED) {
this._log($msg("Ui.Common.LocalDatabaseInitialisationFailed"), LOG_LEVEL_NOTICE);
//TODO:stop all sync.
return false;
}
if (initialisationResult === VaultScanResults.COMPLETED_WITH_FILE_FAILURES) {
this._log($msg("Ui.Common.SomeFilesCouldNotBeSynchronised"), LOG_LEVEL_NOTICE);
}
if (!(await this.core.services.appLifecycle.onFirstInitialise())) return false;
// await this.core.$$realizeSettingSyncMode();
await this.services.control.applySettings();
@@ -47,4 +47,34 @@ describe("ModuleLiveSyncMain", () => {
expect(initialiseDatabase).toHaveBeenCalledWith(false, false, false, true);
expect(log).toHaveBeenCalledWith("Ui.Common.LocalDatabaseInitialisationFailed", LOG_LEVEL_NOTICE);
});
it("warns when start-up continues with individual file failures", async () => {
const initialiseDatabase = vi.fn(async () => "completed-with-file-failures");
const log = vi.fn();
const appLifecycle = {
onLayoutReady: vi.fn(async () => true),
onFirstInitialise: vi.fn(async () => true),
onScanningStartupIssues: vi.fn(async () => true),
};
const host = {
core: {
services: { appLifecycle },
},
services: {
appLifecycle,
control: { applySettings: vi.fn(async () => undefined) },
databaseEvents: { initialiseDatabase },
},
settings: {
suspendFileWatching: false,
suspendParseReplicationResult: false,
},
_log: log,
};
const result = await ModuleLiveSyncMain.prototype._onLiveSyncReady.call(host as never);
expect(result).toBe(true);
expect(log).toHaveBeenCalledWith("Ui.Common.SomeFilesCouldNotBeSynchronised", LOG_LEVEL_NOTICE);
});
});