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 { useModal } from '../../common/useModal';
|
||||||
import { useAtom, useSetAtom } from 'jotai';
|
import { useAtom, useSetAtom } from 'jotai';
|
||||||
import { memberGroupsAtom, txListAtom } from '../../atoms/global';
|
import { memberGroupsAtom, txListAtom } from '../../atoms/global';
|
||||||
|
import { useTranslation } from 'react-i18next';
|
||||||
|
|
||||||
export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
||||||
const setTxList = useSetAtom(txListAtom);
|
const setTxList = useSetAtom(txListAtom);
|
||||||
@ -44,7 +45,7 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
const { show: showKey, message } = useModal();
|
const { show: showKey, message } = useModal();
|
||||||
const { isShow: isShowNext, onOk, show: showNext } = useModal();
|
const { isShow: isShowNext, onOk, show: showNext } = useModal();
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
|
const { t } = useTranslation(['core', 'auth', 'group']);
|
||||||
const [info, setInfo] = useState(null);
|
const [info, setInfo] = useState(null);
|
||||||
const [names, setNames] = useState({});
|
const [names, setNames] = useState({});
|
||||||
const [accountInfos, setAccountInfos] = useState({});
|
const [accountInfos, setAccountInfos] = useState({});
|
||||||
@ -223,13 +224,21 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
rej({ message: response.error });
|
rej({ message: response.error });
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
rej({ message: error.message || 'An error occurred' });
|
rej({
|
||||||
|
message:
|
||||||
|
error.message ||
|
||||||
|
t('core:message.error.generic', { postProcess: 'capitalize' }),
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setInfo({
|
setInfo({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: error?.message || 'Unable to add minting account',
|
message:
|
||||||
|
error?.message ||
|
||||||
|
t('core:message.error.minting_account_add', {
|
||||||
|
postProcess: 'capitalize',
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
setOpenSnack(true);
|
setOpenSnack(true);
|
||||||
} finally {
|
} finally {
|
||||||
@ -263,13 +272,21 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
rej({ message: response.error });
|
rej({ message: response.error });
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
rej({ message: error.message || 'An error occurred' });
|
rej({
|
||||||
|
message:
|
||||||
|
error.message ||
|
||||||
|
t('core:message.error.generic', { postProcess: 'capitalize' }),
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setInfo({
|
setInfo({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: error?.message || 'Unable to remove minting account',
|
message:
|
||||||
|
error?.message ||
|
||||||
|
t('core:message.error.minting_account_remove', {
|
||||||
|
postProcess: 'capitalize',
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
setOpenSnack(true);
|
setOpenSnack(true);
|
||||||
} finally {
|
} finally {
|
||||||
@ -278,9 +295,13 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const createRewardShare = useCallback(async (publicKey, recipient) => {
|
const createRewardShare = useCallback(async (publicKey, recipient) => {
|
||||||
const fee = await getFee('REWARD_SHARE'); // TODO translate
|
const fee = await getFee('REWARD_SHARE');
|
||||||
await show({
|
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',
|
publishFee: fee.fee + ' QORT',
|
||||||
});
|
});
|
||||||
return await new Promise((res, rej) => {
|
return await new Promise((res, rej) => {
|
||||||
@ -295,8 +316,12 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
recipient,
|
recipient,
|
||||||
...response,
|
...response,
|
||||||
type: 'add-rewardShare',
|
type: 'add-rewardShare',
|
||||||
label: `Add rewardshare: awaiting confirmation`,
|
label: t('group:message.success.rewardshare_add', {
|
||||||
labelDone: `Add rewardshare: success!`,
|
postProcess: 'capitalize',
|
||||||
|
}),
|
||||||
|
labelDone: t('group:message.success.rewardshare_add_label', {
|
||||||
|
postProcess: 'capitalize',
|
||||||
|
}),
|
||||||
done: false,
|
done: false,
|
||||||
},
|
},
|
||||||
...prev,
|
...prev,
|
||||||
@ -307,7 +332,11 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
rej({ message: response.error });
|
rej({ message: response.error });
|
||||||
})
|
})
|
||||||
.catch((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 });
|
rej({ message: response.error });
|
||||||
})
|
})
|
||||||
.catch((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
|
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 () => {
|
const startMinting = async () => {
|
||||||
@ -382,7 +417,11 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
setShowWaitDialog(false);
|
setShowWaitDialog(false);
|
||||||
setInfo({
|
setInfo({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: error?.message || 'Unable to start minting',
|
message:
|
||||||
|
error?.message ||
|
||||||
|
t('group:message.error.unable_minting', {
|
||||||
|
postProcess: 'capitalize',
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
setOpenSnack(true);
|
setOpenSnack(true);
|
||||||
} finally {
|
} finally {
|
||||||
@ -420,8 +459,12 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
...rewardShare,
|
...rewardShare,
|
||||||
...response,
|
...response,
|
||||||
type: 'remove-rewardShare',
|
type: 'remove-rewardShare',
|
||||||
label: `Remove rewardshare: awaiting confirmation`,
|
label: t('group:message.success.rewardshare_remove', {
|
||||||
labelDone: `Remove rewardshare: success!`,
|
postProcess: 'capitalize',
|
||||||
|
}),
|
||||||
|
labelDone: t('group:message.success.rewardshare_remove_label', {
|
||||||
|
postProcess: 'capitalize',
|
||||||
|
}),
|
||||||
done: false,
|
done: false,
|
||||||
},
|
},
|
||||||
...prev,
|
...prev,
|
||||||
@ -431,59 +474,65 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
rej({ message: response.error });
|
rej({ message: response.error });
|
||||||
})
|
})
|
||||||
.catch((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) => {
|
// TODO unused functions. Remove??
|
||||||
try {
|
|
||||||
setIsLoading(true);
|
|
||||||
|
|
||||||
const privateRewardShare = await removeRewardShare(rewardShare);
|
// const handleRemoveRewardShare = async (rewardShare) => {
|
||||||
} catch (error) {
|
// try {
|
||||||
setInfo({
|
// setIsLoading(true);
|
||||||
type: 'error',
|
|
||||||
message: error?.message || 'Unable to remove reward share',
|
|
||||||
});
|
|
||||||
setOpenSnack(true);
|
|
||||||
} finally {
|
|
||||||
setIsLoading(false);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const createRewardShareForPotentialMinter = async (receiver) => {
|
// const privateRewardShare = await removeRewardShare(rewardShare);
|
||||||
try {
|
// } catch (error) {
|
||||||
setIsLoading(true);
|
// setInfo({
|
||||||
const confirmReceiver = await getNameOrAddress(receiver);
|
// type: 'error',
|
||||||
if (confirmReceiver.error)
|
// message: error?.message || 'Unable to remove reward share',
|
||||||
throw new Error('Invalid receiver address or name');
|
// });
|
||||||
const isInMinterGroup = await checkIfMinterGroup(confirmReceiver);
|
// setOpenSnack(true);
|
||||||
if (!isInMinterGroup) throw new Error('Account not in Minter Group');
|
// } finally {
|
||||||
const publicKey = await getPublicKeyFromAddress(confirmReceiver);
|
// setIsLoading(false);
|
||||||
const findRewardShare = rewardShares?.find(
|
// }
|
||||||
(item) =>
|
// };
|
||||||
item?.recipient === confirmReceiver &&
|
|
||||||
item?.mintingAccount === myAddress
|
// const createRewardShareForPotentialMinter = async (receiver) => {
|
||||||
);
|
// try {
|
||||||
if (findRewardShare) {
|
// setIsLoading(true);
|
||||||
const privateRewardShare = await getRewardSharePrivateKey(publicKey);
|
// const confirmReceiver = await getNameOrAddress(receiver);
|
||||||
setRewardsharekey(privateRewardShare);
|
// if (confirmReceiver.error)
|
||||||
} else {
|
// throw new Error('Invalid receiver address or name');
|
||||||
await createRewardShare(publicKey, confirmReceiver);
|
// const isInMinterGroup = await checkIfMinterGroup(confirmReceiver);
|
||||||
const privateRewardShare = await getRewardSharePrivateKey(publicKey);
|
// if (!isInMinterGroup) throw new Error('Account not in Minter Group');
|
||||||
setRewardsharekey(privateRewardShare);
|
// const publicKey = await getPublicKeyFromAddress(confirmReceiver);
|
||||||
}
|
// const findRewardShare = rewardShares?.find(
|
||||||
} catch (error) {
|
// (item) =>
|
||||||
setInfo({
|
// item?.recipient === confirmReceiver &&
|
||||||
type: 'error',
|
// item?.mintingAccount === myAddress
|
||||||
message: error?.message || 'Unable to create reward share',
|
// );
|
||||||
});
|
// if (findRewardShare) {
|
||||||
setOpenSnack(true);
|
// const privateRewardShare = await getRewardSharePrivateKey(publicKey);
|
||||||
} finally {
|
// setRewardsharekey(privateRewardShare);
|
||||||
setIsLoading(false);
|
// } 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(() => {
|
useEffect(() => {
|
||||||
getNodeInfos();
|
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
|
<IconButton
|
||||||
sx={{
|
sx={{
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
@ -604,7 +658,7 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
sx={{
|
sx={{
|
||||||
backgroundColor: theme.palette.background.default,
|
backgroundColor: theme.palette.background.default,
|
||||||
padding: '10px',
|
padding: '10px',
|
||||||
}}
|
}} // TODO translate
|
||||||
>
|
>
|
||||||
<Typography>Account: {handleNames(accountInfo?.address)}</Typography>
|
<Typography>Account: {handleNames(accountInfo?.address)}</Typography>
|
||||||
|
|
||||||
@ -618,7 +672,9 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
This node is minting: {nodeInfos?.isMintingPossible?.toString()}
|
This node is minting: {nodeInfos?.isMintingPossible?.toString()}
|
||||||
</Typography>
|
</Typography>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
<Spacer height="10px" />
|
<Spacer height="10px" />
|
||||||
|
|
||||||
{isPartOfMintingGroup && !accountIsMinting && (
|
{isPartOfMintingGroup && !accountIsMinting && (
|
||||||
<Box
|
<Box
|
||||||
sx={{
|
sx={{
|
||||||
@ -660,7 +716,9 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
|
|||||||
)}
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<Spacer height="10px" />
|
<Spacer height="10px" />
|
||||||
|
|
||||||
{mintingAccounts?.length > 0 && (
|
{mintingAccounts?.length > 0 && (
|
||||||
<Typography>Node's minting accounts</Typography>
|
<Typography>Node's minting accounts</Typography>
|
||||||
)}
|
)}
|
||||||
|
@ -67,6 +67,8 @@
|
|||||||
"error": {
|
"error": {
|
||||||
"generic": "an error occurred",
|
"generic": "an error occurred",
|
||||||
"incorrect_password": "incorrect password",
|
"incorrect_password": "incorrect password",
|
||||||
|
"minting_account_add": "unable to add minting account",
|
||||||
|
"minting_account_remove": "unable to remove minting account",
|
||||||
"missing_field": "missing: {{ field }}",
|
"missing_field": "missing: {{ field }}",
|
||||||
"save_qdn": "unable to save to QDN"
|
"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.",
|
"latest_promotion": "only the latest promotion from the week will be shown for your group.",
|
||||||
"loading_members": "loading member list with names... please wait.",
|
"loading_members": "loading member list with names... please wait.",
|
||||||
"max_chars": " Max 200 characters. Publish Fee",
|
"max_chars": " Max 200 characters. Publish Fee",
|
||||||
|
"manage_minting": "manage your minting",
|
||||||
"no_display": "nothing to display",
|
"no_display": "nothing to display",
|
||||||
"no_selection": "no group selected",
|
"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.",
|
"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",
|
"group_secret_key": "cannot get group secret key",
|
||||||
"name_required": "please provide a name",
|
"name_required": "please provide a name",
|
||||||
"notify_admins": "try notifying an admin from the list of admins below:",
|
"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": {
|
"success": {
|
||||||
"group_ban": "successfully banned member from group. It may take a couple of minutes for the changes to propagate",
|
"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",
|
"invitation_request": "accepted join request: awaiting confirmation",
|
||||||
"loading_threads": "loading threads... please wait.",
|
"loading_threads": "loading threads... please wait.",
|
||||||
"post_creation": "successfully created post. It may take some time for the publish to propagate",
|
"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",
|
"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",
|
"unbanned_user": "successfully unbanned user. It may take a couple of minutes for the changes to propagate",
|
||||||
"user_joined": "user successfully joined!"
|
"user_joined": "user successfully joined!"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user