revert persisted time to last actual persisted time on save error (#5971)

This commit is contained in:
David Tsay
2022-11-10 15:25:35 -08:00
committed by GitHub
parent 7bb4a136d7
commit e70bcc414c

View File

@ -357,6 +357,7 @@ export default class ObjectAPI {
async save(domainObject) { async save(domainObject) {
const provider = this.getProvider(domainObject.identifier); const provider = this.getProvider(domainObject.identifier);
let result; let result;
let lastPersistedTime;
if (!this.isPersistable(domainObject.identifier)) { if (!this.isPersistable(domainObject.identifier)) {
result = Promise.reject('Object provider does not support saving'); result = Promise.reject('Object provider does not support saving');
@ -387,6 +388,7 @@ export default class ObjectAPI {
savedObjectPromise = provider.create(domainObject); savedObjectPromise = provider.create(domainObject);
} else { } else {
lastPersistedTime = domainObject.persisted;
const persistedTime = Date.now(); const persistedTime = Date.now();
this.#mutate(domainObject, 'persisted', persistedTime); this.#mutate(domainObject, 'persisted', persistedTime);
@ -397,6 +399,10 @@ export default class ObjectAPI {
savedObjectPromise.then(response => { savedObjectPromise.then(response => {
savedResolve(response); savedResolve(response);
}).catch((error) => { }).catch((error) => {
if (lastPersistedTime !== undefined) {
this.#mutate(domainObject, 'persisted', lastPersistedTime);
}
savedReject(error); savedReject(error);
}); });
} else { } else {