diff --git a/packages/chat/src/components/message.tsx b/packages/chat/src/components/message.tsx index 4312b94..d088a57 100644 --- a/packages/chat/src/components/message.tsx +++ b/packages/chat/src/components/message.tsx @@ -29,6 +29,9 @@ import MessageContextMenu from "./messageContextMenu"; import Media from "./media"; import { useStorage } from "@tensamin/storage/context"; import { useMTP } from "@tensamin/mtp"; +import { useChat } from "../context"; +import { decryptChatText } from "@tensamin/crypto/chatSecret"; +import { log, toast } from "@tensamin/shared/log"; function MessageComponent({ grouped, @@ -125,25 +128,42 @@ function MessageComponent({ }; }, [message.MessageState, load, messageStateReadUpdate]); + // Message decryption + const { chatSecret } = useChat(); + const [decryptedContent, setDecryptedContent] = useState( + undefined, + ); + useEffect(() => { + if (!chatSecret) return; + + decryptChatText(chatSecret, message.Content).then( + setDecryptedContent, + (err) => { + toast("error", "Failed to decrypt message", String(err)); + log(1, "chat", "red", err); + }, + ); + }, [chatSecret, message.Content]); + return (
- -
- {user ? ( +
<> {grouped ? (

@@ -220,11 +240,11 @@ function MessageComponent({ )}

- ) : ( - "Loading" - )} -
-
+
+ + ) : ( + "Loading" + )} ); } diff --git a/packages/chat/src/context.tsx b/packages/chat/src/context.tsx index 94df598..789d023 100644 --- a/packages/chat/src/context.tsx +++ b/packages/chat/src/context.tsx @@ -16,7 +16,6 @@ import { deriveChatId, deriveChatSecretId, decryptChatText, - encryptChatText, kemPublicKeyFromPublicKeyBundle, ownKemPublicKeyFromKeyring, randomChatSecret, diff --git a/packages/shared/src/data.ts b/packages/shared/src/data.ts index 391b939..56293ec 100644 --- a/packages/shared/src/data.ts +++ b/packages/shared/src/data.ts @@ -53,7 +53,7 @@ const authPayload = z.object({ UserId: z.number(), LastMessage: z .object({ - content: z.base64(), + Content: z.base64(), SenderId: z.number(), }) .optional(),