Files
jiapuapp/utils/non-idempotent-write-guard.js

19 lines
512 B
JavaScript

import { isWriteOutcomeUnknown } from '@/utils/request-outcome.js'
export const createNonIdempotentWriteGuard = () => {
let uncertainPayloadSnapshot = ''
return {
begin(payload) {
const payloadSnapshot = JSON.stringify(payload)
return payloadSnapshot === uncertainPayloadSnapshot ? null : payloadSnapshot
},
recordFailure(payloadSnapshot, error) {
if (!isWriteOutcomeUnknown(error)) return false
uncertainPayloadSnapshot = payloadSnapshot
return true
}
}
}