Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bc6d8b7805 | |||
| ca5923a7f8 | |||
| 4f0d432176 | |||
| dd3f9d99f3 | |||
| 8807b671ad | |||
| 7020e6d4dc | |||
| d66093a2ad | |||
| b79eb6b158 | |||
| a759daaf90 | |||
| 600aec62cf | |||
| 1612bf11ce | |||
| f4e261eb6c | |||
| b622398b6a | |||
| e60957e6be | |||
| 6a2082d732 | |||
| 452c6bf8a1 | |||
| 9f89376aa9 | |||
| 4e91e47978 | |||
| fcaa485b17 | |||
| 64056bb2a4 | |||
| e49c4d66f8 | |||
| 8fdb939b72 | |||
| 7849a027b4 |
@@ -49,6 +49,7 @@ import MyWaitingJobsPage from "./views/MyWaitingJobsPage";
|
|||||||
import FamilyMarketPage from "./views/FamilyMarketPage";
|
import FamilyMarketPage from "./views/FamilyMarketPage";
|
||||||
import FacebookRedirect from "./views/FacebookRedirect";
|
import FacebookRedirect from "./views/FacebookRedirect";
|
||||||
import AppleRedirectPage from "./views/AppleRedirectPage";
|
import AppleRedirectPage from "./views/AppleRedirectPage";
|
||||||
|
import LndPage from "./views/LndPage";
|
||||||
|
|
||||||
export default function Routers() {
|
export default function Routers() {
|
||||||
return (
|
return (
|
||||||
@@ -76,6 +77,7 @@ export default function Routers() {
|
|||||||
<Route path="/vemail" element={<VerifyLinkPages />} />
|
<Route path="/vemail" element={<VerifyLinkPages />} />
|
||||||
<Route path="/complereset" element={<VerifyPasswordPages />} />
|
<Route path="/complereset" element={<VerifyPasswordPages />} />
|
||||||
<Route exact path="/outmessage" element={<VerifyYouPages />} />
|
<Route exact path="/outmessage" element={<VerifyYouPages />} />
|
||||||
|
<Route exact path="/lnd/*" element={<LndPage />} />
|
||||||
|
|
||||||
{/* private route */}
|
{/* private route */}
|
||||||
<Route element={<AuthRoute />}>
|
<Route element={<AuthRoute />}>
|
||||||
|
|||||||
@@ -245,6 +245,9 @@ export default function Login() {
|
|||||||
</div>
|
</div>
|
||||||
<div className="content-wrapper login shadow-md w-full lg:max-w-[530px] 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-[530px] 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">
|
||||||
|
|
||||||
|
{/* HIDES THIS IF USER SESSION HAS EXPIRED */}
|
||||||
|
{sessionExpired != 'true' &&
|
||||||
<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
|
||||||
@@ -259,11 +262,12 @@ export default function Login() {
|
|||||||
</Link>
|
</Link>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
{/* SHOWS THIS IF USER SESSION HAS EXPIRED */}
|
{/* SHOWS THIS IF USER SESSION HAS EXPIRED */}
|
||||||
{sessionExpired == 'true' &&
|
{sessionExpired == 'true' &&
|
||||||
<div className="w-full p-1">
|
<div className="w-full p-1 mb-7">
|
||||||
<p className="text-red-500 text-sm text-center">Your session expired and will need to login again</p>
|
<p className="text-red-500 text-base text-center">Your session expired and will need to login again</p>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -66,8 +66,10 @@ export default function FamilyManageTabs({
|
|||||||
// State for family task popout
|
// State for family task popout
|
||||||
const [familyTaskPopout, setFamilyTaskPopout] = useState(false);
|
const [familyTaskPopout, setFamilyTaskPopout] = useState(false);
|
||||||
|
|
||||||
|
let [uploadStatus, setUploadStatus] = useState({loading: false, status: false, message:''}) // HOLDS STATE FOR UPLOAD PROFILE PICTURE STATUS
|
||||||
|
|
||||||
// State for profile image
|
// State for profile image
|
||||||
const [profileImg, setProfileImg] = useState(profile);
|
const [profileImg, setProfileImg] = useState(accountDetails.image ? accountDetails.image : profile);
|
||||||
|
|
||||||
// Ref for profile image input
|
// Ref for profile image input
|
||||||
const profileImgInput = useRef(null);
|
const profileImgInput = useRef(null);
|
||||||
@@ -90,24 +92,78 @@ export default function FamilyManageTabs({
|
|||||||
* Checks if the selected file exceeds the maximum file size limit and displays an alert if it does.
|
* Checks if the selected file exceeds the maximum file size limit and displays an alert if it does.
|
||||||
* If the file is within the size limit, it reads the file using the FileReader API and sets the profile image state with the result.
|
* If the file is within the size limit, it reads the file using the FileReader API and sets the profile image state with the result.
|
||||||
*/
|
*/
|
||||||
const profileImgChangeHandler = (e) => {
|
// const profileImgChangeHandler = (e) => {
|
||||||
const MAX_FILE_SIZE = 5 * 1024 * 1024; // 5MB
|
// const MAX_FILE_SIZE = 5 * 1024 * 1024; // 5MB
|
||||||
|
|
||||||
const file = e.target.files[0];
|
// const file = e.target.files[0];
|
||||||
if (file && file.size > MAX_FILE_SIZE) {
|
// if (file && file.size > MAX_FILE_SIZE) {
|
||||||
alert("File size exceeds the limit.");
|
// alert("File size exceeds the limit.");
|
||||||
return;
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (file) {
|
||||||
|
// const imgReader = new FileReader();
|
||||||
|
// imgReader.onload = () => {
|
||||||
|
// const imageDataUrl = imgReader.result;
|
||||||
|
|
||||||
|
// // Set the profile image
|
||||||
|
// setProfileImg(imageDataUrl);
|
||||||
|
// };
|
||||||
|
// imgReader.readAsDataURL(file);
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
|
||||||
|
const profileImgChangeHandler = (e) => {
|
||||||
|
setUploadStatus({loading: false, status: false, message:''})
|
||||||
|
let acceptedFormat = ["jpeg", "jpg", "png", "bmp", "gif"] // ARRAY OF SUPPORTED FORMATS
|
||||||
|
let uploadedFile = e.target.files[0] //UPLOADED FILE
|
||||||
|
|
||||||
|
const fileFormat = uploadedFile?.type?.split("/")[1]?.toLowerCase();
|
||||||
|
if(!acceptedFormat.includes(fileFormat)){ //CHECKING FOR CORRECT UPLOAD FORMAT
|
||||||
|
const msg = `Please select ${acceptedFormat.slice(0, -1).join(', ')} or ${acceptedFormat.slice(-1)}`;
|
||||||
|
setUploadStatus({loading: false, status: false, message:msg})
|
||||||
|
return setTimeout(()=>{
|
||||||
|
profileImgInput.current.value = '' // clear the input
|
||||||
|
setUploadStatus({loading: false, status: false, message:''})
|
||||||
|
},5000)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file) {
|
if(uploadedFile.size > 5*1048576){ // CHECKING FOR CORRECT FILE SIZE
|
||||||
const imgReader = new FileReader();
|
setUploadStatus({loading: false, status: false, message:'File must not exceed 5MB'})
|
||||||
imgReader.onload = () => {
|
return setTimeout(()=>{
|
||||||
const imageDataUrl = imgReader.result;
|
profileImgInput.current.value = '' // clear the input
|
||||||
|
setUploadStatus({loading: false, status: false, message:''})
|
||||||
|
},5000)
|
||||||
|
}
|
||||||
|
|
||||||
// Set the profile image
|
if (e.target.value !== "") {
|
||||||
setProfileImg(imageDataUrl);
|
const imgReader = new FileReader();
|
||||||
|
imgReader.onload = (event) => {
|
||||||
|
let reqData = { // PAYLOAD FOR API CALL
|
||||||
|
family_uid: accountDetails?.family_uid,
|
||||||
|
file_name: uploadedFile?.name,
|
||||||
|
file_size: uploadedFile?.size,
|
||||||
|
file_type: uploadedFile?.type?.split("/")[0]?.toLowerCase(),
|
||||||
|
file_data: event?.target?.result,
|
||||||
|
msg_type: 'FILE',
|
||||||
|
action: 111305
|
||||||
|
}
|
||||||
|
setUploadStatus({loading: true, status: false, message:'Loading...'})
|
||||||
|
apiCall.sendFiles(reqData).then(res=>{
|
||||||
|
if(res.status != 200 || res.data.internal_return < 0){
|
||||||
|
return setUploadStatus({loading: false, status: false, message: 'Something went wrong, try again'})
|
||||||
|
}
|
||||||
|
setUploadStatus({loading: false, status: true, message: 'Uploaded successfully'})
|
||||||
|
setProfileImg(event.target.result);
|
||||||
|
}).catch(error=>{
|
||||||
|
setUploadStatus({loading: false, status: false, message: 'Network error, try again'})
|
||||||
|
}).finally(()=>{
|
||||||
|
setTimeout(()=>{
|
||||||
|
setUploadStatus({loading: false, status: false, message: ''})
|
||||||
|
},5000)
|
||||||
|
})
|
||||||
};
|
};
|
||||||
imgReader.readAsDataURL(file);
|
imgReader.readAsDataURL(e.target.files[0]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -298,6 +354,7 @@ export default function FamilyManageTabs({
|
|||||||
profileImgChangeHandler={profileImgChangeHandler}
|
profileImgChangeHandler={profileImgChangeHandler}
|
||||||
browseProfileImg={browseProfileImg}
|
browseProfileImg={browseProfileImg}
|
||||||
accountDetails={accountDetails}
|
accountDetails={accountDetails}
|
||||||
|
uploadStatus={uploadStatus}
|
||||||
/>
|
/>
|
||||||
<div className="mt-4 flex flex-col justify-center items-center gap-2 lg:flex-row lg:justify-center lg:items-center xl:flex-col xl:justify-center xl:items-center 2xl:flex-row 2xl:justify-center 2xl:items-center 2xl:gap-[2px]">
|
<div className="mt-4 flex flex-col justify-center items-center gap-2 lg:flex-row lg:justify-center lg:items-center xl:flex-col xl:justify-center xl:items-center 2xl:flex-row 2xl:justify-center 2xl:items-center 2xl:gap-[2px]">
|
||||||
<button
|
<button
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ export default function FamilyTable({
|
|||||||
familyList,
|
familyList,
|
||||||
loader,
|
loader,
|
||||||
popUpHandler,
|
popUpHandler,
|
||||||
|
imageServer
|
||||||
}) {
|
}) {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const [currentPage, setCurrentPage] = useState(0);
|
const [currentPage, setCurrentPage] = useState(0);
|
||||||
@@ -54,12 +55,14 @@ export default function FamilyTable({
|
|||||||
banner,
|
banner,
|
||||||
enable_traking,
|
enable_traking,
|
||||||
profile_picture,
|
profile_picture,
|
||||||
|
imageServer
|
||||||
}) => {
|
}) => {
|
||||||
// Check for valid dates
|
// Check for valid dates
|
||||||
const addedDate = added ? added.split(" ")[0] : "N/A";
|
const addedDate = added ? added.split(" ")[0] : "N/A";
|
||||||
const loginDate = last_login ? formatDateString(last_login) : "N/A";
|
const loginDate = last_login ? formatDateString(last_login) : "N/A";
|
||||||
const key = `family-${family_uid}`; // Assign a unique key
|
const key = `family-${family_uid}`; // Assign a unique key
|
||||||
|
const image = localStorage.getItem('session_token') ? `${imageServer}${localStorage.getItem('session_token')}/family/${family_uid}` : ''
|
||||||
|
|
||||||
const trackingStatus =
|
const trackingStatus =
|
||||||
enable_traking === "0"
|
enable_traking === "0"
|
||||||
? "Stopped"
|
? "Stopped"
|
||||||
@@ -76,8 +79,8 @@ export default function FamilyTable({
|
|||||||
<div className="flex space-x-2 items-center w-full">
|
<div className="flex space-x-2 items-center w-full">
|
||||||
<div className="w-[60px] h-[60px] rounded-full overflow-hidden flex justify-center items-center flex-[0.1]">
|
<div className="w-[60px] h-[60px] rounded-full overflow-hidden flex justify-center items-center flex-[0.1]">
|
||||||
<img
|
<img
|
||||||
src={profile_picture}
|
// src={profile_picture}
|
||||||
// src={profile_picture || localImgLoad(`images/icons/${banner}`)}
|
src={image || profile_picture || localImgLoad(`images/icons/${banner}`)}
|
||||||
alt={`Avatar of ${firstname} ${lastname}`}
|
alt={`Avatar of ${firstname} ${lastname}`}
|
||||||
className="w-full h-full"
|
className="w-full h-full"
|
||||||
/>
|
/>
|
||||||
@@ -133,6 +136,7 @@ export default function FamilyTable({
|
|||||||
task_count,
|
task_count,
|
||||||
family_uid,
|
family_uid,
|
||||||
banner,
|
banner,
|
||||||
|
image
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
type="button"
|
type="button"
|
||||||
@@ -147,8 +151,8 @@ export default function FamilyTable({
|
|||||||
<path
|
<path
|
||||||
fill-rule="evenodd"
|
fill-rule="evenodd"
|
||||||
d="M.366 19.708c.405.39 1.06.39 1.464 0l8.563-8.264a1.95 1.95 0 0 0 0-2.827L1.768.292A1.063 1.063 0 0 0 .314.282a.976.976 0 0 0-.011 1.425l7.894 7.617a.975.975 0 0 1 0 1.414L.366 18.295a.974.974 0 0 0 0 1.413"
|
d="M.366 19.708c.405.39 1.06.39 1.464 0l8.563-8.264a1.95 1.95 0 0 0 0-2.827L1.768.292A1.063 1.063 0 0 0 .314.282a.976.976 0 0 0-.011 1.425l7.894 7.617a.975.975 0 0 1 0 1.414L.366 18.295a.974.974 0 0 0 0 1.413"
|
||||||
fill="#4687ba"
|
// fill=""
|
||||||
className="color000000 svgShape"
|
className="color000000 svgShape fill-[#fff]"
|
||||||
></path>
|
></path>
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
@@ -182,7 +186,7 @@ export default function FamilyTable({
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody className="h-full">
|
<tbody className="h-full">
|
||||||
{currentFamilyList?.map((familyMember, index) => {
|
{currentFamilyList?.map((familyMember, index) => {
|
||||||
return <FamilyRow key={index} {...familyMember} />;
|
return <FamilyRow key={index} {...familyMember} imageServer={imageServer} />;
|
||||||
})}
|
})}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -213,7 +217,7 @@ export default function FamilyTable({
|
|||||||
<PaginatedList
|
<PaginatedList
|
||||||
onClick={handlePagination}
|
onClick={handlePagination}
|
||||||
prev={currentPage == 0}
|
prev={currentPage == 0}
|
||||||
next={currentPage + itemsPerPage >= familyList.length}
|
next={currentPage + itemsPerPage >= familyList?.length}
|
||||||
data={familyList}
|
data={familyList}
|
||||||
start={indexOfFirstItem}
|
start={indexOfFirstItem}
|
||||||
stop={indexOfLastItem}
|
stop={indexOfLastItem}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ export default function ProfileInfo({
|
|||||||
profileImgChangeHandler,
|
profileImgChangeHandler,
|
||||||
browseProfileImg,
|
browseProfileImg,
|
||||||
accountDetails,
|
accountDetails,
|
||||||
|
uploadStatus
|
||||||
}) {
|
}) {
|
||||||
// console.log(accountDetails.banner)
|
// console.log(accountDetails.banner)
|
||||||
return (
|
return (
|
||||||
@@ -52,6 +53,11 @@ export default function ProfileInfo({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{/* DISPLAYS PROFILE UPLOADING STATUS */}
|
||||||
|
<div className="w-full">
|
||||||
|
{uploadStatus.message && !uploadStatus.loading && <p className={`text-center ${uploadStatus.status ? 'text-green-500':'text-red-500'}`}>{uploadStatus.message}</p>}
|
||||||
|
{uploadStatus.loading && <p className="text-center">{uploadStatus.message}</p>}
|
||||||
|
</div>
|
||||||
<div className="flex flex-col justify-center gap-3 items-center">
|
<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">
|
<h1 className="font-bold text-xl tracking-wide line-clamp-1 text-dark-gray dark:text-white capitalize">
|
||||||
{accountDetails?.firstname}
|
{accountDetails?.firstname}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export default function FamilyAcc() {
|
|||||||
// State to store the selected year and month
|
// State to store the selected year and month
|
||||||
const [selectedYear, setSelectedYear] = useState("");
|
const [selectedYear, setSelectedYear] = useState("");
|
||||||
const [selectedMonth, setSelectedMonth] = useState("");
|
const [selectedMonth, setSelectedMonth] = useState("");
|
||||||
const [familyList, setFamilyList] = useState([]);
|
const [familyList, setFamilyList] = useState({});
|
||||||
const [loader, setLoader] = useState(false);
|
const [loader, setLoader] = useState(false);
|
||||||
const [popUp, setPopUp] = useState(false);
|
const [popUp, setPopUp] = useState(false);
|
||||||
const [listReload, setListReload] = useState(false);
|
const [listReload, setListReload] = useState(false);
|
||||||
@@ -115,8 +115,8 @@ export default function FamilyAcc() {
|
|||||||
const res = await apiCall.familyListings(reqData);
|
const res = await apiCall.familyListings(reqData);
|
||||||
const { data } = res;
|
const { data } = res;
|
||||||
if (data?.internal_return >= 0 && data?.status === "OK") {
|
if (data?.internal_return >= 0 && data?.status === "OK") {
|
||||||
const { result_list } = data;
|
const { result_list, session_image_server } = data;
|
||||||
setFamilyList(result_list);
|
setFamilyList({result_list, session_image_server});
|
||||||
setLoader(false);
|
setLoader(false);
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
@@ -172,9 +172,10 @@ export default function FamilyAcc() {
|
|||||||
</div>
|
</div>
|
||||||
<Suspense fallback={<LoadingSpinner color="sky-blue" size="16" />}>
|
<Suspense fallback={<LoadingSpinner color="sky-blue" size="16" />}>
|
||||||
<FamilyTable
|
<FamilyTable
|
||||||
familyList={familyList}
|
familyList={familyList?.result_list}
|
||||||
loader={loader}
|
loader={loader}
|
||||||
popUpHandler={popUpHandler}
|
popUpHandler={popUpHandler}
|
||||||
|
imageServer={familyList?.session_image_server}
|
||||||
/>
|
/>
|
||||||
</Suspense>
|
</Suspense>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ function RewardsTable() {
|
|||||||
<div className='flex flex-col justify-between min-h-[500px]'>
|
<div className='flex flex-col justify-between min-h-[500px]'>
|
||||||
{familyRewardHistory.loading ?
|
{familyRewardHistory.loading ?
|
||||||
<LoadingSpinner size='16' color='sky-blue' height='h-[500px]' />
|
<LoadingSpinner size='16' color='sky-blue' height='h-[500px]' />
|
||||||
:
|
: familyRewardHistory.data.length ?
|
||||||
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
||||||
<thead className='border-b-2'>
|
<thead className='border-b-2'>
|
||||||
<tr className='text-slate-600'>
|
<tr className='text-slate-600'>
|
||||||
@@ -60,8 +60,6 @@ function RewardsTable() {
|
|||||||
<th className="p-2">Confirmation</th>
|
<th className="p-2">Confirmation</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
{familyRewardHistory.data.length ?
|
|
||||||
(
|
|
||||||
<tbody>
|
<tbody>
|
||||||
{currentReward.map((item, index) => {
|
{currentReward.map((item, index) => {
|
||||||
let date = new Date(item.added).toLocaleDateString()
|
let date = new Date(item.added).toLocaleDateString()
|
||||||
@@ -84,24 +82,15 @@ function RewardsTable() {
|
|||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
</tbody>
|
</tbody>
|
||||||
)
|
|
||||||
:
|
|
||||||
familyRewardHistory.error ?
|
|
||||||
(
|
|
||||||
<tbody>
|
|
||||||
<tr className='text-slate-500'>
|
|
||||||
<td className="p-2" colSpan={4}>Opps! an error occurred. Please try again!</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
)
|
|
||||||
:
|
|
||||||
<tbody>
|
|
||||||
<tr className='text-slate-500'>
|
|
||||||
<td className="p-2" colSpan={4}>No Rewards History Found!</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
}
|
|
||||||
</table>
|
</table>
|
||||||
|
:familyRewardHistory.error ?
|
||||||
|
<div className="p-2 text-slate-500 flex flex-col grow justify-center items-center">
|
||||||
|
<span>Opps! an error occurred. Please try again!</span>
|
||||||
|
</div>
|
||||||
|
:
|
||||||
|
<div className="p-2 text-slate-500 flex flex-col grow justify-center items-center">
|
||||||
|
<span>No Rewards History Found!</span>
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
{/* PAGINATION BUTTON */}
|
{/* PAGINATION BUTTON */}
|
||||||
|
|||||||
@@ -255,9 +255,9 @@ export default function History() {
|
|||||||
{/* PURCHASE SECTION */}
|
{/* PURCHASE SECTION */}
|
||||||
{tab == 'purchases' &&
|
{tab == 'purchases' &&
|
||||||
<div className="wallet w-full border-t">
|
<div className="wallet w-full border-t">
|
||||||
<h1 className="p-2 text-xl font-bold text-dark-gray dark:text-white tracking-wide">Purchases</h1>
|
{/* <h1 className="p-2 text-xl font-bold text-dark-gray dark:text-white tracking-wide">Purchases</h1> */}
|
||||||
{purchaseHistory.loading ?
|
{purchaseHistory.loading ?
|
||||||
<LoadingSpinner size='16' color='sky-blue' />
|
<LoadingSpinner size='16' color='sky-blue' height='h-[500px]' />
|
||||||
:
|
:
|
||||||
<PurchasesTable purchase={purchaseHistory} />
|
<PurchasesTable purchase={purchaseHistory} />
|
||||||
}
|
}
|
||||||
@@ -268,10 +268,10 @@ export default function History() {
|
|||||||
{/* RECENT ACTIVITY SECTION */}
|
{/* RECENT ACTIVITY SECTION */}
|
||||||
{tab == 'recent' &&
|
{tab == 'recent' &&
|
||||||
<div className="wallet w-full border-t">
|
<div className="wallet w-full border-t">
|
||||||
<h1 className="p-2 text-xl font-bold text-dark-gray dark:text-white tracking-wide">Recent Activity</h1>
|
{/* <h1 className="p-2 text-xl font-bold text-dark-gray dark:text-white tracking-wide">Recent Activity</h1> */}
|
||||||
{/* <p className='text-base text-slate-500 dark:text-white'>Activity Report</p> */}
|
{/* <p className='text-base text-slate-500 dark:text-white'>Activity Report</p> */}
|
||||||
{paymentHistory.loading ?
|
{paymentHistory.loading ?
|
||||||
<LoadingSpinner size='16' color='sky-blue' />
|
<LoadingSpinner size='16' color='sky-blue' height='h-[500px]' />
|
||||||
:
|
:
|
||||||
<RecentActivityTable payment={paymentHistory} />
|
<RecentActivityTable payment={paymentHistory} />
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
import React, { useEffect, useState } from 'react'
|
||||||
|
import Layout from '../Partials/Layout'
|
||||||
|
|
||||||
|
import LoadingSpinner from '../Spinners/LoadingSpinner'
|
||||||
|
|
||||||
|
function Lnd() {
|
||||||
|
|
||||||
|
const [reqStatus, setReqStatus] = useState({loading:true, data: []})
|
||||||
|
|
||||||
|
useEffect(()=>{
|
||||||
|
const timer = setTimeout(()=>{
|
||||||
|
setReqStatus({loading:false, data: []})
|
||||||
|
},2000)
|
||||||
|
return () => clearTimeout(timer)
|
||||||
|
}, [])
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{reqStatus.loading ?
|
||||||
|
<LoadingSpinner color='sky-blue' size='32' height='min-h-screen' />
|
||||||
|
:
|
||||||
|
<div className='min-h-screen flex flex-col justify-center items-center'>Empty Dummy Page</div>
|
||||||
|
}
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Lnd
|
||||||
@@ -16,45 +16,36 @@ function PurchasesTable({purchase}) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='flex flex-col justify-between min-h-[500px]'>
|
<div className='flex flex-col justify-between min-h-[500px]'>
|
||||||
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
|
||||||
<thead className='border-b-2'>
|
|
||||||
<tr className='text-slate-600'>
|
|
||||||
<th className="p-2">Trx.</th>
|
|
||||||
<th className="p-2">Amount</th>
|
|
||||||
<th className="p-2">Fee</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
{purchase.data.length ?
|
{purchase.data.length ?
|
||||||
(
|
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
||||||
<tbody>
|
<thead className='border-b-2'>
|
||||||
{currentPurchase.map((item, index) => (
|
<tr className='text-slate-600'>
|
||||||
<tr key={index} className='text-slate-500'>
|
<th className="p-2">Trx.</th>
|
||||||
<td className="p-2">{item.added_date}<br />
|
<th className="p-2">Amount</th>
|
||||||
<b>{item.confirmation} </b>
|
<th className="p-2">Fee</th>
|
||||||
</td>
|
</tr>
|
||||||
<td className="p-2">{item.amount}</td>
|
</thead>
|
||||||
<td className="p-2">{item.fee}</td>
|
<tbody>
|
||||||
</tr>
|
{currentPurchase.map((item, index) => (
|
||||||
))}
|
<tr key={index} className='text-slate-500'>
|
||||||
</tbody>
|
<td className="p-2">{item.added_date}<br />
|
||||||
)
|
<b>{item.confirmation} </b>
|
||||||
|
</td>
|
||||||
|
<td className="p-2">{item.amount}</td>
|
||||||
|
<td className="p-2">{item.fee}</td>
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
:purchase.error ?
|
||||||
|
<div className="p-2 text-slate-500 flex flex-col grow justify-center items-center">
|
||||||
|
<span>Opps! an error occurred. Please try again!</span>
|
||||||
|
</div>
|
||||||
:
|
:
|
||||||
purchase.error ?
|
<div className="p-2 text-slate-500 flex flex-col grow justify-center items-center">
|
||||||
(
|
<span>No Purchase History Found!</span>
|
||||||
<tbody>
|
</div>
|
||||||
<tr className='text-slate-500'>
|
|
||||||
<td className="p-2" colSpan={4}>Opps! an error occurred. Please try again!</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
)
|
|
||||||
:
|
|
||||||
<tbody>
|
|
||||||
<tr className='text-slate-500'>
|
|
||||||
<td className="p-2" colSpan={4}>No Purchase History Found!</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
}
|
}
|
||||||
</table>
|
|
||||||
|
|
||||||
{/* PAGINATION BUTTON */}
|
{/* PAGINATION BUTTON */}
|
||||||
<PaginatedList onClick={handlePagination} prev={currentPage == 0 ? true : false} next={currentPage+Number(process.env.REACT_APP_ITEM_PER_PAGE) >= purchase?.data?.length ? true : false} data={purchase?.data} start={indexOfFirstItem} stop={indexOfLastItem} />
|
<PaginatedList onClick={handlePagination} prev={currentPage == 0 ? true : false} next={currentPage+Number(process.env.REACT_APP_ITEM_PER_PAGE) >= purchase?.data?.length ? true : false} data={purchase?.data} start={indexOfFirstItem} stop={indexOfLastItem} />
|
||||||
|
|||||||
@@ -19,16 +19,16 @@ function RecentActivityTable({ payment }) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col justify-between min-h-[500px]">
|
<div className="flex flex-col justify-between min-h-[500px]">
|
||||||
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
{payment?.data?.length > 0 ?
|
||||||
<thead className="border-b-2">
|
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
||||||
<tr className="text-slate-600">
|
<thead className="border-b-2">
|
||||||
<th className="p-2">Date</th>
|
<tr className="text-slate-600">
|
||||||
<th className="p-4">Trx.</th>
|
<th className="p-2">Date</th>
|
||||||
<th className="p-2">Amnt./Fee</th>
|
<th className="p-4">Trx.</th>
|
||||||
<th className="p-2">Status</th>
|
<th className="p-2">Amnt./Fee</th>
|
||||||
</tr>
|
<th className="p-2">Status</th>
|
||||||
</thead>
|
</tr>
|
||||||
{payment?.data?.length > 0 ? (
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{currentActivity.map((item, index) => (
|
{currentActivity.map((item, index) => (
|
||||||
<tr key={index} className="text-slate-500">
|
<tr key={index} className="text-slate-500">
|
||||||
@@ -46,24 +46,16 @@ function RecentActivityTable({ payment }) {
|
|||||||
</tr>
|
</tr>
|
||||||
))}
|
))}
|
||||||
</tbody>
|
</tbody>
|
||||||
) : payment?.error ? (
|
</table>
|
||||||
<tbody>
|
:payment.error ?
|
||||||
<tr className="text-slate-500">
|
<div className="p-2 text-slate-500 flex flex-col grow justify-center items-center">
|
||||||
<td className="p-2" colSpan={4}>
|
<span>Opps! an error occurred. Please try again!</span>
|
||||||
Opps! an error occurred. Please try again!
|
</div>
|
||||||
</td>
|
:
|
||||||
</tr>
|
<div className="p-2 text-slate-500 flex flex-col grow justify-center items-center">
|
||||||
</tbody>
|
<span>No Payment History Found!</span>
|
||||||
) : (
|
</div>
|
||||||
<tbody>
|
}
|
||||||
<tr className="text-slate-500">
|
|
||||||
<td className="p-2" colSpan={4}>
|
|
||||||
No Payment History Found!
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
)}
|
|
||||||
</table>
|
|
||||||
|
|
||||||
{/* PAGINATION BUTTON */}
|
{/* PAGINATION BUTTON */}
|
||||||
<PaginatedList
|
<PaginatedList
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export default function Sidebar({
|
|||||||
logoutModalHandler,
|
logoutModalHandler,
|
||||||
myJobList,
|
myJobList,
|
||||||
}) {
|
}) {
|
||||||
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
|
//const jobLists = getJobList(); // pass from upper - we need in a lot of places
|
||||||
|
|||||||
@@ -52,6 +52,18 @@ const EditJobPopOut = ({
|
|||||||
}) => {
|
}) => {
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
|
|
||||||
|
const [taskImage, setTaskImage] = useState('')
|
||||||
|
|
||||||
|
const changeTaskImage = (e) => {
|
||||||
|
if (e.target.value !== "") {
|
||||||
|
const imgReader = new FileReader();
|
||||||
|
imgReader.onload = (event) => {
|
||||||
|
setTaskImage(event.target.result);
|
||||||
|
};
|
||||||
|
imgReader.readAsDataURL(e.target.files[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let [requestStatus, setRequestStatus] = useState({
|
let [requestStatus, setRequestStatus] = useState({
|
||||||
loading: false,
|
loading: false,
|
||||||
status: false,
|
status: false,
|
||||||
@@ -138,7 +150,7 @@ const EditJobPopOut = ({
|
|||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className="logout-modal-body w-full flex flex-col items-center px-10 py-8">
|
<div className="logout-modal-body w-full flex flex-col items-center px-10 pb-8 pt-2">
|
||||||
<Formik
|
<Formik
|
||||||
initialValues={initialValues}
|
initialValues={initialValues}
|
||||||
validationSchema={validationSchema}
|
validationSchema={validationSchema}
|
||||||
@@ -279,43 +291,67 @@ const EditJobPopOut = ({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="w-full flex items-center gap-2 mb-2">
|
||||||
<div className="field w-full mb-6">
|
{/* FOR TASK IMAGE */}
|
||||||
<div
|
<div className="w-1/2 relative max-h-[130px] min-h-[130px]">
|
||||||
className={`flex items-center justify-between mb-2.5`}
|
<input
|
||||||
>
|
id="task_image"
|
||||||
<label
|
className="hidden"
|
||||||
className="input-label text-[#181c32] dark:text-white text-[13.975px] leading-[20.9625px] font-semibold block"
|
type="file"
|
||||||
htmlFor="timeline_days"
|
accept="image/*"
|
||||||
>
|
onChange={changeTaskImage}
|
||||||
Timeline
|
/>
|
||||||
<span className="text-green-700 text-sm tracking-wide">
|
{taskImage ?
|
||||||
- Expected duration of this task
|
<div className="w-full absolute -top-5">
|
||||||
</span>
|
<img src={taskImage} className="max-h-[150px] min-h-[150px] w-full object-cover" alt="uplaoded task image" />
|
||||||
|
<span onClick={()=>setTaskImage('')} className="p-2 absolute text-sm top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-white/20 hover:bg-white/70 hover:shadow-md transition-all duration-500 cursor-pointer text-slate-800">Remove Image</span>
|
||||||
|
</div>
|
||||||
|
:
|
||||||
|
<label
|
||||||
|
className="absolute -top-5 h-[150px] w-full flex flex-col justify-center items-center bg-slate-100 dark:bg-[#11131F] cursor-pointer input-label text-[#181c32] dark:text-white text-[13.975px] leading-[20.9625px] font-semibold" htmlFor='task_image'>
|
||||||
|
Select Task Image
|
||||||
</label>
|
</label>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
|
{/* END OF TASK IMAGE */}
|
||||||
|
|
||||||
<Field
|
<div className="field w-1/2">
|
||||||
component="select"
|
<div
|
||||||
name="timeline_days"
|
className={`flex items-center justify-between`}
|
||||||
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 ${
|
>
|
||||||
props.errors.timeline_days &&
|
<label
|
||||||
props.touched.timeline_days
|
className="w-full input-label text-[#181c32] dark:text-white text-[13.975px] leading-[20.9625px] font-semibold flex flex-col"
|
||||||
? "border-[#ff0a0a63] shadow-red-500 border-[0.5px] animate-shake"
|
htmlFor="timeline_days"
|
||||||
: "border border-[#f5f8fa] dark:border-[#5e6278]"
|
|
||||||
}`}
|
|
||||||
value={props.values.timeline_days}
|
|
||||||
>
|
|
||||||
<option value="">Select Duration</option>
|
|
||||||
{publicArray.map(({ name, duration }, idx) => (
|
|
||||||
<option
|
|
||||||
className="text-slate-500 text-lg"
|
|
||||||
value={duration}
|
|
||||||
>
|
>
|
||||||
{name}
|
Timeline -
|
||||||
</option>
|
<span className="w-full text-center text-green-700 text-sm tracking-wide">
|
||||||
))}
|
Expected duration of this task
|
||||||
</Field>
|
</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Field
|
||||||
|
component="select"
|
||||||
|
name="timeline_days"
|
||||||
|
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 ${
|
||||||
|
props.errors.timeline_days &&
|
||||||
|
props.touched.timeline_days
|
||||||
|
? "border-[#ff0a0a63] shadow-red-500 border-[0.5px] animate-shake"
|
||||||
|
: "border border-[#f5f8fa] dark:border-[#5e6278]"
|
||||||
|
}`}
|
||||||
|
value={props.values.timeline_days}
|
||||||
|
>
|
||||||
|
<option value="">Select Duration</option>
|
||||||
|
{publicArray.map(({ name, duration }, idx) => (
|
||||||
|
<option
|
||||||
|
className="text-slate-500 text-lg"
|
||||||
|
value={duration}
|
||||||
|
>
|
||||||
|
{name}
|
||||||
|
</option>
|
||||||
|
))}
|
||||||
|
</Field>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/* inputs ends here */}
|
{/* inputs ends here */}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ function PendingJobsPopout({ details, onClose, situation }) {
|
|||||||
const [pendingJobLoader, setPendingJobLoader] = useState({
|
const [pendingJobLoader, setPendingJobLoader] = useState({
|
||||||
extend: false,
|
extend: false,
|
||||||
offer: false,
|
offer: false,
|
||||||
|
cancel: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
let [requestMessage, setRequestMessage] = useState({
|
let [requestMessage, setRequestMessage] = useState({
|
||||||
@@ -81,6 +82,29 @@ function PendingJobsPopout({ details, onClose, situation }) {
|
|||||||
setRequestMessage({ status: false, message: "" });
|
setRequestMessage({ status: false, message: "" });
|
||||||
}, 3000);
|
}, 3000);
|
||||||
});
|
});
|
||||||
|
} else if (name == "cancel") {
|
||||||
|
// RUNS THIS IF JOB OFFER IS CANCELLED
|
||||||
|
reqData = { ...pendingData, reason: "cancel", offer_result: 3333 };
|
||||||
|
setPendingJobLoader({ cancel: true });
|
||||||
|
apiCall
|
||||||
|
.pendingCancelOffer(reqData)
|
||||||
|
.then((res) => {
|
||||||
|
setRequestMessage({ status: true, message: res.data.status });
|
||||||
|
setTimeout(() => {
|
||||||
|
setPendingJobLoader({ cancel: false });
|
||||||
|
setRequestMessage({ status: false, message: "" });
|
||||||
|
onClose();
|
||||||
|
dispatch(tableReload({ type: "PENDINGTABLE" }));
|
||||||
|
dispatch(tableReload({ type: "JOBTABLE" }));
|
||||||
|
}, 4000);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
setRequestMessage("Try Again");
|
||||||
|
setTimeout(() => {
|
||||||
|
setPendingJobLoader({ cancel: false });
|
||||||
|
setRequestMessage({ status: false, message: "" });
|
||||||
|
}, 3000);
|
||||||
|
});
|
||||||
} else return;
|
} else return;
|
||||||
// try {
|
// try {
|
||||||
// if (name === "extend") {
|
// if (name === "extend") {
|
||||||
@@ -274,9 +298,16 @@ function PendingJobsPopout({ details, onClose, situation }) {
|
|||||||
<div className="mt-10 md:mt-32 md:flex md:justify-center">
|
<div className="mt-10 md:mt-32 md:flex md:justify-center">
|
||||||
<button
|
<button
|
||||||
className="px-2 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white"
|
className="px-2 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white"
|
||||||
onClick={onClose}
|
onClick={handlePendingJobsBtn}
|
||||||
|
name="cancel"
|
||||||
>
|
>
|
||||||
Cancel Offer
|
{pendingJobLoader.cancel ? (
|
||||||
|
<div className="w-[96px] flex justify-center items-center h-full">
|
||||||
|
<LoadingSpinner size={5} color="sky-blue" />
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
"Cancel Offer"
|
||||||
|
)}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -19,6 +19,16 @@ class usersService {
|
|||||||
return this.postAuxEnd("/completesignuplink", reqData);
|
return this.postAuxEnd("/completesignuplink", reqData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assignJobTask(reqData) {
|
||||||
|
var postData = {
|
||||||
|
uid: localStorage.getItem("uid"),
|
||||||
|
member_id: localStorage.getItem("member_id"),
|
||||||
|
sessionid: localStorage.getItem("session_token"),
|
||||||
|
...reqData,
|
||||||
|
};
|
||||||
|
return this.postAuxEnd("/assigntask", postData);
|
||||||
|
}
|
||||||
|
|
||||||
// FUNCTION TO GET USER CURRENT TASK DUE TIME
|
// FUNCTION TO GET USER CURRENT TASK DUE TIME
|
||||||
getHomeDate() {
|
getHomeDate() {
|
||||||
var postData = {
|
var postData = {
|
||||||
@@ -30,12 +40,12 @@ class usersService {
|
|||||||
return this.postAuxEnd("/dashdata", postData);
|
return this.postAuxEnd("/dashdata", postData);
|
||||||
}
|
}
|
||||||
|
|
||||||
getRecentActivities(){
|
getRecentActivities() {
|
||||||
var postData = {
|
var postData = {
|
||||||
uid: localStorage.getItem("uid"),
|
uid: localStorage.getItem("uid"),
|
||||||
member_id: localStorage.getItem("member_id"),
|
member_id: localStorage.getItem("member_id"),
|
||||||
sessionid: localStorage.getItem("session_token"),
|
sessionid: localStorage.getItem("session_token"),
|
||||||
action: 11202
|
action: 11202,
|
||||||
};
|
};
|
||||||
return this.postAuxEnd("/recentactivities", postData);
|
return this.postAuxEnd("/recentactivities", postData);
|
||||||
}
|
}
|
||||||
@@ -368,7 +378,7 @@ class usersService {
|
|||||||
page: 0,
|
page: 0,
|
||||||
offset: 0,
|
offset: 0,
|
||||||
limit: 100,
|
limit: 100,
|
||||||
allstatus: 0
|
allstatus: 0,
|
||||||
};
|
};
|
||||||
return this.postAuxEnd("/activetaskslist", postData);
|
return this.postAuxEnd("/activetaskslist", postData);
|
||||||
}
|
}
|
||||||
@@ -598,7 +608,7 @@ class usersService {
|
|||||||
sessionid: localStorage.getItem("session_token"),
|
sessionid: localStorage.getItem("session_token"),
|
||||||
page: 0,
|
page: 0,
|
||||||
limit: 100,
|
limit: 100,
|
||||||
...reqdata
|
...reqdata,
|
||||||
};
|
};
|
||||||
return this.postAuxEnd("/familyupdate", postData);
|
return this.postAuxEnd("/familyupdate", postData);
|
||||||
}
|
}
|
||||||
@@ -782,6 +792,17 @@ class usersService {
|
|||||||
return this.postAuxEnd("/pendingjobsendtome", postData);
|
return this.postAuxEnd("/pendingjobsendtome", postData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pendingCancelOffer(reqData) {
|
||||||
|
var postData = {
|
||||||
|
uid: localStorage.getItem("uid"),
|
||||||
|
member_id: localStorage.getItem("member_id"),
|
||||||
|
sessionid: localStorage.getItem("session_token"),
|
||||||
|
action: 13043,
|
||||||
|
...reqData,
|
||||||
|
};
|
||||||
|
return this.postAuxEnd("/pendingjobcancel", postData);
|
||||||
|
}
|
||||||
|
|
||||||
// FUNCTION TO GET ACTIVE JOB MESSAGE LIST
|
// FUNCTION TO GET ACTIVE JOB MESSAGE LIST
|
||||||
activeJobMesList(reqData) {
|
activeJobMesList(reqData) {
|
||||||
var postData = {
|
var postData = {
|
||||||
@@ -1078,52 +1099,51 @@ class usersService {
|
|||||||
return this.postAuxEnd("/blogdata", postData);
|
return this.postAuxEnd("/blogdata", postData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FUNCTION TO CANCEL TASK OR SEND REMINDER BY FAMILY MEMBER
|
||||||
|
suggestStatus(reqData) {
|
||||||
|
var postData = {
|
||||||
|
uid: localStorage.getItem("uid"),
|
||||||
|
member_id: localStorage.getItem("member_id"),
|
||||||
|
sessionid: localStorage.getItem("session_token"),
|
||||||
|
action: 22026,
|
||||||
|
...reqData,
|
||||||
|
};
|
||||||
|
return this.postAuxEnd("/suggeststatus", postData);
|
||||||
|
}
|
||||||
|
|
||||||
// FUNCTION TO CANCEL TASK OR SEND REMINDER BY FAMILY MEMBER
|
// FUNCTION TO GET FAMILY WALLET
|
||||||
suggestStatus(reqData) {
|
getFamilyWallet(reqData) {
|
||||||
var postData = {
|
var postData = {
|
||||||
uid: localStorage.getItem("uid"),
|
uid: localStorage.getItem("uid"),
|
||||||
member_id: localStorage.getItem("member_id"),
|
member_id: localStorage.getItem("member_id"),
|
||||||
sessionid: localStorage.getItem("session_token"),
|
sessionid: localStorage.getItem("session_token"),
|
||||||
action: 22026,
|
action: 22012,
|
||||||
...reqData,
|
...reqData,
|
||||||
};
|
};
|
||||||
return this.postAuxEnd("/suggeststatus", postData);
|
return this.postAuxEnd("/familywallet", postData);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION TO GET FAMILY WALLET
|
// FUNCTION TO START FAMILY TRANSFER
|
||||||
getFamilyWallet(reqData) {
|
familyTransferStart(reqData) {
|
||||||
var postData = {
|
var postData = {
|
||||||
uid: localStorage.getItem("uid"),
|
uid: localStorage.getItem("uid"),
|
||||||
member_id: localStorage.getItem("member_id"),
|
member_id: localStorage.getItem("member_id"),
|
||||||
sessionid: localStorage.getItem("session_token"),
|
sessionid: localStorage.getItem("session_token"),
|
||||||
action: 22012,
|
...reqData,
|
||||||
...reqData,
|
};
|
||||||
};
|
return this.postAuxEnd("/familytransferstart", postData);
|
||||||
return this.postAuxEnd("/familywallet", postData);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// FUNCTION TO START FAMILY TRANSFER
|
|
||||||
familyTransferStart(reqData) {
|
|
||||||
var postData = {
|
|
||||||
uid: localStorage.getItem("uid"),
|
|
||||||
member_id: localStorage.getItem("member_id"),
|
|
||||||
sessionid: localStorage.getItem("session_token"),
|
|
||||||
...reqData,
|
|
||||||
};
|
|
||||||
return this.postAuxEnd("/familytransferstart", postData);
|
|
||||||
}
|
|
||||||
|
|
||||||
// FUNCTION TO PERFORM FAMILY TRANSFER
|
// FUNCTION TO PERFORM FAMILY TRANSFER
|
||||||
familyTransfer(reqData) {
|
familyTransfer(reqData) {
|
||||||
var postData = {
|
var postData = {
|
||||||
uid: localStorage.getItem("uid"),
|
uid: localStorage.getItem("uid"),
|
||||||
member_id: localStorage.getItem("member_id"),
|
member_id: localStorage.getItem("member_id"),
|
||||||
sessionid: localStorage.getItem("session_token"),
|
sessionid: localStorage.getItem("session_token"),
|
||||||
...reqData,
|
...reqData,
|
||||||
};
|
};
|
||||||
return this.postAuxEnd("/familytransfer", postData);
|
return this.postAuxEnd("/familytransfer", postData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
- 20:27:30.118 FLOG_MAX [757411]: REQ_STRING(username)
|
- 20:27:30.118 FLOG_MAX [757411]: REQ_STRING(username)
|
||||||
@@ -1237,9 +1257,9 @@ class usersService {
|
|||||||
console.log(response);
|
console.log(response);
|
||||||
// res = response;
|
// res = response;
|
||||||
console.log("~~~~~~~ Toks2 POST ~~~~~~~~");
|
console.log("~~~~~~~ Toks2 POST ~~~~~~~~");
|
||||||
if(response.data.internal_return == '-9999'){
|
if (response.data.internal_return == "-9999") {
|
||||||
localStorage.clear()
|
localStorage.clear();
|
||||||
window.location.href=`/login?sessionExpired=true`
|
window.location.href = `/login?sessionExpired=true`;
|
||||||
}
|
}
|
||||||
return response;
|
return response;
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import React from 'react'
|
||||||
|
|
||||||
|
import Lnd from '../components/Lnd/Lnd'
|
||||||
|
|
||||||
|
function LndPage() {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Lnd />
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default LndPage
|
||||||
@@ -22,7 +22,7 @@ export default function MyPendingJobsPage() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getMyJobList();
|
getMyJobList();
|
||||||
}, [pendingListTable]);
|
}, [pendingListTable]);
|
||||||
|
|
||||||
// debugger;
|
// debugger;
|
||||||
|
|||||||
Reference in New Issue
Block a user