@@ -6,7 +6,9 @@ import { Scroller } from '#/components/Scroller'
6
6
import { Text } from '#/components/Text'
7
7
import { backendMutationOptions , backendQueryOptions } from '#/hooks/backendHooks'
8
8
import * as billingHooks from '#/hooks/billing'
9
+ import ConfirmDeleteModal from '#/modals/ConfirmDeleteModal'
9
10
import InviteUsersModal from '#/modals/InviteUsersModal'
11
+ import { setModal } from '#/providers/ModalProvider'
10
12
import type * as backendModule from '#/services/Backend'
11
13
import type RemoteBackend from '#/services/RemoteBackend'
12
14
import * as authProvider from '$/providers/react'
@@ -100,7 +102,12 @@ export default function MembersSettingsSection() {
100
102
{ getText ( 'active' ) }
101
103
{ member . email !== user . email && isAdmin && (
102
104
< Button . Group gap = "small" className = "mt-0.5" >
103
- < RemoveMemberButton backend = { backend } userId = { member . userId } />
105
+ < RemoveMemberButton
106
+ backend = { backend }
107
+ userId = { member . userId }
108
+ userEmail = { member . email }
109
+ userUsername = { member . name }
110
+ />
104
111
</ Button . Group >
105
112
) }
106
113
</ div >
@@ -178,11 +185,13 @@ function ResendInvitationButton(props: ResendInvitationButtonProps) {
178
185
interface RemoveMemberButtonProps {
179
186
readonly backend : RemoteBackend
180
187
readonly userId : backendModule . UserId
188
+ readonly userEmail : string
189
+ readonly userUsername : string
181
190
}
182
191
183
192
/** Action button for removing a member. */
184
193
function RemoveMemberButton ( props : RemoveMemberButtonProps ) {
185
- const { backend, userId } = props
194
+ const { backend, userId, userUsername , userEmail } = props
186
195
const { getText } = useText ( )
187
196
188
197
const removeMutation = useMutation (
@@ -193,7 +202,24 @@ function RemoveMemberButton(props: RemoveMemberButtonProps) {
193
202
)
194
203
195
204
return (
196
- < Button variant = "icon" size = "custom" onPress = { ( ) => removeMutation . mutateAsync ( [ userId ] ) } >
205
+ < Button
206
+ variant = "icon"
207
+ size = "custom"
208
+ onPress = { ( ) => {
209
+ setModal (
210
+ < ConfirmDeleteModal
211
+ defaultOpen = { true }
212
+ cannotUndo = { true }
213
+ actionText = { getText ( 'deleteUserConfirmation' , userUsername , userEmail ) }
214
+ alert = { getText ( 'deleteUserAlert' ) }
215
+ onConfirm = { async ( ) => {
216
+ await removeMutation . mutateAsync ( [ userId ] )
217
+ } }
218
+ actionButtonLabel = { getText ( 'remove' ) }
219
+ /> ,
220
+ )
221
+ } }
222
+ >
197
223
{ getText ( 'remove' ) }
198
224
</ Button >
199
225
)
0 commit comments