|
@@ -130,15 +130,58 @@ const useStyles = makeStyles({
|
|
|
border:'solid 14px rgb(41, 139, 231)',
|
|
|
color: '#ffffff',
|
|
|
}
|
|
|
+ },
|
|
|
+ avatarArrowWrapper: {
|
|
|
+ position:'absolute',
|
|
|
+ right: -140,
|
|
|
+ bottom: 200,
|
|
|
+ width: 56,
|
|
|
},
|
|
|
avatarArrow: {
|
|
|
- left: 120,
|
|
|
- bottom:200,
|
|
|
+ cursor:'pointer',
|
|
|
'&:hover': {
|
|
|
backgroundColor: 'rgb(41, 139, 231)',
|
|
|
color: '#ffffff',
|
|
|
}
|
|
|
},
|
|
|
+ listSeenIconMute: {
|
|
|
+ position: 'absolute',
|
|
|
+ top: -8,
|
|
|
+ left: 16,
|
|
|
+ background: '#a7aaa7',
|
|
|
+ borderRadius: '50%',
|
|
|
+ color: '#ffffff',
|
|
|
+ border: 'none',
|
|
|
+ height: 24,
|
|
|
+ width: 24,
|
|
|
+ textAlign: 'center',
|
|
|
+ display: 'flex',
|
|
|
+ alignItems: 'center',
|
|
|
+ justifyContent: 'center',
|
|
|
+ alignContent: 'center',
|
|
|
+ fontSize: 12,
|
|
|
+ zIndex: 10,
|
|
|
+ cursor:'pointer',
|
|
|
+ },
|
|
|
+ listSeenIcon: {
|
|
|
+ position: 'absolute',
|
|
|
+ top: -8,
|
|
|
+ left: 16,
|
|
|
+ background: '#0ac40a',
|
|
|
+ borderRadius: '50%',
|
|
|
+ color: '#ffffff',
|
|
|
+ border: 'none',
|
|
|
+ height: 24,
|
|
|
+ width: 24,
|
|
|
+ textAlign: 'center',
|
|
|
+ display: 'flex',
|
|
|
+ alignItems: 'center',
|
|
|
+ justifyContent: 'center',
|
|
|
+ alignContent: 'center',
|
|
|
+ fontSize: 12,
|
|
|
+ zIndex: 10,
|
|
|
+ cursor:'pointer'
|
|
|
+ },
|
|
|
iconCancel: {
|
|
|
position: 'absolute',
|
|
|
left:-65,
|
|
@@ -163,11 +206,12 @@ const useStyles = makeStyles({
|
|
|
});
|
|
|
|
|
|
interface ISendMessage{
|
|
|
- isArrow:boolean,
|
|
|
+ isArrow: boolean,
|
|
|
+ isNew: {new:number,mute:boolean},
|
|
|
handleScrollTo:() => void
|
|
|
}
|
|
|
|
|
|
-const SendMessage = ({isArrow,handleScrollTo}:ISendMessage) => {
|
|
|
+const SendMessage = ({isArrow,isNew,handleScrollTo}:ISendMessage) => {
|
|
|
const classes = useStyles();
|
|
|
const { companionId } = useSelector(getChat)
|
|
|
const isOpen = useSelector(getIsOpen)
|
|
@@ -191,6 +235,7 @@ const SendMessage = ({isArrow,handleScrollTo}:ISendMessage) => {
|
|
|
_mediaBlobUrl && _clearBlobUrl()
|
|
|
isOpenMenu&&setIsOpenMenu(false)
|
|
|
isOpenEmoji && setIsOpenEmoji(false)
|
|
|
+ handleScrollTo()
|
|
|
}
|
|
|
const sentMessage = async () => {
|
|
|
if (value) sentMessageById(companionId, value)
|
|
@@ -254,9 +299,8 @@ const SendMessage = ({isArrow,handleScrollTo}:ISendMessage) => {
|
|
|
sentFileMessageById(companionId, formData)
|
|
|
}
|
|
|
}
|
|
|
- handleClearMessage()
|
|
|
- setTimeout(handleScrollTo, 3000);
|
|
|
playNotification('http://localhost:3000/send.mp3')
|
|
|
+ setTimeout(handleClearMessage, 3000);
|
|
|
}
|
|
|
const handleTextarea = (e: React.ChangeEvent<HTMLTextAreaElement>) => setValue(e.target.value)
|
|
|
const handleFocusTextarea = async () => await typingChat(companionId,true)
|
|
@@ -290,7 +334,7 @@ const SendMessage = ({isArrow,handleScrollTo}:ISendMessage) => {
|
|
|
setType('filming')
|
|
|
setIsFilming(true)
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
return (
|
|
|
<div className={classes.container} style={{borderTop:isArrow?'solid 1px #ffffff':'none'}} >
|
|
@@ -327,11 +371,14 @@ const SendMessage = ({isArrow,handleScrollTo}:ISendMessage) => {
|
|
|
<FilesMenu setFile={setFile} setValue={setValue} setIsOpenMenu={setIsOpenMenu} setType={setType}/>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <Avatar onClick={handleScrollTo} className={classes.avatarArrow}
|
|
|
- sx={{backgroundColor: '#ffffff', width: 56, height: 56,
|
|
|
- color: '#6b6b6b', display: isArrow ? 'flex' : 'none'}}>
|
|
|
- <ArrowDownwardIcon fontSize="medium" />
|
|
|
- </Avatar>
|
|
|
+ <div className={classes.avatarArrowWrapper} style={{display: isArrow ? 'block' : 'none'}}>
|
|
|
+ <button onClick={handleScrollTo} style={{display: isNew.new ? 'block' : 'none'}}
|
|
|
+ className={isNew.mute ? classes.listSeenIconMute : classes.listSeenIcon}>{isNew.new}</button>
|
|
|
+ <Avatar onClick={handleScrollTo} className={classes.avatarArrow}
|
|
|
+ sx={{backgroundColor: '#ffffff', width: 56, height: 56,color: '#6b6b6b'}}>
|
|
|
+ <ArrowDownwardIcon fontSize="medium" />
|
|
|
+ </Avatar>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
{value || file || mediaBlobUrl || _mediaBlobUrl ?
|
|
|
<Avatar onClick={sentMessage} className={classes.avatar} sx={{
|