diff --git a/src/components/chat/MapBar.tsx b/src/components/chat/MapBar.tsx index 61f7c3f..fe040ff 100644 --- a/src/components/chat/MapBar.tsx +++ b/src/components/chat/MapBar.tsx @@ -1,31 +1,28 @@ -import { Flex } from "@chakra-ui/react"; -import { MapContainer, TileLayer } from "react-leaflet"; -import SimpleMarkerBar from "./SimpleMarkerBar"; -import "leaflet/dist/leaflet.css"; +import {Flex} from '@chakra-ui/react'; +import {MapContainer, TileLayer} from 'react-leaflet'; +import SimpleMarkerBar from './SimpleMarkerBar'; +import 'leaflet/dist/leaflet.css'; type MapBarProps = { lat: string; lon: string; name: string; - align: "left" | "right"; + align: 'left' | 'right'; }; -export default function MapBar({ lat, lon, name, align }: MapBarProps) { +export default function MapBar({lat, lon, name}: MapBarProps) { return ( - + center={[Number(lat), Number(lon)]} + zoom={13} + minZoom={6} + zoomControl={false} + style={{width: '100%', height: '20rem'}}> - + - ); } diff --git a/src/components/chat/Message.tsx b/src/components/chat/Message.tsx index 1905664..2d0a7f7 100644 --- a/src/components/chat/Message.tsx +++ b/src/components/chat/Message.tsx @@ -1,4 +1,4 @@ -import type {Message as MessageType} from '@prisma/client'; +import type {Message as MessageType, User} from '@prisma/client'; import MessageText from '@/components/chat/MessageText'; import React from 'react'; import MessageMap from '@/components/chat/MessageMap'; @@ -6,9 +6,10 @@ import MessageMap from '@/components/chat/MessageMap'; type Props = { align: "left" | 'right' message: MessageType + user?: User } -const Message = ({message, align}: Props) => { +const Message = ({message, align, user}: Props) => { if (message.text.match(//g)) { const regex = /-?\d+\.\d+),lat=(?-?\d+\.\d+),name=(?.+)>/g; const p = regex.exec(message.text)?.groups as unknown as { @@ -16,12 +17,10 @@ const Message = ({message, align}: Props) => { lat: number name: string } - if (p) return + if (p) return } - return ( - - ) + return } export default Message; \ No newline at end of file diff --git a/src/components/chat/MessageList.tsx b/src/components/chat/MessageList.tsx index ffce938..ca2905d 100644 --- a/src/components/chat/MessageList.tsx +++ b/src/components/chat/MessageList.tsx @@ -1,19 +1,24 @@ -import type {Message as MessageType, User} from '@prisma/client'; +import type {Message as MessageType, User, Chat} from '@prisma/client'; import Message from '@/components/chat/Message'; import {Flex} from '@chakra-ui/react'; type Props = { user: User, messages: MessageType[] + chat: Chat & { User: User[] } } -const MessageList = ({messages, user}: Props) => ( - - {messages.map((message, index) => , - )} - -); +const MessageList = ({messages, user, chat}: Props) => { + if (chat?.User) + return ( + + {messages.map((message, index) => + u.id === message.UserID)} + align={user.id === message.UserID ? 'right' : 'left'} + key={index} message={message}/>, + )} + + ); +}; export default MessageList; \ No newline at end of file diff --git a/src/components/chat/MessageMap.tsx b/src/components/chat/MessageMap.tsx index 0202da8..23b7d7c 100644 --- a/src/components/chat/MessageMap.tsx +++ b/src/components/chat/MessageMap.tsx @@ -1,6 +1,7 @@ -import {Box, Flex, Text} from '@chakra-ui/react'; +import {Avatar, Box, Flex, Text} from '@chakra-ui/react'; import dynamic from 'next/dynamic'; +import {User} from '@prisma/client'; const MapBarWithNoSSR = dynamic(() => import('./MapBar'), { ssr: false, @@ -13,16 +14,18 @@ type Props = { lat: string; name: string; }; + user?: User }; -export default function MessageMap({align, point}: Props) { +export default function MessageMap({align, point, user}: Props) { const {lon, lat, name} = point; return ( - + + {user && align === "left" && } - {/*{lon}, {lat}, {name}*/} + {user && align === "right" && } ); } diff --git a/src/components/chat/MessageText.tsx b/src/components/chat/MessageText.tsx index b542b1a..31c5812 100644 --- a/src/components/chat/MessageText.tsx +++ b/src/components/chat/MessageText.tsx @@ -1,17 +1,21 @@ -import {Flex, Text} from '@chakra-ui/react'; +import {Avatar, Flex, Text} from '@chakra-ui/react'; import type {Message as MessageType, User} from '@prisma/client'; type Props = { align: 'left' | 'right' - message: MessageType + message: MessageType, + user?: User } -const MessageText = ({message, align}: Props) => ( - +const MessageText = ({message, align, user}: Props) => ( + + + {user && align === "left" && } {message.text} + {user && align === "right" && } ); diff --git a/src/pages/chat/[id].tsx b/src/pages/chat/[id].tsx index 77d52c0..694c2dc 100644 --- a/src/pages/chat/[id].tsx +++ b/src/pages/chat/[id].tsx @@ -1,11 +1,10 @@ import { - Box, + Box, Button, Container, Flex, FormControl, IconButton, Input, - Text } from '@chakra-ui/react'; import Head from 'next/head'; import {websiteName} from '@/lib/constants'; @@ -19,7 +18,8 @@ import {io, Socket} from 'socket.io-client'; import {Chat, Message, User} from '@prisma/client'; import LoadingPage from '@/components/LoadingPage'; import Navbar from '@/components/Navbar'; -import {ArrowForwardIcon, CalendarIcon} from '@chakra-ui/icons'; + +import {ArrowForwardIcon} from '@chakra-ui/icons'; import {FaMapMarkedAlt} from 'react-icons/fa'; export default function ChatId() { @@ -84,8 +84,8 @@ export default function ChatId() { - - + +
@@ -103,6 +103,8 @@ export default function ChatId() {
+ + ); } \ No newline at end of file