Ensure chat key fetches bypass cache

Added `{ cache: 'no-store' }` to fetch requests for chat keys in both the chat page and useSodiumChat hook to prevent stale key data. Also updated the chat key query to order by `lastSeenAt` descending, ensuring the most recent bundle is retrieved.
This commit is contained in:
Christopher
2026-01-28 07:48:10 -08:00
parent 28f561f689
commit 558c1aecdf
3 changed files with 3 additions and 2 deletions
+1
View File
@@ -21,6 +21,7 @@ export async function GET(request: NextRequest) {
const bundle = await db.query.chatDeviceBundles.findFirst({ const bundle = await db.query.chatDeviceBundles.findFirst({
where: eq(chatDeviceBundles.did, did), where: eq(chatDeviceBundles.did, did),
orderBy: (bundles, { desc }) => [desc(bundles.lastSeenAt)],
}); });
console.log('[Chat Keys GET] Found local bundle:', bundle ? 'YES' : 'NO'); console.log('[Chat Keys GET] Found local bundle:', bundle ? 'YES' : 'NO');
+1 -1
View File
@@ -150,7 +150,7 @@ export default function ChatPage() {
if (msg.isSentByMe && envelope.recipientDid) { if (msg.isSentByMe && envelope.recipientDid) {
// I'm the sender, so I need the recipient's public key to decrypt my own message // I'm the sender, so I need the recipient's public key to decrypt my own message
try { try {
const keyRes = await fetch(`/api/chat/keys?did=${encodeURIComponent(envelope.recipientDid)}`); const keyRes = await fetch(`/api/chat/keys?did=${encodeURIComponent(envelope.recipientDid)}`, { cache: 'no-store' });
if (keyRes.ok) { if (keyRes.ok) {
const keyData = await keyRes.json(); const keyData = await keyRes.json();
otherPartyPublicKey = keyData.publicKey; otherPartyPublicKey = keyData.publicKey;
+1 -1
View File
@@ -64,7 +64,7 @@ export function useSodiumChat() {
if (!user.did) { if (!user.did) {
throw new Error('User DID not available'); throw new Error('User DID not available');
} }
const checkResponse = await fetch(`/api/chat/keys?did=${encodeURIComponent(user.did)}`); const checkResponse = await fetch(`/api/chat/keys?did=${encodeURIComponent(user.did)}`, { cache: 'no-store' });
let shouldPublish = false; let shouldPublish = false;