This commit is contained in:
2023-06-26 17:48:00 +01:00
parent 1a15410e4c
commit 16fd35df83
3 changed files with 128 additions and 112 deletions
+54 -49
View File
@@ -14,8 +14,14 @@ const validationSchema = Yup.object().shape({
.max(25, "Maximum 25 characters")
.required("Country is required"),
price: Yup.number()
.typeError("you must specify a number")
.typeError("Invalid number")
.min(1, "Price must be greater than 0")
.test("no-e", "Invalid number", (value) => {
if (value && /\d+e/.test(value)) {
return false;
}
return true;
})
.required("Price is required"),
title: Yup.string()
.min(3, "Minimum 3 characters")
@@ -42,15 +48,16 @@ function AddJob({ popUpHandler, categories }) {
let { userDetails } = useSelector((state) => state.userDetails);
let [country, setCountry] = useState({
const [numberValue, setNumberValue] = useState("");
let [currency, setCurrency] = useState({
loading: true,
status: false,
data: [],
}); // To Hold the array of country getUserCountry returns
data: null,
}); // To Hold the array of currency getUserCurrency returns
let initialValues = {
// initial values for formik
country: userDetails.country,
currency: "",
price: "",
title: "",
description: "",
@@ -65,25 +72,7 @@ function AddJob({ popUpHandler, categories }) {
message: "",
}); // Holds state when submit button is pressed
// FUNCTION TO GET COUNTRY
const getUserCountry = () => {
setCountry((prev) => ({ ...prev, loading: true }));
ApiCall.getSignupCountryData()
.then((res) => {
if (res.data.internal_return < 1) {
setCountry({ loading: false, status: true, data: [] });
return;
}
setCountry({
loading: false,
status: true,
data: res.data.signup_country,
});
})
.catch((err) => {
setCountry({ loading: false, status: false, data: [] });
});
};
// FUNCTION TO GET Currency
// FUNCTION TO HANDLE ADD JOB FORM
const handleAddJob = (values, helpers) => {
@@ -113,7 +102,7 @@ function AddJob({ popUpHandler, categories }) {
setRequestStatus({
loading: false,
status: false,
message: "Opps! soemthing went wrong. Try Again",
message: "Opps! something went wrong. Try Again",
});
})
.finally(() => {
@@ -124,9 +113,31 @@ function AddJob({ popUpHandler, categories }) {
};
useEffect(() => {
getUserCountry();
const getUserCurrency = () => {
setCurrency((prev) => ({ ...prev, loading: true }));
ApiCall.getUserWallets()
.then((res) => {
if (res.data.internal_return < 0) {
setCurrency({ loading: false, status: true, data: [] });
return;
}
console.log("Res for currency >> ", res);
setCurrency({
loading: false,
status: true,
data: res.data.result_list,
});
})
.catch((err) => {
setCurrency({ loading: false, status: false, data: [] });
});
};
getUserCurrency();
}, []);
console.log("Currency >> ", currency.data);
return (
<div className="add-job p-5 w-full bg-white rounded-md flex flex-col justify-between">
<Formik
@@ -140,46 +151,40 @@ function AddJob({ popUpHandler, categories }) {
<div className="flex flex-col-reverse sm:flex-row">
<div className="fields w-full">
{/* inputs starts here */}
{/* country */}
<div className="xl:flex xl:space-x-7 mb-[5px]">
<div className="field w-full mb-6 xl:mb-0">
<label
htmlFor="country"
htmlFor="currency"
className="input-label text-[#181c32] dark:text-white text-[13.975px] leading-[20.9625px] font-semibold block"
>
Country
Currency
</label>
<select
id="country"
name="country"
disabled
value={props.values.country}
id="currency"
name="currency"
value={props.values.currency}
className={`input-field p-2 mt-3 rounded-md placeholder:text-base text-dark-gray dark:text-white w-full h-10 bg-slate-100 dark:bg-[#11131F] focus:ring-0 focus:outline-none`}
onChange={props.handleChange}
onBlur={props.handleBlur}
>
{country.loading ? (
{currency.loading ? (
<option className="text-slate-500 text-lg" value="">
Loading...
</option>
) : country.data.length ? (
) : currency.data.length ? (
<>
<option className="text-slate-500 text-lg" value="">
Select...
Select a currency
</option>
{country.data.map((item, index) => {
if (item[0] == userDetails.country) {
return (
<option
key={index}
className="text-slate-500 text-lg"
value={item[0]}
>
{item[1]}
</option>
);
}
})}
{currency.data?.map((item, index) => (
<option
key={index}
className="text-slate-500 text-lg"
value={item?.country}
>
{item?.description}
</option>
))}
</>
) : (
<option className="text-slate-500 text-lg" value="">