MCPcopy Index your code
hub / github.com/CapSoftware/Cap / createPresets

Function createPresets

apps/desktop/src/utils/createPresets.ts:11–74  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

9};
10
11export function createPresets() {
12 const query = presetsStore.createQuery();
13
14 async function updatePresets(fn: (prev: PresetsStore) => void) {
15 if (query.isLoading) throw new Error("Presets not loaded");
16
17 let p = query.data;
18 if (!p) {
19 p = { presets: [], default: null };
20 await presetsStore.set(p);
21 }
22
23 const newValue = produce(fn)(p);
24
25 await presetsStore.set(newValue);
26 }
27
28 return {
29 query,
30 createPreset: async (preset: CreatePreset) => {
31 const config = {
32 ...preset.config,
33 timeline: null,
34 clips: [],
35 };
36
37 await updatePresets((store) => {
38 store.presets.push({ name: preset.name, config });
39 store.default = preset.default
40 ? store.presets.length - 1
41 : store.default;
42 });
43 },
44 deletePreset: (index: number) =>
45 updatePresets((store) => {
46 store.presets.splice(index, 1);
47 if (store.default === null) return;
48 if (index === store.default) {
49 store.default = store.presets.length > 0 ? 0 : null;
50 } else if (index < store.default) {
51 store.default = store.default - 1;
52 }
53 }),
54 setDefault: (index: number) =>
55 updatePresets((store) => {
56 store.default = index;
57 }),
58 renamePreset: (index: number, name: string) =>
59 updatePresets((store) => {
60 store.presets[index].name = name;
61 }),
62 saveToPreset: (
63 index: number,
64 config: Omit<ProjectConfiguration, "timeline">,
65 ) =>
66 updatePresets((store) => {
67 store.presets[index].config = {
68 ...config,

Callers 1

Calls 1

updatePresetsFunction · 0.85

Tested by

no test coverage detected