Skip to content

Commit 9d8198f

Browse files
committed
fix(winnings): select all behaviour
Signed-off-by: Rakib Ansary <rakibansary@topcoder.com>
1 parent 896f60c commit 9d8198f

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

src/apps/wallet/src/home/tabs/winnings/WinningsTab.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ const ListView: FC<ListViewProps> = (props: ListViewProps) => {
269269
setPagination({
270270
...pagination,
271271
currentPage: 1,
272+
pageSize: 10,
272273
})
273274
setFilters({})
274275
setSelectedPayments({})

src/apps/wallet/src/lib/components/payments-table/PaymentTable.tsx

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,20 @@ const PaymentsTable: React.FC<PaymentTableProps> = (props: PaymentTableProps) =>
3030
}
3131
}, [props.selectedPayments])
3232

33-
const isSomeSelected = Object.keys(selectedPayments).length > 0
33+
useEffect(() => {
34+
setToggleClicked(false)
35+
}, [props.currentPage])
36+
37+
useEffect(() => {
38+
const selectablePayments = props.payments.filter(payment => payment.canBeReleased)
39+
40+
if (selectablePayments.length === 0) {
41+
setToggleClicked(false)
42+
} else {
43+
const areAllSelectablePaymentsSelected = selectablePayments.every(payment => selectedPayments[payment.id])
44+
setToggleClicked(areAllSelectablePaymentsSelected)
45+
}
46+
}, [props.payments, selectedPayments])
3447

3548
const togglePaymentSelection = (paymentId: string) => {
3649
const newSelections = { ...selectedPayments }
@@ -48,18 +61,23 @@ const PaymentsTable: React.FC<PaymentTableProps> = (props: PaymentTableProps) =>
4861
}
4962

5063
const toggleAllPayments = () => {
51-
const newSelections: { [paymentId: string]: Winning } = {}
52-
if (!toggleClicked && !isSomeSelected) {
53-
props.payments.forEach(payment => {
54-
if (payment.canBeReleased) {
55-
newSelections[payment.id] = payment
56-
}
64+
const newSelections = { ...selectedPayments }
65+
const selectablePayments = props.payments.filter(payment => payment.canBeReleased)
66+
const areAllSelectablePaymentsSelected = selectablePayments.every(payment => selectedPayments[payment.id])
67+
68+
if (areAllSelectablePaymentsSelected) {
69+
selectablePayments.forEach(payment => {
70+
delete newSelections[payment.id]
71+
})
72+
} else {
73+
selectablePayments.forEach(payment => {
74+
newSelections[payment.id] = payment
5775
})
5876
}
5977

60-
setToggleClicked(!toggleClicked)
6178
setSelectedPayments(newSelections)
6279
props.onSelectedPaymentsChange?.(newSelections)
80+
setToggleClicked(!areAllSelectablePaymentsSelected)
6381
}
6482

6583
const calculateTotal = () => Object.values(selectedPayments)

0 commit comments

Comments
 (0)