Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Commit 5b0fb45

Browse files
authored
Merge pull request #473 from arpitchaudhari/dev
Fixing #445
2 parents ec92e6a + 03127a5 commit 5b0fb45

File tree

7 files changed

+67
-30
lines changed

7 files changed

+67
-30
lines changed

src/routes/CreateNewTeam/components/ConfirmationModal/index.jsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,13 @@ import Button from "components/Button";
1010
import "./styles.module.scss";
1111
import Checkbox from "components/Checkbox";
1212

13-
function ConfirmationModal({ open, onClose, onSubmit, isLoading }) {
13+
function ConfirmationModal({
14+
open,
15+
onClose,
16+
onSubmit,
17+
isLoading,
18+
loadingMessage,
19+
}) {
1420
const [agreed, setAgreed] = useState(false);
1521

1622
const toggleAgreed = () => {
@@ -35,7 +41,7 @@ function ConfirmationModal({ open, onClose, onSubmit, isLoading }) {
3541
title="Confirmation"
3642
buttons={confirmButton}
3743
isLoading={isLoading}
38-
loadingMessage="Creating A New Team"
44+
loadingMessage={loadingMessage}
3945
>
4046
<div styleName="agreement">
4147
<h5>Our Commitment to You</h5>

src/routes/CreateNewTeam/components/SubmitContainer/index.jsx

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import React, {
1212
useState,
1313
} from "react";
1414
import PT from "prop-types";
15-
import { useDispatch } from "react-redux";
15+
import { useDispatch, useSelector } from "react-redux";
1616
import _ from "lodash";
1717
import { toastr } from "react-redux-toastr";
1818
import { navigate } from "@reach/router";
@@ -30,7 +30,7 @@ import {
3030
clearSearchedRoles,
3131
editRoleAction,
3232
} from "../../actions";
33-
import { postTeamRequest } from "services/teams";
33+
import { postTeamRequest, isExternalMemberRequest } from "services/teams";
3434
import NoMatchingProfilesResultCard from "../NoMatchingProfilesResultCard";
3535

3636
function SubmitContainer({
@@ -48,8 +48,10 @@ function SubmitContainer({
4848
const [teamObject, setTeamObject] = useState(null);
4949
const [requestLoading, setRequestLoading] = useState(false);
5050
const [buttonClickable, setButtonClickable] = useState(true);
51+
const [msg, setMsg] = useState(false);
5152

5253
const dispatch = useDispatch();
54+
const { userId } = useSelector((state) => state.authUser);
5355

5456
const currentRole = useMemo(() => {
5557
return _.find(addedRoles, { searchId: previousSearchId });
@@ -133,23 +135,33 @@ function SubmitContainer({
133135
const requestTeam = useCallback(
134136
(teamObject) => {
135137
setRequestLoading(true);
136-
if (matchingRole.isExternalMember) {
137-
dispatch(addTeamObjects(teamObject));
138-
navigate("/taas/myteams/createnewteam/create-taas-payment");
139-
} else {
140-
postTeamRequest(teamObject)
141-
.then(() => {
142-
setTimeout(() => {
143-
dispatch(clearSearchedRoles());
144-
// Backend api create project has sync issue, so delay 2 seconds
145-
navigate("/taas/myteams");
146-
}, 2000);
147-
})
148-
.catch((err) => {
149-
setRequestLoading(false);
150-
toastr.error("Error Requesting Team", err.message);
151-
});
152-
}
138+
isExternalMemberRequest({
139+
memberId: userId,
140+
})
141+
.then((res) => {
142+
if (res.data) {
143+
dispatch(addTeamObjects(teamObject));
144+
navigate("/taas/myteams/createnewteam/create-taas-payment");
145+
} else {
146+
setMsg(true);
147+
postTeamRequest(teamObject)
148+
.then(() => {
149+
setTimeout(() => {
150+
dispatch(clearSearchedRoles());
151+
// Backend api create project has sync issue, so delay 2 seconds
152+
navigate("/taas/myteams");
153+
}, 2000);
154+
})
155+
.catch((err) => {
156+
setRequestLoading(false);
157+
toastr.error("Error Requesting Team", err.message);
158+
});
159+
}
160+
})
161+
.catch((err) => {
162+
setRequestLoading(false);
163+
toastr.error("Error validating Member", err.message);
164+
});
153165
},
154166
[dispatch, teamObject]
155167
);
@@ -193,6 +205,11 @@ function SubmitContainer({
193205
addedRoles={addedRoles}
194206
/>
195207
)}
208+
<ConfirmationModal
209+
open={requestLoading}
210+
isLoading={requestLoading}
211+
loadingMessage={msg ? "Creating A New Team" : ""}
212+
/>
196213
{/* <ConfirmationModal
197214
open={!!teamObject}
198215
onClose={() => setTeamObject(null)}

src/routes/CreateNewTeam/pages/CreateTaasPayment/PaymentForm/index.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,8 @@ const PaymentForm = ({ calculatedAmount }) => {
239239
{processing ? "Payment Processing" : `Pay $${calculatedAmount}`}
240240
</button>
241241
</form>
242-
<ConfirmationModal open={requestLoading} isLoading={requestLoading} />
242+
243+
<ConfirmationModal open={requestLoading} isLoading={requestLoading} loadingMessage="Creating A New Team"/>
243244
<PaymentResultPopup
244245
open={showPaymentResultPopup}
245246
onContinueClick={goToTassProject}

src/routes/CreateNewTeam/pages/CreateTaasPayment/StripeElement/index.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import StripeInput from "./StripeInput";
55

66
function StripeElement({ onErrorChange, element, icon, width, name }) {
77
const [errorMessage, setErrorMessage] = React.useState(null);
8-
function handleElementChange({empty, complete, error, elementType }) {
8+
function handleElementChange({ empty, complete, error, elementType }) {
99
if (!complete || error || empty) {
10-
onErrorChange(name, true)
11-
}else {
12-
onErrorChange(name, false)
10+
onErrorChange(name, true);
11+
} else {
12+
onErrorChange(name, false);
1313
}
1414
if (error) {
1515
if (elementType === "cardNumber") {

src/routes/CreateNewTeam/pages/CreateTaasPayment/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const CreateTassPayment = () => {
3535
durationWeeks = 4,
3636
hoursPerWeek = "40",
3737
} = role;
38-
38+
3939
let rate;
4040
let availability;
4141

src/services/roles.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ import config from "../../config";
99
* Returns a list of roles.
1010
*/
1111
export function getRoles() {
12-
return axios.get(`${config.API.V5}/taas-roles`).then((response)=>{
13-
response.data = _.filter(response.data, role => _.find(role.rates, r => r.global))
14-
return response
12+
return axios.get(`${config.API.V5}/taas-roles`).then((response) => {
13+
response.data = _.filter(response.data, (role) =>
14+
_.find(role.rates, (r) => r.global)
15+
);
16+
return response;
1517
});
1618
}
1719

src/services/teams.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ export const calculateAmount = (amountObject) => {
247247
const url = `${config.API.V5}/taas-teams/calculateAmount`;
248248
return axios.post(url, amountObject);
249249
};
250+
250251
/**
251252
*
252253
* @param {Object} paymentObject object containing total amount
@@ -256,3 +257,13 @@ export const postTeamPayment = (paymentObject) => {
256257
const url = `${config.API.V5}/taas-teams/createPayment`;
257258
return axios.post(url, paymentObject);
258259
};
260+
261+
/**
262+
*
263+
* @param {int} memberIdObject object containing memberId
264+
* @returns {Promise<object>} object containing whether member is external or internal
265+
*/
266+
export const isExternalMemberRequest = (memberId) => {
267+
const url = `${config.API.V5}/taas-teams/isExternalMember`;
268+
return axios.post(url, memberId);
269+
};

0 commit comments

Comments
 (0)