Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
students
messenger
Commits
b9658194
Commit
b9658194
authored
Jan 29, 2021
by
JeongYeonwoo
Browse files
프로필 사진 미리보기, 안읽은 메세지 완성
parent
c7aa37bd
Changes
7
Hide whitespace changes
Inline
Side-by-side
client/src/Components/Chat.js
View file @
b9658194
...
@@ -44,6 +44,8 @@ function Chat(props) {
...
@@ -44,6 +44,8 @@ function Chat(props) {
e
.
preventDefault
()
e
.
preventDefault
()
setInner
(
e
.
target
.
value
)
setInner
(
e
.
target
.
value
)
setDisabled
(
false
)
setDisabled
(
false
)
console
.
log
(
props
.
leftInfo
)
}
}
function
sendMsgCH
(
e
)
{
function
sendMsgCH
(
e
)
{
...
@@ -56,6 +58,8 @@ function Chat(props) {
...
@@ -56,6 +58,8 @@ function Chat(props) {
props
.
sendMsg
(
e
)
props
.
sendMsg
(
e
)
setInner
(
''
)
setInner
(
''
)
setDisabled
(
true
)
setDisabled
(
true
)
recordEntryLog
()
//그냥 새로고침해도 최신화
}
}
...
@@ -81,24 +85,8 @@ function Chat(props) {
...
@@ -81,24 +85,8 @@ function Chat(props) {
props
.
handleChatc
()
props
.
handleChatc
()
setChat
([
''
])
setChat
([
''
])
recordEntryLog
()
recordEntryLog
()
props
.
setRoomCode
(
''
)
//아니 0으로 바꿔도 개수 세는걸 업데이트안하니까 소용없음 usestate해서 useEffect에 leaveInfo를 달아줘야할듯@@@@
//누르면 now를 0으로
// for (let i = 0; i < props.closedlist.length; i++) {
// props.leaveInfo[i].now = 0 //그냥 싹다 0으로 해도되잖아?
// if (props.leaveInfo[i].roomCode === props.roomCode) {
// // setLeftInfo(leftInfo[i].now='보는중')
// props.leaveInfo[i].now = 0 // 방 나가면 안 보는중으로 하기 위해 0으로 바꾸기!!!!!@@@@@@@@@@
// //usestate로 해보기@@@@@@
// console.log(i, '아아아아아아아아')
// } else {
// props.leaveInfo[i].now = 0
// }
// }
}
}
function
settingtime
(
hour
)
{
function
settingtime
(
hour
)
{
...
...
client/src/Components/ClosedList.js
View file @
b9658194
...
@@ -44,6 +44,7 @@ function ClosedList(props) {
...
@@ -44,6 +44,7 @@ function ClosedList(props) {
useEffect
(()
=>
{
// 누군가 보내면 다시 개수 셈
useEffect
(()
=>
{
// 누군가 보내면 다시 개수 셈
console
.
log
(
'
chat 클라이언트 변경!
'
)
console
.
log
(
'
chat 클라이언트 변경!
'
)
props
.
unreadMessage
()
props
.
unreadMessage
()
console
.
log
(
'
새 메세지가 도착했습니다.
'
,
props
.
leftInfo
)
},
[
props
.
checknew
])
},
[
props
.
checknew
])
useEffect
(()
=>
{
//일단 들오면 실행해야지
useEffect
(()
=>
{
//일단 들오면 실행해야지
...
...
client/src/Pages/HomePage.js
View file @
b9658194
import
React
,
{
useState
,
useEffect
}
from
'
react
'
;
import
React
,
{
useState
,
useEffect
}
from
'
react
'
;
import
{
Row
,
Col
,
Button
,
Tabs
,
Tab
}
from
'
react-bootstrap
'
;
import
{
Row
,
Col
,
Button
,
Tabs
,
Tab
,
Form
}
from
'
react-bootstrap
'
;
import
ClosedList
from
'
../Components/ClosedList
'
;
import
ClosedList
from
'
../Components/ClosedList
'
;
import
OpenList
from
'
../Components/OpenList
'
;
import
OpenList
from
'
../Components/OpenList
'
;
import
Menu
from
'
../Components/Menu
'
;
import
Menu
from
'
../Components/Menu
'
;
...
@@ -167,39 +167,31 @@ function Home() {
...
@@ -167,39 +167,31 @@ function Home() {
//
const INIT_LEFT = {
const
INIT_LEFT
=
{
//
userId: '',
userId
:
''
,
//
roomCode: '',
roomCode
:
''
,
//
now: '',
now
:
''
,
//
}
}
//
const [leftInfo, setLeftInfo] = useState(INIT_LEFT)
const
[
leftInfo
,
setLeftInfo
]
=
useState
(
INIT_LEFT
)
let
leaveInfo
=
[]
async
function
unreadMessage
()
{
async
function
unreadMessage
()
{
const
userId
=
sessionStorage
.
getItem
(
'
userId
'
)
const
userId
=
sessionStorage
.
getItem
(
'
userId
'
)
let
leaveInfo
=
[]
try
{
try
{
for
(
let
i
=
0
;
i
<
closedlist
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
closedlist
.
length
;
i
++
)
{
leaveInfo
.
push
({
userId
:
userId
,
roomCode
:
closedlist
[
i
].
roomId
,
now
:
0
})
leaveInfo
.
push
({
userId
:
userId
,
roomCode
:
closedlist
[
i
].
roomId
,
now
:
0
})
}
}
// setLeftInfo(leaveInfo)
for
(
let
i
=
0
;
i
<
closedlist
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
closedlist
.
length
;
i
++
)
{
if
(
leaveInfo
[
i
].
roomCode
===
roomCode
)
{
if
(
leaveInfo
[
i
].
roomCode
===
roomCode
)
{
// setLeftInfo(leftInfo[i].now='보는중')
leaveInfo
[
i
].
now
=
'
보는중
'
leaveInfo
[
i
].
now
=
'
보는중
'
// 방 나가면 안 보는중으로 하기 위해 0으로 바꾸기!!!!!@@@@@@@@@@
//usestate로 해보기@@@@@@
console
.
log
(
i
,
'
아아아아아아아아
'
)
}
else
{
}
else
{
leaveInfo
[
i
].
now
=
0
leaveInfo
[
i
].
now
=
0
}
}
}
}
// leaveInfo[0].now='시발'
console
.
log
(
'
클ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
'
,
leaveInfo
)
setUnreadnumber
([
''
])
setUnreadnumber
([
''
])
const
respond
=
await
axios
.
get
(
'
/room/unreadMessage
'
,
{
params
:
leaveInfo
})
const
respond
=
await
axios
.
get
(
'
/room/unreadMessage
'
,
{
params
:
leaveInfo
})
console
.
log
(
'
~~~~~~~~~~~~~~~~~~~~~~~~~
'
,
respond
.
data
)
setUnreadnumber
(
respond
.
data
)
setUnreadnumber
(
respond
.
data
)
setLeftInfo
(
leaveInfo
)
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
log
(
error
)
console
.
log
(
error
)
}
}
...
@@ -225,7 +217,7 @@ function Home() {
...
@@ -225,7 +217,7 @@ function Home() {
<
Col
className
=
"
list
"
md
=
{
5
}
>
<
Col
className
=
"
list
"
md
=
{
5
}
>
<
Tabs
defaultActiveKey
=
"
closed
"
id
=
"
uncontrolled-tab-example
"
>
<
Tabs
defaultActiveKey
=
"
closed
"
id
=
"
uncontrolled-tab-example
"
>
<
Tab
eventKey
=
"
closed
"
title
=
"
내 채팅
"
onClick
=
{
handleChato
}
>
<
Tab
eventKey
=
"
closed
"
title
=
"
내 채팅
"
onClick
=
{
handleChato
}
>
<
ClosedList
checknew
=
{
checknew
}
unreadMessage
=
{
unreadMessage
}
unreadnumber
=
{
unreadnumber
}
setUnreadnumber
=
{
setUnreadnumber
}
setChecknew
=
{
setChecknew
}
closedlist
=
{
closedlist
}
userId
=
{
userId
}
singleChat
=
{
singleChat
}
recievedMsg
=
{
recievedMsg
}
enterChatRoom
=
{
enterChatRoom
}
setRoomCode
=
{
setRoomCode
}
setRoomName
=
{
setRoomName
}
roomCode
=
{
roomCode
}
closeChatRoom
=
{
closeChatRoom
}
/
>
<
ClosedList
closedlist
=
{
closedlist
}
leftInfo
=
{
leftInfo
}
checknew
=
{
checknew
}
unreadMessage
=
{
unreadMessage
}
unreadnumber
=
{
unreadnumber
}
setUnreadnumber
=
{
setUnreadnumber
}
userId
=
{
userId
}
singleChat
=
{
singleChat
}
recievedMsg
=
{
recievedMsg
}
enterChatRoom
=
{
enterChatRoom
}
setRoomCode
=
{
setRoomCode
}
setRoomName
=
{
setRoomName
}
roomCode
=
{
roomCode
}
closeChatRoom
=
{
closeChatRoom
}
/
>
<
/Tab
>
<
/Tab
>
<
Tab
eventKey
=
"
open
"
title
=
"
공개방
"
onClick
=
{
handleChatc
}
>
<
Tab
eventKey
=
"
open
"
title
=
"
공개방
"
onClick
=
{
handleChatc
}
>
<
OpenList
openlist
=
{
openlist
}
enterChatRoom
=
{
enterChatRoom
}
openListroom
=
{
openListroom
}
setRoomCode
=
{
setRoomCode
}
setRoomName
=
{
setRoomName
}
roomCode
=
{
roomCode
}
closeChatRoom
=
{
closeChatRoom
}
/
>
<
OpenList
openlist
=
{
openlist
}
enterChatRoom
=
{
enterChatRoom
}
openListroom
=
{
openListroom
}
setRoomCode
=
{
setRoomCode
}
setRoomName
=
{
setRoomName
}
roomCode
=
{
roomCode
}
closeChatRoom
=
{
closeChatRoom
}
/
>
...
@@ -242,7 +234,7 @@ function Home() {
...
@@ -242,7 +234,7 @@ function Home() {
<
/div
>
<
/div
>
}
}
{
chat
?
{
chat
?
<
Chat
le
ave
Info
=
{
le
ave
Info
}
handleChatc
=
{
handleChatc
}
sendMsg
=
{
sendMsg
}
singleChat
=
{
singleChat
}
singleUser
=
{
singleUser
}
singleImg
=
{
singleImg
}
singleTime
=
{
singleTime
}
recievedMsg
=
{
recievedMsg
}
recievedUser
=
{
recievedUser
}
recievedImg
=
{
recievedImg
}
recievedTime
=
{
recievedTime
}
setSingleChat
=
{
setSingleChat
}
setSingleUser
=
{
setSingleUser
}
setSingleImg
=
{
setSingleImg
}
setSingleTime
=
{
setSingleTime
}
setRecievedMsg
=
{
setRecievedMsg
}
roomCode
=
{
roomCode
}
roomName
=
{
roomName
}
closeChatRoom
=
{
closeChatRoom
}
exitRoom
=
{
exitRoom
}
closedlist
=
{
closedlist
}
/
>
<
Chat
le
ft
Info
=
{
le
ftInfo
}
setLeftInfo
=
{
setLeft
Info
}
handleChatc
=
{
handleChatc
}
sendMsg
=
{
sendMsg
}
singleChat
=
{
singleChat
}
singleUser
=
{
singleUser
}
singleImg
=
{
singleImg
}
singleTime
=
{
singleTime
}
recievedMsg
=
{
recievedMsg
}
recievedUser
=
{
recievedUser
}
recievedImg
=
{
recievedImg
}
recievedTime
=
{
recievedTime
}
setSingleChat
=
{
setSingleChat
}
setSingleUser
=
{
setSingleUser
}
setSingleImg
=
{
setSingleImg
}
setSingleTime
=
{
setSingleTime
}
setRecievedMsg
=
{
setRecievedMsg
}
roomCode
=
{
roomCode
}
setRoomCode
=
{
setRoomCode
}
roomName
=
{
roomName
}
closeChatRoom
=
{
closeChatRoom
}
exitRoom
=
{
exitRoom
}
closedlist
=
{
closedlist
}
/
>
:
null
}
:
null
}
{
open
?
{
open
?
<
div
className
=
"
vh-90 flex-column align-items-center justify-content-center mt-2
"
variant
=
"
dark
"
>
<
div
className
=
"
vh-90 flex-column align-items-center justify-content-center mt-2
"
variant
=
"
dark
"
>
...
...
client/src/Pages/ProfilePage.js
View file @
b9658194
...
@@ -19,6 +19,7 @@ function ProfilePage() {
...
@@ -19,6 +19,7 @@ function ProfilePage() {
const
[
hidden
,
setHidden
]
=
useState
(
true
)
const
[
hidden
,
setHidden
]
=
useState
(
true
)
const
[
changed
,
setChanged
]
=
useState
(
false
)
const
[
changed
,
setChanged
]
=
useState
(
false
)
const
[
selectedImg
,
setSelectedImg
]
=
useState
(
''
)
const
userId
=
isAuthenticated
()
const
userId
=
isAuthenticated
()
...
@@ -39,6 +40,7 @@ function ProfilePage() {
...
@@ -39,6 +40,7 @@ function ProfilePage() {
setHidden
(
true
)
setHidden
(
true
)
}
}
}
}
function
handleChange
(
e
)
{
function
handleChange
(
e
)
{
const
{
name
,
value
,
files
}
=
e
.
target
const
{
name
,
value
,
files
}
=
e
.
target
if
(
files
)
{
if
(
files
)
{
...
@@ -47,6 +49,14 @@ function ProfilePage() {
...
@@ -47,6 +49,14 @@ function ProfilePage() {
setUser
({
...
user
,
[
name
]:
value
})
setUser
({
...
user
,
[
name
]:
value
})
}
}
setChanged
(
true
)
setChanged
(
true
)
if
(
files
)
{
let
reader
=
new
FileReader
()
reader
.
onload
=
function
(
e
)
{
setSelectedImg
(
e
.
target
.
result
)
}
reader
.
readAsDataURL
(
e
.
target
.
files
[
0
])
}
}
}
async
function
handleSubmit
(
e
)
{
async
function
handleSubmit
(
e
)
{
e
.
preventDefault
()
e
.
preventDefault
()
...
@@ -75,6 +85,8 @@ function ProfilePage() {
...
@@ -75,6 +85,8 @@ function ProfilePage() {
getProfile
(
userId
)
getProfile
(
userId
)
},
[
userId
])
},
[
userId
])
return
(
return
(
<>
<>
<
Menu
/>
<
Menu
/>
...
@@ -82,7 +94,8 @@ function ProfilePage() {
...
@@ -82,7 +94,8 @@ function ProfilePage() {
<
Row
>
<
Row
>
<
Col
sm
=
{
4
}
>
<
Col
sm
=
{
4
}
>
<
Row
className
=
'
justify-content-center
'
>
<
Row
className
=
'
justify-content-center
'
>
<
Image
src
=
{
user
.
profileimg
&&
`/images/
${
user
.
profileimg
}
`
}
style
=
{{
width
:
"
300px
"
,
height
:
"
300px
"
}}
roundedCircle
/>
{
!
selectedImg
?
<
Image
src
=
{
user
.
profileimg
&&
`/images/
${
user
.
profileimg
}
`
}
style
=
{{
width
:
"
300px
"
,
height
:
"
300px
"
}}
roundedCircle
/>
:
<
Image
src
=
{
selectedImg
}
style
=
{{
width
:
"
300px
"
,
height
:
"
300px
"
}}
roundedCircle
/>
}
<
/Row
>
<
/Row
>
<
Row
className
=
'
ml-3 mt-3 justify-content-center
'
>
<
Row
className
=
'
ml-3 mt-3 justify-content-center
'
>
<
Form
className
=
"
d-flex
"
>
<
Form
className
=
"
d-flex
"
>
...
...
server/controllers/room.controller.js
View file @
b9658194
...
@@ -138,30 +138,25 @@ const roomInf = async (req, res) => {
...
@@ -138,30 +138,25 @@ const roomInf = async (req, res) => {
}
}
////////////////////////////////////////////////////////////////////////////////////////////
const
unreadMessage
=
async
(
req
,
res
)
=>
{
const
unreadMessage
=
async
(
req
,
res
)
=>
{
const
nowTime
=
new
Date
().
toISOString
()
const
nowTime
=
new
Date
().
toISOString
()
let
leaveInfo
=
req
.
query
let
leaveInfo
=
req
.
query
console
.
log
(
'
서버의 언리드 리브인포
'
,
leaveInfo
)
try
{
try
{
for
(
const
key
in
Object
.
keys
(
leaveInfo
))
{
for
(
const
key
in
Object
.
keys
(
leaveInfo
))
{
leaveInfo
[
key
]
=
JSON
.
parse
(
leaveInfo
[
key
])
//형식좀 제대로 맞춰주고
leaveInfo
[
key
]
=
JSON
.
parse
(
leaveInfo
[
key
])
//형식좀 제대로 맞춰주고
}
}
let
countArr
=
[]
let
countArr
=
[]
for
(
const
key
in
Object
.
keys
(
leaveInfo
))
{
for
(
const
key
in
Object
.
keys
(
leaveInfo
))
{
const
room
=
await
Room
.
findOne
({
roomId
:
leaveInfo
[
key
].
roomCode
})
//들어온 방 코드로 그 방의 정보 찾아옴
const
room
=
await
Room
.
findOne
({
roomId
:
leaveInfo
[
key
].
roomCode
})
//들어온 방 코드로 그 방의 정보 찾아옴
const
entrylog
=
await
EntryLog
.
findOne
({
userId
:
leaveInfo
[
key
].
userId
,
room
:
room
.
_id
})
//그 방에서 나간시간 가져옴
const
entrylog
=
await
EntryLog
.
findOne
({
userId
:
leaveInfo
[
key
].
userId
,
room
:
room
.
_id
})
//그 방에서 나간시간 가져옴
if
(
entrylog
)
{
if
(
entrylog
)
{
console
.
log
(
'
자이거는 서버다!
'
,
leaveInfo
[
key
].
now
)
if
(
leaveInfo
[
key
].
now
)
{
//보는중이면 현재시간과 비교. 즉, 없음
if
(
leaveInfo
[
key
].
now
)
{
//보는중이면 현재시간과 비교. 즉, 없음
const
count
=
await
Chat
.
find
({
room
:
room
.
_id
,
createdAt
:
{
$gte
:
nowTime
}
})
//채팅 전체에서 그 방의 채팅중 떠난시간 이후의 것들을 가져옴
const
count
=
await
Chat
.
find
({
room
:
room
.
_id
,
createdAt
:
{
$gte
:
nowTime
}
})
//채팅 전체에서 그 방의 채팅중 떠난시간 이후의 것들을 가져옴
countArr
.
push
({
roomCode
:
room
.
roomId
,
unreadcount
:
count
.
length
})
countArr
.
push
({
roomCode
:
room
.
roomId
,
unreadcount
:
count
.
length
})
// countArr.push({ roomCode: room.roomId, unreadcount: count })
}
else
{
}
else
{
const
count
=
await
Chat
.
find
({
room
:
room
.
_id
,
createdAt
:
{
$gte
:
entrylog
.
updatedAt
}
})
//채팅 전체에서 그 방의 채팅중 떠난시간 이후의 것들을 가져옴
const
count
=
await
Chat
.
find
({
room
:
room
.
_id
,
createdAt
:
{
$gte
:
entrylog
.
updatedAt
}
})
//채팅 전체에서 그 방의 채팅중 떠난시간 이후의 것들을 가져옴
countArr
.
push
({
roomCode
:
room
.
roomId
,
unreadcount
:
count
.
length
})
countArr
.
push
({
roomCode
:
room
.
roomId
,
unreadcount
:
count
.
length
})
// countArr.push({ roomCode: room.roomId, unreadcount: count })
}
}
}
else
{
}
else
{
countArr
.
push
(
0
)
countArr
.
push
(
0
)
...
...
uploads/220ae1322dab79b8b2baefb1c4fee56a
0 → 100644
View file @
b9658194
File added
uploads/63a4c558f4169a9c4654148a973ae316
0 → 100644
View file @
b9658194
File added
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment