fix: idempotent conv-key upsert + guard tauri-only notification calls
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 22:00:21 +02:00
parent 7efbcf7e39
commit 961ac2dde5
3 changed files with 28 additions and 12 deletions
+19 -10
View File
@@ -161,7 +161,10 @@ export async function bootstrapConvKey(
});
}
const { error } = await rawFrom(client, 'conversation_keys').insert(rows);
const { error } = await rawFrom(client, 'conversation_keys').upsert(rows, {
onConflict: 'conversation_id,recipient_device_id,key_version',
ignoreDuplicates: true,
});
if (error) throw error;
const handle = { conversationId, keyVersion, key: convKey };
@@ -262,15 +265,21 @@ export async function shareConvKeyToDevice(
recipientPublicKey,
own.privateKey,
);
const { error } = await rawFrom(client, 'conversation_keys').insert({
conversation_id: conversationId,
recipient_device_id: recipientDeviceId,
key_version: version,
sender_device_id: own.deviceId,
encrypted_key: bytesToPgHex(wrapped.ciphertext),
nonce: bytesToPgHex(wrapped.nonce),
});
if (error && !String(error.message ?? '').includes('duplicate')) throw error;
const { error } = await rawFrom(client, 'conversation_keys').upsert(
{
conversation_id: conversationId,
recipient_device_id: recipientDeviceId,
key_version: version,
sender_device_id: own.deviceId,
encrypted_key: bytesToPgHex(wrapped.ciphertext),
nonce: bytesToPgHex(wrapped.nonce),
},
{
onConflict: 'conversation_id,recipient_device_id,key_version',
ignoreDuplicates: true,
},
);
if (error) throw error;
}
// Re-exports for convenience.