diff --git a/apps/matrix/apps/web/package.json b/apps/matrix/apps/web/package.json
index 1d852c2a3..85ef0874b 100644
--- a/apps/matrix/apps/web/package.json
+++ b/apps/matrix/apps/web/package.json
@@ -31,6 +31,7 @@
},
"dependencies": {
"matrix-js-sdk": "^37.1.0",
+ "@matrix-org/matrix-sdk-crypto-wasm": "^13.0.0",
"buffer": "^6.0.3",
"events": "^3.3.0",
"@manacore/shared-auth": "workspace:*",
@@ -41,8 +42,5 @@
"lucide-svelte": "^0.509.0",
"date-fns": "^4.1.0",
"svelte-i18n": "^4.0.1"
- },
- "overrides": {
- "@matrix-org/matrix-sdk-crypto-nodejs": "npm:empty-npm-package@1.0.0"
}
}
diff --git a/apps/matrix/apps/web/src/app.css b/apps/matrix/apps/web/src/app.css
index c4976f67c..0d82a0a39 100644
--- a/apps/matrix/apps/web/src/app.css
+++ b/apps/matrix/apps/web/src/app.css
@@ -16,7 +16,7 @@
}
body {
- @apply bg-base-100 text-base-content;
+ @apply bg-background text-foreground;
}
}
diff --git a/apps/matrix/apps/web/src/lib/components/chat/Message.svelte b/apps/matrix/apps/web/src/lib/components/chat/Message.svelte
index e6a180563..14dcd92e5 100644
--- a/apps/matrix/apps/web/src/lib/components/chat/Message.svelte
+++ b/apps/matrix/apps/web/src/lib/components/chat/Message.svelte
@@ -12,17 +12,32 @@
FileIcon,
Play,
Image as ImageIcon,
+ Lock,
+ AlertTriangle,
} from 'lucide-svelte';
interface Props {
message: SimpleMessage;
showAvatar?: boolean;
showTimestamp?: boolean;
+ showEncryptionBadge?: boolean;
onReply?: (message: SimpleMessage) => void;
onEdit?: (message: SimpleMessage) => void;
}
- let { message, showAvatar = true, showTimestamp = false, onReply, onEdit }: Props = $props();
+ let {
+ message,
+ showAvatar = true,
+ showTimestamp = false,
+ showEncryptionBadge = false,
+ onReply,
+ onEdit,
+ }: Props = $props();
+
+ // Check if message is a decryption error (body starts with "Unable to decrypt:")
+ let isDecryptionError = $derived(
+ message.body.startsWith('Unable to decrypt:') || message.body.includes('** Unable to decrypt')
+ );
let showActions = $state(false);
let imageLoading = $state(true);
@@ -78,15 +93,15 @@
{#if showTimestamp}
-
-
{formattedDate()}
-
+
+
{formattedDate()}
+
{/if}
{#if showAvatar && !message.isOwn}
-
-
- {initials}
-
+
+ {initials}
{/if}
@@ -111,9 +126,12 @@
{message.isOwn ? 'Du' : message.senderName}
-
{formattedTime}
+
{formattedTime}
{#if message.edited}
-
(bearbeitet)
+
(bearbeitet)
+ {/if}
+ {#if showEncryptionBadge}
+
{/if}
{/if}
@@ -121,28 +139,36 @@
{#if message.replyTo && message.replyToBody}
-
- {message.replyToBody}
+
+ {message.replyToBody}
{/if}
{#if message.redacted}
-
Nachricht wurde gelöscht
+
Nachricht wurde gelöscht
+ {:else if isDecryptionError}
+
+
+
+
+ Nachricht kann nicht entschlüsselt werden. Möglicherweise fehlen Schlüssel.
+
+
{:else if message.type === 'm.image' && thumbnailUrl}
{#if imageLoading}
-
-
+
+
{/if}
{#if imageError}
-
-
Bild konnte nicht geladen werden
+
+
Bild konnte nicht geladen werden
{:else}
{message.media?.filename || message.body}
-
+
{formatFileSize(message.media?.size)}
{#if message.media?.mimetype}
• {message.media.mimetype.split('/')[1]?.toUpperCase()}
{/if}
-
+
{:else if message.type === 'm.emote'}
-
* {message.senderName} {message.body}
+
* {message.senderName} {message.body}
{:else if message.type === 'm.notice'}
-
{message.body}
+
{message.body}
{:else}
{message.body}
{/if}
{#if !showAvatar}
-
+
{formattedTime}
{/if}
@@ -219,25 +247,19 @@
{#if showActions && !message.redacted}
-
-