Don't strip seed

mrazator/delta-based-sync
Marcel Mraz 1 month ago
parent 9f8c87ae8c
commit e72d83541a
No known key found for this signature in database
GPG Key ID: 4EBD6E62DC830CD2

@ -804,10 +804,8 @@ export class AppStateChange implements Change<AppState> {
}
// CFDO: consider adding here (nonnullable) version & versionNonce & updated & seed (so that we have correct versions when recunstructing from remote)
type ElementPartial<T extends ExcalidrawElement = ExcalidrawElement> = Omit<
ElementUpdate<Ordered<T>>,
"seed"
>;
type ElementPartial<T extends ExcalidrawElement = ExcalidrawElement> =
ElementUpdate<Ordered<T>>;
type ElementsChangeOptions = {
shouldRedistribute: boolean;
@ -1605,8 +1603,7 @@ export class ElementsChange implements Change<SceneElementsMap> {
private static stripIrrelevantProps(
partial: Partial<OrderedExcalidrawElement>,
): ElementPartial {
const { id, updated, version, versionNonce, seed, ...strippedPartial } =
partial;
const { id, updated, version, versionNonce, ...strippedPartial } = partial;
return strippedPartial;
}

@ -64,8 +64,45 @@ const checkpoint = (name: string) => {
...strippedAppState
} = h.state;
expect(strippedAppState).toMatchSnapshot(`[${name}] appState`);
expect(h.history.undoStack).toMatchSnapshot(`[${name}] undo stack`);
expect(h.history.redoStack).toMatchSnapshot(`[${name}] redo stack`);
const stripSeed = (deltas: Record<string, { deleted: any; inserted: any }>) =>
Object.entries(deltas).reduce((acc, curr) => {
const { inserted, deleted, ...rest } = curr[1];
delete inserted.seed;
delete deleted.seed;
acc[curr[0]] = {
inserted,
deleted,
...rest,
};
return acc;
}, {} as Record<string, any>);
expect(
h.history.undoStack.map((x) => ({
...x,
elementsChange: {
...x.elementsChange,
added: stripSeed(x.elementsChange.added),
removed: stripSeed(x.elementsChange.updated),
updated: stripSeed(x.elementsChange.removed),
},
})),
).toMatchSnapshot(`[${name}] undo stack`);
expect(
h.history.redoStack.map((x) => ({
...x,
elementsChange: {
...x.elementsChange,
added: stripSeed(x.elementsChange.added),
removed: stripSeed(x.elementsChange.updated),
updated: stripSeed(x.elementsChange.removed),
},
})),
).toMatchSnapshot(`[${name}] redo stack`);
expect(h.elements.length).toMatchSnapshot(`[${name}] number of elements`);
h.elements
.map(({ seed, versionNonce, ...strippedElement }) => strippedElement)

Loading…
Cancel
Save