|
@@ -57,9 +57,10 @@ interface ISearchLists {
|
|
date: any,
|
|
date: any,
|
|
setDate: React.Dispatch<any>,
|
|
setDate: React.Dispatch<any>,
|
|
setDisabled: React.Dispatch<boolean>,
|
|
setDisabled: React.Dispatch<boolean>,
|
|
|
|
+ divRef: any | null
|
|
}
|
|
}
|
|
|
|
|
|
-const SearchLists = ({ value,setValue,sort,date,setDate,setDisabled }: ISearchLists) => {
|
|
|
|
|
|
+const SearchLists = ({ value,setValue,sort,date,setDate,setDisabled,divRef}: ISearchLists) => {
|
|
const classes = useStyles()
|
|
const classes = useStyles()
|
|
const dispatch = useDispatch()
|
|
const dispatch = useDispatch()
|
|
const { chats, total } = useSelector(getStateMemo)
|
|
const { chats, total } = useSelector(getStateMemo)
|
|
@@ -76,6 +77,37 @@ const SearchLists = ({ value,setValue,sort,date,setDate,setDisabled }: ISearchLi
|
|
rightIsOpen&&dispatch(actionRightIsOpen(''))
|
|
rightIsOpen&&dispatch(actionRightIsOpen(''))
|
|
dispatch(asyncStartChatById(companionId))
|
|
dispatch(asyncStartChatById(companionId))
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ const scrollTo = (nodeRef: any,id:string) => {
|
|
|
|
+ const childNodes = nodeRef.current.childNodes[0].childNodes
|
|
|
|
+ let toScrollNode = [...childNodes].find((el: any) => el.id === id)
|
|
|
|
+ if (toScrollNode) {
|
|
|
|
+ toScrollNode = [...toScrollNode.childNodes].slice(-1)[0]
|
|
|
|
+ toScrollNode.style.boxShadow = '0px 0px 6px 0px #555555'
|
|
|
|
+ toScrollNode.scrollIntoView({ behavior: 'smooth' })
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ toScrollNode.style.boxShadow = 'unset'
|
|
|
|
+ }, 2000)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const handleScrollToTheMessage = (_id: string, companionId: string) => {
|
|
|
|
+ if (divRef.current && divRef.current.id === companionId) {
|
|
|
|
+ scrollTo(divRef,_id)
|
|
|
|
+ } else if (divRef.current && divRef.current.id !== companionId) {
|
|
|
|
+ rightIsOpen&&dispatch(actionRightIsOpen(''))
|
|
|
|
+ dispatch(asyncStartChatById(companionId))
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ if(divRef.current) scrollTo(divRef,_id)
|
|
|
|
+ }, 3000)
|
|
|
|
+ } else if (!divRef.current) {
|
|
|
|
+ rightIsOpen&&dispatch(actionRightIsOpen(''))
|
|
|
|
+ dispatch(asyncStartChatById(companionId))
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ if(divRef.current) scrollTo(divRef,_id)
|
|
|
|
+ }, 3000)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
const filteredChats = (arr: TChats) => arr.filter((el) => {
|
|
const filteredChats = (arr: TChats) => arr.filter((el) => {
|
|
const credentials = el.name + ' ' + el.lastName
|
|
const credentials = el.name + ' ' + el.lastName
|
|
if (!date) {
|
|
if (!date) {
|
|
@@ -154,11 +186,11 @@ const SearchLists = ({ value,setValue,sort,date,setDate,setDisabled }: ISearchLi
|
|
</div>
|
|
</div>
|
|
{isActive === 0 && <ChatListRecent value={value} date={date}
|
|
{isActive === 0 && <ChatListRecent value={value} date={date}
|
|
filteredAndSorted={filteredAndSorted} handleListItemClick={handleListItemClick} />}
|
|
filteredAndSorted={filteredAndSorted} handleListItemClick={handleListItemClick} />}
|
|
- {isActive === 1 && <FilesList messagesMemo={messagesMemo} value={value} date={date} sort={sort} setDisabled={setDisabled}/>}
|
|
|
|
- {isActive === 2 && <MediaList messagesMemo={messagesMemo} value={value} date={date} sort={sort} setDisabled={setDisabled}/>}
|
|
|
|
- {isActive === 3 && <TextList messagesMemo={messagesMemo} value={value} date={date} sort={sort} setDisabled={setDisabled}/>}
|
|
|
|
- {isActive === 4 && <AudioList messagesMemo={messagesMemo} value={value} date={date} sort={sort} setDisabled={setDisabled}/>}
|
|
|
|
- {isActive === 5 && <VideoList messagesMemo={messagesMemo} value={value} date={date} sort={sort} setDisabled={setDisabled}/>}
|
|
|
|
|
|
+ {isActive === 1 && <FilesList messagesMemo={messagesMemo} value={value} date={date} sort={sort} setDisabled={setDisabled} handleScrollToTheMessage={handleScrollToTheMessage}/>}
|
|
|
|
+ {isActive === 2 && <MediaList messagesMemo={messagesMemo} value={value} date={date} sort={sort} setDisabled={setDisabled} handleScrollToTheMessage={handleScrollToTheMessage}/>}
|
|
|
|
+ {isActive === 3 && <TextList messagesMemo={messagesMemo} value={value} date={date} sort={sort} setDisabled={setDisabled} handleScrollToTheMessage={handleScrollToTheMessage}/>}
|
|
|
|
+ {isActive === 4 && <AudioList messagesMemo={messagesMemo} value={value} date={date} sort={sort} setDisabled={setDisabled} handleScrollToTheMessage={handleScrollToTheMessage}/>}
|
|
|
|
+ {isActive === 5 && <VideoList messagesMemo={messagesMemo} value={value} date={date} sort={sort} setDisabled={setDisabled} handleScrollToTheMessage={handleScrollToTheMessage}/>}
|
|
</>
|
|
</>
|
|
)
|
|
)
|
|
}
|
|
}
|