refactor: separate filter for LSPS1 and LSPS7

This commit is contained in:
Shubham Kumar
2025-11-12 17:26:20 +05:30
parent 7e6c3319b3
commit 3646dec0c8
4 changed files with 120 additions and 37 deletions
+1 -1
View File
@@ -1199,7 +1199,7 @@
"views.ActivityFilter.swapState.successful": "Successful",
"views.ActivityFilter.swapState.failed": "Failed",
"views.ActivityFilter.swapState.refunded": "Refunded",
"views.ActivityFilter.lsps1OrderState.completed": "Completed",
"views.ActivityFilter.lsps1State.completed": "Completed",
"views.ActivityToCsv.title": "Download Activity",
"views.ActivityToCsv.csvDownloaded": "CSV file has been downloaded",
"views.ActivityToCsv.csvDownloadFailed": "Failed to download CSV file",
+31 -10
View File
@@ -31,6 +31,7 @@ export interface Filter {
sent: boolean;
swaps: boolean;
lsps1: boolean;
lsps7: boolean;
received: boolean;
unpaid: boolean;
inTransit: boolean;
@@ -49,7 +50,12 @@ export interface Filter {
failed: boolean;
refunded: boolean;
};
lsps1OrderState: {
lsps1State: {
CREATED: boolean;
COMPLETED: boolean;
FAILED: boolean;
};
lsps7State: {
CREATED: boolean;
COMPLETED: boolean;
FAILED: boolean;
@@ -63,6 +69,7 @@ export const DEFAULT_FILTERS = {
sent: true,
swaps: true,
lsps1: true,
lsps7: true,
received: true,
unpaid: true,
inTransit: false,
@@ -83,7 +90,12 @@ export const DEFAULT_FILTERS = {
failed: true,
refunded: true
},
lsps1OrderState: {
lsps1State: {
CREATED: true,
COMPLETED: true,
FAILED: true
},
lsps7State: {
CREATED: true,
COMPLETED: true,
FAILED: true
@@ -134,6 +146,7 @@ export default class ActivityStore {
cashu: true,
swaps: true,
lsps1: true,
lsps7: true,
sent: false,
received: true,
unpaid: false,
@@ -148,7 +161,8 @@ export default class ActivityStore {
endDate: undefined,
memo: '',
swapState: { ...DEFAULT_FILTERS.swapState },
lsps1OrderState: { ...DEFAULT_FILTERS.lsps1OrderState }
lsps1State: { ...DEFAULT_FILTERS.lsps1State },
lsps7State: { ...DEFAULT_FILTERS.lsps7State }
};
await Storage.setItem(ACTIVITY_FILTERS_KEY, this.filters);
};
@@ -225,7 +239,6 @@ export default class ActivityStore {
if (res.service === 'LSPS7') {
const payment = orderData?.payment;
console.log(payment);
const fee =
payment?.bolt11?.order_total_sat ||
payment?.fee_total_sat ||
@@ -361,9 +374,13 @@ export default class ActivityStore {
...DEFAULT_FILTERS.swapState,
...(parsedFilters.swapState || {})
},
lsps1OrderState: {
...DEFAULT_FILTERS.lsps1OrderState,
...(parsedFilters.lsps1OrderState || {})
lsps1State: {
...DEFAULT_FILTERS.lsps1State,
...(parsedFilters.lsps1State || {})
},
lsps7State: {
...DEFAULT_FILTERS.lsps7State,
...(parsedFilters.lsps7State || {})
}
};
} else {
@@ -386,9 +403,13 @@ export default class ActivityStore {
...DEFAULT_FILTERS.swapState,
...filters.swapState
},
lsps1OrderState: {
...DEFAULT_FILTERS.lsps1OrderState,
...filters.lsps1OrderState
lsps1State: {
...DEFAULT_FILTERS.lsps1State,
...filters.lsps1State
},
lsps7State: {
...DEFAULT_FILTERS.lsps7State,
...filters.lsps7State
}
};
this.filteredActivity = ActivityFilterUtils.filterActivities(
+23 -11
View File
@@ -82,25 +82,37 @@ class ActivityFilterUtils {
if (filter.lsps1 == false) {
filteredActivity = filteredActivity.filter(
(activity) =>
activity.model !== 'LSPS1Order' &&
activity.model !== 'LSPS7Order'
(activity) => activity.model !== 'LSPS1Order'
);
} else {
filteredActivity = filteredActivity.filter((activity) => {
if (
activity.model !== 'LSPS1Order' &&
activity.model !== 'LSPS7Order'
)
return true;
if (activity.model !== 'LSPS1Order') return true;
const state = activity.state;
if (filter.lsps1OrderState.CREATED && state === 'CREATED')
if (filter.lsps1State.CREATED && state === 'CREATED')
return true;
if (filter.lsps1OrderState.COMPLETED && state === 'COMPLETED')
if (filter.lsps1State.COMPLETED && state === 'COMPLETED')
return true;
if (filter.lsps1OrderState.FAILED && state === 'FAILED')
if (filter.lsps1State.FAILED && state === 'FAILED') return true;
return false;
});
}
if (filter.lsps7 === false) {
filteredActivity = filteredActivity.filter(
(activity) => activity.model !== 'LSPS7Order'
);
} else {
filteredActivity = filteredActivity.filter((activity) => {
if (activity.model !== 'LSPS7Order') return true;
const state = activity.state;
if (filter.lsps7State.CREATED && state === 'CREATED')
return true;
if (filter.lsps7State.COMPLETED && state === 'COMPLETED')
return true;
if (filter.lsps7State.FAILED && state === 'FAILED') return true;
return false;
});
+65 -15
View File
@@ -46,6 +46,7 @@ interface ActivityFilterState {
services: boolean;
swaps: boolean;
lsps1: boolean;
lsps7: boolean;
};
}
@@ -63,7 +64,8 @@ export default class ActivityFilter extends React.Component<
expandedSections: {
services: false,
swaps: false,
lsps1: false
lsps1: false,
lsps7: false
}
};
@@ -75,15 +77,23 @@ export default class ActivityFilter extends React.Component<
const newFilters = JSON.parse(JSON.stringify(filters));
if (path === 'services') {
const isTurningOn = !(filters.swaps || filters.lsps1);
const isTurningOn = !(
filters.swaps ||
filters.lsps1 ||
filters.lsps7
);
newFilters.swaps = isTurningOn;
newFilters.lsps1 = isTurningOn;
newFilters.lsps7 = isTurningOn;
Object.keys(newFilters.swapState).forEach((key) => {
(newFilters.swapState as any)[key] = isTurningOn;
});
Object.keys(newFilters.lsps1OrderState).forEach((key) => {
(newFilters.lsps1OrderState as any)[key] = isTurningOn;
Object.keys(newFilters.lsps1State).forEach((key) => {
(newFilters.lsps1State as any)[key] = isTurningOn;
});
Object.keys(newFilters.lsps7State).forEach((key) => {
(newFilters.lsps7State as any)[key] = isTurningOn;
});
if (!isTurningOn) {
@@ -91,7 +101,8 @@ export default class ActivityFilter extends React.Component<
expandedSections: {
...prevState.expandedSections,
swaps: false,
lsps1: false
lsps1: false,
lsps7: false
}
}));
}
@@ -102,14 +113,16 @@ export default class ActivityFilter extends React.Component<
if (isTurningOn) {
if (parent === 'swapState') newFilters.swaps = true;
if (parent === 'lsps1OrderState') newFilters.lsps1 = true;
if (parent === 'lsps1State') newFilters.lsps1 = true;
if (parent === 'lsps7State') newFilters.lsps7 = true;
} else {
const allChildrenOff = Object.values(newFilters[parent]).every(
(item) => item === false
);
if (allChildrenOff) {
if (parent === 'swapState') newFilters.swaps = false;
if (parent === 'lsps1OrderState') newFilters.lsps1 = false;
if (parent === 'lsps1State') newFilters.lsps1 = false;
if (parent === 'lsps7State') newFilters.lsps7 = false;
}
}
} else {
@@ -123,8 +136,13 @@ export default class ActivityFilter extends React.Component<
});
}
if (key === 'lsps1') {
Object.keys(newFilters.lsps1OrderState).forEach((key) => {
(newFilters.lsps1OrderState as any)[key] = isTurningOn;
Object.keys(newFilters.lsps1State).forEach((key) => {
(newFilters.lsps1State as any)[key] = isTurningOn;
});
}
if (key === 'lsps7') {
Object.keys(newFilters.lsps7State).forEach((key) => {
(newFilters.lsps7State as any)[key] = isTurningOn;
});
}
}
@@ -178,6 +196,7 @@ export default class ActivityFilter extends React.Component<
cashu,
swaps,
lsps1,
lsps7,
sent,
received,
unpaid,
@@ -346,7 +365,7 @@ export default class ActivityFilter extends React.Component<
]
},
{
label: localeString('views.LSPS1.lsps1Orders'),
label: localeString('views.LSPS1.type'),
value: lsps1,
var: 'lsps1',
section: 'lsps1',
@@ -355,21 +374,50 @@ export default class ActivityFilter extends React.Component<
label: localeString(
'views.ActivityFilter.swapState.created'
),
var: ['lsps1OrderState', 'CREATED'],
var: ['lsps1State', 'CREATED'],
type: 'Toggle'
},
{
label: localeString(
'views.ActivityFilter.lsps1OrderState.completed'
'views.ActivityFilter.lsps1State.completed'
),
var: ['lsps1OrderState', 'COMPLETED'],
var: ['lsps1State', 'COMPLETED'],
type: 'Toggle'
},
{
label: localeString(
'views.ActivityFilter.swapState.failed'
),
var: ['lsps1OrderState', 'FAILED'],
var: ['lsps1State', 'FAILED'],
type: 'Toggle'
}
]
},
{
label: localeString('views.LSPS7.type'),
value: lsps7,
var: 'lsps7',
section: 'lsps7',
children: [
{
label: localeString(
'views.ActivityFilter.swapState.created'
),
var: ['lsps7State', 'CREATED'],
type: 'Toggle'
},
{
label: localeString(
'views.ActivityFilter.lsps1State.completed'
),
var: ['lsps7State', 'COMPLETED'],
type: 'Toggle'
},
{
label: localeString(
'views.ActivityFilter.swapState.failed'
),
var: ['lsps7State', 'FAILED'],
type: 'Toggle'
}
]
@@ -567,7 +615,9 @@ export default class ActivityFilter extends React.Component<
</ListItem.Title>
</ListItem.Content>
<Switch
value={swaps || lsps1}
value={
swaps || lsps1 || lsps7
}
onValueChange={() =>
this.handleToggle(
'services'