mirror of
https://github.com/Qortal/Qortal-Hub.git
synced 2025-05-15 22:26:58 +00:00
Add minting translations
This commit is contained in:
parent
452c3a0894
commit
9adddce9fc
@ -27,6 +27,7 @@ import { FidgetSpinner } from 'react-loader-spinner';
|
||||
import { useModal } from '../../common/useModal';
|
||||
import { useAtom, useSetAtom } from 'jotai';
|
||||
import { memberGroupsAtom, txListAtom } from '../../atoms/global';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
const setTxList = useSetAtom(txListAtom);
|
||||
@ -44,7 +45,7 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
const { show: showKey, message } = useModal();
|
||||
const { isShow: isShowNext, onOk, show: showNext } = useModal();
|
||||
const theme = useTheme();
|
||||
|
||||
const { t } = useTranslation(['core', 'auth', 'group']);
|
||||
const [info, setInfo] = useState(null);
|
||||
const [names, setNames] = useState({});
|
||||
const [accountInfos, setAccountInfos] = useState({});
|
||||
@ -223,13 +224,21 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
rej({ message: response.error });
|
||||
})
|
||||
.catch((error) => {
|
||||
rej({ message: error.message || 'An error occurred' });
|
||||
rej({
|
||||
message:
|
||||
error.message ||
|
||||
t('core:message.error.generic', { postProcess: 'capitalize' }),
|
||||
});
|
||||
});
|
||||
});
|
||||
} catch (error) {
|
||||
setInfo({
|
||||
type: 'error',
|
||||
message: error?.message || 'Unable to add minting account',
|
||||
message:
|
||||
error?.message ||
|
||||
t('core:message.error.minting_account_add', {
|
||||
postProcess: 'capitalize',
|
||||
}),
|
||||
});
|
||||
setOpenSnack(true);
|
||||
} finally {
|
||||
@ -263,13 +272,21 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
rej({ message: response.error });
|
||||
})
|
||||
.catch((error) => {
|
||||
rej({ message: error.message || 'An error occurred' });
|
||||
rej({
|
||||
message:
|
||||
error.message ||
|
||||
t('core:message.error.generic', { postProcess: 'capitalize' }),
|
||||
});
|
||||
});
|
||||
});
|
||||
} catch (error) {
|
||||
setInfo({
|
||||
type: 'error',
|
||||
message: error?.message || 'Unable to remove minting account',
|
||||
message:
|
||||
error?.message ||
|
||||
t('core:message.error.minting_account_remove', {
|
||||
postProcess: 'capitalize',
|
||||
}),
|
||||
});
|
||||
setOpenSnack(true);
|
||||
} finally {
|
||||
@ -278,9 +295,13 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
}, []);
|
||||
|
||||
const createRewardShare = useCallback(async (publicKey, recipient) => {
|
||||
const fee = await getFee('REWARD_SHARE'); // TODO translate
|
||||
const fee = await getFee('REWARD_SHARE');
|
||||
await show({
|
||||
message: 'Would you like to perform an REWARD_SHARE transaction?',
|
||||
message: t('group:question.perform_transaction', {
|
||||
// TODO move from group into core namespace
|
||||
action: 'REWARD_SHARE',
|
||||
postProcess: 'capitalize',
|
||||
}),
|
||||
publishFee: fee.fee + ' QORT',
|
||||
});
|
||||
return await new Promise((res, rej) => {
|
||||
@ -295,8 +316,12 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
recipient,
|
||||
...response,
|
||||
type: 'add-rewardShare',
|
||||
label: `Add rewardshare: awaiting confirmation`,
|
||||
labelDone: `Add rewardshare: success!`,
|
||||
label: t('group:message.success.rewardshare_add', {
|
||||
postProcess: 'capitalize',
|
||||
}),
|
||||
labelDone: t('group:message.success.rewardshare_add_label', {
|
||||
postProcess: 'capitalize',
|
||||
}),
|
||||
done: false,
|
||||
},
|
||||
...prev,
|
||||
@ -307,7 +332,11 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
rej({ message: response.error });
|
||||
})
|
||||
.catch((error) => {
|
||||
rej({ message: error.message || 'An error occurred' });
|
||||
rej({
|
||||
message:
|
||||
error.message ||
|
||||
t('core:message.error.generic', { postProcess: 'capitalize' }),
|
||||
});
|
||||
});
|
||||
});
|
||||
}, []);
|
||||
@ -326,7 +355,11 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
rej({ message: response.error });
|
||||
})
|
||||
.catch((error) => {
|
||||
rej({ message: error.message || 'An error occurred' });
|
||||
rej({
|
||||
message:
|
||||
error.message ||
|
||||
t('core:message.error.generic', { postProcess: 'capitalize' }),
|
||||
});
|
||||
});
|
||||
});
|
||||
}, []);
|
||||
@ -350,7 +383,9 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
await sleep(pollingInterval); // Wait before the next poll
|
||||
}
|
||||
|
||||
throw new Error('Timeout waiting for reward share confirmation');
|
||||
throw new Error(
|
||||
t('group:message.error.timeout_reward', { postProcess: 'capitalize' })
|
||||
);
|
||||
};
|
||||
|
||||
const startMinting = async () => {
|
||||
@ -382,7 +417,11 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
setShowWaitDialog(false);
|
||||
setInfo({
|
||||
type: 'error',
|
||||
message: error?.message || 'Unable to start minting',
|
||||
message:
|
||||
error?.message ||
|
||||
t('group:message.error.unable_minting', {
|
||||
postProcess: 'capitalize',
|
||||
}),
|
||||
});
|
||||
setOpenSnack(true);
|
||||
} finally {
|
||||
@ -420,8 +459,12 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
...rewardShare,
|
||||
...response,
|
||||
type: 'remove-rewardShare',
|
||||
label: `Remove rewardshare: awaiting confirmation`,
|
||||
labelDone: `Remove rewardshare: success!`,
|
||||
label: t('group:message.success.rewardshare_remove', {
|
||||
postProcess: 'capitalize',
|
||||
}),
|
||||
labelDone: t('group:message.success.rewardshare_remove_label', {
|
||||
postProcess: 'capitalize',
|
||||
}),
|
||||
done: false,
|
||||
},
|
||||
...prev,
|
||||
@ -431,59 +474,65 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
rej({ message: response.error });
|
||||
})
|
||||
.catch((error) => {
|
||||
rej({ message: error.message || 'An error occurred' });
|
||||
rej({
|
||||
message:
|
||||
error.message ||
|
||||
t('core:message.error.generic', { postProcess: 'capitalize' }),
|
||||
});
|
||||
});
|
||||
});
|
||||
}, []);
|
||||
|
||||
const handleRemoveRewardShare = async (rewardShare) => {
|
||||
try {
|
||||
setIsLoading(true);
|
||||
// TODO unused functions. Remove??
|
||||
|
||||
const privateRewardShare = await removeRewardShare(rewardShare);
|
||||
} catch (error) {
|
||||
setInfo({
|
||||
type: 'error',
|
||||
message: error?.message || 'Unable to remove reward share',
|
||||
});
|
||||
setOpenSnack(true);
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
};
|
||||
// const handleRemoveRewardShare = async (rewardShare) => {
|
||||
// try {
|
||||
// setIsLoading(true);
|
||||
|
||||
const createRewardShareForPotentialMinter = async (receiver) => {
|
||||
try {
|
||||
setIsLoading(true);
|
||||
const confirmReceiver = await getNameOrAddress(receiver);
|
||||
if (confirmReceiver.error)
|
||||
throw new Error('Invalid receiver address or name');
|
||||
const isInMinterGroup = await checkIfMinterGroup(confirmReceiver);
|
||||
if (!isInMinterGroup) throw new Error('Account not in Minter Group');
|
||||
const publicKey = await getPublicKeyFromAddress(confirmReceiver);
|
||||
const findRewardShare = rewardShares?.find(
|
||||
(item) =>
|
||||
item?.recipient === confirmReceiver &&
|
||||
item?.mintingAccount === myAddress
|
||||
);
|
||||
if (findRewardShare) {
|
||||
const privateRewardShare = await getRewardSharePrivateKey(publicKey);
|
||||
setRewardsharekey(privateRewardShare);
|
||||
} else {
|
||||
await createRewardShare(publicKey, confirmReceiver);
|
||||
const privateRewardShare = await getRewardSharePrivateKey(publicKey);
|
||||
setRewardsharekey(privateRewardShare);
|
||||
}
|
||||
} catch (error) {
|
||||
setInfo({
|
||||
type: 'error',
|
||||
message: error?.message || 'Unable to create reward share',
|
||||
});
|
||||
setOpenSnack(true);
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
};
|
||||
// const privateRewardShare = await removeRewardShare(rewardShare);
|
||||
// } catch (error) {
|
||||
// setInfo({
|
||||
// type: 'error',
|
||||
// message: error?.message || 'Unable to remove reward share',
|
||||
// });
|
||||
// setOpenSnack(true);
|
||||
// } finally {
|
||||
// setIsLoading(false);
|
||||
// }
|
||||
// };
|
||||
|
||||
// const createRewardShareForPotentialMinter = async (receiver) => {
|
||||
// try {
|
||||
// setIsLoading(true);
|
||||
// const confirmReceiver = await getNameOrAddress(receiver);
|
||||
// if (confirmReceiver.error)
|
||||
// throw new Error('Invalid receiver address or name');
|
||||
// const isInMinterGroup = await checkIfMinterGroup(confirmReceiver);
|
||||
// if (!isInMinterGroup) throw new Error('Account not in Minter Group');
|
||||
// const publicKey = await getPublicKeyFromAddress(confirmReceiver);
|
||||
// const findRewardShare = rewardShares?.find(
|
||||
// (item) =>
|
||||
// item?.recipient === confirmReceiver &&
|
||||
// item?.mintingAccount === myAddress
|
||||
// );
|
||||
// if (findRewardShare) {
|
||||
// const privateRewardShare = await getRewardSharePrivateKey(publicKey);
|
||||
// setRewardsharekey(privateRewardShare);
|
||||
// } else {
|
||||
// await createRewardShare(publicKey, confirmReceiver);
|
||||
// const privateRewardShare = await getRewardSharePrivateKey(publicKey);
|
||||
// setRewardsharekey(privateRewardShare);
|
||||
// }
|
||||
// } catch (error) {
|
||||
// setInfo({
|
||||
// type: 'error',
|
||||
// message: error?.message || 'Unable to create reward share',
|
||||
// });
|
||||
// setOpenSnack(true);
|
||||
// } finally {
|
||||
// setIsLoading(false);
|
||||
// }
|
||||
// };
|
||||
|
||||
useEffect(() => {
|
||||
getNodeInfos();
|
||||
@ -558,7 +607,12 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
},
|
||||
}}
|
||||
>
|
||||
<DialogTitle id="alert-dialog-title">{'Manage your minting'}</DialogTitle>
|
||||
<DialogTitle id="alert-dialog-title">
|
||||
{t('group:message.generic.manage_minting', {
|
||||
postProcess: 'capitalize',
|
||||
})}
|
||||
</DialogTitle>
|
||||
|
||||
<IconButton
|
||||
sx={{
|
||||
position: 'absolute',
|
||||
@ -604,7 +658,7 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
sx={{
|
||||
backgroundColor: theme.palette.background.default,
|
||||
padding: '10px',
|
||||
}}
|
||||
}} // TODO translate
|
||||
>
|
||||
<Typography>Account: {handleNames(accountInfo?.address)}</Typography>
|
||||
|
||||
@ -618,7 +672,9 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
This node is minting: {nodeInfos?.isMintingPossible?.toString()}
|
||||
</Typography>
|
||||
</Card>
|
||||
|
||||
<Spacer height="10px" />
|
||||
|
||||
{isPartOfMintingGroup && !accountIsMinting && (
|
||||
<Box
|
||||
sx={{
|
||||
@ -660,7 +716,9 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||
)}
|
||||
</Box>
|
||||
)}
|
||||
|
||||
<Spacer height="10px" />
|
||||
|
||||
{mintingAccounts?.length > 0 && (
|
||||
<Typography>Node's minting accounts</Typography>
|
||||
)}
|
||||
|
@ -67,6 +67,8 @@
|
||||
"error": {
|
||||
"generic": "an error occurred",
|
||||
"incorrect_password": "incorrect password",
|
||||
"minting_account_add": "unable to add minting account",
|
||||
"minting_account_remove": "unable to remove minting account",
|
||||
"missing_field": "missing: {{ field }}",
|
||||
"save_qdn": "unable to save to QDN"
|
||||
},
|
||||
|
@ -62,6 +62,7 @@
|
||||
"latest_promotion": "only the latest promotion from the week will be shown for your group.",
|
||||
"loading_members": "loading member list with names... please wait.",
|
||||
"max_chars": " Max 200 characters. Publish Fee",
|
||||
"manage_minting": "manage your minting",
|
||||
"no_display": "nothing to display",
|
||||
"no_selection": "no group selected",
|
||||
"not_part_group": "you are not part of the encrypted group of members. Wait until an admin re-encrypts the keys.",
|
||||
@ -80,7 +81,9 @@
|
||||
"group_secret_key": "cannot get group secret key",
|
||||
"name_required": "please provide a name",
|
||||
"notify_admins": "try notifying an admin from the list of admins below:",
|
||||
"thread_id": "unable to locate thread Id"
|
||||
"timeout_reward": "timeout waiting for reward share confirmation",
|
||||
"thread_id": "unable to locate thread Id",
|
||||
"unable_minting": "unable to start minting"
|
||||
},
|
||||
"success": {
|
||||
"group_ban": "successfully banned member from group. It may take a couple of minutes for the changes to propagate",
|
||||
@ -104,6 +107,10 @@
|
||||
"invitation_request": "accepted join request: awaiting confirmation",
|
||||
"loading_threads": "loading threads... please wait.",
|
||||
"post_creation": "successfully created post. It may take some time for the publish to propagate",
|
||||
"rewardshare_add": "add rewardshare: awaiting confirmation",
|
||||
"rewardshare_add_label": "add rewardshare: success!",
|
||||
"rewardshare_remove": "remove rewardshare: awaiting confirmation",
|
||||
"rewardshare_remove_label": "remove rewardshare: success!",
|
||||
"thread_creation": "successfully created thread. It may take some time for the publish to propagate",
|
||||
"unbanned_user": "successfully unbanned user. It may take a couple of minutes for the changes to propagate",
|
||||
"user_joined": "user successfully joined!"
|
||||
|
Loading…
x
Reference in New Issue
Block a user