Skip to content

Commit 2425ed5

Browse files
committed
Base api call and storage for /signers/tickers in explorer
1 parent 1a62870 commit 2425ed5

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

mithril-explorer/src/app/page.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import SnapshotsList from '../components/Artifacts/SnapshotsList';
1111
import MithrilStakeDistributionsList from "../components/Artifacts/MithrilStakeDistributionsList";
1212
import {aggregatorSearchParam} from "../constants";
1313
import {selectAggregator, selectedAggregator as currentlySelectedAggregator} from "../store/settingsSlice";
14+
import {updatePoolsForAggregator} from "../store/poolsSlice";
1415

1516
// Disable SSR for the following components since they use data from the store that are not
1617
// available server sides (because those data can be read from the local storage).
@@ -26,6 +27,7 @@ export default function Explorer() {
2627
const [isUpdatingAggregatorInUrl, setIsUpdatingAggregatorInUrl] = useState(false);
2728
const selectedAggregator = useSelector(currentlySelectedAggregator);
2829

30+
2931
// Update the aggregator in the url query
3032
useEffect(() => {
3133
const aggregatorInUrl = searchParams.get(aggregatorSearchParam);
@@ -37,6 +39,8 @@ export default function Explorer() {
3739
setIsUpdatingAggregatorInUrl(true);
3840
router.push("?" + params.toString(), undefined, {shallow: true});
3941
}
42+
43+
dispatch(updatePoolsForAggregator(selectedAggregator));
4044
}, [selectedAggregator]);
4145

4246
// Allow navigation to work (previous, next)
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import {createAsyncThunk, createSlice} from "@reduxjs/toolkit";
2+
import {selectedAggregator} from "./settingsSlice";
3+
4+
export const poolsSlice = createSlice({
5+
name: 'pools',
6+
initialState: {},
7+
reducers: {},
8+
extraReducers: builder => builder.addCase(updatePoolsForAggregator.fulfilled, (state, action) => {
9+
state[action.payload.aggregator] = {
10+
date: action.payload.date,
11+
network: action.payload.network,
12+
pools: action.payload.pools,
13+
};
14+
})
15+
});
16+
17+
export const updatePoolsForAggregator = createAsyncThunk('pools/updateForAggregator', aggregator => {
18+
return fetch(`${aggregator}/signers/tickers`)
19+
.then(response => response.status === 200 ? response.json() : {})
20+
.then(data => {
21+
return {
22+
aggregator: aggregator,
23+
date: Date.now(),
24+
network: data.network,
25+
pools: data.signers,
26+
};
27+
});
28+
});
29+
30+
export default poolsSlice.reducer;

mithril-explorer/src/store/store.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {configureStore} from "@reduxjs/toolkit";
2+
import {poolsSlice} from "./poolsSlice";
23
import {initialState as settingsInitialState, settingsSlice} from "./settingsSlice";
34
import default_available_aggregators from "../aggregators-list";
45
import {checkUrl} from "../utils";
@@ -65,6 +66,7 @@ export function initStoreFromLocalStorage(initialAggregator) {
6566
export const storeBuilder = (initialAggregator) => configureStore({
6667
reducer: {
6768
settings: settingsSlice.reducer,
69+
pools: poolsSlice.reducer,
6870
},
6971
preloadedState: initStoreFromLocalStorage(initialAggregator),
7072
});

0 commit comments

Comments
 (0)