-
+
{!(
authorProfileImageUrl === 'http://asiduheimage.jpg' ||
authorProfileImageUrl === null
@@ -65,7 +65,7 @@ const CommentItem: React.FC
= (props: ItemProps) => {
) : (
@@ -85,7 +85,7 @@ const CommentItem: React.FC = (props: ItemProps) => {
)}
-
{content}
+
{content}
);
};
diff --git a/src/components/Trip/PlanTripButton.tsx b/src/components/Trip/PlanTripButton.tsx
index bd5ac6fc..34ce58a5 100644
--- a/src/components/Trip/PlanTripButton.tsx
+++ b/src/components/Trip/PlanTripButton.tsx
@@ -1,18 +1,25 @@
-import { PlanIcon, RightIcon } from '@components/common/icons/Icons';
+import { PlanColorIcon, RightIcon } from '@components/common/icons/Icons';
+import { useNavigate } from 'react-router-dom';
const PlanTripButton = () => {
- return (
+ const navigate = useNavigate();
+
+ const handleButtonClick = () => {
+ navigate('plan');
+ };
-
diff --git a/src/components/Trip/TripRealtimeEditor.tsx b/src/components/Trip/TripRealtimeEditor.tsx
new file mode 100644
index 00000000..4d810455
--- /dev/null
+++ b/src/components/Trip/TripRealtimeEditor.tsx
@@ -0,0 +1,95 @@
+import { useRecoilValue } from 'recoil';
+import { tripIdState } from '@recoil/socket';
+import { useEffect, useState } from 'react';
+import { socketContext } from '@hooks/useSocket';
+import { useContext } from 'react';
+import { pubConnectMember, pubDisconnectMember } from '@api/socket';
+import { UserIcon } from '@components/common/icons/Icons';
+import { Swiper, SwiperSlide } from 'swiper/react';
+import { Navigation } from 'swiper/modules';
+import { getItem } from '@utils/localStorageFun';
+
+const TripRealtimeEditor = () => {
+ const tripId = useRecoilValue(tripIdState);
+ const { callBackPub, tripMember } = useContext(socketContext);
+ const [token, setToken] = useState('');
+ const [pubMember, setPubMember] = useState({ token: '' });
+
+ useEffect(() => {
+ const accessToken = getItem('accessToken');
+ if (accessToken) {
+ setToken(accessToken);
+ }
+ }, []);
+
+ useEffect(() => {
+ setPubMember({ token: token || '' });
+ }, [token]);
+
+ useEffect(() => {
+ if (pubMember && tripId) {
+ callBackPub(() => {
+ pubConnectMember(pubMember, tripId);
+ });
+ return () => {
+ callBackPub(() => pubDisconnectMember(pubMember, tripId));
+ };
+ }
+ }, [pubMember]);
+
+ const tripMemberData = tripMember?.data;
+ useEffect(() => {
+ console.log('tripMemberData', tripMemberData);
+ }, [tripMemberData]);
+ return (
+
+
+ {tripMemberData?.tripMembers?.map((member) => {
+ const isConnected = member?.connected;
+ const thumbnailUrl = member?.thumbnailUrl;
+ const isImageUrlValid =
+ thumbnailUrl && thumbnailUrl !== 'http://asiduheimage.jpg';
+ const imageUrl = isImageUrlValid ? thumbnailUrl : null;
+
+ return (
+
+
+ {imageUrl ? (
+
+ ) : (
+
+
+
+ )}
+
+
+ {member?.name}
+
+
+
+
+ );
+ })}
+
+
+ );
+};
+
+export default TripRealtimeEditor;
diff --git a/src/components/Trip/TripSchedule.tsx b/src/components/Trip/TripSchedule.tsx
new file mode 100644
index 00000000..ad55e20e
--- /dev/null
+++ b/src/components/Trip/TripSchedule.tsx
@@ -0,0 +1,22 @@
+import { UserIcon } from '@components/common/icons/Icons';
+
+export const TripSchedule = () => {
+ return (
+ <>
+
+
+
23.12.23 - 23.12.25
+ >
+ );
+};
diff --git a/src/components/common/icons/Icons.tsx b/src/components/common/icons/Icons.tsx
index 3d70d69e..bbd4e328 100644
--- a/src/components/common/icons/Icons.tsx
+++ b/src/components/common/icons/Icons.tsx
@@ -1297,3 +1297,35 @@ export const CounterIcon: React.FC<
>
);
};
+
+export const PlanColorIcon: React.FC
= ({ size = 21 }) => {
+ return (
+
+ );
+};
diff --git a/src/components/common/modal/Modal.tsx b/src/components/common/modal/Modal.tsx
index c8ec7ed8..bb558735 100644
--- a/src/components/common/modal/Modal.tsx
+++ b/src/components/common/modal/Modal.tsx
@@ -43,8 +43,8 @@ export const getModalStyles = (modalChildren: string) => {
maxWidth: '412px',
width: '100%',
height: '186px',
- borderTopLeftRadius: '2rem',
- borderTopRightRadius: '2rem',
+ borderTopLeftRadius: '16px',
+ borderTopRightRadius: '16px',
},
overlay: {
backgroundColor: 'rgba(0, 0, 0, 0.25)',
@@ -62,7 +62,7 @@ export const getModalStyles = (modalChildren: string) => {
transform: 'translate(-50%, -50%)',
width: '309px',
height: '192px',
- borderRadius: '2rem',
+ borderRadius: '16px',
},
overlay: {
backgroundColor: 'rgba(0, 0, 0, 0.25)',
@@ -81,8 +81,8 @@ export const getModalStyles = (modalChildren: string) => {
maxWidth: '412px',
width: '100%',
height: '280px',
- borderTopLeftRadius: '2rem',
- borderTopRightRadius: '2rem',
+ borderTopLeftRadius: '16px',
+ borderTopRightRadius: '16px',
},
overlay: {
backgroundColor: 'rgba(0, 0, 0, 0.25)',
diff --git a/src/components/common/modal/children/MyAlert.tsx b/src/components/common/modal/children/MyAlert.tsx
index e5f50f7e..7e226d68 100644
--- a/src/components/common/modal/children/MyAlert.tsx
+++ b/src/components/common/modal/children/MyAlert.tsx
@@ -69,7 +69,7 @@ const MyAlert: React.FC = ({ title, content }) => {
{title}
- {content.split('. ').map((sentence, index) => (
+ {content.split(/(?<=\.) /).map((sentence, index) => (
{sentence}
diff --git a/src/hooks/useSocket.ts b/src/hooks/useSocket.ts
index 50c9e2d6..ba204b5b 100644
--- a/src/hooks/useSocket.ts
+++ b/src/hooks/useSocket.ts
@@ -63,6 +63,7 @@ export const useSocket = (tripId: string, visitDate: string) => {
subMember(tripId, (res) => {
if (res) {
+ // console.log('subMemberRes', res);
setTripMember(res);
}
});
diff --git a/src/recoil/socket.ts b/src/recoil/socket.ts
index d722c733..ab7bb76b 100644
--- a/src/recoil/socket.ts
+++ b/src/recoil/socket.ts
@@ -10,7 +10,7 @@ export const visitDateState = atom<{ visitDate: string } | null>({
default: { visitDate: '2024-01-03' },
});
-export const memberIdState = atom<{ memberId: number } | null>({
+export const memberIdState = atom<{ token: number | null }>({
key: 'memberIdState',
- default: { memberId: 1 },
+ default: { token: null },
});