1
1
import { BiDotsVerticalRounded } from 'react-icons/bi' ;
2
2
import Dropdown from 'rsuite/Dropdown' ;
3
3
import PropTypes from 'prop-types' ;
4
- import React from 'react' ;
4
+ import React , { useMemo } from 'react' ;
5
5
import chatHelper from 'src/lib/chatHelper' ;
6
6
import { socket } from 'src/lib/socketConnection' ;
7
7
import { useApp } from 'src/context/AppContext' ;
8
8
import { useChat } from 'src/context/ChatContext' ;
9
9
import useChatUtils from 'src/lib/chatSocket' ;
10
10
import useCryptoKeys from 'src/hooks/useCryptoKeys' ;
11
11
12
+ import { FIFTEEN_MINUTES } from '../../../../constants.json' ;
13
+
14
+
12
15
const DropDownOptions = ( { id, isSender, inputRef, cancelEdit, setEditing, setReplyId } ) => {
13
16
const { app } = useApp ( ) ;
14
17
@@ -17,7 +20,17 @@ const DropDownOptions = ({ id, isSender, inputRef, cancelEdit, setEditing, setRe
17
20
const { getMessage, messageExists, handleCopyToClipBoard } = chatHelper ( state , app ) ;
18
21
const { deleteMessage } = useChatUtils ( socket ) ;
19
22
23
+ const message = getMessage ( id , state , app ) ;
24
+
25
+ const isWithin15Minutes = useMemo ( ( ) => {
26
+ return Date . now ( ) - new Date ( message . time ) . getTime ( ) <= FIFTEEN_MINUTES ;
27
+ } , [ message . time ] )
28
+
20
29
const handleEdit = ( id ) => {
30
+ if ( ! isWithin15Minutes ) {
31
+ return ;
32
+ }
33
+
21
34
inputRef . current . focus ( ) ;
22
35
const { message } = getMessage ( id , state , app ) ;
23
36
@@ -31,7 +44,7 @@ const DropDownOptions = ({ id, isSender, inputRef, cancelEdit, setEditing, setRe
31
44
} ;
32
45
33
46
const handleDelete = async ( id ) => {
34
- if ( ! messageExists ( id ) ) {
47
+ if ( ! messageExists ( id ) || ! isWithin15Minutes ) {
35
48
return ;
36
49
}
37
50
@@ -78,13 +91,22 @@ const DropDownOptions = ({ id, isSender, inputRef, cancelEdit, setEditing, setRe
78
91
renderToggle = { renderIconButton }
79
92
NoCaret
80
93
>
81
- < Dropdown . Item onClick = { ( ) => handleEdit ( id ) } > Edit</ Dropdown . Item >
94
+ {
95
+ isWithin15Minutes && (
96
+ < Dropdown . Item onClick = { ( ) => handleEdit ( id ) } > Edit</ Dropdown . Item >
97
+ )
98
+ }
82
99
83
100
< Dropdown . Item onClick = { ( ) => handleCopyToClipBoard ( id , importedPrivateKey ) } >
84
101
Copy
85
102
</ Dropdown . Item >
86
103
< Dropdown . Item onClick = { ( ) => setReplyId ( id ) } > Reply</ Dropdown . Item >
87
- < Dropdown . Item onClick = { ( ) => handleDelete ( id ) } > Delete</ Dropdown . Item >
104
+
105
+ {
106
+ isWithin15Minutes && (
107
+ < Dropdown . Item onClick = { ( ) => handleDelete ( id ) } > Delete</ Dropdown . Item >
108
+ )
109
+ }
88
110
</ Dropdown >
89
111
) ;
90
112
} else if ( ! isSender ) {
0 commit comments