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