Skip to content

Commit 01ca142

Browse files
Separated async store setup on page load
1 parent 524baa5 commit 01ca142

10 files changed

Lines changed: 270 additions & 253 deletions

File tree

apps/frontend/src/components/cln/BTCTransactionsList/BTCTransactionsList.tsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import { useDispatch, useSelector } from 'react-redux';
1717
import { selectFiatConfig, selectFiatUnit, selectIsAuthenticated, selectIsDarkMode, selectUIConfigUnit } from '../../../store/rootSelectors';
1818
import { selectListBitcoinTransactions } from '../../../store/clnSelectors';
1919
import { CLNService } from '../../../services/http.service';
20-
import { convertArrayToBTCTransactionsObj } from '../../../services/data-transform.service';
2120
import { setListBitcoinTransactions, setListBitcoinTransactionsLoading } from '../../../store/clnSlice';
2221
import { ListBitcoinTransactions } from '../../../types/cln.type';
2322

@@ -189,26 +188,18 @@ export const BTCTransactionsList = () => {
189188
try {
190189
const offset = page * SCROLL_PAGE_SIZE;
191190
const listBtcTransactionsRes: any = await CLNService.listBTCTransactions(offset);
192-
193191
if (listBtcTransactionsRes.error) {
194192
dispatch(setListBitcoinTransactions({
195193
error: listBtcTransactionsRes.error
196194
} as ListBitcoinTransactions));
197195
return;
198196
}
199-
200-
const latestBtcTransactions = convertArrayToBTCTransactionsObj(listBtcTransactionsRes.rows);
201-
202-
setExpanded(prev => [...prev, ...new Array(latestBtcTransactions.length).fill(false)]);
203-
197+
setExpanded(prev => [...prev, ...new Array(listBtcTransactionsRes.btcTransactions.length).fill(false)]);
204198
dispatch(setListBitcoinTransactions({
205-
btcTransactions: latestBtcTransactions,
199+
...listBtcTransactionsRes,
206200
page: page + 1,
207-
hasMore: latestBtcTransactions.length >= SCROLL_PAGE_SIZE,
208-
isLoading: false,
209-
error: undefined
201+
hasMore: listBtcTransactionsRes.btcTransactions.length >= SCROLL_PAGE_SIZE,
210202
} as ListBitcoinTransactions));
211-
212203
} catch (error: any) {
213204
dispatch(setListBitcoinTransactions({
214205
error: error.message || 'Failed to load transactions'

apps/frontend/src/components/cln/BTCWallet/BTCWallet.tsx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import { RefreshSVG } from '../../../svgs/Refresh';
1313
import { resetListBitcoinTransactions, setListBitcoinTransactions, setListBitcoinTransactionsLoading } from '../../../store/clnSlice';
1414
import { CLNService } from '../../../services/http.service';
1515
import { ListBitcoinTransactions } from '../../../types/cln.type';
16-
import { convertArrayToBTCTransactionsObj } from '../../../services/data-transform.service';
1716
import { SCROLL_PAGE_SIZE } from '../../../utilities/constants';
1817

1918
const BTCWallet = (props) => {
@@ -27,21 +26,16 @@ const BTCWallet = (props) => {
2726
try {
2827
const offset = 0;
2928
const listBtcTransactionsRes: any = await CLNService.listBTCTransactions(offset);
30-
3129
if (listBtcTransactionsRes.error) {
3230
dispatch(setListBitcoinTransactions({
3331
error: listBtcTransactionsRes.error
3432
} as ListBitcoinTransactions));
3533
return;
3634
}
37-
38-
const latestBtcTransactions = convertArrayToBTCTransactionsObj(listBtcTransactionsRes.rows);
3935
dispatch(setListBitcoinTransactions({
40-
btcTransactions: latestBtcTransactions,
36+
...listBtcTransactionsRes,
4137
page: 1,
42-
hasMore: latestBtcTransactions.length >= SCROLL_PAGE_SIZE,
43-
isLoading: false,
44-
error: undefined
38+
hasMore: listBtcTransactionsRes.btcTransactions.length >= SCROLL_PAGE_SIZE,
4539
} as ListBitcoinTransactions));
4640
} catch (error: any) {
4741
dispatch(setListBitcoinTransactions({

apps/frontend/src/components/cln/CLNOffersList/CLNOffersList.tsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import { selectListOffers } from '../../../store/clnSelectors';
1414
import { selectIsAuthenticated, selectIsDarkMode } from '../../../store/rootSelectors';
1515
import { ListOffers } from '../../../types/cln.type';
1616
import { setListOffers, setListOffersLoading } from '../../../store/clnSlice';
17-
import { convertArrayToOffersObj } from '../../../services/data-transform.service';
1817
import { CLNService } from '../../../services/http.service';
1918

2019
const OfferHeader = ({ offer }) => {
@@ -111,26 +110,18 @@ export const CLNOffersList = () => {
111110
try {
112111
const offset = page * SCROLL_PAGE_SIZE;
113112
const listOffersRes: any = await CLNService.listOffers(offset);
114-
115113
if (listOffersRes.error) {
116114
dispatch(setListOffers({
117115
error: listOffersRes.error
118116
} as ListOffers));
119117
return;
120118
}
121-
122-
const latestOffers = convertArrayToOffersObj(listOffersRes.rows);
123-
124-
setExpanded(prev => [...prev, ...new Array(latestOffers.length).fill(false)]);
125-
119+
setExpanded(prev => [...prev, ...new Array(listOffersRes.offers.length).fill(false)]);
126120
dispatch(setListOffers({
127-
offers: latestOffers,
121+
...listOffersRes,
128122
page: page + 1,
129-
hasMore: latestOffers.length >= SCROLL_PAGE_SIZE,
130-
isLoading: false,
131-
error: undefined
123+
hasMore: listOffersRes.offers.length >= SCROLL_PAGE_SIZE,
132124
} as ListOffers));
133-
134125
} catch (error: any) {
135126
dispatch(setListOffers({
136127
error: error.message || 'Failed to load offers'

apps/frontend/src/components/cln/CLNTransactionsList/CLNTransactionsList.tsx

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import { selectListLightningTransactions } from '../../../store/clnSelectors';
1818
import { setListLightningTransactions, setListLightningTransactionsLoading } from '../../../store/clnSlice';
1919
import { CLNService } from '../../../services/http.service';
2020
import { ListLightningTransactions } from '../../../types/cln.type';
21-
import { convertArrayToLightningTransactionsObj } from '../../../services/data-transform.service';
2221

2322
const PaymentHeader = ({ payment }) => {
2423
const fiatUnit = useSelector(selectFiatUnit);
@@ -223,26 +222,18 @@ export const CLNTransactionsList = () => {
223222
try {
224223
const offset = page * SCROLL_PAGE_SIZE;
225224
const listClnTransactionsRes: any = await CLNService.listLightningTransactions(offset);
226-
227225
if (listClnTransactionsRes.error) {
228226
dispatch(setListLightningTransactions({
229227
error: listClnTransactionsRes.error
230228
} as ListLightningTransactions));
231229
return;
232230
}
233-
234-
const latestClnTransactions = convertArrayToLightningTransactionsObj(listClnTransactionsRes.rows);
235-
236-
setExpanded(prev => [...prev, ...new Array(latestClnTransactions.length).fill(false)]);
237-
238-
dispatch(setListLightningTransactions({
239-
clnTransactions: latestClnTransactions,
231+
setExpanded(prev => [...prev, ...new Array(listClnTransactionsRes.clnTransactions?.length).fill(false)]);
232+
dispatch(setListLightningTransactions({
233+
...listClnTransactionsRes,
240234
page: page + 1,
241-
hasMore: latestClnTransactions.length >= SCROLL_PAGE_SIZE,
242-
isLoading: false,
243-
error: undefined
235+
hasMore: listClnTransactionsRes.clnTransactions?.length >= SCROLL_PAGE_SIZE, // Could be greater also due to unique_timestamps aggregation
244236
} as ListLightningTransactions));
245-
246237
} catch (error: any) {
247238
dispatch(setListLightningTransactions({
248239
error: error.message || 'Failed to load transactions'

apps/frontend/src/components/cln/CLNWallet/CLNWallet.tsx

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { RefreshSVG } from '../../../svgs/Refresh';
1616
import { resetListLightningTransactions, resetListOffers, setListLightningTransactions, setListLightningTransactionsLoading, setListOffers, setListOffersLoading } from '../../../store/clnSlice';
1717
import { CLNService } from '../../../services/http.service';
1818
import { ListLightningTransactions, ListOffers } from '../../../types/cln.type';
19-
import { convertArrayToLightningTransactionsObj, convertArrayToOffersObj } from '../../../services/data-transform.service';
2019

2120
const CLNWallet = (props) => {
2221
const dispatch = useDispatch();
@@ -25,31 +24,24 @@ const CLNWallet = (props) => {
2524
const [selectedTab, setSelectedTab] = useState('transactions');
2625

2726
const refreshHandler = async (calledBy) => {
28-
console.warn(calledBy);
2927
if(calledBy === 'OFFERS') {
3028
dispatch(setListOffersLoading(true));
3129
dispatch(resetListOffers());
3230

3331
try {
3432
const offset = 0;
3533
const listOffersRes: any = await CLNService.listOffers(offset);
36-
3734
if (listOffersRes.error) {
3835
dispatch(setListOffers({
3936
error: listOffersRes.error
4037
} as ListOffers));
4138
return;
4239
}
43-
44-
const latestOffers = convertArrayToOffersObj(listOffersRes.rows);
4540
dispatch(setListOffers({
46-
offers: latestOffers,
41+
...listOffersRes,
4742
page: 1,
48-
hasMore: latestOffers.length >= SCROLL_PAGE_SIZE,
49-
isLoading: false,
50-
error: undefined
43+
hasMore: listOffersRes.offers.length >= SCROLL_PAGE_SIZE,
5144
} as ListOffers));
52-
5345
} catch (error: any) {
5446
dispatch(setListOffers({
5547
error: error.message || 'Failed to load offers'
@@ -63,21 +55,16 @@ const CLNWallet = (props) => {
6355
try {
6456
const offset = 0;
6557
const listClnTransactionsRes: any = await CLNService.listLightningTransactions(offset);
66-
6758
if (listClnTransactionsRes.error) {
6859
dispatch(setListLightningTransactions({
6960
error: listClnTransactionsRes.error
7061
} as ListLightningTransactions));
7162
return;
7263
}
73-
74-
const latestClnTransactions = convertArrayToLightningTransactionsObj(listClnTransactionsRes.rows);
75-
dispatch(setListLightningTransactions({
76-
clnTransactions: latestClnTransactions,
64+
dispatch(setListLightningTransactions({
65+
...listClnTransactionsRes,
7766
page: 1,
78-
hasMore: latestClnTransactions.length >= SCROLL_PAGE_SIZE,
79-
isLoading: false,
80-
error: undefined
67+
hasMore: listClnTransactionsRes.clnTransactions?.length >= SCROLL_PAGE_SIZE, // Could be greater also due to unique_timestamps aggregation
8168
} as ListLightningTransactions));
8269
} catch (error: any) {
8370
dispatch(setListLightningTransactions({

apps/frontend/src/routes/dataLoader.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@ import { AppState } from "../store/store.type";
66
export async function rootLoader({}: LoaderFunctionArgs) {
77
const state = appStore.getState() as AppState;
88
if (state.root.authStatus.isAuthenticated) {
9-
const [connectwalletData, rootData] = await Promise.all([
10-
RootService.getConnectWallet(),
11-
RootService.fetchRootData()
12-
]);
13-
return { ...rootData, connectWallet: connectwalletData };
9+
const rootData = await RootService.fetchRootData();
10+
const refreshData = await RootService.refreshData();
11+
return [rootData, refreshData];
1412
}
15-
return null
13+
return null;
1614
}
1715

1816
export async function clnLoader({}: LoaderFunctionArgs) {

apps/frontend/src/routes/router.config.tsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import { Loading } from '../components/ui/Loading/Loading';
44
import AccountEventsRoot from '../components/bookkeeper/AccountEvents/AccountEventsRoot';
55
import SatsFlowRoot from '../components/bookkeeper/SatsFlow/SatsFlowRoot';
66
import VolumeRoot from '../components/bookkeeper/Volume/VolumeRoot';
7-
import { bkprLoader, clnLoader, rootLoader } from './dataLoader';
8-
import { RootRouterReduxSync, CLNRouterReduxSync, BKPRRouterReduxSync } from './routerReduxSync';
7+
import { rootLoader } from './dataLoader';
8+
import { RootRouterReduxSync } from './routerReduxSync';
99

1010
const App = lazy(() => import('../components/App/App'));
1111
const CLNHome = lazy(() => import('../components/cln/CLNHome/CLNHome'));
@@ -28,20 +28,16 @@ export const rootRouteConfig = [
2828
element: (
2929
<Suspense fallback={<Loading />}>
3030
<CLNHome />
31-
<CLNRouterReduxSync />
3231
</Suspense>
3332
),
34-
loader: clnLoader,
3533
},
3634
{
3735
path: 'bookkeeper',
3836
element: (
3937
<Suspense fallback={<Loading />}>
4038
<Bookkeeper />
41-
<BKPRRouterReduxSync />
4239
</Suspense>
4340
),
44-
loader: bkprLoader,
4541
children: [
4642
{
4743
path: 'accountevents',

0 commit comments

Comments
 (0)