|
@@ -19,7 +19,7 @@ import MessageRightImage from './Messages/MessageRightImage'
|
|
|
import MessageRightAudio from './Messages/MessageRightAudio'
|
|
|
import MessageRightVideo from './Messages/MessageRightVideo'
|
|
|
import MessageRightFile from "./Messages/MessageRightFile";
|
|
|
-import MessageTime from "./Messages/MessageTime";
|
|
|
+import MessageDivider from "./Messages/MessageDivider";
|
|
|
import AlertInfo from "../../../reusableComponents/AlertInfo";
|
|
|
import { getMessagesMemo } from '../../../../redux/messages/selector'
|
|
|
import { getAuthorizationState } from '../../../../redux/authorization/selector'
|
|
@@ -97,7 +97,7 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
const dispatch = useDispatch()
|
|
|
const messagesMemo = useSelector(getMessagesMemo)
|
|
|
const { number:userNumber,nightMode,silentMode} = useSelector(getAuthorizationState)
|
|
|
- const { companionId,total,seen,mute } = useSelector(getChat)
|
|
|
+ const { companionId,total,seen,mute,seenCompanion } = useSelector(getChat)
|
|
|
const scrollChat = useSelector(getScrollChat)
|
|
|
const [isArrow, setIsArrow] = useState<boolean>(false)
|
|
|
const [isNew, setIsNew] = useState<{ new: number, mute: boolean }>({ new: 0, mute: false })
|
|
@@ -106,6 +106,7 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
const [modalForward, setModalForward] = useState<boolean>(false)
|
|
|
let time: any
|
|
|
let tongue: any
|
|
|
+ let unread: any
|
|
|
const getSeconds = (createdAt:string) => Math.round(new Date(createdAt).getTime()/ 1000)
|
|
|
const isSelected = (_id: string) => selectedArr.some((el: string) => el === _id)
|
|
|
const handleSelected = (_id: string) => {
|
|
@@ -208,6 +209,7 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
const idInterval = setInterval(handleReset, refreshAppTime);
|
|
|
return () => clearInterval(idInterval);
|
|
|
}, [total, seen, chatDivRef, companionId, openPinned]);
|
|
|
+
|
|
|
return (
|
|
|
<div className={classes.container} >
|
|
|
<ArrowBack isArrow={isArrow} isNew={isNew} handleScrollTo={handleScrollTo} openPinned={openPinned}/>
|
|
@@ -217,10 +219,15 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
{messagesMemo.length > 0 ? renderArr.map(({ replyMessage,message, name, lastName,avatarUrl,color,pinned,
|
|
|
createdAt, number, type, fullType, replyName, replyLastName, replyCaption, caption, emoji, emojiCompanion,
|
|
|
_id, oldId, forwardName, forwardLastName, companionIdForwardToAndFrom,forwardMessage,forwardCaption},i) => {
|
|
|
- const watched = true
|
|
|
+ const watched = seenCompanion - (i + 1) < 0 ? false : true
|
|
|
+ let isUnread
|
|
|
let isTime
|
|
|
let isTongue = false
|
|
|
const nextTongue = renderArr[i + 1]
|
|
|
+ if (!unread && seen - (i + 1) < 0) {
|
|
|
+ isUnread = true
|
|
|
+ unread = true
|
|
|
+ }
|
|
|
if (!time) {
|
|
|
isTime = true
|
|
|
time = createdAt
|
|
@@ -255,14 +262,17 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
isTongue = false
|
|
|
tongue = number
|
|
|
}
|
|
|
+ if(renderArr.length-1 === i) isTongue = true
|
|
|
if (nextTongue && timeStampFilter(nextTongue.createdAt) !== timeStampFilter(createdAt)) {
|
|
|
isTongue = true
|
|
|
}
|
|
|
const url = `${prodAwsS3}/${message}`
|
|
|
+ const urlForward = `${prodAwsS3}/${forwardMessage}`
|
|
|
const urlReply = `${prodAwsS3}/${replyMessage}`
|
|
|
if (number !== userNumber) {
|
|
|
if (type === 'text' && !oldId && !companionIdForwardToAndFrom) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageLeftText
|
|
|
message={message}
|
|
|
tongue={isTongue}
|
|
@@ -284,9 +294,10 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
handleForward={handleForward}
|
|
|
/></div>)
|
|
|
if (type === 'text' && companionIdForwardToAndFrom) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageLeftForward
|
|
|
- url={url}
|
|
|
+ url={urlForward}
|
|
|
companionIdForwardToAndFrom={companionIdForwardToAndFrom}
|
|
|
oldId={oldId}
|
|
|
tongue={isTongue}
|
|
@@ -315,7 +326,8 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
handleScrollToTheChat={handleScrollToTheChat}
|
|
|
/></div>)
|
|
|
if (type === 'text' && oldId) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageLeftReply
|
|
|
url={urlReply}
|
|
|
tongue={isTongue}
|
|
@@ -345,7 +357,8 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
oldId={oldId}
|
|
|
/></div>)
|
|
|
if (type === 'image') return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageLeftImage
|
|
|
url={url}
|
|
|
tongue={isTongue}
|
|
@@ -368,7 +381,8 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
handleForward={handleForward}
|
|
|
/></div>)
|
|
|
if (type === 'audio') return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageLeftAudio
|
|
|
url={url}
|
|
|
tongue={isTongue}
|
|
@@ -391,7 +405,8 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
handleForward={handleForward}
|
|
|
/></div>)
|
|
|
if (type === 'video') return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageLeftVideo
|
|
|
url={url}
|
|
|
tongue={isTongue}
|
|
@@ -414,7 +429,8 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
handleForward={handleForward}
|
|
|
/></div>)
|
|
|
if (type) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageLeftFile
|
|
|
url={url}
|
|
|
tongue={isTongue}
|
|
@@ -438,7 +454,8 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
/></div>)
|
|
|
} else {
|
|
|
if (type === 'text' && !oldId && !companionIdForwardToAndFrom) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageRightText
|
|
|
message={message}
|
|
|
tongue={isTongue}
|
|
@@ -461,9 +478,10 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
handleForward={handleForward}
|
|
|
/></div>)
|
|
|
if (type === 'text' && companionIdForwardToAndFrom) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageRightForward
|
|
|
- url={url}
|
|
|
+ url={urlForward}
|
|
|
oldId={oldId}
|
|
|
companionIdForwardToAndFrom={companionIdForwardToAndFrom}
|
|
|
tongue={isTongue}
|
|
@@ -493,7 +511,8 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
handleScrollToTheChat={handleScrollToTheChat}
|
|
|
/></div>)
|
|
|
if (type === 'text' && oldId) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageRightReply
|
|
|
url={urlReply}
|
|
|
tongue={isTongue}
|
|
@@ -524,7 +543,8 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
oldId={oldId}
|
|
|
/></div>)
|
|
|
if (type === 'image') return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageRightImage
|
|
|
url={url}
|
|
|
tongue={isTongue}
|
|
@@ -548,7 +568,8 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
handleForward={handleForward}
|
|
|
/></div>)
|
|
|
if (type === 'audio') return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageRightAudio
|
|
|
url={url}
|
|
|
tongue={isTongue}
|
|
@@ -572,7 +593,8 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
handleForward={handleForward}
|
|
|
/></div>)
|
|
|
if (type === 'video') return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageRightVideo
|
|
|
url={url}
|
|
|
tongue={isTongue}
|
|
@@ -596,7 +618,8 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
|
handleForward={handleForward}
|
|
|
/></div>)
|
|
|
if (type) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
- {isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isTime&&<MessageDivider message={timeStampFilter(createdAt)}/>}
|
|
|
+ {isUnread&&<MessageDivider message='Unread Messages'/>}
|
|
|
<MessageRightFile
|
|
|
url={url}
|
|
|
tongue={isTongue}
|