mirror of
https://github.com/Qortal/Qortal-Hub.git
synced 2025-06-24 16:31:21 +00:00
Refactor function, add type
This commit is contained in:
parent
ec851a8b2c
commit
4d181d8da8
@ -51,8 +51,14 @@ import {
|
|||||||
levelUpDays,
|
levelUpDays,
|
||||||
mintingStatus,
|
mintingStatus,
|
||||||
countMintersInLevel,
|
countMintersInLevel,
|
||||||
|
currentTier,
|
||||||
} from './MintingStats.tsx';
|
} from './MintingStats.tsx';
|
||||||
|
|
||||||
|
export type AddressLevelEntry = {
|
||||||
|
level: number;
|
||||||
|
count: number;
|
||||||
|
};
|
||||||
|
|
||||||
export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||||
const setTxList = useSetAtom(txListAtom);
|
const setTxList = useSetAtom(txListAtom);
|
||||||
const [groups] = useAtom(memberGroupsAtom);
|
const [groups] = useAtom(memberGroupsAtom);
|
||||||
@ -63,7 +69,7 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
const [rewardShares, setRewardShares] = useState([]);
|
const [rewardShares, setRewardShares] = useState([]);
|
||||||
const [adminInfo, setAdminInfo] = useState({});
|
const [adminInfo, setAdminInfo] = useState({});
|
||||||
const [nodeStatus, setNodeStatus] = useState({});
|
const [nodeStatus, setNodeStatus] = useState({});
|
||||||
const [addressLevel, setAddressLevel] = useState({});
|
const [addressLevel, setAddressLevel] = useState<AddressLevelEntry[]>([]);
|
||||||
const [tier4Online, setTier4Online] = useState(0);
|
const [tier4Online, setTier4Online] = useState(0);
|
||||||
const [openSnack, setOpenSnack] = useState(false);
|
const [openSnack, setOpenSnack] = useState(false);
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
@ -240,20 +246,23 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
}
|
}
|
||||||
}, [nodeStatus]);
|
}, [nodeStatus]);
|
||||||
|
|
||||||
const getAddressLevel = useCallback(async () => {
|
const getAddressLevel = async () => {
|
||||||
try {
|
try {
|
||||||
const url = `${getBaseApiReact()}/addresses/online/levels`;
|
const url = `${getBaseApiReact()}/addresses/online/levels`;
|
||||||
const response = await fetch(url);
|
const response = await fetch(url);
|
||||||
const data = await response.json();
|
const data: AddressLevelEntry[] = await response.json();
|
||||||
|
if (Array.isArray(data)) {
|
||||||
setAddressLevel(data);
|
setAddressLevel(data);
|
||||||
setTier4Online(
|
const level7 = data.find((entry) => entry.level === 7)?.count || 0;
|
||||||
parseFloat(data.addressLevel[7].count) +
|
const level8 = data.find((entry) => entry.level === 8)?.count || 0;
|
||||||
parseFloat(data.addressLevel[8].count)
|
const tier4Count =
|
||||||
);
|
parseFloat(level7.toString()) + parseFloat(level8.toString());
|
||||||
|
setTier4Online(tier4Count);
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Request failed', error);
|
console.error('Request failed', error);
|
||||||
}
|
}
|
||||||
}, []);
|
};
|
||||||
|
|
||||||
const getRewardShares = useCallback(async (address) => {
|
const getRewardShares = useCallback(async (address) => {
|
||||||
try {
|
try {
|
||||||
@ -669,7 +678,11 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
|
|
||||||
<StatCard
|
<StatCard
|
||||||
label="Avg. Created QORT Per Day"
|
label="Avg. Created QORT Per Day"
|
||||||
value="3558.48 QORT"
|
value={dayReward(
|
||||||
|
adminInfo,
|
||||||
|
nodeHeightBlock,
|
||||||
|
nodeStatus
|
||||||
|
).toFixed(2)}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Paper>
|
</Paper>
|
||||||
@ -730,29 +743,24 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
<Grid container spacing={2}>
|
<Grid container spacing={2}>
|
||||||
<StatCard
|
<StatCard
|
||||||
label="Current Tier"
|
label="Current Tier"
|
||||||
value="Tier 2 (Level 3 + 4)"
|
value={currentTier(accountInfo?.level) || ''}
|
||||||
/>
|
/>
|
||||||
<StatCard
|
<StatCard
|
||||||
label="Total Minters in The Tier"
|
label="Total Minters in The Tier"
|
||||||
value={countMintersInLevel(
|
value={
|
||||||
|
countMintersInLevel(
|
||||||
accountInfo?.level,
|
accountInfo?.level,
|
||||||
addressLevel,
|
addressLevel,
|
||||||
tier4Online
|
tier4Online
|
||||||
)?.toFixed(0)}
|
)?.toFixed(0) || ''
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<StatCard label="Tier Share Per Block" value="13%" />
|
<StatCard label="Tier Share Per Block" value="13%" />
|
||||||
<StatCard
|
<StatCard
|
||||||
label="Est. Reward Per Block"
|
label="Est. Reward Per Block"
|
||||||
value="0.00506494 QORT"
|
value="0.00506494 QORT"
|
||||||
/>
|
/>
|
||||||
<StatCard
|
<StatCard label="Est. Reward Per Day" value="pollo" />
|
||||||
label="Est. Reward Per Day"
|
|
||||||
value={dayReward(
|
|
||||||
adminInfo,
|
|
||||||
nodeHeightBlock,
|
|
||||||
nodeStatus
|
|
||||||
).toFixed(2)}
|
|
||||||
/>
|
|
||||||
{/* <StatCard label="AdminInfo" value={adminInfo} /> */}
|
{/* <StatCard label="AdminInfo" value={adminInfo} /> */}
|
||||||
</Grid>
|
</Grid>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import i18n from '../../i18n/i18n';
|
import i18n from '../../i18n/i18n';
|
||||||
|
import { AddressLevelEntry } from './Minting';
|
||||||
|
|
||||||
const accountTargetBlocks = (level: number): number | undefined => {
|
const accountTargetBlocks = (level: number): number | undefined => {
|
||||||
if (level === 0) {
|
if (level === 0) {
|
||||||
@ -82,18 +83,18 @@ export const blockReward = (nodeStatus): number => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const currentTier = (accountInfo): string | undefined => {
|
export const currentTier = (level): string | undefined => {
|
||||||
if (accountInfo.level === 0) {
|
if (level === 0) {
|
||||||
return 'Tier 0 (Level 0)';
|
return 'Tier 0 (Level 0)';
|
||||||
} else if (accountInfo.level === 1 || accountInfo.level === 2) {
|
} else if (level === 1 || level === 2) {
|
||||||
return 'Tier 1 (Level 1 + 2)';
|
return 'Tier 1 (Level 1 + 2)';
|
||||||
} else if (accountInfo.level === 3 || accountInfo.level === 4) {
|
} else if (level === 3 || level === 4) {
|
||||||
return 'Tier 2 (Level 3 + 4)';
|
return 'Tier 2 (Level 3 + 4)';
|
||||||
} else if (accountInfo.level === 5 || accountInfo.level === 6) {
|
} else if (level === 5 || level === 6) {
|
||||||
return 'Tier 3 (Level 5 + 6)';
|
return 'Tier 3 (Level 5 + 6)';
|
||||||
} else if (accountInfo.level === 7 || accountInfo.level === 8) {
|
} else if (level === 7 || level === 8) {
|
||||||
return 'Tier 4 (Level 7 + 8)';
|
return 'Tier 4 (Level 7 + 8)';
|
||||||
} else if (accountInfo.level === 9 || accountInfo.level === 10) {
|
} else if (level === 9 || level === 10) {
|
||||||
return 'Tier 5 (Level 9 + 10)';
|
return 'Tier 5 (Level 9 + 10)';
|
||||||
} else {
|
} else {
|
||||||
return undefined; // fallback: should never reach this point
|
return undefined; // fallback: should never reach this point
|
||||||
@ -140,87 +141,56 @@ export const tierPercent = (accountInfo, tier4Online): number | undefined => {
|
|||||||
} else if (accountInfo.level === 10) {
|
} else if (accountInfo.level === 10) {
|
||||||
return 32;
|
return 32;
|
||||||
} else {
|
} else {
|
||||||
return undefined;
|
return undefined; // fallback: should never reach this point
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const countMintersInLevel = (
|
export const countMintersInLevel = (
|
||||||
level,
|
level: number,
|
||||||
addressLevel,
|
addressLevel: AddressLevelEntry[],
|
||||||
tier4Online
|
tier4Online: number
|
||||||
): number => {
|
): number | undefined => {
|
||||||
|
if (addressLevel && addressLevel.length > 0) {
|
||||||
if (level === 0) {
|
if (level === 0) {
|
||||||
const countTier0 = addressLevel[0].count;
|
const countTier0 = addressLevel[0].count;
|
||||||
return countTier0;
|
return countTier0;
|
||||||
} else if (level === 1) {
|
} else if (level === 1 || level === 2) {
|
||||||
const countTier10 = addressLevel[1].count + addressLevel[2].count;
|
const countTier1 = addressLevel[1].count + addressLevel[2].count;
|
||||||
return countTier10;
|
return countTier1;
|
||||||
} else if (level === 2) {
|
} else if (level === 3 || level === 4) {
|
||||||
const countTier11 = addressLevel[1].count + addressLevel[2].count;
|
const countTier2 = addressLevel[3].count + addressLevel[4].count;
|
||||||
return countTier11;
|
return countTier2;
|
||||||
} else if (level === 3) {
|
} else if (level === 5 || level === 6) {
|
||||||
const countTier20 = addressLevel[3].count + addressLevel[4].count;
|
|
||||||
return countTier20;
|
|
||||||
} else if (level === 4) {
|
|
||||||
const countTier21 = addressLevel[3].count + addressLevel[4].count;
|
|
||||||
return countTier21;
|
|
||||||
} else if (level === 5) {
|
|
||||||
if (tier4Online < 30) {
|
if (tier4Online < 30) {
|
||||||
const countTier30 =
|
const countTier3 =
|
||||||
addressLevel[5].count +
|
addressLevel[5].count +
|
||||||
addressLevel[6].count +
|
addressLevel[6].count +
|
||||||
addressLevel[7].count +
|
addressLevel[7].count +
|
||||||
addressLevel[8].count;
|
addressLevel[8].count;
|
||||||
return countTier30;
|
return countTier3;
|
||||||
} else {
|
} else {
|
||||||
const countTier30 = addressLevel[5].count + addressLevel[6].count;
|
const countTier3 = addressLevel[5].count + addressLevel[6].count;
|
||||||
return countTier30;
|
return countTier3;
|
||||||
}
|
}
|
||||||
} else if (level === 6) {
|
} else if (level === 7 || level === 8) {
|
||||||
if (tier4Online < 30) {
|
if (tier4Online < 30) {
|
||||||
const countTier31 =
|
const countTier4 =
|
||||||
addressLevel[5].count +
|
addressLevel[5].count +
|
||||||
addressLevel[6].count +
|
addressLevel[6].count +
|
||||||
addressLevel[7].count +
|
addressLevel[7].count +
|
||||||
addressLevel[8].count;
|
addressLevel[8].count;
|
||||||
return countTier31;
|
return countTier4;
|
||||||
} else {
|
} else {
|
||||||
const countTier31 = addressLevel[5].count + addressLevel[6].count;
|
const countTier4 = addressLevel[7].count + addressLevel[8].count;
|
||||||
return countTier31;
|
return countTier4;
|
||||||
}
|
}
|
||||||
} else if (level === 7) {
|
} else if (level === 9 || level === 10) {
|
||||||
if (tier4Online < 30) {
|
const countTier5 = addressLevel[9].count + addressLevel[10].count;
|
||||||
const countTier40 =
|
return countTier5;
|
||||||
addressLevel[5].count +
|
|
||||||
addressLevel[6].count +
|
|
||||||
addressLevel[7].count +
|
|
||||||
addressLevel[8].count;
|
|
||||||
return countTier40;
|
|
||||||
} else {
|
|
||||||
const countTier40 = addressLevel[7].count + addressLevel[8].count;
|
|
||||||
return countTier40;
|
|
||||||
}
|
}
|
||||||
} else if (level === 8) {
|
|
||||||
if (tier4Online < 30) {
|
|
||||||
const countTier40 =
|
|
||||||
addressLevel[5].count +
|
|
||||||
addressLevel[6].count +
|
|
||||||
addressLevel[7].count +
|
|
||||||
addressLevel[8].count;
|
|
||||||
return countTier40;
|
|
||||||
} else {
|
|
||||||
const countTier41 = addressLevel[7].count + addressLevel[8].count;
|
|
||||||
return countTier41;
|
|
||||||
}
|
|
||||||
} else if (level === 9) {
|
|
||||||
const countTier50 = addressLevel[9].count + addressLevel[10].count;
|
|
||||||
return countTier50;
|
|
||||||
} else if (level === 10) {
|
|
||||||
const countTier51 = addressLevel[9].count + addressLevel[10].count;
|
|
||||||
return countTier51;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0; // should never reach this point
|
return undefined; // fallback: should never reach this point
|
||||||
};
|
};
|
||||||
|
|
||||||
// _countReward() {
|
// _countReward() {
|
||||||
|
@ -92,7 +92,7 @@
|
|||||||
"seedphrase_notice": "È stato generato una <seed>SEED PHRASE</seed> in background.",
|
"seedphrase_notice": "È stato generato una <seed>SEED PHRASE</seed> in background.",
|
||||||
"turn_local_node": "si prega di attivare il nodo locale",
|
"turn_local_node": "si prega di attivare il nodo locale",
|
||||||
"type_seed": "digita o incolla la seed phrase",
|
"type_seed": "digita o incolla la seed phrase",
|
||||||
"your_accounts": "i tuoi conti salvati"
|
"your_accounts": "i tuoi account salvati"
|
||||||
},
|
},
|
||||||
"success": {
|
"success": {
|
||||||
"reencrypted_secret_key": "chiave segreta recriptata con successo. Potrebbero essere necessari un paio di minuti per propagare le modifiche. Aggiorna il gruppo fra 5 minuti."
|
"reencrypted_secret_key": "chiave segreta recriptata con successo. Potrebbero essere necessari un paio di minuti per propagare le modifiche. Aggiorna il gruppo fra 5 minuti."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user