Files
obsidian-livesync/src/modules/features/SettingDialogue/AdvancedSettingSpecs.ts
T

64 lines
2.4 KiB
TypeScript

import { ChunkAlgorithmNames } from "@vrtmrz/livesync-commonlib/compat/common/types";
import { $msg } from "@/common/translation";
import type { SettingSpecGroup } from "./SettingSpec.ts";
export type AdvancedSettingSpecContext = {
isCouchDB: () => boolean;
};
/** Build the explicitly exposed standard controls for the existing Advanced page. */
export function createAdvancedSettingSpecGroups({
isCouchDB,
}: AdvancedSettingSpecContext): readonly SettingSpecGroup[] {
return [
{
heading: "Memory cache",
items: [{ key: "hashCacheMaxCount", control: { type: "number", min: 10 } }],
},
{
heading: "Local Database Tweak",
items: [
{
key: "chunkSplitterVersion",
control: { type: "dropdown", options: () => ChunkAlgorithmNames },
},
{ key: "customChunkSize", control: { type: "number", min: 0, allowZero: true } },
{
key: "pathNormalizationVersion",
holdValue: true,
control: {
type: "numeric-dropdown",
options: () => ({
"0": $msg("Legacy path identity"),
"1": $msg("Unicode NFC path identity"),
}),
},
visible: isCouchDB,
},
],
},
{
heading: "Transfer Tweak",
items: [
{ key: "readChunksOnline", control: { type: "toggle" }, visible: isCouchDB },
{ key: "useOnlyLocalChunk", control: { type: "toggle" }, visible: isCouchDB },
{
key: "concurrencyOfReadChunksOnline",
control: { type: "number", min: 10 },
visible: isCouchDB,
},
{
key: "minimumIntervalOfReadChunksOnline",
control: { type: "number", min: 10 },
visible: isCouchDB,
},
{ key: "autoAcceptCompatibleTweak", control: { type: "toggle", defaultValue: true } },
],
},
{
heading: "Remote Database Tweak",
items: [{ key: "enableCompression", control: { type: "toggle" } }],
},
];
}