update nextcloud for file support
This commit is contained in:
@@ -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={{
|
||||
|
||||
Reference in New Issue
Block a user