Skip to content

Commit 8b8754c

Browse files
authored
Merge pull request #1180 from topcoder-platform/pm-1610_1
fix(PM-1610): Show confirm modal while accepting application
2 parents b50cfaa + c2eaa92 commit 8b8754c

File tree

2 files changed

+49
-14
lines changed

2 files changed

+49
-14
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/* eslint-disable react/jsx-no-bind */
2+
import { FC } from 'react'
3+
4+
import { BaseModal, Button } from '~/libs/ui'
5+
6+
import styles from './styles.module.scss'
7+
8+
interface ConfirmModalProps {
9+
onClose: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void
10+
onApply: () => void
11+
}
12+
13+
const ConfirmModal: FC<ConfirmModalProps> = props => (
14+
<BaseModal
15+
onClose={props.onClose as () => void}
16+
open
17+
size='lg'
18+
title='Confirm to accept as copilot'
19+
buttons={(
20+
<>
21+
<Button primary onClick={props.onApply} label='Confirm' />
22+
<Button secondary onClick={props.onClose} label='Cancel' />
23+
</>
24+
)}
25+
>
26+
<div className={styles.applyCopilotModal}>
27+
<div className={styles.info}>
28+
Click &apos;Confirm&apos; to accept by updating project role to &apos;Copilot&apos;
29+
and complete this opportunity
30+
</div>
31+
</div>
32+
</BaseModal>
33+
)
34+
35+
export default ConfirmModal

src/apps/copilots/src/pages/copilot-opportunity-details/tabs/copilot-applications/CopilotApplicationAction.tsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { CopilotApplication, CopilotApplicationStatus } from '~/apps/copilots/sr
77
import { IconSolid, Tooltip } from '~/libs/ui'
88

99
import AlreadyMemberModal from './AlreadyMemberModal'
10+
import ConfirmModal from './ConfirmModal'
1011
import styles from './styles.module.scss'
1112

1213
const CopilotApplicationAction = (
@@ -15,6 +16,7 @@ const CopilotApplicationAction = (
1516
): JSX.Element => {
1617
const { opportunityId }: {opportunityId?: string} = useParams<{ opportunityId?: string }>()
1718
const [showAlreadyMemberModal, setShowAlreadyMemberModal] = useState(false)
19+
const [showConfirmModal, setShowConfirmModal] = useState(false)
1820
const isInvited = useMemo(
1921
() => allCopilotApplications
2022
&& allCopilotApplications.findIndex(item => item.status === CopilotApplicationStatus.INVITED) > -1,
@@ -31,19 +33,8 @@ const CopilotApplicationAction = (
3133

3234
if (copilotApplication.existingMembership) {
3335
setShowAlreadyMemberModal(true)
34-
return
35-
}
36-
37-
if (opportunityId) {
38-
try {
39-
await assignCopilotOpportunity(opportunityId, copilotApplication.id)
40-
toast.success('Accepted as copilot')
41-
copilotApplication.onApplied()
42-
} catch (e) {
43-
const error = e as Error
44-
toast.error(error.message)
45-
}
46-
36+
} else {
37+
setShowConfirmModal(true)
4738
}
4839
}, [opportunityId, copilotApplication])
4940

@@ -57,6 +48,7 @@ const CopilotApplicationAction = (
5748
toast.success('Accepted as copilot')
5849
copilotApplication.onApplied()
5950
setShowAlreadyMemberModal(false)
51+
setShowConfirmModal(false)
6052
} catch (e) {
6153
const error = e as Error
6254
toast.error(error.message)
@@ -67,6 +59,7 @@ const CopilotApplicationAction = (
6759
e.preventDefault()
6860
e.stopPropagation()
6961
setShowAlreadyMemberModal(false)
62+
setShowConfirmModal(false)
7063
}, [showAlreadyMemberModal])
7164

7265
return (
@@ -83,7 +76,7 @@ const CopilotApplicationAction = (
8376
!isInvited
8477
&& copilotApplication.status === CopilotApplicationStatus.PENDING
8578
&& copilotApplication.opportunityStatus === 'active' && (
86-
<Tooltip content='Accept Application'>
79+
<Tooltip content='Accept'>
8780
<IconSolid.UserAddIcon />
8881
</Tooltip>
8982
)
@@ -106,6 +99,13 @@ const CopilotApplicationAction = (
10699
copilotApplication={copilotApplication}
107100
/>
108101
)}
102+
103+
{showConfirmModal && (
104+
<ConfirmModal
105+
onClose={onCloseModal}
106+
onApply={onApply}
107+
/>
108+
)}
109109
</div>
110110
)
111111
}

0 commit comments

Comments
 (0)