Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d4c6c41cbf | |||
| e112c7776b | |||
| 7f69233054 | |||
| 74c6f6526a | |||
| f3c07ff3b0 | |||
| d3c9231227 | |||
| 13bf86f370 | |||
| c62c7ffbba | |||
| 2d565c5572 | |||
| e026122dea | |||
| 87d1bbafef | |||
| 5345ec08e2 | |||
| 3b877aafd0 | |||
| 99464e5e57 | |||
| e651c0ae5f | |||
| fe270b7431 | |||
| 931a67bf36 | |||
| 97b2d08413 | |||
| 376a72bd55 | |||
| d692c63cfd |
@@ -37,6 +37,8 @@ import StartJob from "./components/MyJobs/StartJob";
|
|||||||
import AddJobPage from "./views/AddJobPage";
|
import AddJobPage from "./views/AddJobPage";
|
||||||
import MyPendingJobsPage from "./views/MyPendingJobsPage";
|
import MyPendingJobsPage from "./views/MyPendingJobsPage";
|
||||||
import ManageActiveJobs from "./views/ManageActiveJobs";
|
import ManageActiveJobs from "./views/ManageActiveJobs";
|
||||||
|
import FamilyManagePage from "./views/FamilyManagePage";
|
||||||
|
import MyCouponPage from "./views/MyCouponPage";
|
||||||
|
|
||||||
export default function Routers() {
|
export default function Routers() {
|
||||||
return (
|
return (
|
||||||
@@ -73,6 +75,7 @@ export default function Routers() {
|
|||||||
<Route exact path="/calendar" element={<CalendarPage />} />
|
<Route exact path="/calendar" element={<CalendarPage />} />
|
||||||
<Route exact path="/resources" element={<ResourcePage />} />
|
<Route exact path="/resources" element={<ResourcePage />} />
|
||||||
<Route exact path="/my-wallet/*" element={<MyWalletPage />} />
|
<Route exact path="/my-wallet/*" element={<MyWalletPage />} />
|
||||||
|
<Route exact path="/my-coupon" element={<MyCouponPage />} />
|
||||||
<Route exact path="/notification" element={<Notification />} />
|
<Route exact path="/notification" element={<Notification />} />
|
||||||
<Route exact path="/market-place" element={<MarketPlacePage />} />
|
<Route exact path="/market-place" element={<MarketPlacePage />} />
|
||||||
<Route exact path="/market" element={<MarketPlacePage />} />
|
<Route exact path="/market" element={<MarketPlacePage />} />
|
||||||
@@ -83,6 +86,7 @@ export default function Routers() {
|
|||||||
<Route exact path="/my-active-jobs" element={<MyActiveJobsPage />} />
|
<Route exact path="/my-active-jobs" element={<MyActiveJobsPage />} />
|
||||||
<Route exact path="/my-pending-jobs" element={<MyPendingJobsPage />} />
|
<Route exact path="/my-pending-jobs" element={<MyPendingJobsPage />} />
|
||||||
<Route exact path="/acc-family" element={<FamilyAccPage />} />
|
<Route exact path="/acc-family" element={<FamilyAccPage />} />
|
||||||
|
<Route exact path="/manage-family" element={<FamilyManagePage />} />
|
||||||
<Route exact path="/start-job" element={<StartJob />} />
|
<Route exact path="/start-job" element={<StartJob />} />
|
||||||
<Route exact path="/manage-active-job" element={<ManageActiveJobs />} />
|
<Route exact path="/manage-active-job" element={<ManageActiveJobs />} />
|
||||||
<Route
|
<Route
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ import { updateUserDetails } from "../../../store/UserDetails";
|
|||||||
export default function Login() {
|
export default function Login() {
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
|
|
||||||
|
let [loginCom, setLoginCom] = useState({ user: true, family: false });
|
||||||
|
|
||||||
const [checked, setValue] = useState(false);
|
const [checked, setValue] = useState(false);
|
||||||
const [loginLoading, setLoginLoading] = useState(false);
|
const [loginLoading, setLoginLoading] = useState(false);
|
||||||
|
|
||||||
@@ -28,6 +30,15 @@ export default function Login() {
|
|||||||
setValue(!checked);
|
setValue(!checked);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//FUNCTION TO DETERMINE/CHANGE LOGIN COMPONENT
|
||||||
|
const handleLoginCom = ({ target: { name } }) => {
|
||||||
|
if (name == "user") {
|
||||||
|
setLoginCom({ [name]: true, family: false });
|
||||||
|
} else {
|
||||||
|
setLoginCom({ [name]: false, family: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// email
|
// email
|
||||||
const [email, setMail] = useState("");
|
const [email, setMail] = useState("");
|
||||||
const handleEmail = (e) => {
|
const handleEmail = (e) => {
|
||||||
@@ -41,49 +52,64 @@ export default function Login() {
|
|||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const userApi = new usersService();
|
const userApi = new usersService();
|
||||||
|
|
||||||
const doLogin = async () => {
|
// FUNCTION TO HANDLE USER LOGIN
|
||||||
try {
|
const doLogin = ({ target: { name } }) => {
|
||||||
if (email !== "" && password !== "") {
|
setLoginLoading(true);
|
||||||
var postData = {
|
let postData = {}; // Post Data for API
|
||||||
username: email,
|
if (!email || !password) {
|
||||||
password: password,
|
setLoginLoading(false);
|
||||||
sessionid: "STARTING",
|
setMsgError("Please fill in the fields");
|
||||||
};
|
return;
|
||||||
const loginResult = await userApi.logInUser(postData); // just for a test
|
|
||||||
//debugger;
|
|
||||||
// if (email === "support@mermsemr.com") {
|
|
||||||
if (
|
|
||||||
loginResult.data.status > 0 &&
|
|
||||||
loginResult.data.internal_return == 100 &&
|
|
||||||
loginResult.data.session != ""
|
|
||||||
) {
|
|
||||||
// just for a start
|
|
||||||
localStorage.setItem("member_id", `${loginResult.data.member_id}`);
|
|
||||||
localStorage.setItem("uid", `${loginResult.data.uid}`);
|
|
||||||
localStorage.setItem("session_token", `${loginResult.data.session}`);
|
|
||||||
localStorage.setItem("session", `${loginResult.data.session}`);
|
|
||||||
setLoginLoading(true);
|
|
||||||
// userApi.getUserReminders(); //testing
|
|
||||||
dispatch(updateUserDetails(loginResult.data));
|
|
||||||
setTimeout(() => {
|
|
||||||
navigate("/", { replace: true });
|
|
||||||
setLoginLoading(false);
|
|
||||||
}, 2000);
|
|
||||||
} else {
|
|
||||||
// toast.error("Invalid Credential");
|
|
||||||
setLoginError(true);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
setMsgError("Please fill in the fields");
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
setMsgError("An error occurred");
|
|
||||||
} finally {
|
|
||||||
setTimeout(() => {
|
|
||||||
setLoginError(false);
|
|
||||||
setMsgError(null);
|
|
||||||
}, Number(process.env.REACT_APP_LOGIN_ERROR_TIMEOUT));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (name == "userlogin") {
|
||||||
|
// Post Data Info for normal Login
|
||||||
|
postData = {
|
||||||
|
username: email,
|
||||||
|
password: password,
|
||||||
|
sessionid: "STARTING",
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
postData = {
|
||||||
|
// Post Data Info for family Login
|
||||||
|
username: email,
|
||||||
|
pin: password,
|
||||||
|
sessionid: "20067A92714",
|
||||||
|
login_mode: 1105,
|
||||||
|
action: 11025,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
userApi
|
||||||
|
.logInUser(postData)
|
||||||
|
.then((res) => {
|
||||||
|
if (res.status != 200 || res.data.internal_return < 0) {
|
||||||
|
// setMsgError("Wrong, email/password");
|
||||||
|
setLoginError(true);
|
||||||
|
setLoginLoading(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
localStorage.setItem("member_id", `${res.data.member_id}`);
|
||||||
|
localStorage.setItem("uid", `${res.data.uid}`);
|
||||||
|
localStorage.setItem("session_token", `${res.data.session}`);
|
||||||
|
// localStorage.setItem("session", `${res.data.session}`);
|
||||||
|
dispatch(updateUserDetails(res.data));
|
||||||
|
setTimeout(() => {
|
||||||
|
navigate("/", { replace: true });
|
||||||
|
setLoginLoading(false);
|
||||||
|
}, 2000);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
setMsgError("Unable to login, try again");
|
||||||
|
setLoginLoading(false);
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
setLoginError(false);
|
||||||
|
setMsgError(null);
|
||||||
|
setLoginLoading(false);
|
||||||
|
}, Number(process.env.REACT_APP_LOGIN_ERROR_TIMEOUT));
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -102,9 +128,9 @@ export default function Login() {
|
|||||||
<div className="content-wrapper login shadow-md w-full lg:max-w-[500px] mx-auto flex justify-center items-center xl:bg-white dark:bg-dark-white 2xl:w-[828px] rounded-[0.475rem] sm:p-7 p-5">
|
<div className="content-wrapper login shadow-md w-full lg:max-w-[500px] mx-auto flex justify-center items-center xl:bg-white dark:bg-dark-white 2xl:w-[828px] rounded-[0.475rem] sm:p-7 p-5">
|
||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
<div className="title-area flex flex-col justify-center items-center relative text-center mb-7">
|
<div className="title-area flex flex-col justify-center items-center relative text-center mb-7">
|
||||||
<h1 className="text-[#181c32] font-semibold dark:text-white mb-3 leading-[27.3px] text-[22.75px]">
|
{/* <h1 className="text-[#181c32] font-semibold dark:text-white mb-3 leading-[27.3px] text-[22.75px]">
|
||||||
Sign In to WrenchBoard
|
Sign In to WrenchBoard
|
||||||
</h1>
|
</h1> */}
|
||||||
<span className="text-gray-400 font-medium text-[16.25px] leading-[24.375px]">
|
<span className="text-gray-400 font-medium text-[16.25px] leading-[24.375px]">
|
||||||
New Here?{" "}
|
New Here?{" "}
|
||||||
<Link
|
<Link
|
||||||
@@ -115,80 +141,181 @@ export default function Login() {
|
|||||||
</Link>
|
</Link>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="input-area">
|
|
||||||
<div className="input-item mb-5">
|
|
||||||
<InputCom
|
|
||||||
fieldClass="px-6"
|
|
||||||
value={email}
|
|
||||||
inputHandler={handleEmail}
|
|
||||||
placeholder="support@mermsemr.com"
|
|
||||||
label="Email"
|
|
||||||
name="email"
|
|
||||||
type="email"
|
|
||||||
iconName="message"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="input-item mb-5">
|
{/* switch login component */}
|
||||||
<InputCom
|
<div className="flex justify-start items-end">
|
||||||
fieldClass="px-6"
|
<button
|
||||||
value={password}
|
name="user"
|
||||||
inputHandler={handlePassword}
|
className={`px-2 py-1 w-[100px] text-left h-[40px] text-lg font-bold text-[#4687ba] hover:text-[#009ef7] tracking-wide transition outline-none border-2 border-b-0 border-r-0 border-[#4687ba] ${
|
||||||
placeholder="● ● ● ● ● ●"
|
loginCom.user && "border-r-2 h-[45px]"
|
||||||
label="Password"
|
}`}
|
||||||
name="password"
|
onClick={handleLoginCom}
|
||||||
type="password"
|
>
|
||||||
iconName="password"
|
Sign in
|
||||||
forgotPassword
|
</button>
|
||||||
/>
|
<button
|
||||||
</div>
|
name="family"
|
||||||
{loginError && (
|
className={`px-2 py-1 w-[100px] text-left h-[40px] text-lg font-bold text-[#4687ba] hover:text-[#009ef7] tracking-wide transition outline-none border-2 border-b-0 border-l-0 border-[#4687ba] ${
|
||||||
<div className="relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-thin leading-[19.5px] text-[13px]">
|
loginCom.family && "border-l-2 h-[45px]"
|
||||||
Invalid username or password- Please{" "}
|
}`}
|
||||||
<Link to="/#" className="text-[#009ef7]">
|
onClick={handleLoginCom}
|
||||||
reset your password
|
>
|
||||||
</Link>{" "}
|
Family
|
||||||
or{" "}
|
</button>
|
||||||
<Link to="/signup" className="text-[#009ef7]">
|
</div>
|
||||||
create a new account
|
|
||||||
</Link>
|
{/* END of switch login component */}
|
||||||
|
|
||||||
|
{/* for login component */}
|
||||||
|
{
|
||||||
|
loginCom.user ? (
|
||||||
|
//user login compoenent
|
||||||
|
<div className="p-2 input-area border-2 border-[#4687ba]">
|
||||||
|
<div className="input-item mb-5">
|
||||||
|
<InputCom
|
||||||
|
labelClass="tracking-wider"
|
||||||
|
fieldClass="px-6"
|
||||||
|
value={email}
|
||||||
|
inputHandler={handleEmail}
|
||||||
|
placeholder="support@mermsemr.com"
|
||||||
|
label="Email"
|
||||||
|
name="email"
|
||||||
|
type="email"
|
||||||
|
iconName="message"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="input-item mb-5">
|
||||||
|
<InputCom
|
||||||
|
labelClass="tracking-wider"
|
||||||
|
fieldClass="px-6"
|
||||||
|
value={password}
|
||||||
|
inputHandler={handlePassword}
|
||||||
|
placeholder="● ● ● ● ● ●"
|
||||||
|
label="Password"
|
||||||
|
name="password"
|
||||||
|
type="password"
|
||||||
|
iconName="password"
|
||||||
|
forgotPassword
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
{loginError && (
|
||||||
|
<div className="relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-thin leading-[19.5px] text-[13px]">
|
||||||
|
Invalid username or password- Please{" "}
|
||||||
|
<Link to="/#" className="text-[#009ef7]">
|
||||||
|
reset your password
|
||||||
|
</Link>{" "}
|
||||||
|
or{" "}
|
||||||
|
<Link to="/signup" className="text-[#009ef7]">
|
||||||
|
create a new account
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
{msgError && (
|
||||||
|
<div className="relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]">
|
||||||
|
{msgError}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<div className="signin-area mb-3.5">
|
||||||
|
<div className="flex justify-center">
|
||||||
|
<button
|
||||||
|
name="userlogin"
|
||||||
|
onClick={doLogin}
|
||||||
|
type="button"
|
||||||
|
disabled={loginLoading}
|
||||||
|
className={`btn-login rounded-[0.475rem] mb-6 text-xl text-white flex justify-center bg-[#4687ba] hover:bg-[#009ef7] transition-all duration-300 items-center text-[15px]`}
|
||||||
|
>
|
||||||
|
{loginLoading ? (
|
||||||
|
<div className="signup btn-loader"></div>
|
||||||
|
) : (
|
||||||
|
<span>Continue</span>
|
||||||
|
)}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<BrandBtn link="#" imgSrc={googleLogo} brand="Google" />
|
||||||
|
<BrandBtn
|
||||||
|
link="#"
|
||||||
|
imgSrc={facebookLogo}
|
||||||
|
brand="Facebook"
|
||||||
|
/>
|
||||||
|
<BrandBtn link="#" imgSrc={appleLogo} brand="Apple" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
) : (
|
||||||
{msgError && (
|
// END of user login compoenent
|
||||||
<div className="relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]">
|
// family login compoenent
|
||||||
{msgError}
|
<div className="p-2 input-area border-2 border-[#4687ba]">
|
||||||
|
<div className="input-item mb-5">
|
||||||
|
<InputCom
|
||||||
|
labelClass="tracking-wider"
|
||||||
|
fieldClass="px-6"
|
||||||
|
value={email}
|
||||||
|
inputHandler={handleEmail}
|
||||||
|
placeholder="support@mermsemr.com"
|
||||||
|
label="Username"
|
||||||
|
name="email"
|
||||||
|
type="email"
|
||||||
|
iconName="message"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="input-item mb-5">
|
||||||
|
<InputCom
|
||||||
|
labelClass="tracking-wider"
|
||||||
|
fieldClass="px-6"
|
||||||
|
value={password}
|
||||||
|
inputHandler={handlePassword}
|
||||||
|
placeholder="● ● ● ● ● ●"
|
||||||
|
label="Pin"
|
||||||
|
name="password"
|
||||||
|
type="password"
|
||||||
|
iconName="password"
|
||||||
|
// forgotPassword
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
{loginError && (
|
||||||
|
<div className="relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-thin leading-[19.5px] text-[13px]">
|
||||||
|
Invalid username or password{" "}
|
||||||
|
{/* <Link to="/#" className="text-[#009ef7]">
|
||||||
|
reset your password
|
||||||
|
</Link>{" "}
|
||||||
|
or{" "}
|
||||||
|
<Link to="/signup" className="text-[#009ef7]">
|
||||||
|
create a new account
|
||||||
|
</Link> */}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
{msgError && (
|
||||||
|
<div className="relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] mb-4 rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]">
|
||||||
|
{msgError}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<div className="signin-area mb-1.5">
|
||||||
|
<div className="flex justify-center">
|
||||||
|
<button
|
||||||
|
name="familylogin"
|
||||||
|
onClick={doLogin}
|
||||||
|
disabled={loginLoading}
|
||||||
|
type="button"
|
||||||
|
className={`btn-login rounded-[0.475rem] text-xl text-white flex justify-center bg-[#4687ba] hover:bg-[#009ef7] transition-all duration-300 items-center text-[15px]`}
|
||||||
|
>
|
||||||
|
{loginLoading ? (
|
||||||
|
<div className="signup btn-loader"></div>
|
||||||
|
) : (
|
||||||
|
<span>Continue</span>
|
||||||
|
)}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)
|
||||||
<div className="signin-area mb-3.5">
|
// END of family login compoenent
|
||||||
<div className="flex justify-center">
|
}
|
||||||
<button
|
{/* END of login component */}
|
||||||
onClick={doLogin}
|
|
||||||
type="button"
|
<div className="pt-5 text-[#181c32] text-center font-semibold text-[13.975px] leading-[20.9625px]">
|
||||||
className={`btn-login rounded-[0.475rem] mb-6 text-xl text-white flex justify-center bg-[#4687ba] hover:bg-[#009ef7] transition-all duration-300 items-center text-[15px]`}
|
This site is protected by hCaptcha and the our Privacy Policy
|
||||||
>
|
and Terms of Service apply.
|
||||||
{loginLoading ? (
|
|
||||||
<div className="signup btn-loader"></div>
|
|
||||||
) : (
|
|
||||||
<span>Continue</span>
|
|
||||||
)}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<BrandBtn link="#" imgSrc={googleLogo} brand="Google" />
|
|
||||||
<BrandBtn link="#" imgSrc={facebookLogo} brand="Facebook" />
|
|
||||||
<BrandBtn link="#" imgSrc={appleLogo} brand="Apple" />
|
|
||||||
</div>
|
|
||||||
{/* <div className="signup-area flex justify-center">
|
|
||||||
<p className="sm:text-lg text-sm text-thin-light-gray font-normal">
|
|
||||||
Don't have an account ?
|
|
||||||
<a href="/signup" className="ml-2 text-dark-gray dark:text-white">
|
|
||||||
Sign up free
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
</div> */}
|
|
||||||
<div className="pt-5 text-[#181c32] text-center font-semibold text-[13.975px] leading-[20.9625px]">
|
|
||||||
This site is protected by hCaptcha and the our Privacy Policy
|
|
||||||
and Terms of Service apply.
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -199,10 +326,9 @@ export default function Login() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const BrandBtn = ({ link, imgSrc, brand }) => {
|
const BrandBtn = ({ link, imgSrc, brand }) => {
|
||||||
|
const doGoogle = async () => {
|
||||||
const doGoogle = async ()=>{
|
alert("start google");
|
||||||
alert('start google');
|
};
|
||||||
}
|
|
||||||
|
|
||||||
// onSuccess: (codeResponse) => setUser(codeResponse),
|
// onSuccess: (codeResponse) => setUser(codeResponse),
|
||||||
|
|
||||||
@@ -211,19 +337,19 @@ const BrandBtn = ({ link, imgSrc, brand }) => {
|
|||||||
// onError: (error) => console.log('Login Failed:', error)
|
// onError: (error) => console.log('Login Failed:', error)
|
||||||
// });
|
// });
|
||||||
|
|
||||||
const doApple = async ()=>{
|
const doApple = async () => {
|
||||||
alert('start apple');
|
alert("start apple");
|
||||||
}
|
};
|
||||||
|
|
||||||
const doFacebook = async ()=>{
|
const doFacebook = async () => {
|
||||||
alert('start facebook');
|
alert("start facebook");
|
||||||
}
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex justify-center bottomMargin">
|
<div className="flex justify-center bottomMargin">
|
||||||
<a
|
<a
|
||||||
// onClick={doGoogle}
|
// onClick={doGoogle}
|
||||||
href="#dd"
|
href="#dd"
|
||||||
className="w-full border border-light-purple dark:border-[#5356fb29] rounded-[0.475rem] h-[48px] flex justify-center bg-[#FAFAFA] hover:bg-[#eff2f5] hover:text-[#7e8299] transition duration-300 dark:bg-[#11131F] items-center font-medium cursor-pointer"
|
className="w-full border border-light-purple dark:border-[#5356fb29] rounded-[0.475rem] h-[48px] flex justify-center bg-[#FAFAFA] hover:bg-[#eff2f5] hover:text-[#7e8299] transition duration-300 dark:bg-[#11131F] items-center font-medium cursor-pointer"
|
||||||
>
|
>
|
||||||
<img className="mr-3 h-6" src={imgSrc} alt="logo-icon(s)" />
|
<img className="mr-3 h-6" src={imgSrc} alt="logo-icon(s)" />
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { Link } from "react-router-dom";
|
|||||||
import localImgLoad from "../../lib/localImgLoad";
|
import localImgLoad from "../../lib/localImgLoad";
|
||||||
|
|
||||||
export default function HomeBannerOffersCard(props) {
|
export default function HomeBannerOffersCard(props) {
|
||||||
|
console.log("HomeBannerOffersCard->",props.itemData)
|
||||||
return (
|
return (
|
||||||
<Link
|
<Link
|
||||||
to="/my-collection/collection-item"
|
to="/my-collection/collection-item"
|
||||||
@@ -12,13 +13,13 @@ export default function HomeBannerOffersCard(props) {
|
|||||||
<div className="content flex justify-between items-center mb-5">
|
<div className="content flex justify-between items-center mb-5">
|
||||||
<div>
|
<div>
|
||||||
<h1 className="text-xl font-bold text-dark-gray dark:text-white tracking-wide">
|
<h1 className="text-xl font-bold text-dark-gray dark:text-white tracking-wide">
|
||||||
<>Ab hshsh jsjsj hshdhhdjjd</>
|
<>{props.itemData.title}</>
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
{/*<SelectBox datas={filterDatas} action={dataSetHandler} />*/}
|
{/*<SelectBox datas={filterDatas} action={dataSetHandler} />*/}
|
||||||
</div>
|
</div>
|
||||||
<div className="h-[233px]">
|
<div className="h-[233px]">
|
||||||
BEST IMAGE IN THE WORLLD
|
{props.itemData.description}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
|
|||||||
@@ -0,0 +1,102 @@
|
|||||||
|
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
||||||
|
import InputCom from "../Helpers/Inputs/InputCom";
|
||||||
|
import Layout from "../Partials/Layout";
|
||||||
|
import FamilyTable from "./FamilyTable";
|
||||||
|
import SiteService from "../../services/SiteService";
|
||||||
|
import ModalCom from "../Helpers/ModalCom";
|
||||||
|
import FamilyManageTabs from "./FamilyManageTabs";
|
||||||
|
import { useLocation } from "react-router-dom";
|
||||||
|
|
||||||
|
export default function FamilyManage() {
|
||||||
|
const [selectTab, setValue] = useState("today");
|
||||||
|
const [selectedAge, setSelectedAge] = useState(undefined);
|
||||||
|
const [familyList, setFamilyList] = useState([]);
|
||||||
|
const [loader, setLoader] = useState(false);
|
||||||
|
const [popUp, setPopUp] = useState(false);
|
||||||
|
const [listReload, setListReload] = useState(false);
|
||||||
|
const [msgErr, setMsgErr] = useState("");
|
||||||
|
const [formData, setFormData] = useState({
|
||||||
|
first_name: "",
|
||||||
|
last_name: "",
|
||||||
|
});
|
||||||
|
|
||||||
|
let location = useLocation();
|
||||||
|
let accountDetails = location?.state
|
||||||
|
|
||||||
|
const apiCall = useMemo(() => new SiteService(), []);
|
||||||
|
|
||||||
|
// This is to make sure it's called once and used everywhere
|
||||||
|
let memberId = localStorage.getItem("member_id");
|
||||||
|
let uid = localStorage.getItem("uid");
|
||||||
|
let sessionId = localStorage.getItem("session_token");
|
||||||
|
|
||||||
|
const popUpHandler = () => {
|
||||||
|
setPopUp((prev) => !prev);
|
||||||
|
};
|
||||||
|
|
||||||
|
// tab handler
|
||||||
|
const filterHandler = (value) => {
|
||||||
|
setValue(value);
|
||||||
|
};
|
||||||
|
|
||||||
|
// member listing
|
||||||
|
const memberList = useCallback(async () => {
|
||||||
|
setLoader(true);
|
||||||
|
try {
|
||||||
|
let reqData = {
|
||||||
|
member_id: memberId,
|
||||||
|
uid: uid,
|
||||||
|
session_id: sessionId,
|
||||||
|
limit: 20,
|
||||||
|
offset: 0,
|
||||||
|
action: 22010,
|
||||||
|
};
|
||||||
|
|
||||||
|
let res = await apiCall.familyListings(reqData);
|
||||||
|
const { data } = res;
|
||||||
|
if (data?.internal_return >= 0 && data?.status == "OK") {
|
||||||
|
let { result_list } = data;
|
||||||
|
setFamilyList(result_list);
|
||||||
|
setLoader(false);
|
||||||
|
} else return;
|
||||||
|
} catch (error) {
|
||||||
|
setLoader(false);
|
||||||
|
throw new Error(error);
|
||||||
|
}
|
||||||
|
}, [apiCall, memberId, sessionId, uid]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
memberList();
|
||||||
|
}, [listReload, memberList]);
|
||||||
|
|
||||||
|
console.log('Ebueb', familyList)
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Layout>
|
||||||
|
{/*<CommonHead />*/}
|
||||||
|
<div className="notification-page w-full mb-10">
|
||||||
|
<div className="notification-wrapper w-full">
|
||||||
|
{/* heading */}
|
||||||
|
<div className="sm:flex justify-between items-center mb-6">
|
||||||
|
<div className="mb-5 sm:mb-0">
|
||||||
|
<h1 className="text-26 font-bold inline-flex gap-3 text-dark-gray dark:text-white items-center">
|
||||||
|
<span
|
||||||
|
className={`${selectTab === "today" ? "block" : "hidden"}`}
|
||||||
|
>
|
||||||
|
Manage Family
|
||||||
|
</span>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div className="slider-btns flex space-x-4">
|
||||||
|
<div
|
||||||
|
onClick={() => filterHandler("today")}
|
||||||
|
className="relative"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<FamilyManageTabs accountDetails={accountDetails} loader={loader} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Layout>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,235 @@
|
|||||||
|
import React, {
|
||||||
|
useCallback,
|
||||||
|
useEffect,
|
||||||
|
useMemo,
|
||||||
|
useRef,
|
||||||
|
useState,
|
||||||
|
} from "react";
|
||||||
|
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
||||||
|
import cover from "../../assets/images/profile-info-cover.png";
|
||||||
|
import profile from "../../assets/images/profile-info-profile.png";
|
||||||
|
import usersService from "../../services/UsersService";
|
||||||
|
|
||||||
|
export default function FamilyManageTabs({
|
||||||
|
className,
|
||||||
|
accountDetails,
|
||||||
|
loader,
|
||||||
|
}) {
|
||||||
|
const [familyDetails, setFamilyDetails] = useState(null);
|
||||||
|
const [errMsg, setErrMsg] = useState("");
|
||||||
|
// List of tabs
|
||||||
|
const tabs = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: "Tasks",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: "Account",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
name: "Profile",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const [tab, setTab] = useState(tabs[0].name);
|
||||||
|
const [manageLoader, setManageLoader] = useState(false);
|
||||||
|
const tabHandler = (value) => {
|
||||||
|
setTab(value);
|
||||||
|
};
|
||||||
|
// For profile uploads
|
||||||
|
const [profileImg, setProfileImg] = useState(profile);
|
||||||
|
// profile img
|
||||||
|
const profileImgInput = useRef(null);
|
||||||
|
const browseProfileImg = () => {
|
||||||
|
profileImgInput.current.click();
|
||||||
|
};
|
||||||
|
const profileImgChangHandler = (e) => {
|
||||||
|
if (e.target.value !== "") {
|
||||||
|
const imgReader = new FileReader();
|
||||||
|
imgReader.onload = (event) => {
|
||||||
|
setProfileImg(event.target.result);
|
||||||
|
};
|
||||||
|
imgReader.readAsDataURL(e.target.files[0]);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// Api call
|
||||||
|
const apiCall = useMemo(() => new usersService(), []);
|
||||||
|
// function for manage family
|
||||||
|
const familyManageHandler = useCallback(async () => {
|
||||||
|
setManageLoader(true);
|
||||||
|
try {
|
||||||
|
let { family_uid } = accountDetails;
|
||||||
|
let reqData = { family_uid };
|
||||||
|
let res = await apiCall.ManageFamily(reqData);
|
||||||
|
let { data } = await res;
|
||||||
|
if (data?.internal_return < 0) return;
|
||||||
|
setFamilyDetails(data);
|
||||||
|
setManageLoader(false);
|
||||||
|
} catch (error) {
|
||||||
|
setErrMsg("An error occurred");
|
||||||
|
throw new Error(error);
|
||||||
|
}
|
||||||
|
}, [apiCall, accountDetails]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
familyManageHandler();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
console.log(familyDetails);
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={`update-table w-full bg-white dark:bg-dark-white overflow-y-auto rounded-2xl section-shadow min-h-[520px] max-h-[600px] ${
|
||||||
|
className || ""
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
<div className="relative w-full overflow-x-auto sm:rounded-lg">
|
||||||
|
{loader ? (
|
||||||
|
<div className="h-full min-h-[500px] w-full overflow-hidden flex justify-center items-center">
|
||||||
|
<LoadingSpinner size="16" color="sky-blue" />
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<div className="w-full h-full text-sm text-left text-gray-500 dark:text-gray-400 relative grid grid-cols-4 min-h-[520px]">
|
||||||
|
<div className="border-r border-[#E3E4FE] dark:border-[#a7a9b533] p-6 h-full">
|
||||||
|
<ProfileInfo
|
||||||
|
profileImg={profileImg}
|
||||||
|
profileImgInput={profileImgInput}
|
||||||
|
profileImgChangHandler={profileImgChangHandler}
|
||||||
|
browseProfileImg={browseProfileImg}
|
||||||
|
accountDetails={accountDetails}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="col-span-3 p-6 h-full w-full">
|
||||||
|
<div className="flex flex-col w-full">
|
||||||
|
<ul className="flex-[0.1] flex gap-2 items-center border-b border-b-[#FAFAF] w-full">
|
||||||
|
{tabs.map(({ name, id }) => (
|
||||||
|
<li
|
||||||
|
onClick={() => tabHandler(name)}
|
||||||
|
className={`p-4 flex hover:text-purple transition-all ease-in-out items-center cursor-pointer overflow-hidden text-xl ${
|
||||||
|
tab === name
|
||||||
|
? "text-purple border-r"
|
||||||
|
: " text-thin-light-gray"
|
||||||
|
}`}
|
||||||
|
key={id}
|
||||||
|
>
|
||||||
|
<h1>{name}</h1>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
<div className="flex-[0.9] lg:min-h-[450px] h-full">
|
||||||
|
{/* Your content here */}
|
||||||
|
{tabs.map(({ name, id }) => {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={`${
|
||||||
|
tab === name ? "block" : "hidden"
|
||||||
|
} h-full p-4 border border-[#dbd9d9]`}
|
||||||
|
key={id}
|
||||||
|
>
|
||||||
|
{manageLoader ? (
|
||||||
|
<LoadingSpinner size="8" color="sky-blue" />
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
{name === "Tasks" && <Tasks />}
|
||||||
|
{name === "Account" && (
|
||||||
|
<Account familyDetails={familyDetails} />
|
||||||
|
)}
|
||||||
|
{name === "Profile" && <Profile />}
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ProfileInfo({
|
||||||
|
profileImg,
|
||||||
|
profileImgInput,
|
||||||
|
profileImgChangHandler,
|
||||||
|
browseProfileImg,
|
||||||
|
accountDetails,
|
||||||
|
}) {
|
||||||
|
let { firstname, lastname, age } = accountDetails;
|
||||||
|
return (
|
||||||
|
<div className="flex flex-col items-center gap-6">
|
||||||
|
<div className="flex justify-center">
|
||||||
|
<div className="w-full relative">
|
||||||
|
<img
|
||||||
|
src={profileImg}
|
||||||
|
alt=""
|
||||||
|
className="sm:w-[198px] sm:h-[198px] w-[120px] h-[120px] rounded-full overflow-hidden object-cover"
|
||||||
|
/>
|
||||||
|
<input
|
||||||
|
ref={profileImgInput}
|
||||||
|
onChange={(e) => profileImgChangHandler(e)}
|
||||||
|
type="file"
|
||||||
|
className="hidden"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
onClick={browseProfileImg}
|
||||||
|
className="w-[32px] h-[32px] absolute bottom-7 sm:right-2 right-[105px] hover:bg-pink bg-dark-gray rounded-full cursor-pointer"
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
width="32"
|
||||||
|
height="32"
|
||||||
|
viewBox="0 0 32 32"
|
||||||
|
fill="none"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M16.5147 11.5C17.7284 12.7137 18.9234 13.9087 20.1296 15.115C19.9798 15.2611 19.8187 15.4109 19.6651 15.5683C17.4699 17.7635 15.271 19.9587 13.0758 22.1539C12.9334 22.2962 12.7948 22.4386 12.6524 22.5735C12.6187 22.6034 12.5663 22.6296 12.5213 22.6296C11.3788 22.6334 10.2362 22.6297 9.09365 22.6334C9.01498 22.6334 9 22.6034 9 22.536C9 21.4009 9 20.2621 9.00375 19.1271C9.00375 19.0746 9.02997 19.0109 9.06368 18.9772C10.4123 17.6249 11.7609 16.2763 13.1095 14.9277C14.2295 13.8076 15.3459 12.6913 16.466 11.5712C16.4884 11.5487 16.4997 11.5187 16.5147 11.5Z"
|
||||||
|
fill="white"
|
||||||
|
/>
|
||||||
|
<path
|
||||||
|
d="M20.9499 14.2904C19.7436 13.0842 18.5449 11.8854 17.3499 10.6904C17.5634 10.4694 17.7844 10.2446 18.0054 10.0199C18.2639 9.76139 18.5261 9.50291 18.7884 9.24443C19.118 8.91852 19.5713 8.91852 19.8972 9.24443C20.7251 10.0611 21.5492 10.8815 22.3771 11.6981C22.6993 12.0165 22.7105 12.4698 22.3996 12.792C21.9238 13.2865 21.4443 13.7772 20.9686 14.2717C20.9648 14.2792 20.9536 14.2867 20.9499 14.2904Z"
|
||||||
|
fill="white"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col justify-center gap-3 items-center">
|
||||||
|
<h1 className="font-bold text-xl tracking-wide line-clamp-1 text-dark-gray dark:text-white capitalize">
|
||||||
|
{firstname}
|
||||||
|
</h1>
|
||||||
|
<h1 className="font-bold text-xl tracking-wide line-clamp-1 text-dark-gray dark:text-white capitalize">
|
||||||
|
{lastname}
|
||||||
|
</h1>
|
||||||
|
<h1 className="font-bold text-xl tracking-wide line-clamp-1 text-dark-gray dark:text-white capitalize">
|
||||||
|
{age}
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function Tasks() {
|
||||||
|
return <>Tasks</>;
|
||||||
|
}
|
||||||
|
|
||||||
|
function Account({ familyDetails }) {
|
||||||
|
return (
|
||||||
|
<div className="w-full lg:min-h-[400px] h-full flex items-center justify-center">
|
||||||
|
<div className="flex flex-col">
|
||||||
|
<h2 className="font-bold text-lg tracking-wide line-clamp-1 text-dark-gray dark:text-white capitalize">
|
||||||
|
Username: <span className="ml-2 normal-case">{familyDetails?.username}</span>
|
||||||
|
</h2>
|
||||||
|
<h2 className="font-bold text-lg tracking-wide line-clamp-1 text-dark-gray dark:text-white capitalize">
|
||||||
|
Pin: <span className="ml-2 normal-case">{familyDetails?.pin}</span>
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function Profile() {
|
||||||
|
return <>Profile</>;
|
||||||
|
}
|
||||||
@@ -1,10 +1,13 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import dataImage1 from "../../assets/images/data-table-user-1.png";
|
import dataImage1 from "../../assets/images/data-table-user-1.png";
|
||||||
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
||||||
|
import { useNavigate, useLocation, Link } from "react-router-dom";
|
||||||
|
|
||||||
export default function FamilyTable({ className, familyList, loader }) {
|
export default function FamilyTable({ className, familyList, loader }) {
|
||||||
const filterCategories = ["All Categories", "Explore", "Featured"];
|
const filterCategories = ["All Categories", "Explore", "Featured"];
|
||||||
const [selectedCategory, setCategory] = useState(filterCategories[0]);
|
const [selectedCategory, setCategory] = useState(filterCategories[0]);
|
||||||
|
const navigate = useNavigate();
|
||||||
|
// let location = useLocation();
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={`update-table w-full p-8 bg-white dark:bg-dark-white overflow-y-auto rounded-2xl section-shadow min-h-[520px] max-h-[600px] ${
|
className={`update-table w-full p-8 bg-white dark:bg-dark-white overflow-y-auto rounded-2xl section-shadow min-h-[520px] max-h-[600px] ${
|
||||||
@@ -24,71 +27,81 @@ export default function FamilyTable({ className, familyList, loader }) {
|
|||||||
<th className="py-4">Name</th>
|
<th className="py-4">Name</th>
|
||||||
<th className="py-4 text-center">Last Login</th>
|
<th className="py-4 text-center">Last Login</th>
|
||||||
<th className="py-4 text-center">No of Tasks</th>
|
<th className="py-4 text-center">No of Tasks</th>
|
||||||
<th className="py-4 text-right">Status</th>
|
<th className="py-4 text-right"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody className="overflow-y-scroll h-auto">
|
<tbody className="overflow-y-scroll h-auto">
|
||||||
<>
|
<>
|
||||||
{familyList?.length > 0 ? (
|
{familyList?.length > 0 ? (
|
||||||
familyList?.map(
|
familyList?.map((props, idx) => {
|
||||||
(
|
let {
|
||||||
{ firstname, lastname, age, added, last_login },
|
firstname,
|
||||||
idx
|
lastname,
|
||||||
) => {
|
age,
|
||||||
let addedDate = added?.split(" ")[0];
|
added,
|
||||||
return (
|
last_login,
|
||||||
<tr
|
task_count,
|
||||||
className="bg-white dark:bg-dark-white border-b dark:border-[#5356fb29] hover:bg-gray-50"
|
family_uid,
|
||||||
key={idx}
|
} = props;
|
||||||
>
|
let addedDate = added?.split(" ")[0];
|
||||||
<td className=" py-4">
|
let LoginDate = last_login?.split(" ")[0];
|
||||||
<div className="flex space-x-2 items-center w-full">
|
return (
|
||||||
<div className="w-full h-[60px] rounded-full overflow-hidden flex justify-center items-center flex-[0.1] max-w-[60px]">
|
<tr
|
||||||
<img
|
className="bg-white dark:bg-dark-white border-b dark:border-[#5356fb29] hover:bg-gray-50"
|
||||||
src={dataImage1}
|
key={family_uid}
|
||||||
alt="data"
|
>
|
||||||
className="w-full h-full"
|
<td className=" py-4">
|
||||||
/>
|
<div className="flex space-x-2 items-center w-full">
|
||||||
</div>
|
<div className="w-full h-[60px] rounded-full overflow-hidden flex justify-center items-center flex-[0.1] max-w-[60px]">
|
||||||
<div className="flex flex-col flex-[0.9]">
|
<img
|
||||||
<h1 className="font-bold text-xl text-dark-gray dark:text-white whitespace-nowrap">
|
src={dataImage1}
|
||||||
{`${firstname} ${lastname} (${age})`}
|
alt="data"
|
||||||
</h1>
|
className="w-full h-full"
|
||||||
<span className="text-sm text-thin-light-gray">
|
/>
|
||||||
Added:{" "}
|
</div>
|
||||||
<span className="text-purple ml-1">
|
<div className="flex flex-col flex-[0.9]">
|
||||||
{addedDate}
|
<h1 className="font-bold text-xl text-dark-gray dark:text-white whitespace-nowrap">
|
||||||
</span>
|
{`${firstname} ${lastname} (${age})`}
|
||||||
|
</h1>
|
||||||
|
<span className="text-sm text-thin-light-gray">
|
||||||
|
Added:{" "}
|
||||||
|
<span className="text-purple ml-1">
|
||||||
|
{addedDate}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<td className="text-center py-4 px-2">
|
|
||||||
<div className="flex space-x-1 items-center justify-center">
|
|
||||||
<span className="text-base text-dark-gray dark:text-white font-medium whitespace-nowrap">
|
|
||||||
{last_login}
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</div>
|
||||||
<td className="text-center py-4 px-2">
|
</td>
|
||||||
<div className="flex space-x-1 items-center justify-center">
|
<td className="text-center py-4 px-2">
|
||||||
<span className="text-base text-dark-gray dark:text-white font-medium whitespace-nowrap">
|
<div className="flex space-x-1 items-center justify-center">
|
||||||
100
|
<span className="text-base text-dark-gray dark:text-white font-medium whitespace-nowrap">
|
||||||
</span>
|
{LoginDate}
|
||||||
</div>
|
</span>
|
||||||
</td>
|
</div>
|
||||||
<td className="text-right py-4 px-2 flex items-center justify-center">
|
</td>
|
||||||
<button
|
<td className="text-center py-4 px-2">
|
||||||
type="button"
|
<div className="flex space-x-1 items-center justify-center">
|
||||||
className="w-20 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white"
|
<span className="text-base text-dark-gray dark:text-white font-medium whitespace-nowrap">
|
||||||
>
|
{task_count}
|
||||||
Manage
|
</span>
|
||||||
</button>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
<td className="text-right py-4 px-2 flex items-center justify-center">
|
||||||
);
|
<button
|
||||||
}
|
onClick={() => {
|
||||||
)
|
navigate("/manage-family", {
|
||||||
|
state: { ...props },
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
type="button"
|
||||||
|
className="w-20 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white"
|
||||||
|
>
|
||||||
|
Manage
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
);
|
||||||
|
})
|
||||||
) : (
|
) : (
|
||||||
<tr className="font-bold text-xl text-dark-gray dark:text-white whitespace-nowrap">
|
<tr className="font-bold text-xl text-dark-gray dark:text-white whitespace-nowrap">
|
||||||
<td className="p-2" colSpan="4">
|
<td className="p-2" colSpan="4">
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import SliderCom from "../Helpers/SliderCom";
|
|||||||
import HomeSliders from "./HomeSliders";
|
import HomeSliders from "./HomeSliders";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
|
|
||||||
export default function Hero({ className }) {
|
export default function Hero({ className,bannerList }) {
|
||||||
const settings = {
|
const settings = {
|
||||||
autoplay: true,
|
autoplay: true,
|
||||||
dots: true,
|
dots: true,
|
||||||
@@ -105,7 +105,11 @@ export default function Hero({ className }) {
|
|||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<HomeSliders settings={settings} sideData={sildeData}/>
|
<HomeSliders
|
||||||
|
settings={settings}
|
||||||
|
sideData={sildeData}
|
||||||
|
bannerList={bannerList}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,24 +6,29 @@ import HomeBannerOffersCard from "../Cards/HomeBannerOffersCard";
|
|||||||
|
|
||||||
|
|
||||||
export default function HomeSliders(props) {
|
export default function HomeSliders(props) {
|
||||||
|
console.log("BANNER LIST IN HomeSliders->",props.bannerList);
|
||||||
// debugger;
|
// debugger;
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="hero-slider relative 2xl:w-[600px] xl:w-[500px] lg:w-[420px] w-full mb-2 lg:mb-0 ">
|
<div className="hero-slider relative 2xl:w-[600px] xl:w-[500px] lg:w-[420px] w-full mb-2 lg:mb-0 ">
|
||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
<SliderCom settings={props.settings}>
|
<SliderCom settings={props.settings}>
|
||||||
<div className="item w-full h-full bg-white dark:bg-dark-white rounded-2xl overflow-hidden">
|
{/*<div className="item w-full h-full bg-white dark:bg-dark-white rounded-2xl overflow-hidden">*/}
|
||||||
<img src={slider1} alt="slider" className="w-full h-full" />
|
{/* <img src={slider1} alt="slider" className="w-full h-full" />*/}
|
||||||
</div>
|
{/*</div>*/}
|
||||||
<div className="item w-full h-full bg-white dark:bg-dark-white rounded-2xl overflow-hidden">
|
<div className="item w-full h-full bg-white dark:bg-dark-white rounded-2xl overflow-hidden">
|
||||||
<img src={slider2} alt="slider" className="w-full h-full" />
|
<img src={slider2} alt="slider" className="w-full h-full" />
|
||||||
</div>
|
</div>
|
||||||
<div className="item w-full h-full bg-white dark:bg-dark-white rounded-2xl overflow-hidden">
|
<div className="item w-full h-full bg-white dark:bg-dark-white rounded-2xl overflow-hidden">
|
||||||
<img src={slider3} alt="slider" className="w-full h-full" />
|
<img src={slider3} alt="slider" className="w-full h-full" />
|
||||||
</div>
|
</div>
|
||||||
<div className="item w-full h-full bg-white dark:bg-dark-white rounded-2xl overflow-hidden">
|
{props.bannerList.map((item, index) => (
|
||||||
<HomeBannerOffersCard />
|
<div className="item w-full h-full bg-white dark:bg-dark-white rounded-2xl overflow-hidden">
|
||||||
</div>
|
<HomeBannerOffersCard
|
||||||
|
itemData={item}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
</SliderCom>
|
</SliderCom>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -13,7 +13,10 @@ import usersService from "../../services/UsersService";
|
|||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
|
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home(props) {
|
||||||
|
|
||||||
|
console.log("PROPS IN HOME->",props);
|
||||||
|
|
||||||
const trending = datas.datas;
|
const trending = datas.datas;
|
||||||
const jobData = datas.datas; // api calls or cache
|
const jobData = datas.datas; // api calls or cache
|
||||||
//getHomeDate
|
//getHomeDate
|
||||||
@@ -25,16 +28,34 @@ export default function Home() {
|
|||||||
return (
|
return (
|
||||||
<Layout>
|
<Layout>
|
||||||
<div className="home-page-wrapper">
|
<div className="home-page-wrapper">
|
||||||
<Hero className="mb-10" data={userDetails} />
|
<Hero className="mb-10"
|
||||||
{/* <CreateNft />
|
data={userDetails}
|
||||||
<TrendingSection trending={trending} className="mb-10" />*/}
|
bannerList={props.bannerList}
|
||||||
|
/>
|
||||||
<HomeTaskDisplay
|
<HomeTaskDisplay
|
||||||
jobData={jobData}
|
jobData={jobData}
|
||||||
className="mb-10"/>
|
className="mb-10"
|
||||||
{/* <SellHistoryMarketVisitorAnalytic className="mb-10"/>
|
bannerList={props.bannerList}
|
||||||
<TopSellerTopBuyerSliderSection className="mb-10" />
|
/>
|
||||||
<UpdateTable className="mb-10"/>*/}
|
|
||||||
</div>
|
</div>
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
// /*
|
||||||
|
// <Layout>
|
||||||
|
// <div className="home-page-wrapper">
|
||||||
|
// <Hero className="mb-10" data={userDetails} />
|
||||||
|
// {/* <CreateNft />
|
||||||
|
// <TrendingSection trending={trending} className="mb-10" />*/}
|
||||||
|
// <HomeTaskDisplay
|
||||||
|
// jobData={jobData}
|
||||||
|
// className="mb-10"
|
||||||
|
// bannerList={props.bannerList}
|
||||||
|
// />
|
||||||
|
{/* <SellHistoryMarketVisitorAnalytic className="mb-10"/>
|
||||||
|
<TopSellerTopBuyerSliderSection className="mb-10" />
|
||||||
|
<UpdateTable className="mb-10"/>*/}
|
||||||
|
// </div>
|
||||||
|
// </Layout>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import MainSection from "./MainSection";
|
|||||||
import CommonHead from "../UserHeader/CommonHead";
|
import CommonHead from "../UserHeader/CommonHead";
|
||||||
import { useSelector } from "react-redux";
|
import { useSelector } from "react-redux";
|
||||||
|
|
||||||
export default function MarketPlace() {
|
export default function MarketPlace({commonHeadData}) {
|
||||||
let { jobLists } = useSelector((state) => state.jobLists);
|
let { jobLists } = useSelector((state) => state.jobLists);
|
||||||
const marketData = jobLists?.result_list;
|
const marketData = jobLists?.result_list;
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ export default function MarketPlace() {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Layout>
|
<Layout>
|
||||||
<CommonHead />
|
<CommonHead commonHeadData={commonHeadData} />
|
||||||
<MainSection marketPlaceProduct={marketData} className="mb-10" />
|
<MainSection marketPlaceProduct={marketData} className="mb-10" />
|
||||||
</Layout>
|
</Layout>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ export default function MyActiveJobs(props) {
|
|||||||
console.log("AMEYE LOC1", props.MyJobList);
|
console.log("AMEYE LOC1", props.MyJobList);
|
||||||
return (
|
return (
|
||||||
<Layout>
|
<Layout>
|
||||||
<CommonHead />
|
<CommonHead
|
||||||
|
commonHeadData={props.commonHeadData}
|
||||||
|
/>
|
||||||
<div className="notification-page w-full mb-10">
|
<div className="notification-page w-full mb-10">
|
||||||
<div className="notification-wrapper w-full">
|
<div className="notification-wrapper w-full">
|
||||||
{/* heading */}
|
{/* heading */}
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ export default function MyJobs(props) {
|
|||||||
console.log("AMEYE LOC1", props.MyJobList);
|
console.log("AMEYE LOC1", props.MyJobList);
|
||||||
return (
|
return (
|
||||||
<Layout>
|
<Layout>
|
||||||
<CommonHead />
|
<CommonHead
|
||||||
|
commonHeadData={props.commonHeadData}
|
||||||
|
/>
|
||||||
<div className="notification-page w-full mb-10">
|
<div className="notification-page w-full mb-10">
|
||||||
<div className="notification-wrapper w-full">
|
<div className="notification-wrapper w-full">
|
||||||
{/* heading */}
|
{/* heading */}
|
||||||
@@ -40,7 +42,10 @@ export default function MyJobs(props) {
|
|||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<MyJobTable MyJobList={props.MyJobList} reloadJobList={props.reloadJobList} />
|
<MyJobTable
|
||||||
|
MyJobList={props.MyJobList}
|
||||||
|
reloadJobList={props.reloadJobList}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Layout>
|
</Layout>
|
||||||
|
|||||||
@@ -5,37 +5,39 @@ import CommonHead from "../UserHeader/CommonHead";
|
|||||||
import MyPendingJobTable from "./MyPendingJobTable";
|
import MyPendingJobTable from "./MyPendingJobTable";
|
||||||
|
|
||||||
export default function MyPendingJobs(props) {
|
export default function MyPendingJobs(props) {
|
||||||
const [selectTab, setValue] = useState("today");
|
const [selectTab, setValue] = useState("today");
|
||||||
const filterHandler = (value) => {
|
const filterHandler = (value) => {
|
||||||
setValue(value);
|
setValue(value);
|
||||||
};
|
};
|
||||||
console.log("AMEYE LOC1", props.MyJobList);
|
console.log("AMEYE LOC1", props.MyJobList);
|
||||||
return (
|
return (
|
||||||
<Layout>
|
<Layout>
|
||||||
<CommonHead />
|
<CommonHead
|
||||||
<div className="notification-page w-full mb-10">
|
commonHeadData={props.commonHeadData}
|
||||||
<div className="notification-wrapper w-full">
|
/>
|
||||||
{/* heading */}
|
<div className="notification-page w-full mb-10">
|
||||||
<div className="sm:flex justify-between items-center mb-6">
|
<div className="notification-wrapper w-full">
|
||||||
<div className="mb-5 sm:mb-0">
|
{/* heading */}
|
||||||
<h1 className="text-26 font-bold text-dark-gray dark:text-white">
|
<div className="sm:flex justify-between items-center mb-6">
|
||||||
|
<div className="mb-5 sm:mb-0">
|
||||||
|
<h1 className="text-26 font-bold text-dark-gray dark:text-white">
|
||||||
<span
|
<span
|
||||||
className={`${selectTab === "today" ? "block" : "hidden"}`}
|
className={`${selectTab === "today" ? "block" : "hidden"}`}
|
||||||
>
|
>
|
||||||
Pending Job(s)
|
Pending Job(s)
|
||||||
</span>
|
</span>
|
||||||
|
</h1>
|
||||||
</h1>
|
|
||||||
</div>
|
|
||||||
<div className="slider-btns flex space-x-4">
|
|
||||||
<div onClick={() => filterHandler("today")} className="relative">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<MyPendingJobTable MyJobList={props.MyJobList} />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</Layout>
|
<div className="slider-btns flex space-x-4">
|
||||||
);
|
<div
|
||||||
|
onClick={() => filterHandler("today")}
|
||||||
|
className="relative"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<MyPendingJobTable MyJobList={props.MyJobList} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Layout>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,14 +4,14 @@ import Layout from "../Partials/Layout";
|
|||||||
import MyJobTable from "./MyJobTable";
|
import MyJobTable from "./MyJobTable";
|
||||||
import CommonHead from "../UserHeader/CommonHead";
|
import CommonHead from "../UserHeader/CommonHead";
|
||||||
|
|
||||||
export default function MyTasks() {
|
export default function MyTasks({commonHeadData}) {
|
||||||
const [selectTab, setValue] = useState("today");
|
const [selectTab, setValue] = useState("today");
|
||||||
const filterHandler = (value) => {
|
const filterHandler = (value) => {
|
||||||
setValue(value);
|
setValue(value);
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<Layout>
|
<Layout>
|
||||||
<CommonHead />
|
<CommonHead commonHeadData={commonHeadData} />
|
||||||
<div className="notification-page w-full mb-10">
|
<div className="notification-page w-full mb-10">
|
||||||
<div className="notification-wrapper w-full">
|
<div className="notification-wrapper w-full">
|
||||||
{/* heading */}
|
{/* heading */}
|
||||||
|
|||||||
@@ -505,9 +505,9 @@ export default function Header({ logoutModalHandler, sidebarHandler }) {
|
|||||||
</div>
|
</div>
|
||||||
<div className="heading border-b dark:border-[#5356fb29] border-light-purple px-7 py-2">
|
<div className="heading border-b dark:border-[#5356fb29] border-light-purple px-7 py-2">
|
||||||
<h3 className="text-xl font-bold text-dark-gray dark:text-white">
|
<h3 className="text-xl font-bold text-dark-gray dark:text-white">
|
||||||
Fullname
|
{`${firstname} ${lastname}`}
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-base text-gray-400 dark:text-white hover:text-sky-blue cursor-pointer">{`${firstname} ${lastname}`}</p>
|
{/* <p className="text-base text-gray-400 dark:text-white hover:text-sky-blue cursor-pointer">{`${firstname} ${lastname}`}</p> */}
|
||||||
</div>
|
</div>
|
||||||
<div className="content">
|
<div className="content">
|
||||||
<ul className="px-7">
|
<ul className="px-7">
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useState } from "react";
|
import React, {useEffect, useState} from "react";
|
||||||
import { useDispatch, useSelector } from "react-redux";
|
import { useDispatch, useSelector } from "react-redux";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import { toast } from "react-toastify";
|
import { toast } from "react-toastify";
|
||||||
@@ -9,6 +9,8 @@ import Header from "./Header";
|
|||||||
import MobileSidebar from "./MobileSideBar";
|
import MobileSidebar from "./MobileSideBar";
|
||||||
import RightSideBar from "./RightSideBar";
|
import RightSideBar from "./RightSideBar";
|
||||||
import Sidebar from "./Sidebar";
|
import Sidebar from "./Sidebar";
|
||||||
|
import usersService from "../../services/UsersService";
|
||||||
|
|
||||||
|
|
||||||
export default function Layout({ children }) {
|
export default function Layout({ children }) {
|
||||||
const { drawer } = useSelector((state) => state.drawer);
|
const { drawer } = useSelector((state) => state.drawer);
|
||||||
@@ -20,14 +22,43 @@ export default function Layout({ children }) {
|
|||||||
};
|
};
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const logOut = () => {
|
const logOut = () => {
|
||||||
localStorage.removeItem("email");
|
localStorage.removeItem("session_token");
|
||||||
localStorage.clear();
|
localStorage.removeItem("member_id");
|
||||||
|
localStorage.removeItem("uid");
|
||||||
|
// localStorage.clear();
|
||||||
// toast.success("Come Back Soon", {
|
// toast.success("Come Back Soon", {
|
||||||
// icon: `🙂`,
|
// icon: `🙂`,
|
||||||
// });
|
// });
|
||||||
|
|
||||||
navigate("/login", { replace: true });
|
navigate("/login", { replace: true });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//---------------------------------------
|
||||||
|
/* LET U DEAL WITH JOB LIST - we need to centralize this list */
|
||||||
|
const {jobListTable} = useSelector((state) => state.tableReload)
|
||||||
|
const [MyJobList, setMyJobList] = useState({loading: true, data:[]});
|
||||||
|
const api = new usersService();
|
||||||
|
|
||||||
|
const getMyJobList = async () => {
|
||||||
|
setMyJobList({loading: true, data:[]})
|
||||||
|
try {
|
||||||
|
const res = await api.getMyJobList();
|
||||||
|
setMyJobList({loading: false, data:res.data})
|
||||||
|
// setMyJobList(res.data);
|
||||||
|
} catch (error) {
|
||||||
|
setMyJobList({loading: false, data:[]})
|
||||||
|
console.log("Error getting mode");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
useEffect(() => {
|
||||||
|
getMyJobList();
|
||||||
|
}, [jobListTable]);
|
||||||
|
// const getJobList = ()=>{
|
||||||
|
// let jobLists = useSelector((state) => state.jobLists);
|
||||||
|
// return jobLists;
|
||||||
|
// }
|
||||||
|
//---------------------------------------
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="nft-main-wrapper-layout">
|
<div className="nft-main-wrapper-layout">
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ export default function Sidebar({ sidebar, action, logoutModalHandler }) {
|
|||||||
const darkMode = useContext(DarkModeContext);
|
const darkMode = useContext(DarkModeContext);
|
||||||
|
|
||||||
let { userDetails } = useSelector((state) => state.userDetails);
|
let { userDetails } = useSelector((state) => state.userDetails);
|
||||||
|
//const jobLists = getJobList(); // pass from upper - we need in a lot of places
|
||||||
let { jobLists } = useSelector((state) => state.jobLists);
|
let { jobLists } = useSelector((state) => state.jobLists);
|
||||||
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;
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
|
|
||||||
export default function CommonHead({ className }) {
|
export default function CommonHead({ className,commonHeadData }) {
|
||||||
|
const vvv= commonHeadData();
|
||||||
|
console.log("UUUUUUUU-",vvv);
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={`create-nft w-full lg:h-[140px] shadow lg:flex rounded-lg justify-between items-center md:p-9 p-4 bg-white dark:bg-dark-white border-b dark:border-[#5356fb29] -2 border-pink mb-10 ${
|
className={`create-nft w-full lg:h-[140px] shadow lg:flex rounded-lg justify-between items-center md:p-9 p-4 bg-white dark:bg-dark-white border-b dark:border-[#5356fb29] -2 border-pink mb-10 ${
|
||||||
|
|||||||
+599
-574
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,9 @@
|
|||||||
|
import FamilyManage from "../components/FamilyAcc/FamilyManage";
|
||||||
|
|
||||||
|
export default function FamilyManagePage() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<FamilyManage />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
+10
-6
@@ -3,24 +3,28 @@ import Home from "../components/Home";
|
|||||||
import usersService from "../services/UsersService";
|
import usersService from "../services/UsersService";
|
||||||
export default function HomePages() {
|
export default function HomePages() {
|
||||||
|
|
||||||
const [marketActiveJobList, setMarketActiveJobList] = useState([]);
|
// const [marketActiveJobList, setMarketActiveJobList] = useState([]);
|
||||||
|
const [bannerList, setBannerList] = useState([]);
|
||||||
const api = new usersService();
|
const api = new usersService();
|
||||||
|
|
||||||
const getMarketActiveJobList = async () => {
|
const getHeroJBannersList = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await api.getHeroJBanners();
|
const res = await api.getHeroJBanners();
|
||||||
setMarketActiveJobList(res.data);
|
// console.log("BANNERS->",res.data);
|
||||||
|
setBannerList(res.data?.result_list);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log("Error getting mode");
|
console.log("Error getting BANNERS....");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getMarketActiveJobList();
|
getHeroJBannersList();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Home />
|
<Home
|
||||||
|
bannerList={bannerList}
|
||||||
|
/>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,16 @@
|
|||||||
import MarketPlace from "../components/MarketPlace";
|
import MarketPlace from "../components/MarketPlace";
|
||||||
|
|
||||||
export default function MarketPlacePage() {
|
export default function MarketPlacePage() {
|
||||||
|
|
||||||
|
const commonHeadData =()=>{
|
||||||
|
console.log("COMMON HEAD DATA ----------------=====---------------------");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<MarketPlace />
|
<MarketPlace
|
||||||
|
commonHeadData={commonHeadData} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,10 @@ import usersService from "../services/UsersService";
|
|||||||
import MyActiveJobs from "../components/MyActiveJobs";
|
import MyActiveJobs from "../components/MyActiveJobs";
|
||||||
|
|
||||||
export default function MyActiveJobsPage() {
|
export default function MyActiveJobsPage() {
|
||||||
|
const commonHeadData =()=>{
|
||||||
|
console.log("COMMON HEAD DATA ----------------=====---------------------");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
const [MyJobList, setMyJobList] = useState([]);
|
const [MyJobList, setMyJobList] = useState([]);
|
||||||
const api = new usersService();
|
const api = new usersService();
|
||||||
//TARGET ENDPOINT[POST]http://10.204.5.100:9083/en/wrench/api/v1/jobmanageractive
|
//TARGET ENDPOINT[POST]http://10.204.5.100:9083/en/wrench/api/v1/jobmanageractive
|
||||||
@@ -23,7 +26,10 @@ export default function MyActiveJobsPage() {
|
|||||||
// debugger;
|
// debugger;
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<MyActiveJobs MyJobList={MyJobList} />
|
<MyActiveJobs
|
||||||
|
MyJobList={MyJobList}
|
||||||
|
commonHeadData={commonHeadData}
|
||||||
|
/>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import React from "react";
|
||||||
|
import WalletRoutes from "../components/MyWallet/Wallet";
|
||||||
|
|
||||||
|
export default function MyCouponPage() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<WalletRoutes />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -8,6 +8,11 @@ import { useSelector } from "react-redux";
|
|||||||
|
|
||||||
export default function MyJobsPage() {
|
export default function MyJobsPage() {
|
||||||
|
|
||||||
|
const commonHeadData =()=>{
|
||||||
|
console.log("COMMON HEAD DATA ----------------=====---------------------");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
const {jobListTable} = useSelector((state) => state.tableReload)
|
const {jobListTable} = useSelector((state) => state.tableReload)
|
||||||
|
|
||||||
// const userApi = new usersService();
|
// const userApi = new usersService();
|
||||||
@@ -33,7 +38,9 @@ export default function MyJobsPage() {
|
|||||||
// debugger;
|
// debugger;
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<MyJobs MyJobList={MyJobList} />
|
<MyJobs
|
||||||
|
MyJobList={MyJobList}
|
||||||
|
commonHeadData={commonHeadData} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,10 @@ import MyActiveJobs from "../components/MyActiveJobs";
|
|||||||
import MyPendingJobs from "../components/MyPendingJobs";
|
import MyPendingJobs from "../components/MyPendingJobs";
|
||||||
|
|
||||||
export default function MyPendingJobsPage() {
|
export default function MyPendingJobsPage() {
|
||||||
|
const commonHeadData =()=>{
|
||||||
|
console.log("COMMON HEAD DATA ----------------=====---------------------");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
const [MyJobList, setMyJobList] = useState([]);
|
const [MyJobList, setMyJobList] = useState([]);
|
||||||
const api = new usersService();
|
const api = new usersService();
|
||||||
|
|
||||||
@@ -24,7 +27,10 @@ export default function MyPendingJobsPage() {
|
|||||||
// debugger;
|
// debugger;
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<MyPendingJobs MyJobList={MyJobList} />
|
<MyPendingJobs
|
||||||
|
MyJobList={MyJobList}
|
||||||
|
commonHeadData={commonHeadData}
|
||||||
|
/>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,10 @@ export default function MyTaskPage() {
|
|||||||
|
|
||||||
const [MyActiveJobList, setMyActiveJobList] = useState([]);
|
const [MyActiveJobList, setMyActiveJobList] = useState([]);
|
||||||
const api = new usersService();
|
const api = new usersService();
|
||||||
|
const commonHeadData =()=>{
|
||||||
|
console.log("COMMON HEAD DATA ----------------=====---------------------");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
const getMyActiveJobList = async () => {
|
const getMyActiveJobList = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await api.getMyActiveTaskList();
|
const res = await api.getMyActiveTaskList();
|
||||||
@@ -23,7 +26,8 @@ export default function MyTaskPage() {
|
|||||||
//debugger;
|
//debugger;
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<MyTasks ActiveJobList={MyActiveJobList}/>
|
<MyTasks ActiveJobList={MyActiveJobList}
|
||||||
|
commonHeadData={commonHeadData}/>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user