feat: configure Adaptive PostgREST journal remotes

This commit is contained in:
vorotamoroz
2026-08-02 07:51:39 +00:00
parent f93b5ac8e4
commit f67d224657
13 changed files with 761 additions and 3 deletions
@@ -46,6 +46,16 @@ function serializeRemoteConfiguration(settings: ObsidianLiveSyncSettings): strin
const configuration = defaultRemoteProviderRegistry.configurationFromSettings(type, settings);
return defaultRemoteProviderRegistry.serialise(configuration);
}
function describeRemoteConfiguration(uri: string): string {
try {
const configuration = defaultRemoteProviderRegistry.parse(uri);
return defaultRemoteProviderRegistry.suggestName(configuration);
} catch {
return "";
}
}
function setEmojiButton(button: ButtonComponent, emoji: string, tooltip: string) {
button.setButtonText(emoji);
button.setTooltip(tooltip, { delay: 10, placement: "top" });
@@ -2,6 +2,7 @@ import {
pickBucketSyncSettings,
pickCouchDBSyncSettings,
pickP2PSyncSettings,
pickPostgRESTSyncSettings,
pickWebDAVSyncSettings,
} from "@vrtmrz/livesync-commonlib/compat/common/utils";
import type { ObsidianLiveSyncSettings } from "@vrtmrz/livesync-commonlib/compat/common/types";
@@ -17,6 +18,7 @@ export function syncActivatedRemoteSettings(
activeConfigurationId: source.activeConfigurationId,
...pickBucketSyncSettings(source),
...pickWebDAVSyncSettings(source),
...pickPostgRESTSyncSettings(source),
...pickCouchDBSyncSettings(source),
...pickP2PSyncSettings(source),
});
@@ -3,6 +3,7 @@ import {
DEFAULT_SETTINGS,
REMOTE_COUCHDB,
REMOTE_MINIO,
REMOTE_POSTGREST,
REMOTE_WEBDAV,
} from "@vrtmrz/livesync-commonlib/compat/common/types";
import { syncActivatedRemoteSettings } from "./remoteConfigBuffer";
@@ -121,4 +122,35 @@ describe("syncActivatedRemoteSettings", () => {
expect(target.journalFormat).toBe("adaptive-v1");
expect(target.packReadPolicy).toBe("range");
});
it("should copy the active PostgREST connection and fixed Adaptive protocol into the editing buffer", () => {
const target = {
...DEFAULT_SETTINGS,
remoteType: REMOTE_COUCHDB,
activeConfigurationId: "old-remote",
postgrestActiveConnectionURI: "",
expectedRepositoryId: "",
journalFormat: "opaque-v1" as const,
packReadPolicy: "range" as const,
};
const source = {
...DEFAULT_SETTINGS,
remoteType: REMOTE_POSTGREST,
activeConfigurationId: "remote-postgrest",
postgrestActiveConnectionURI:
"sls+postgrest://vault-id-00000001:vault-credential@project.example/rest/v1?apiKey=publishable",
expectedRepositoryId: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
journalFormat: "adaptive-v1" as const,
packReadPolicy: "whole-pack" as const,
};
syncActivatedRemoteSettings(target, source);
expect(target.remoteType).toBe(REMOTE_POSTGREST);
expect(target.activeConfigurationId).toBe("remote-postgrest");
expect(target.postgrestActiveConnectionURI).toBe(source.postgrestActiveConnectionURI);
expect(target.expectedRepositoryId).toBe(source.expectedRepositoryId);
expect(target.journalFormat).toBe("adaptive-v1");
expect(target.packReadPolicy).toBe("whole-pack");
});
});