update nextcloud for file support

This commit is contained in:
Matthias Hochmeister
2026-03-13 13:46:08 +01:00
parent e36de3199a
commit e26d77ef35
10 changed files with 600 additions and 24 deletions

View File

@@ -3,12 +3,18 @@ import Box from '@mui/material/Box';
import Typography from '@mui/material/Typography';
import Paper from '@mui/material/Paper';
import type { NextcloudMessage } from '../../types/nextcloud.types';
import FileMessageContent from './FileMessageContent';
interface ChatMessageProps {
message: NextcloudMessage;
isOwnMessage: boolean;
}
function hasFileParams(params?: Record<string, any>): boolean {
if (!params) return false;
return Object.keys(params).some((k) => k === 'file' || k.startsWith('file'));
}
const ChatMessage: React.FC<ChatMessageProps> = ({ message, isOwnMessage }) => {
const time = new Date(message.timestamp * 1000).toLocaleTimeString('de-DE', {
hour: '2-digit',
@@ -25,6 +31,12 @@ const ChatMessage: React.FC<ChatMessageProps> = ({ message, isOwnMessage }) => {
);
}
const isFileMessage =
hasFileParams(message.messageParameters) && message.message.includes('{file}');
// For file messages, extract any surrounding text
const textBeforeFile = isFileMessage ? message.message.split('{file}')[0].trim() : null;
return (
<Box
sx={{
@@ -50,9 +62,23 @@ const ChatMessage: React.FC<ChatMessageProps> = ({ message, isOwnMessage }) => {
{message.actorDisplayName}
</Typography>
)}
<Typography variant="body2" sx={{ whiteSpace: 'pre-wrap', wordBreak: 'break-word' }}>
{message.message}
</Typography>
{isFileMessage ? (
<>
{textBeforeFile && (
<Typography variant="body2" sx={{ whiteSpace: 'pre-wrap', wordBreak: 'break-word', mb: 0.5 }}>
{textBeforeFile}
</Typography>
)}
<FileMessageContent
messageParameters={message.messageParameters!}
isOwnMessage={isOwnMessage}
/>
</>
) : (
<Typography variant="body2" sx={{ whiteSpace: 'pre-wrap', wordBreak: 'break-word' }}>
{message.message}
</Typography>
)}
<Typography
variant="caption"
sx={{