mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2026-09-22 02:27:07 +00:00
53 lines
2.2 KiB
TypeScript
53 lines
2.2 KiB
TypeScript
import {
|
|
hasManagedP2PIceServerSource as hasManagedTurnSettings,
|
|
type ObsidianLiveSyncSettings,
|
|
} from "@vrtmrz/livesync-commonlib/compat/common/types";
|
|
|
|
import { iceServerSourceDefinitions } from "@/integrations/iceServerSources";
|
|
|
|
export { hasManagedTurnSettings };
|
|
|
|
/** Reports retain the selected source label, but no opaque source configuration. */
|
|
export function redactTurnSourceForReport(settings: Partial<ObsidianLiveSyncSettings>): void {
|
|
if (settings.encryptedP2PIceServerSource) settings.encryptedP2PIceServerSource = "REDACTED";
|
|
if (settings.P2P_iceServerSource !== undefined) {
|
|
settings.P2P_iceServerSource = {
|
|
version: 1,
|
|
id:
|
|
iceServerSourceDefinitions.find((source) => source.id === settings.P2P_iceServerSource?.id)?.id ??
|
|
"redacted",
|
|
configuration: { redacted: true },
|
|
};
|
|
}
|
|
}
|
|
|
|
/** Managed connection profiles are shared through encrypted Setup URIs. */
|
|
export function omitManagedTurnProfilesFromMarkdown(settings: Partial<ObsidianLiveSyncSettings>): void {
|
|
if (!hasManagedTurnSettings(settings)) return;
|
|
delete settings.P2P_iceServerSource;
|
|
delete settings.encryptedP2PIceServerSource;
|
|
delete settings.remoteConfigurations;
|
|
delete settings.activeConfigurationId;
|
|
delete settings.P2P_ActiveRemoteConfigurationId;
|
|
}
|
|
|
|
/** An omitted profile group leaves this device's existing connection selection intact. */
|
|
export function preserveManagedTurnProfilesOnMarkdownImport(
|
|
incoming: Partial<ObsidianLiveSyncSettings>,
|
|
current: ObsidianLiveSyncSettings,
|
|
merged: ObsidianLiveSyncSettings
|
|
): void {
|
|
if (
|
|
!hasManagedTurnSettings(current) ||
|
|
incoming.remoteConfigurations !== undefined ||
|
|
incoming.P2P_iceServerSource !== undefined
|
|
) {
|
|
return;
|
|
}
|
|
merged.remoteConfigurations = structuredClone(current.remoteConfigurations);
|
|
merged.activeConfigurationId = current.activeConfigurationId;
|
|
merged.P2P_ActiveRemoteConfigurationId = current.P2P_ActiveRemoteConfigurationId;
|
|
merged.P2P_iceServerSource = structuredClone(current.P2P_iceServerSource);
|
|
merged.encryptedP2PIceServerSource = current.encryptedP2PIceServerSource;
|
|
}
|