|
@@ -25,9 +25,9 @@ import { getMessagesMemo } from '../../../../redux/messages/selector'
|
|
import { getAuthorizationState } from '../../../../redux/authorization/selector'
|
|
import { getAuthorizationState } from '../../../../redux/authorization/selector'
|
|
import { getChat } from '../../../../redux/chat/selector'
|
|
import { getChat } from '../../../../redux/chat/selector'
|
|
import { getScrollChat } from '../../../../redux/control/selector'
|
|
import { getScrollChat } from '../../../../redux/control/selector'
|
|
-import { actionScrollChat,actionOpenPinned } from '../../../../redux/control/action'
|
|
|
|
|
|
+import { actionScrollChat,actionOpenPinned,actionRightIsOpen } from '../../../../redux/control/action'
|
|
import { asyncGetMessagesById } from '../../../../redux/messages/operations'
|
|
import { asyncGetMessagesById } from '../../../../redux/messages/operations'
|
|
-import { asyncGetChatById } from "../../../../redux/chat/operations";
|
|
|
|
|
|
+import { asyncGetChatById,asyncStartChatById } from "../../../../redux/chat/operations";
|
|
import { seenChat } from "../../../../api-data";
|
|
import { seenChat } from "../../../../api-data";
|
|
import { TPinnedMessages } from "../../../../typescript/redux/pinnedMessages/types";
|
|
import { TPinnedMessages } from "../../../../typescript/redux/pinnedMessages/types";
|
|
import { TMessage } from "../../../../typescript/redux/allMessages/types";
|
|
import { TMessage } from "../../../../typescript/redux/allMessages/types";
|
|
@@ -106,6 +106,7 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
const [modalForward, setModalForward] = useState<boolean>(false)
|
|
const [modalForward, setModalForward] = useState<boolean>(false)
|
|
let time: any
|
|
let time: any
|
|
let tongue: any
|
|
let tongue: any
|
|
|
|
+ const getSeconds = (createdAt:string) => Math.round(new Date(createdAt).getTime()/ 1000)
|
|
const isSelected = (_id: string) => selectedArr.some((el: string) => el === _id)
|
|
const isSelected = (_id: string) => selectedArr.some((el: string) => el === _id)
|
|
const handleSelected = (_id: string) => {
|
|
const handleSelected = (_id: string) => {
|
|
!isSomeSelected&&setIsSomeSelected(true)
|
|
!isSomeSelected&&setIsSomeSelected(true)
|
|
@@ -125,13 +126,7 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
setIsForward(renderArr.find((el) => el._id === _id))
|
|
setIsForward(renderArr.find((el) => el._id === _id))
|
|
setModalForward(true)
|
|
setModalForward(true)
|
|
}
|
|
}
|
|
-
|
|
|
|
- const setTongueAndTime = (_id: string) => {
|
|
|
|
- openPinned && dispatch(actionOpenPinned(false))
|
|
|
|
- isReply&&setIsReply(undefined)
|
|
|
|
- setIsForward(renderArr.find((el) => el._id === _id))
|
|
|
|
- setModalForward(true)
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
const handleScrollTo = useCallback(() => {
|
|
const handleScrollTo = useCallback(() => {
|
|
chatDivRef.current&&chatDivRef.current.scrollTo({
|
|
chatDivRef.current&&chatDivRef.current.scrollTo({
|
|
top: chatDivRef.current.scrollHeight,
|
|
top: chatDivRef.current.scrollHeight,
|
|
@@ -166,6 +161,14 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
}, 2000)
|
|
}, 2000)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ const handleScrollToTheChat = (companionIdForwardToAndFrom:string,oldId:string) => {
|
|
|
|
+ if (companionId === companionIdForwardToAndFrom) return handleScrollToTheMessage(oldId)
|
|
|
|
+ dispatch(actionRightIsOpen(''))
|
|
|
|
+ dispatch(actionOpenPinned(false))
|
|
|
|
+ dispatch(asyncStartChatById(companionIdForwardToAndFrom))
|
|
|
|
+ setTimeout(() => handleScrollToTheMessage(oldId), 2000)
|
|
|
|
+ }
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
if (scrollChat) {
|
|
if (scrollChat) {
|
|
@@ -205,7 +208,6 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
const idInterval = setInterval(handleReset, refreshAppTime);
|
|
const idInterval = setInterval(handleReset, refreshAppTime);
|
|
return () => clearInterval(idInterval);
|
|
return () => clearInterval(idInterval);
|
|
}, [total, seen, chatDivRef, companionId, openPinned]);
|
|
}, [total, seen, chatDivRef, companionId, openPinned]);
|
|
-
|
|
|
|
return (
|
|
return (
|
|
<div className={classes.container} >
|
|
<div className={classes.container} >
|
|
<ArrowBack isArrow={isArrow} isNew={isNew} handleScrollTo={handleScrollTo} openPinned={openPinned}/>
|
|
<ArrowBack isArrow={isArrow} isNew={isNew} handleScrollTo={handleScrollTo} openPinned={openPinned}/>
|
|
@@ -214,7 +216,7 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
<div className={classes.messagesBody}>
|
|
<div className={classes.messagesBody}>
|
|
{messagesMemo.length > 0 ? renderArr.map(({ replyMessage,message, name, lastName,avatarUrl,color,pinned,
|
|
{messagesMemo.length > 0 ? renderArr.map(({ replyMessage,message, name, lastName,avatarUrl,color,pinned,
|
|
createdAt, number, type, fullType, replyName, replyLastName, replyCaption, caption, emoji, emojiCompanion,
|
|
createdAt, number, type, fullType, replyName, replyLastName, replyCaption, caption, emoji, emojiCompanion,
|
|
- _id, oldId, forwardName, forwardLastName, companionIdForwardToAndFrom},i) => {
|
|
|
|
|
|
+ _id, oldId, forwardName, forwardLastName, companionIdForwardToAndFrom,forwardMessage,forwardCaption},i) => {
|
|
const watched = true
|
|
const watched = true
|
|
let isTime
|
|
let isTime
|
|
let isTongue = false
|
|
let isTongue = false
|
|
@@ -227,13 +229,21 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
isTime = true
|
|
isTime = true
|
|
}
|
|
}
|
|
if (!tongue&&nextTongue&&nextTongue.number === number) {
|
|
if (!tongue&&nextTongue&&nextTongue.number === number) {
|
|
- isTongue = false
|
|
|
|
|
|
+ if (getSeconds(nextTongue.createdAt) - getSeconds(createdAt) < 600) {
|
|
|
|
+ isTongue = false
|
|
|
|
+ } else {
|
|
|
|
+ isTongue = true
|
|
|
|
+ }
|
|
tongue = number
|
|
tongue = number
|
|
} else if (!tongue&&nextTongue&&nextTongue.number !== number) {
|
|
} else if (!tongue&&nextTongue&&nextTongue.number !== number) {
|
|
isTongue = true
|
|
isTongue = true
|
|
tongue = null
|
|
tongue = null
|
|
} else if (tongue&&nextTongue&&tongue === number&&nextTongue.number === number) {
|
|
} else if (tongue&&nextTongue&&tongue === number&&nextTongue.number === number) {
|
|
- isTongue = false
|
|
|
|
|
|
+ if (getSeconds(nextTongue.createdAt) - getSeconds(createdAt) < 600) {
|
|
|
|
+ isTongue = false
|
|
|
|
+ } else {
|
|
|
|
+ isTongue = true
|
|
|
|
+ }
|
|
tongue = number
|
|
tongue = number
|
|
} else if (tongue&&nextTongue&&tongue === number&&nextTongue.number !== number) {
|
|
} else if (tongue&&nextTongue&&tongue === number&&nextTongue.number !== number) {
|
|
isTongue = true
|
|
isTongue = true
|
|
@@ -273,21 +283,23 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
handleReply={handleReply}
|
|
handleReply={handleReply}
|
|
handleForward={handleForward}
|
|
handleForward={handleForward}
|
|
/></div>)
|
|
/></div>)
|
|
- if (type === 'text' && oldId) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
|
|
|
+ if (type === 'text' && companionIdForwardToAndFrom) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
{isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
{isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
- <MessageLeftReply
|
|
|
|
- url={urlReply}
|
|
|
|
|
|
+ <MessageLeftForward
|
|
|
|
+ url={url}
|
|
|
|
+ companionIdForwardToAndFrom={companionIdForwardToAndFrom}
|
|
|
|
+ oldId={oldId}
|
|
tongue={isTongue}
|
|
tongue={isTongue}
|
|
avatarUrl={avatarUrl}
|
|
avatarUrl={avatarUrl}
|
|
color={color}
|
|
color={color}
|
|
- replyMessage={replyMessage}
|
|
|
|
- message={message}
|
|
|
|
- createdAt={createdAt}
|
|
|
|
name={name}
|
|
name={name}
|
|
lastName={lastName}
|
|
lastName={lastName}
|
|
- replyName={replyName}
|
|
|
|
- replyLastName={replyLastName}
|
|
|
|
- replyCaption={replyCaption}
|
|
|
|
|
|
+ forwardName={forwardName}
|
|
|
|
+ forwardLastName={forwardLastName}
|
|
|
|
+ forwardMessage={forwardMessage}
|
|
|
|
+ forwardCaption={forwardCaption}
|
|
|
|
+ message={message}
|
|
|
|
+ createdAt={createdAt}
|
|
caption={caption}
|
|
caption={caption}
|
|
emoji={emoji}
|
|
emoji={emoji}
|
|
emojiCompanion={emojiCompanion}
|
|
emojiCompanion={emojiCompanion}
|
|
@@ -300,22 +312,23 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
handleReply={handleReply}
|
|
handleReply={handleReply}
|
|
handleForward={handleForward}
|
|
handleForward={handleForward}
|
|
fullType={fullType}
|
|
fullType={fullType}
|
|
- handleScrollToTheMessage={handleScrollToTheMessage}
|
|
|
|
- oldId={oldId}
|
|
|
|
- /></div>)
|
|
|
|
- if (type === 'text' && companionIdForwardToAndFrom) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
|
|
|
+ handleScrollToTheChat={handleScrollToTheChat}
|
|
|
|
+ /></div>)
|
|
|
|
+ if (type === 'text' && oldId) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
{isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
{isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
- <MessageLeftForward
|
|
|
|
- url={url}
|
|
|
|
|
|
+ <MessageLeftReply
|
|
|
|
+ url={urlReply}
|
|
tongue={isTongue}
|
|
tongue={isTongue}
|
|
avatarUrl={avatarUrl}
|
|
avatarUrl={avatarUrl}
|
|
color={color}
|
|
color={color}
|
|
- name={name}
|
|
|
|
- lastName={lastName}
|
|
|
|
- forwardName={forwardName}
|
|
|
|
- forwardLastName={forwardLastName}
|
|
|
|
|
|
+ replyMessage={replyMessage}
|
|
message={message}
|
|
message={message}
|
|
createdAt={createdAt}
|
|
createdAt={createdAt}
|
|
|
|
+ name={name}
|
|
|
|
+ lastName={lastName}
|
|
|
|
+ replyName={replyName}
|
|
|
|
+ replyLastName={replyLastName}
|
|
|
|
+ replyCaption={replyCaption}
|
|
caption={caption}
|
|
caption={caption}
|
|
emoji={emoji}
|
|
emoji={emoji}
|
|
emojiCompanion={emojiCompanion}
|
|
emojiCompanion={emojiCompanion}
|
|
@@ -328,8 +341,9 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
handleReply={handleReply}
|
|
handleReply={handleReply}
|
|
handleForward={handleForward}
|
|
handleForward={handleForward}
|
|
fullType={fullType}
|
|
fullType={fullType}
|
|
- handleScrollToTheChat={handleScrollToTheMessage}
|
|
|
|
- /></div>)
|
|
|
|
|
|
+ handleScrollToTheMessage={handleScrollToTheMessage}
|
|
|
|
+ oldId={oldId}
|
|
|
|
+ /></div>)
|
|
if (type === 'image') return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
if (type === 'image') return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
{isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
{isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
<MessageLeftImage
|
|
<MessageLeftImage
|
|
@@ -446,22 +460,24 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
handleReply={handleReply}
|
|
handleReply={handleReply}
|
|
handleForward={handleForward}
|
|
handleForward={handleForward}
|
|
/></div>)
|
|
/></div>)
|
|
- if (type === 'text' && oldId) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
|
|
|
+ if (type === 'text' && companionIdForwardToAndFrom) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
{isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
{isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
- <MessageRightReply
|
|
|
|
- url={urlReply}
|
|
|
|
|
|
+ <MessageRightForward
|
|
|
|
+ url={url}
|
|
|
|
+ oldId={oldId}
|
|
|
|
+ companionIdForwardToAndFrom={companionIdForwardToAndFrom}
|
|
tongue={isTongue}
|
|
tongue={isTongue}
|
|
watched={watched}
|
|
watched={watched}
|
|
avatarUrl={avatarUrl}
|
|
avatarUrl={avatarUrl}
|
|
color={color}
|
|
color={color}
|
|
- replyMessage={replyMessage}
|
|
|
|
- message={message}
|
|
|
|
- createdAt={createdAt}
|
|
|
|
name={name}
|
|
name={name}
|
|
lastName={lastName}
|
|
lastName={lastName}
|
|
- replyName={replyName}
|
|
|
|
- replyLastName={replyLastName}
|
|
|
|
- replyCaption={replyCaption}
|
|
|
|
|
|
+ forwardName={forwardName}
|
|
|
|
+ forwardLastName={forwardLastName}
|
|
|
|
+ forwardMessage={forwardMessage}
|
|
|
|
+ forwardCaption={forwardCaption}
|
|
|
|
+ message={message}
|
|
|
|
+ createdAt={createdAt}
|
|
caption={caption}
|
|
caption={caption}
|
|
emoji={emoji}
|
|
emoji={emoji}
|
|
emojiCompanion={emojiCompanion}
|
|
emojiCompanion={emojiCompanion}
|
|
@@ -474,23 +490,24 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
handleReply={handleReply}
|
|
handleReply={handleReply}
|
|
handleForward={handleForward}
|
|
handleForward={handleForward}
|
|
fullType={fullType}
|
|
fullType={fullType}
|
|
- handleScrollToTheMessage={handleScrollToTheMessage}
|
|
|
|
- oldId={oldId}
|
|
|
|
- /></div>)
|
|
|
|
- if (type === 'text' && companionIdForwardToAndFrom) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
|
|
|
|
+ handleScrollToTheChat={handleScrollToTheChat}
|
|
|
|
+ /></div>)
|
|
|
|
+ if (type === 'text' && oldId) return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
{isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
{isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
- <MessageRightForward
|
|
|
|
- url={url}
|
|
|
|
|
|
+ <MessageRightReply
|
|
|
|
+ url={urlReply}
|
|
tongue={isTongue}
|
|
tongue={isTongue}
|
|
watched={watched}
|
|
watched={watched}
|
|
avatarUrl={avatarUrl}
|
|
avatarUrl={avatarUrl}
|
|
color={color}
|
|
color={color}
|
|
- name={name}
|
|
|
|
- lastName={lastName}
|
|
|
|
- forwardName={forwardName}
|
|
|
|
- forwardLastName={forwardLastName}
|
|
|
|
|
|
+ replyMessage={replyMessage}
|
|
message={message}
|
|
message={message}
|
|
createdAt={createdAt}
|
|
createdAt={createdAt}
|
|
|
|
+ name={name}
|
|
|
|
+ lastName={lastName}
|
|
|
|
+ replyName={replyName}
|
|
|
|
+ replyLastName={replyLastName}
|
|
|
|
+ replyCaption={replyCaption}
|
|
caption={caption}
|
|
caption={caption}
|
|
emoji={emoji}
|
|
emoji={emoji}
|
|
emojiCompanion={emojiCompanion}
|
|
emojiCompanion={emojiCompanion}
|
|
@@ -503,8 +520,9 @@ const ChatBar = ({chatDivRef,selectedArr,setSelectedArr,isSomeSelected,setIsSome
|
|
handleReply={handleReply}
|
|
handleReply={handleReply}
|
|
handleForward={handleForward}
|
|
handleForward={handleForward}
|
|
fullType={fullType}
|
|
fullType={fullType}
|
|
- handleScrollToTheChat={handleScrollToTheMessage}
|
|
|
|
- /></div>)
|
|
|
|
|
|
+ handleScrollToTheMessage={handleScrollToTheMessage}
|
|
|
|
+ oldId={oldId}
|
|
|
|
+ /></div>)
|
|
if (type === 'image') return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
if (type === 'image') return (<div key={createdAt} id={_id} style={{borderRadius: 7}}>
|
|
{isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
{isTime&&<MessageTime message={timeStampFilter(createdAt)}/>}
|
|
<MessageRightImage
|
|
<MessageRightImage
|