fix(realtime): handle base64 bytea payloads from postgres_changes
Release desktop app / build (, windows-latest) (push) Has been cancelled
Release desktop app / build (--target universal-apple-darwin --bundles app,updater, macos-14) (push) Has been cancelled

This commit is contained in:
2026-04-19 20:19:40 +02:00
parent 05c962d46f
commit 4a80bf1c0e
3 changed files with 21 additions and 4 deletions
+17
View File
@@ -23,3 +23,20 @@ export function pgHexToBytes(hex: string): Uint8Array {
}
return out;
}
// Accepts either:
// - PostgREST/REST `\x<hex>` strings (what the .from('table').select() path
// returns for bytea), or
// - Realtime `postgres_changes` payloads, which encode bytea as plain
// base64 (no `\x` prefix).
// Useful when the same row can arrive through both paths in the same UI.
export function pgBytesToBytes(value: string): Uint8Array {
if (value.startsWith('\\x')) {
return pgHexToBytes(value);
}
// Assume base64 (the realtime serializer's default for bytea).
const bin = atob(value);
const out = new Uint8Array(bin.length);
for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);
return out;
}