Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 60ed9e7bcf | |||
| e5fa6544a5 |
@@ -1,4 +1,4 @@
|
|||||||
import React, {useEffect, useState} from 'react'
|
import React, {memo, useCallback, useEffect, useState} from 'react'
|
||||||
import Image from '../../assets/images/taskbanners/default.jpg'
|
import Image from '../../assets/images/taskbanners/default.jpg'
|
||||||
|
|
||||||
import usersService from '../../services/UsersService';
|
import usersService from '../../services/UsersService';
|
||||||
@@ -9,8 +9,8 @@ import LoadingSpinner from '../Spinners/LoadingSpinner';
|
|||||||
|
|
||||||
import { AmountTo2DP } from '../Helpers/PriceFormatter';
|
import { AmountTo2DP } from '../Helpers/PriceFormatter';
|
||||||
|
|
||||||
function RewardsTable() {
|
|
||||||
|
|
||||||
|
export const RewardsTable = memo(() => {
|
||||||
const apiCall = new usersService()
|
const apiCall = new usersService()
|
||||||
|
|
||||||
let [familyRewardHistory, setFamilyRewardHistory] = useState({ // FOR PURCHASE HISTORY
|
let [familyRewardHistory, setFamilyRewardHistory] = useState({ // FOR PURCHASE HISTORY
|
||||||
@@ -30,7 +30,7 @@ function RewardsTable() {
|
|||||||
|
|
||||||
|
|
||||||
//FUNCTION TO GET FAMILY REWARD HISTORY
|
//FUNCTION TO GET FAMILY REWARD HISTORY
|
||||||
const getFamilyRewardHistory = ()=>{
|
const getFamilyRewardHistory = useCallback(()=>{
|
||||||
apiCall.getFamilyRewardHx().then((res)=>{
|
apiCall.getFamilyRewardHx().then((res)=>{
|
||||||
if(res.data.internal_return < 0){ // success but no data
|
if(res.data.internal_return < 0){ // success but no data
|
||||||
setFamilyRewardHistory(prev => ({...prev, loading: false}))
|
setFamilyRewardHistory(prev => ({...prev, loading: false}))
|
||||||
@@ -40,7 +40,7 @@ function RewardsTable() {
|
|||||||
}).catch((error)=>{
|
}).catch((error)=>{
|
||||||
setFamilyRewardHistory(prev => ({...prev, loading: false, error: true}))
|
setFamilyRewardHistory(prev => ({...prev, loading: false, error: true}))
|
||||||
})
|
})
|
||||||
}
|
},[])
|
||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
getFamilyRewardHistory()
|
getFamilyRewardHistory()
|
||||||
@@ -99,5 +99,5 @@ function RewardsTable() {
|
|||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
)
|
||||||
export default RewardsTable
|
export default RewardsTable
|
||||||
@@ -13,11 +13,15 @@ import LoadingSpinner from "../Spinners/LoadingSpinner";
|
|||||||
import RewardsTable from "./RewardsTable";
|
import RewardsTable from "./RewardsTable";
|
||||||
import JobsCompleted from "./JobsCompleted";
|
import JobsCompleted from "./JobsCompleted";
|
||||||
|
|
||||||
|
import TabButton from "../customTabs/TabButton";
|
||||||
|
|
||||||
export default function History() {
|
export default function History() {
|
||||||
|
|
||||||
const apiCall = new usersService()
|
const apiCall = new usersService()
|
||||||
|
|
||||||
let [tab, setTab] = useState("purchases"); //STATE FOR SWITCHING BETWEEN TABS
|
let [tab, setTab] = useState("purchases"); //STATE FOR SWITCHING BETWEEN TABS
|
||||||
|
const [selectedTab, setSelectedTab] = useState("purchases");
|
||||||
|
const tabs = ["purchases", "recent activity", "rewards", 'jobs completed'] //STATE FOR SWITCHING BETWEEN TABS
|
||||||
|
|
||||||
let [paymentHistory, setPaymentHistory] = useState({ // FOR PAYMENT HISTORY
|
let [paymentHistory, setPaymentHistory] = useState({ // FOR PAYMENT HISTORY
|
||||||
loading: true,
|
loading: true,
|
||||||
@@ -222,7 +226,18 @@ export default function History() {
|
|||||||
{/* <TopHxBox className="mb-11" /> */}
|
{/* <TopHxBox className="mb-11" /> */}
|
||||||
<div className='w-full p-4 md:p-8 bg-white dark:bg-dark-white rounded-2xl shadow bottomMargin'>
|
<div className='w-full p-4 md:p-8 bg-white dark:bg-dark-white rounded-2xl shadow bottomMargin'>
|
||||||
{/* switch button */}
|
{/* switch button */}
|
||||||
<div className="pl-7 my-2 flex items-center border-b border-slate-300 gap-3">
|
<div className="grid grid-cols-4 mt-4">
|
||||||
|
{tabs.map((item) => (
|
||||||
|
<TabButton
|
||||||
|
key={item}
|
||||||
|
item={item}
|
||||||
|
selectedTab={selectedTab}
|
||||||
|
setSelectedTab={setSelectedTab}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
{/* switch button */}
|
||||||
|
{/* <div className="pl-7 my-2 flex items-center border-b border-slate-300 gap-3">
|
||||||
<button
|
<button
|
||||||
name="purchases"
|
name="purchases"
|
||||||
onClick={(e) => setTab(e.target.name)}
|
onClick={(e) => setTab(e.target.name)}
|
||||||
@@ -259,12 +274,12 @@ export default function History() {
|
|||||||
>
|
>
|
||||||
Jobs Completed
|
Jobs Completed
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div> */}
|
||||||
{/* END OF switch button */}
|
{/* END OF switch button */}
|
||||||
<div className="history-tables w-full">
|
<div className="history-tables w-full bg-red-50 overflow-x-auto">
|
||||||
{/* PURCHASE SECTION */}
|
{/* PURCHASE SECTION */}
|
||||||
{tab == 'purchases' &&
|
{selectedTab == 'purchases' &&
|
||||||
<div className="wallet w-full border-t">
|
<div className="wallet w-full">
|
||||||
{/* <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' height='h-[500px]' />
|
<LoadingSpinner size='16' color='sky-blue' height='h-[500px]' />
|
||||||
@@ -276,8 +291,8 @@ export default function History() {
|
|||||||
{/* END OF PURCHASE SECTION */}
|
{/* END OF PURCHASE SECTION */}
|
||||||
|
|
||||||
{/* RECENT ACTIVITY SECTION */}
|
{/* RECENT ACTIVITY SECTION */}
|
||||||
{tab == 'recent' &&
|
{selectedTab == 'recent activity' &&
|
||||||
<div className="wallet w-full border-t">
|
<div className="wallet w-full">
|
||||||
{/* <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 ?
|
||||||
@@ -290,16 +305,16 @@ export default function History() {
|
|||||||
{/* END OF RECENT ACTIVITY SECTION */}
|
{/* END OF RECENT ACTIVITY SECTION */}
|
||||||
|
|
||||||
{/* REWARD SECTION */}
|
{/* REWARD SECTION */}
|
||||||
{tab == 'reward' &&
|
{selectedTab == 'rewards' &&
|
||||||
<div className="wallet w-full border-t">
|
<div className="wallet w-full">
|
||||||
<RewardsTable />
|
<RewardsTable />
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
{/* END OF REWARD SECTION */}
|
{/* END OF REWARD SECTION */}
|
||||||
|
|
||||||
{/* JOBS COMPLETED SECTION */}
|
{/* JOBS COMPLETED SECTION */}
|
||||||
{tab == 'jobs_completed' &&
|
{selectedTab == 'jobs completed' &&
|
||||||
<div className="wallet w-full border-t">
|
<div className="wallet w-full">
|
||||||
<JobsCompleted />
|
<JobsCompleted />
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ function RecentActivityTable({ payment }) {
|
|||||||
<thead className="border-b-2">
|
<thead className="border-b-2">
|
||||||
<tr className="text-slate-600">
|
<tr className="text-slate-600">
|
||||||
<th className="p-2">Date</th>
|
<th className="p-2">Date</th>
|
||||||
<th className="p-4">Trx.</th>
|
<th className="p-2">Trx.</th>
|
||||||
<th className="p-2">Amnt./Fee</th>
|
<th className="p-2">Amnt./Fee</th>
|
||||||
<th className="p-2">Status</th>
|
<th className="p-2">Status</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ export default function RightSideBar({ myJobList }) {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="right-sidebar-wrapper overflow-y-scroll overflow-style-none 2xl:fixed h-full 2xl:pb-96">
|
<div className="right-sidebar-wrapper overflow-y-scroll overflow-style-none 2xl:fixed h-full 2xl:pb-96">
|
||||||
<div className="top-platform bg-white dark:bg-dark-white rounded-2xl p-8 2xl:w-[268px] w-full 2xl:mb-6 2xl:border-none border ">
|
<div className="top-platform bg-white dark:bg-dark-white rounded-2xl p-8 w-full 2xl:mb-6 2xl:border-none border ">
|
||||||
{/* heading */}
|
{/* heading */}
|
||||||
<div className="heading flex justify-between items-center mb-3.5">
|
<div className="heading flex justify-between items-center mb-3.5">
|
||||||
<h3 className="text-xl font-bold text-dark-gray dark:text-white">
|
<h3 className="text-xl font-bold text-dark-gray dark:text-white">
|
||||||
@@ -280,7 +280,7 @@ export default function RightSideBar({ myJobList }) {
|
|||||||
{/*JOB LINKS*/}
|
{/*JOB LINKS*/}
|
||||||
{userDetails?.account_type !== "FAMILY" &&
|
{userDetails?.account_type !== "FAMILY" &&
|
||||||
myJobList?.data?.result_list?.length > 0 && (
|
myJobList?.data?.result_list?.length > 0 && (
|
||||||
<div className="top-platform mt-6 bg-white dark:bg-dark-white rounded-2xl py-8 2xl:w-[268px] w-full 2xl:mb-10 2xl:border-none border ">
|
<div className="top-platform mt-6 bg-white dark:bg-dark-white rounded-2xl py-8 w-full 2xl:mb-10 2xl:border-none border ">
|
||||||
{/* heading */}
|
{/* heading */}
|
||||||
<div className="px-8 heading flex justify-between items-center mb-3.5">
|
<div className="px-8 heading flex justify-between items-center mb-3.5">
|
||||||
<h3 className="text-xl font-bold text-dark-gray dark:text-white">
|
<h3 className="text-xl font-bold text-dark-gray dark:text-white">
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
import React from 'react'
|
||||||
|
|
||||||
|
export default function TabButton({ item='', selectedTab='', setSelectedTab=()=>{} }) {
|
||||||
|
return (
|
||||||
|
<button
|
||||||
|
className={`px-4 py-1 rounded-t-2xl border-t-[2px] transition-all duration-200 flex flex-col justify-center items-center ${
|
||||||
|
selectedTab === item
|
||||||
|
? "bg-red-50 dark:bg-[#D85A5A] text-slate-600 font-extrabold"
|
||||||
|
: "bg-white text-[#000]"
|
||||||
|
}`}
|
||||||
|
value={item}
|
||||||
|
name={item}
|
||||||
|
onClick={() => setSelectedTab(item)}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className={`mb-[1px] h-6 w-6 border-4 rounded-full transition-all duration-200 ${
|
||||||
|
selectedTab === item
|
||||||
|
? "border-white bg-emerald-500"
|
||||||
|
: "border-red-50 dark:border-[#D85A5A] bg-white"
|
||||||
|
}`}
|
||||||
|
></div>
|
||||||
|
{item[0].toUpperCase() + item.slice(1)}
|
||||||
|
</button>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user