Skip to content

Commit 4d5f664

Browse files
committed
Fix for reverting history not saving correctly
1 parent 9388d69 commit 4d5f664

File tree

1 file changed

+35
-23
lines changed

1 file changed

+35
-23
lines changed

packages/entity_history/src/components/EntityHistoryView.tsx

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export function EntityHistoryView({
2323
const dataSource = useDataSource();
2424
const pathAndId = entity ? entity?.path + "/" + entity?.id : undefined;
2525

26-
const [revertVersion, setRevertVersion] = useState<Entity | undefined>(undefined);
26+
const [revertVersionDialog, setRevertVersionDialog] = useState<Entity | undefined>(undefined);
2727
const [revisions, setRevisions] = useState<Entity[]>([]);
2828
const [isLoading, setIsLoading] = useState(false);
2929
const [hasMore, setHasMore] = useState(true);
@@ -116,6 +116,9 @@ export function EntityHistoryView({
116116
}
117117

118118
function doRevert(revertVersion: Entity) {
119+
if (!entity) {
120+
throw new Error("No entity to revert");
121+
}
119122
const revertValues = {
120123
...revertVersion.values,
121124
__metadata: {
@@ -125,29 +128,38 @@ export function EntityHistoryView({
125128
updated_by: authController.user?.uid ?? null,
126129
}
127130
};
128-
return dataSource.saveEntity({
131+
const saveReverted = dataSource.saveEntity({
132+
path: entity.path,
133+
entityId: entity.id,
134+
values: revertValues,
135+
collection,
136+
status: "existing"
137+
});
138+
const saveRevertedHistory = dataSource.saveEntity({
129139
path: revertVersion.path,
130140
entityId: revertVersion.id,
131141
values: revertValues,
132142
collection,
133143
status: "existing"
134-
}).then(() => {
135-
formContext.formex.resetForm({
136-
values: revertVersion.values
137-
});
138-
setRevertVersion(undefined);
139-
snackbarController.open({
140-
message: "Reverted version",
141-
type: "info"
142-
});
143-
}
144-
).catch((error) => {
145-
console.error("Error reverting entity:", error);
146-
snackbarController.open({
147-
message: "Error reverting entity",
148-
type: "error"
149-
});
150144
});
145+
return Promise.all([saveReverted, saveRevertedHistory])
146+
.then(() => {
147+
formContext.formex.resetForm({
148+
values: revertVersion.values
149+
});
150+
setRevertVersionDialog(undefined);
151+
snackbarController.open({
152+
message: "Reverted version",
153+
type: "info"
154+
});
155+
}
156+
).catch((error) => {
157+
console.error("Error reverting entity:", error);
158+
snackbarController.open({
159+
message: "Error reverting entity",
160+
type: "error"
161+
});
162+
});
151163

152164
}
153165

@@ -187,7 +199,7 @@ export function EntityHistoryView({
187199
type: "warning"
188200
});
189201
} else {
190-
setRevertVersion(revision);
202+
setRevertVersionDialog(revision);
191203
}
192204
}}>
193205
<HistoryIcon/>
@@ -209,13 +221,13 @@ export function EntityHistoryView({
209221
)}
210222
</div>
211223

212-
<ConfirmationDialog open={Boolean(revertVersion)}
224+
<ConfirmationDialog open={Boolean(revertVersionDialog)}
213225
onAccept={function (): void {
214-
if (!revertVersion) return;
215-
doRevert(revertVersion);
226+
if (!revertVersionDialog) return;
227+
doRevert(revertVersionDialog);
216228
}}
217229
onCancel={function (): void {
218-
setRevertVersion(undefined);
230+
setRevertVersionDialog(undefined);
219231
}}
220232
title={<Typography variant={"subtitle2"}>Revert data to this version?</Typography>}/>
221233
</div>

0 commit comments

Comments
 (0)