mirror of
https://github.com/LucasVbr/meeting-app.git
synced 2026-05-13 17:21:53 +00:00
Parse invitation in messages
Took 1 hour 33 minutes
This commit is contained in:
@@ -1,18 +1,28 @@
|
||||
import {Flex, Text} from '@chakra-ui/react';
|
||||
import type {Message as MessageType, User} from '@prisma/client';
|
||||
import type {Message as MessageType} from '@prisma/client';
|
||||
import MessageText from '@/components/chat/MessageText';
|
||||
import React from 'react';
|
||||
import { Icon } from "leaflet";
|
||||
import MessageMap from '@/components/chat/MessageMap';
|
||||
|
||||
type Props = {
|
||||
align: "left" | 'right'
|
||||
message: MessageType
|
||||
}
|
||||
|
||||
const Message = ({message, align}: Props) => (
|
||||
<Flex justifyContent={align}>
|
||||
<Text maxW={"70%"} w={'fit-content'} bg={'purple.500'} borderRadius={10}
|
||||
color={'white'} px={'10px'} py={'5px'}>
|
||||
{message.text}
|
||||
</Text>
|
||||
</Flex>
|
||||
);
|
||||
const Message = ({message, align}: Props) => {
|
||||
if (message.text.match(/<!.+>/g)) {
|
||||
const regex = /<!lon=(?<lon>-?\d+\.\d+),lat=(?<lat>-?\d+\.\d+),name=(?<name>.+)>/g;
|
||||
const p = regex.exec(message.text)?.groups as unknown as {
|
||||
lon: number
|
||||
lat: number
|
||||
name: string
|
||||
}
|
||||
if (p) return <MessageMap align={align} point={p}/>
|
||||
}
|
||||
|
||||
return (
|
||||
<MessageText message={message} align={align} />
|
||||
)
|
||||
}
|
||||
|
||||
export default Message;
|
||||
@@ -0,0 +1,15 @@
|
||||
import {Text} from '@chakra-ui/react';
|
||||
|
||||
type Props = {
|
||||
align: 'left' | 'right'
|
||||
point: {
|
||||
lon: string
|
||||
lat: string
|
||||
name: string
|
||||
}
|
||||
}
|
||||
|
||||
export default function MessageMap({align, point}: Props) {
|
||||
const {lon, lat, name} = point;
|
||||
return <Text align={align}>{lon}, {lat}, {name}</Text>;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import {Flex, Text} from '@chakra-ui/react';
|
||||
import type {Message as MessageType, User} from '@prisma/client';
|
||||
|
||||
type Props = {
|
||||
align: 'left' | 'right'
|
||||
message: MessageType
|
||||
}
|
||||
|
||||
const MessageText = ({message, align}: Props) => (
|
||||
<Flex justifyContent={align}>
|
||||
<Text maxW={'70%'} w={'fit-content'} bg={'purple.500'} borderRadius={10}
|
||||
color={'white'} px={'10px'} py={'5px'}>
|
||||
{message.text}
|
||||
</Text>
|
||||
</Flex>
|
||||
);
|
||||
|
||||
export default MessageText;
|
||||
@@ -61,7 +61,7 @@ export default function ChatId() {
|
||||
|
||||
<Navbar/>
|
||||
|
||||
<Container>
|
||||
<Container pt={20}>
|
||||
<MessageList user={session.user as User} messages={messages}/>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user