fix initial request for node stats

This commit is contained in:
fmtabbara
2022-06-13 11:49:18 +01:00
parent 0b0cbe3181
commit 98e0e1fc4e
2 changed files with 15 additions and 19 deletions
+4 -1
View File
@@ -16,12 +16,15 @@ export const Settings = () => {
const [selectedTab, setSelectedTab] = useState(0);
const { mixnodeDetails, showSettings, getBondDetails, handleShowSettings } = useContext(AppContext);
const { status, saturation, rewardEstimation, inclusionProbability } = useSettingsState(showSettings);
const { status, saturation, rewardEstimation, inclusionProbability, updateAllMixnodeStats } = useSettingsState();
const handleTabChange = (_: React.SyntheticEvent, newTab: number) => setSelectedTab(newTab);
useEffect(() => {
getBondDetails();
if (mixnodeDetails) {
updateAllMixnodeStats(mixnodeDetails.mix_node.identity_key);
}
}, [showSettings, selectedTab]);
return showSettings ? (
@@ -1,10 +1,9 @@
import { useContext, useEffect, useState } from 'react';
import { useState } from 'react';
import { useSnackbar } from 'notistack';
import { InclusionProbabilityResponse, MixnodeStatus } from '@nymproject/types';
import { AppContext } from '../../context/main';
import { getInclusionProbability, getMixnodeStakeSaturation, getMixnodeStatus } from '../../requests';
export const useSettingsState = (shouldUpdate: boolean) => {
export const useSettingsState = () => {
const [status, setStatus] = useState<MixnodeStatus>('not_found');
const [saturation, setSaturation] = useState<number>(0);
const [rewardEstimation, setRewardEstimation] = useState<number>(0);
@@ -13,8 +12,6 @@ export const useSettingsState = (shouldUpdate: boolean) => {
in_reserve: 'Low',
});
const { mixnodeDetails } = useContext(AppContext);
const { enqueueSnackbar } = useSnackbar();
const getStatus = async (mixnodeKey: string) => {
@@ -45,26 +42,22 @@ export const useSettingsState = (shouldUpdate: boolean) => {
setInclusionProbability({ in_active: 'Low', in_reserve: 'Low' });
};
useEffect(() => {
if (shouldUpdate && mixnodeDetails?.mix_node.identity_key) {
(async () => {
try {
await getStatus(mixnodeDetails?.mix_node.identity_key);
await getStakeSaturation(mixnodeDetails?.mix_node.identity_key);
await getMixnodeInclusionProbability(mixnodeDetails?.mix_node.identity_key);
} catch (e) {
enqueueSnackbar(e as string, { variant: 'error', preventDuplicate: true });
}
})();
} else {
const updateAllMixnodeStats = async (mixnodeId: string) => {
try {
await getStatus(mixnodeId);
await getStakeSaturation(mixnodeId);
await getMixnodeInclusionProbability(mixnodeId);
} catch (e) {
enqueueSnackbar(e as string, { variant: 'error', preventDuplicate: true });
reset();
}
}, [shouldUpdate]);
};
return {
status,
saturation,
rewardEstimation,
inclusionProbability,
updateAllMixnodeStats,
};
};