diff --git a/src/components/Minting/Minting.tsx b/src/components/Minting/Minting.tsx
index fe05c5b..c84ffdb 100644
--- a/src/components/Minting/Minting.tsx
+++ b/src/components/Minting/Minting.tsx
@@ -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 }) => {
},
}}
>
- {'Manage your minting'}
+
+ {t('group:message.generic.manage_minting', {
+ postProcess: 'capitalize',
+ })}
+
+
{
sx={{
backgroundColor: theme.palette.background.default,
padding: '10px',
- }}
+ }} // TODO translate
>
Account: {handleNames(accountInfo?.address)}
@@ -618,7 +672,9 @@ export const Minting = ({ setIsOpenMinting, myAddress, show }) => {
This node is minting: {nodeInfos?.isMintingPossible?.toString()}
+
+
{isPartOfMintingGroup && !accountIsMinting && (
{
)}
)}
+
+
{mintingAccounts?.length > 0 && (
Node's minting accounts
)}
diff --git a/src/i18n/locales/en/core.json b/src/i18n/locales/en/core.json
index 41ff3c0..df7eb80 100644
--- a/src/i18n/locales/en/core.json
+++ b/src/i18n/locales/en/core.json
@@ -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"
},
diff --git a/src/i18n/locales/en/group.json b/src/i18n/locales/en/group.json
index 5e0db18..6e0c8c7 100644
--- a/src/i18n/locales/en/group.json
+++ b/src/i18n/locales/en/group.json
@@ -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!"