Compare commits

...

10 Commits

16 changed files with 168 additions and 141 deletions
+2 -1
View File
@@ -72,7 +72,8 @@ REACT_APP_APPLE_SOCIAL_LOGIN=0
REACT_APP_LINKEDIN_SOCIAL_LOGIN=0 REACT_APP_LINKEDIN_SOCIAL_LOGIN=0
#File Handling #File Handling
REACT_APP_MAX_FILE_SIZE=1000000 REACT_APP_MAX_FILE_SIZE=1048576
REACT_APP_MAX_VIDEO_FILE_SIZE=31457280
REACT_APP_TOTAL_NUM_FILE=4 REACT_APP_TOTAL_NUM_FILE=4
#Auth Text(s) #Auth Text(s)
+3 -1
View File
@@ -43,7 +43,9 @@ REACT_APP_GOOGLE_CLIENT_SECRET=aozK_2G8UjaCmLgPPkv9abIm
REACT_APP_GOOGLE_CLIENT_SCOPE="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile" REACT_APP_GOOGLE_CLIENT_SCOPE="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
REACT_APP_GOOGLE_REDIRECT_URL=http://localhost:9082/login/auth/ REACT_APP_GOOGLE_REDIRECT_URL=http://localhost:9082/login/auth/
REACT_APP_MAX_FILE_SIZE=1000000 #File Handling
REACT_APP_MAX_FILE_SIZE=1048576
REACT_APP_MAX_VIDEO_FILE_SIZE=31457280
REACT_APP_TOTAL_NUM_FILE=4 REACT_APP_TOTAL_NUM_FILE=4
REACT_APP_LOGOUT_TEXT="Sign Out" REACT_APP_LOGOUT_TEXT="Sign Out"
+3 -1
View File
@@ -50,7 +50,9 @@ REACT_APP_FACEBOOK_REDIRECT_URL="https://users.wrenchboard.com/login/auth/flogin
DISABLE_ESLINT_PLUGIN=true DISABLE_ESLINT_PLUGIN=true
REACT_APP_MAX_FILE_SIZE=1000000 #File Handling
REACT_APP_MAX_FILE_SIZE=1048576
REACT_APP_MAX_VIDEO_FILE_SIZE=31457280
REACT_APP_TOTAL_NUM_FILE=4 REACT_APP_TOTAL_NUM_FILE=4
REACT_APP_LOGOUT_TEXT="Sign Out" REACT_APP_LOGOUT_TEXT="Sign Out"
+1 -1
View File
@@ -145,7 +145,7 @@ export default function Login() {
localStorage.setItem("member_id", `${res.data.member_id}`); localStorage.setItem("member_id", `${res.data.member_id}`);
localStorage.setItem("uid", `${res.data.uid}`); localStorage.setItem("uid", `${res.data.uid}`);
localStorage.setItem("session_token", `${res.data.session}`); localStorage.setItem("session_token", `${res.data.session}`);
localStorage.setItem("wallet_status", `${res.data.wallet_status}`); localStorage.setItem("wallet_available_status", `${res.data.wallet_available_status}`);
if (res.data?.account_type == "FAMILY") { if (res.data?.account_type == "FAMILY") {
sessionStorage.setItem("family_uid", res.data?.family_uid); sessionStorage.setItem("family_uid", res.data?.family_uid);
sessionStorage.setItem("parent_uid", res.data?.parent_uid); sessionStorage.setItem("parent_uid", res.data?.parent_uid);
+7 -8
View File
@@ -34,7 +34,7 @@ export default function AvailableJobsCard({
<> <>
{contentDisplay == "grid" ? ( {contentDisplay == "grid" ? (
<div <div
className={`card-style-two w-full h-[426px] p-[20px] bg-white dark:bg-dark-white rounded-2xl section-shadow ${ className={`card-style-two w-full p-[10px] bg-white dark:bg-dark-white rounded-2xl section-shadow ${
className || "" className || ""
}`} }`}
> >
@@ -42,7 +42,7 @@ export default function AvailableJobsCard({
onClick={() => { onClick={() => {
setMarketPopUp({ show: true, data: datas }); setMarketPopUp({ show: true, data: datas });
}} }}
className="flex flex-col justify-between w-full h-full" className="flex flex-col gap-2 justify-between w-full h-full"
> >
<div className='w-full flex items-center gap-4'> <div className='w-full flex items-center gap-4'>
<div className='min-w-[60px] min-h-[60px] max-w-[60px] max-h-[60px] rounded-full overflow-hidden'> <div className='min-w-[60px] min-h-[60px] max-w-[60px] max-h-[60px] rounded-full overflow-hidden'>
@@ -64,7 +64,7 @@ export default function AvailableJobsCard({
</p> </p>
</div> </div>
</div> </div>
<div className="w-[1px] bg-light-purple dark:bg-dark-light-purple h-7"></div> <div className="w-[1px] bg-light-purple dark:bg-dark-light-purple h-7"></div>
<div className="created-by flex space-x-2 items-center flex-row-reverse"> <div className="created-by flex space-x-2 items-center flex-row-reverse">
<div> <div>
<p className="text-thin-light-gray text-sm leading-3 text-right"> <p className="text-thin-light-gray text-sm leading-3 text-right">
@@ -80,19 +80,18 @@ export default function AvailableJobsCard({
</div> </div>
<div className="thumbnail-area w-full"> <div className="thumbnail-area w-full">
<div <div
className="w-full h-[236px] p-6 rounded-xl overflow-hidden bg-center bg-cover bg-no-repeat" className="w-full h-[236px] rounded-xl overflow-y-auto bg-center bg-cover bg-no-repeat"
// style={{ // style={{
// backgroundImage: `url('${image}')`, // backgroundImage: `url('${image}')`,
// }} // }}
> >
<div className="flex justify-center bg-slate-100 p-2 rounded-md"> <div className="flex flex-col h-full bg-slate-100 p-2 rounded-md">
{datas.description} <p>{datas.description}</p>
</div> </div>
</div> </div>
</div> </div>
<div className="details-area"> <div className="details-area">
<div className="product-two-options flex justify-between mb-5 relative"></div> {/* <div className="product-two-options flex justify-between mb-5 relative"></div> */}
<div className="flex justify-between"> <div className="flex justify-between">
<div className="flex items-center space-x-2"> <div className="flex items-center space-x-2">
<div> <div>
+1 -1
View File
@@ -20,7 +20,7 @@ export default function MainSection({
); );
const [tab, setTab] = useState(Object.keys(marketCategories)[0]); const [tab, setTab] = useState(Object.keys(marketCategories)[0]);
let [contentDisplay, setContentDisplay] = useState("list"); // STATE TO HOLD LIST VIEW STYLE let [contentDisplay, setContentDisplay] = useState("grid"); // STATE TO HOLD LIST VIEW STYLE
// Convert to array in order to map // Convert to array in order to map
const mappedArray = Object.entries(marketCategories).map(([key, value]) => { const mappedArray = Object.entries(marketCategories).map(([key, value]) => {
@@ -252,7 +252,7 @@ const MarketPopUp = ({ details, onClose, situation, marketInt }) => {
<div className="mx-auto bg-[#f1f8ff] dark:bg-[#C2C8D3] px-4 rounded-md md:min-h-[420px] flex flex-col justify-between"> <div className="mx-auto bg-[#f1f8ff] dark:bg-[#C2C8D3] px-4 rounded-md md:min-h-[420px] flex flex-col justify-between">
<div className="w-full flex flex-col justify-center pb-4 gap-2"> <div className="w-full flex flex-col justify-center pb-4 gap-2">
<p className="job-label w-full"> <p className="job-label w-full">
Interested in the task? Interested?
</p> </p>
<hr /> <hr />
<button <button
@@ -262,9 +262,8 @@ const MarketPopUp = ({ details, onClose, situation, marketInt }) => {
> >
{" "} {" "}
<div className="w-full flex flex-col justify-between gap-2"> <div className="w-full flex flex-col justify-between gap-2">
<span>Send</span> <span>Notify</span>
<span>Interest</span> <span>Owner</span>
<span>Request</span>
</div> </div>
</button> </button>
<> <>
+53 -55
View File
@@ -75,7 +75,19 @@ function ActiveJobs(props) {
// IF NO FILE SELECTED RETURN // IF NO FILE SELECTED RETURN
return; return;
} }
if (files[0].size > Number(process.env.REACT_APP_MAX_FILE_SIZE)) { let fileType = files[0].type.split('/')[0].toLowerCase()
if (fileType == 'video' && files[0].size > Number(process.env.REACT_APP_MAX_VIDEO_FILE_SIZE)) { // return if video file is more than 30mb
setRequestStatus({
loading: false,
status: false,
message: "File must be <= 30mb",
});
setTimeout(() => {
setRequestStatus({ loading: false, status: false, message: "" });
}, 5000);
return;
}
if (files[0].size > Number(process.env.REACT_APP_MAX_FILE_SIZE)) { // return if other files is more than 1mb
setRequestStatus({ setRequestStatus({
loading: false, loading: false,
status: false, status: false,
@@ -100,7 +112,8 @@ function ActiveJobs(props) {
return; return;
} }
// INCLUDE FILE IF NO ERROR // INCLUDE FILE IF NO ERROR
setFilesToSend((prev) => [...prev, files[0]]); // setFilesToSend((prev) => [...prev, files[0]]); //for sending multiple file if need be
setFilesToSend([files[0]])
}; };
// FUNCTION TO CLEAR ALL TYPED MESSAGE OR FILES // FUNCTION TO CLEAR ALL TYPED MESSAGE OR FILES
@@ -189,61 +202,46 @@ function ActiveJobs(props) {
setRequestStatus({ loading: false, status: false, message: "" }); setRequestStatus({ loading: false, status: false, message: "" });
}, 5000); }, 5000);
} }
// const fileToBase64 = async () => {
// // Converts file data to base64 string
// try {
// const base64String = await convertFileToBase64(filesToSend[i]);
// return base64String;
// } catch (error) {
// return false;
// }
// };
for (let i = 0; i <= filesToSend.length - 1; i++) { let reqData = {
// Loops through files to send array and trigger upload API call // file_name: filesToSend[i].name,
// file_size: filesToSend[i].size,
// file_type: "image/png",
// file_data: await fileToBase64(),
msg_type: "FILE",
contract: props.details.contract,
file: filesToSend[0],
};
const fileToBase64 = async () => { ApiCall.sendFilesNew(reqData)
// Converts file data to base64 string .then((res) => {
try { if(res.status != 200 || res.data.internal_return < 0){
const base64String = await convertFileToBase64(filesToSend[i]); setRequestStatus({loading: false, status: false, message: 'File could not be sent, try again later'})
return base64String; return
} catch (error) {
return false;
} }
}; setRequestStatus({loading: false, status: true, message: 'File Uploaded Successfully'})
// props.reloadActiveJobList(prev => !prev) // MAKES ACTIVE JOB MESSAGE LIST TO RELOAD
// if(await !fileToBase64()){ // setFilesToSend([]) // SETS FILES TO SEND TO SEND BACK TO EMPTY ARRAY
// return })
// } .catch((error) => {
setRequestStatus({loading: false, status: false, message: 'Opps! something went wrong'})
let reqData = { })
file_name: filesToSend[i].name, .finally(() => {
file_size: filesToSend[i].size, setFilesToSend([]); // SETS FILES TO SEND TO SEND BACK TO EMPTY ARRAY
file_type: "image/png", props.reloadActiveJobList((prev) => !prev); // MAKES ACTIVE JOB MESSAGE LIST TO RELOAD
file_data: await fileToBase64(), setTimeout(() => {
msg_type: "FILE", setRequestStatus({ loading: false, status: false, message: "" });
contract: props.details.contract, }, 5000);
}; });
ApiCall.sendFiles(reqData)
.then((res) => {
// if(res.status != 200 || res.data.internal_return < 0){
// setRequestStatus({loading: false, status: false, message: 'Files(s) could not be sent, try again later'})
// return
// }
// setRequestStatus({loading: false, status: true, message: 'File(s) Uploaded Successfully'})
// props.reloadActiveJobList(prev => !prev) // MAKES ACTIVE JOB MESSAGE LIST TO RELOAD
// setFilesToSend([]) // SETS FILES TO SEND TO SEND BACK TO EMPTY ARRAY
})
.catch((error) => {
// setRequestStatus({loading: false, status: false, message: 'Opps! something went wrong'})
})
.finally(() => {
if (i == filesToSend.length - 1) {
setRequestStatus({
loading: false,
status: true,
message: "File(s) Uploaded Successfully",
});
setFilesToSend([]); // SETS FILES TO SEND TO SEND BACK TO EMPTY ARRAY
props.reloadActiveJobList((prev) => !prev); // MAKES ACTIVE JOB MESSAGE LIST TO RELOAD
setTimeout(() => {
setRequestStatus({ loading: false, status: false, message: "" });
}, 5000);
}
});
}
}; };
// FUNCTION TO CHECK IF TASK PASS DUE IS REACHED // FUNCTION TO CHECK IF TASK PASS DUE IS REACHED
@@ -445,7 +443,7 @@ function ActiveJobs(props) {
<input <input
type="file" type="file"
id="file" id="file"
accept="image/*" accept="image/*,video/*"
style={{ display: "none" }} style={{ display: "none" }}
onChange={handleFileChange} onChange={handleFileChange}
/> />
+50 -55
View File
@@ -69,7 +69,19 @@ function ActiveJobsMedia(props) {
// IF NO FILE SELECTED RETURN // IF NO FILE SELECTED RETURN
return; return;
} }
if (files[0].size > Number(process.env.REACT_APP_MAX_FILE_SIZE)) { let fileType = files[0].type.split('/')[0].toLowerCase()
if (fileType == 'video' && files[0].size > Number(process.env.REACT_APP_MAX_VIDEO_FILE_SIZE)) { // return if video file is more than 30mb
setRequestStatus({
loading: false,
status: false,
message: "File must be <= 30mb",
});
setTimeout(() => {
setRequestStatus({ loading: false, status: false, message: "" });
}, 5000);
return;
}
if (files[0].size > Number(process.env.REACT_APP_MAX_FILE_SIZE)) { // return if other files is more than 1mb
setRequestStatus({ setRequestStatus({
loading: false, loading: false,
status: false, status: false,
@@ -94,7 +106,8 @@ function ActiveJobsMedia(props) {
return; return;
} }
// INCLUDE FILE IF NO ERROR // INCLUDE FILE IF NO ERROR
setFilesToSend((prev) => [...prev, files[0]]); // setFilesToSend((prev) => [...prev, files[0]]); //for sending multiple file if need be
setFilesToSend([files[0]])
}; };
// FUNCTION TO CLEAR ALL TYPED MESSAGE OR FILES // FUNCTION TO CLEAR ALL TYPED MESSAGE OR FILES
@@ -184,60 +197,42 @@ function ActiveJobsMedia(props) {
}, 5000); }, 5000);
} }
for (let i = 0; i <= filesToSend.length - 1; i++) { // const fileToBase64 = async () => {
// Loops through files to send array and trigger upload API call // // Converts file data to base64 string
// try {
// const base64String = await convertFileToBase64(filesToSend[i]);
// return base64String;
// } catch (error) {
// return false;
// }
// };
const fileToBase64 = async () => { let reqData = {
// Converts file data to base64 string msg_type: "FILE",
try { contract: props.details.contract,
const base64String = await convertFileToBase64(filesToSend[i]); file: filesToSend[0],
return base64String; };
} catch (error) {
return false;
}
};
// if(await !fileToBase64()){ ApiCall.sendFilesNew(reqData)
// return .then((res) => {
// } if(res.status != 200 || res.data.internal_return < 0){
setRequestStatus({loading: false, status: false, message: 'File could not be sent, try again later'})
let reqData = { return
file_name: filesToSend[i].name, }
file_size: filesToSend[i].size, setRequestStatus({loading: false, status: true, message: 'File Uploaded Successfully'})
file_type: "image/png", // props.reloadActiveJobList(prev => !prev) // MAKES ACTIVE JOB MESSAGE LIST TO RELOAD
file_data: await fileToBase64(), // setFilesToSend([]) // SETS FILES TO SEND TO SEND BACK TO EMPTY ARRAY
msg_type: "FILE", })
contract: props.details.contract, .catch((error) => {
}; setRequestStatus({loading: false, status: false, message: 'Opps! something went wrong'})
})
ApiCall.sendFiles(reqData) .finally(() => {
.then((res) => { setFilesToSend([]); // SETS FILES TO SEND TO SEND BACK TO EMPTY ARRAY
// if(res.status != 200 || res.data.internal_return < 0){ props.reloadActiveJobList((prev) => !prev); // MAKES ACTIVE JOB MESSAGE LIST TO RELOAD
// setRequestStatus({loading: false, status: false, message: 'Files(s) could not be sent, try again later'}) setTimeout(() => {
// return setRequestStatus({ loading: false, status: false, message: "" });
// } }, 5000);
// setRequestStatus({loading: false, status: true, message: 'File(s) Uploaded Successfully'}) });
// props.reloadActiveJobList(prev => !prev) // MAKES ACTIVE JOB MESSAGE LIST TO RELOAD
// setFilesToSend([]) // SETS FILES TO SEND TO SEND BACK TO EMPTY ARRAY
})
.catch((error) => {
// setRequestStatus({loading: false, status: false, message: 'Opps! something went wrong'})
})
.finally(() => {
if (i == filesToSend.length - 1) {
setRequestStatus({
loading: false,
status: true,
message: "File(s) Uploaded Successfully",
});
setFilesToSend([]); // SETS FILES TO SEND TO SEND BACK TO EMPTY ARRAY
props.reloadActiveJobList((prev) => !prev); // MAKES ACTIVE JOB MESSAGE LIST TO RELOAD
setTimeout(() => {
setRequestStatus({ loading: false, status: false, message: "" });
}, 5000);
}
});
}
}; };
// FUNCTION TO CHECK IF TASK PASS DUE IS REACHED // FUNCTION TO CHECK IF TASK PASS DUE IS REACHED
@@ -437,7 +432,7 @@ function ActiveJobsMedia(props) {
<input <input
type="file" type="file"
id="file" id="file"
accept="image/*" accept="image/*,video/*"
style={{ display: "none" }} style={{ display: "none" }}
onChange={handleFileChange} onChange={handleFileChange}
/> />
-7
View File
@@ -60,13 +60,6 @@ const WalletRoutes = () => {
getPaymentHistory(); getPaymentHistory();
}, [walletTable]); }, [walletTable]);
console.log(
"Testing all country: ",
allCountries,
"Testing wallet: ",
walletDetails
);
return ( return (
<Layout> <Layout>
<Suspense fallback={<LoadingSpinner size="16" color="sky-blue" />}> <Suspense fallback={<LoadingSpinner size="16" color="sky-blue" />}>
+5 -4
View File
@@ -11,7 +11,7 @@ import { useSelector } from "react-redux";
export default function WalletHeader(props) { export default function WalletHeader(props) {
const {userDetails: { account_type, wallet_status }} = useSelector((state) => state?.userDetails); const {userDetails: { account_type, wallet_available_status }} = useSelector((state) => state?.userDetails);
// debugger; // debugger;
//props.myWalletList.result_list //props.myWalletList.result_list
let { pathname } = useLocation(); let { pathname } = useLocation();
@@ -22,7 +22,7 @@ export default function WalletHeader(props) {
props.setBalanceDropdown.toggle(); props.setBalanceDropdown.toggle();
else navigate("/my-wallet", { replace: true }); else navigate("/my-wallet", { replace: true });
} }
console.log('props.myWalletList', wallet_status) // console.log('props.myWalletList', wallet_available_status)
return ( return (
<> <>
{account_type == 'FULL' ? {account_type == 'FULL' ?
@@ -50,7 +50,8 @@ export default function WalletHeader(props) {
</h3> </h3>
</div> </div>
<div className="content px-7 pb-7"> <div className="content px-7 pb-7">
{(wallet_status == '1' || localStorage.getItem('wallet_status')== '1') ? {/* wallet_available_status == 'WALLET_AVAILABLE' */}
{(wallet_available_status == 'WALLET_AVAILABLE' || localStorage.getItem('wallet_available_status')== 'WALLET_AVAILABLE') ?
<ul> <ul>
{props.myWalletList && {props.myWalletList &&
props.myWalletList?.length > 0 && props.myWalletList?.length > 0 &&
@@ -185,7 +186,7 @@ export default function WalletHeader(props) {
</div> </div>
} }
{(wallet_status == '1' || localStorage.getItem('wallet_status')== '1') && {(wallet_available_status == 'WALLET_AVAILABLE' || localStorage.getItem('wallet_available_status')== 'WALLET_AVAILABLE') &&
<div className="add-money-btn flex justify-center items-center mt-3"> <div className="add-money-btn flex justify-center items-center mt-3">
{/* <button {/* <button
onClick={() => { onClick={() => {
+3 -1
View File
@@ -21,6 +21,8 @@ export default function MobileSidebar({
const marketData = jobLists?.result_list; const marketData = jobLists?.result_list;
let noOfJobs = marketData?.length <= 0 ? "0" : marketData?.length; let noOfJobs = marketData?.length <= 0 ? "0" : marketData?.length;
let walletExist = userDetails?.wallet_available_status == 'WALLET_AVAILABLE' || localStorage.getItem('wallet_available_status')== 'WALLET_AVAILABLE'
return ( return (
<div className="w-full h-full"> <div className="w-full h-full">
{/* logo-area */} {/* logo-area */}
@@ -138,7 +140,7 @@ export default function MobileSidebar({
</div> </div>
)} )}
{(userDetails?.account_type !== "FAMILY" && userDetails?.wallet_status) && ( {(userDetails?.account_type !== "FAMILY" && walletExist) && (
<> <>
{!userDetails?.post_jobs ? ( {!userDetails?.post_jobs ? (
<div <div
+2 -1
View File
@@ -36,6 +36,7 @@ export default function RightSideBar({ myJobList }) {
}; };
const { userDetails } = useSelector((state) => state?.userDetails); const { userDetails } = useSelector((state) => state?.userDetails);
let walletExist = userDetails?.wallet_available_status == 'WALLET_AVAILABLE' || localStorage.getItem('wallet_available_status')== 'WALLET_AVAILABLE'
return ( return (
<> <>
@@ -280,7 +281,7 @@ export default function RightSideBar({ myJobList }) {
</div> </div>
{/*JOB LINKS*/} {/*JOB LINKS*/}
{(userDetails?.account_type !== "FAMILY" && userDetails?.wallet_status) && {(userDetails?.account_type !== "FAMILY" && walletExist) &&
myJobList?.data?.result_list?.length > 0 && ( myJobList?.data?.result_list?.length > 0 && (
<div className="top-platform mt-6 bg-white dark:bg-dark-white rounded-2xl py-8 w-full 2xl:mb-10 2xl:border-none border "> <div className="top-platform mt-6 bg-white dark:bg-dark-white rounded-2xl py-8 w-full 2xl:mb-10 2xl:border-none border ">
{/* heading */} {/* heading */}
+3 -1
View File
@@ -22,6 +22,8 @@ export default function Sidebar({
const marketData = jobLists?.result_list; const marketData = jobLists?.result_list;
let noOfJobs = marketData?.length <= 0 ? "0" : marketData?.length; let noOfJobs = marketData?.length <= 0 ? "0" : marketData?.length;
let walletExist = userDetails?.wallet_available_status == 'WALLET_AVAILABLE' || localStorage.getItem('wallet_available_status')== 'WALLET_AVAILABLE'
useEffect(() => { useEffect(() => {
const title = document.querySelectorAll(".menu-setting-items .heading"); const title = document.querySelectorAll(".menu-setting-items .heading");
if (sidebar) { if (sidebar) {
@@ -157,7 +159,7 @@ export default function Sidebar({
</div> </div>
</div> </div>
)} )}
{(userDetails?.account_type !== "FAMILY" && userDetails?.wallet_status) && ( {(userDetails?.account_type !== "FAMILY" && walletExist) && (
<> <>
{!userDetails?.post_jobs ? ( {!userDetails?.post_jobs ? (
<div <div
+18
View File
@@ -908,6 +908,24 @@ class usersService {
return this.postAuxEnd("/uploads", postData); return this.postAuxEnd("/uploads", postData);
} }
// FUNCTION FOR NEW FILE UPLOAD
sendFilesNew(reqData) {
var postData = {
uid: localStorage.getItem("uid"),
member_id: localStorage.getItem("member_id"),
sessionid: localStorage.getItem("session_token"),
action: apiConst.WRENCHBOARD_CONTRACT_MESSAGE,
...reqData,
};
const formData = new FormData();
for (let data in postData) {
formData.append(data, postData[data]);
}
return this.postAuxEnd("/upload/contract", formData, true);
}
// FUNCTION TO UPLOAD RESOURCE FILES // FUNCTION TO UPLOAD RESOURCE FILES
uploadFile(reqData) { uploadFile(reqData) {
var postData = { var postData = {
+14
View File
@@ -1,5 +1,19 @@
import {useEffect} from 'react'
import WalletRoutes from "../components/MyWallet/Wallet"; import WalletRoutes from "../components/MyWallet/Wallet";
import { useSelector } from "react-redux";
import {useNavigate} from 'react-router-dom'
export default function MyWalletPage() { export default function MyWalletPage() {
const {userDetails: { account_type, wallet_available_status }} = useSelector((state) => state?.userDetails);
const navigate = useNavigate()
useEffect(()=>{
let walletExist = wallet_available_status || localStorage.getItem('wallet_available_status')
console.log(walletExist)
if(account_type == 'FULL' && walletExist != 'WALLET_AVAILABLE'){
navigate('/', {replace: true})
}
},[])
return <WalletRoutes />; return <WalletRoutes />;
} }