You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
…deciding whether to queueOperation. It is a PostgREST .insert().select().single() (:118-122) whose status is available and discarded, exactly as on the send path before #98.
Two consequences, both demonstrated on the messaging side:
WebKit is not covered. Safari reports an aborted fetch as TypeError: Load failed, which matches none of those three substrings. So on Safari a payment that fails at the transport layer is not queued.
No structural guard. A Postgres rejection whose message happens to contain "network" would be misread as a transport failure. fix(messaging): stop discarding the user's message when a send fails #98 addressed this by gating on the PostgREST code (a rejection always carries a SQLSTATE; a fetch failure carries code: '' and status: 0) and by threading the original through as cause so wrapping does not lose it.
Not folded into #98 deliberately — that PR is already broad and touches a different service. The fix is the same shape and should be small: reuse the looksLikeFetchFailure + code-gate approach, or capture status === 0 at the destructure.
Worth checking whether payments has an equivalent of the third bug too: does a failed payment discard user input the way the message composer did?
src/lib/payments/payment-service.ts:128-133has the same structure as the message-send bug fixed in #98:…deciding whether to
queueOperation. It is a PostgREST.insert().select().single()(:118-122) whosestatusis available and discarded, exactly as on the send path before #98.Two consequences, both demonstrated on the messaging side:
TypeError: Load failed, which matches none of those three substrings. So on Safari a payment that fails at the transport layer is not queued.code(a rejection always carries a SQLSTATE; a fetch failure carriescode: ''andstatus: 0) and by threading the original through ascauseso wrapping does not lose it.Not folded into #98 deliberately — that PR is already broad and touches a different service. The fix is the same shape and should be small: reuse the
looksLikeFetchFailure+ code-gate approach, or capturestatus === 0at the destructure.Worth checking whether payments has an equivalent of the third bug too: does a failed payment discard user input the way the message composer did?