@@ -2,23 +2,27 @@ import { css } from '@emotion/react';
2
2
import TimeStamp from '@/components/common/timeStamp/TimeStamp' ;
3
3
import { useEffect , useState } from 'react' ;
4
4
import { recentChatAPI } from '@/utils/api/chats' ;
5
+ import { CharacterInfo } from '@/types/characterInfo' ;
5
6
import FriendWrapper from './friend/FriendWrapper' ;
6
7
import FriendInfo from './friend/FriendInfo' ;
7
8
import ChatBadge from './friend/ChatBadge' ;
8
9
10
+ interface recentMessageWithCharacterInfo {
11
+ characterInfo : CharacterInfo ;
12
+ lastMessage : {
13
+ content : string ;
14
+ createdAt : number ;
15
+ fromUser : boolean ;
16
+ } ;
17
+ }
18
+
9
19
const ChatLogs = ( ) => {
10
20
// TODO: 데이터셋을 한 번에 API로 받아오면 더 편하게 작업할 수 있을 것 같음
11
- const [ chatLogDataSet , setchatLogDataSet ] = useState ( chatLogDataSample ) ;
21
+ const [ recentChatList , setRecentChatList ] = useState < recentMessageWithCharacterInfo [ ] > ( [ ] ) ;
12
22
13
23
const callRecentAPI = async ( ) => {
14
- const recentData = await recentChatAPI ( ) ;
15
- console . log ( recentData ) ;
16
- const tempDataSet = chatLogDataSet . map ( ( chatLog , index ) => ( {
17
- ...chatLog ,
18
- message : recentData [ index ] . lastMessage . content ,
19
- timestamp : recentData [ index ] . lastMessage . createdAt ,
20
- } ) ) ;
21
- setchatLogDataSet ( [ ...tempDataSet ] ) ;
24
+ const recentChatData = await recentChatAPI ( ) ;
25
+ setRecentChatList ( [ ...recentChatData ] ) ;
22
26
} ;
23
27
24
28
useEffect ( ( ) => {
@@ -27,21 +31,20 @@ const ChatLogs = () => {
27
31
28
32
return (
29
33
< section css = { chatLogsWrapperCSS } >
30
- { chatLogDataSet . map ( ( data , index ) => (
31
- // TODO: 여러 캐릭터가 있을 때 스크롤이 가능한지 확인하기 위함
34
+ { recentChatList . map ( ( { characterInfo, lastMessage } , index ) => (
32
35
< FriendWrapper
33
36
// eslint-disable-next-line react/no-array-index-key
34
37
key = { index }
35
- linkUrl = { `/chats/${ data . characterId } ` }
38
+ linkUrl = { `/chats/${ characterInfo . characterId } ` }
36
39
>
37
40
< FriendInfo
38
- characterName = { data . characterName }
39
- message = { data . message }
40
- imageUrl = { data . imageUrl }
41
+ characterName = { characterInfo . characterName }
42
+ message = { lastMessage . content }
43
+ imageUrl = { characterInfo . profileImageUrl }
41
44
/>
42
45
< div css = { subInfoWrapperCSS } >
43
- < TimeStamp timestamp = { data . timestamp } />
44
- < ChatBadge unreadCount = { data . unreadCount } />
46
+ < TimeStamp timestamp = { lastMessage . createdAt } />
47
+ < ChatBadge unreadCount = { lastMessage . fromUser } />
45
48
</ div >
46
49
</ FriendWrapper >
47
50
) ) }
@@ -65,21 +68,3 @@ const subInfoWrapperCSS = css`
65
68
align-items : flex-end;
66
69
margin-right : 0.625rem ;
67
70
` ;
68
-
69
- const chatLogDataSample = [
70
- {
71
- characterId : '0' ,
72
- characterName : '이영준' ,
73
- imageUrl : '/leeyj.png' ,
74
- message : '.' ,
75
- timestamp : 123123 ,
76
- unreadCount : 1 ,
77
- } , {
78
- characterId : '1' ,
79
- characterName : '김미소' ,
80
- imageUrl : '/kimms.png' ,
81
- message : '.' ,
82
- timestamp : 123123 ,
83
- unreadCount : 0 ,
84
- } ,
85
- ] ;
0 commit comments