diff --git a/locale/da/texts.po b/locale/da/texts.po index 0a7dacd97..030b0ada1 100644 --- a/locale/da/texts.po +++ b/locale/da/texts.po @@ -383,7 +383,7 @@ msgstr "Indtast din 6-cifrede pin for at oprette din token" msgid "Authorize token creation" msgstr "Autoriser oprettelse af token" -#: src/screens/CreateTokenConfirm.js:158 src/screens/SendConfirmScreen.js:166 +#: src/screens/CreateTokenConfirm.js:158 src/screens/SendConfirmScreen.js:196 #: src/screens/TokenSwapReview.js:221 msgid "Building transaction" msgstr "" @@ -397,25 +397,25 @@ msgstr "" msgid "Amount of ${ name }" msgstr "" -#: src/screens/CreateTokenConfirm.js:238 +#: src/screens/CreateTokenConfirm.js:243 msgid "Token name" msgstr "Token navn" -#: src/screens/CreateTokenConfirm.js:244 src/screens/CreateTokenSymbol.js:71 +#: src/screens/CreateTokenConfirm.js:249 src/screens/CreateTokenSymbol.js:71 msgid "Token symbol" msgstr "Token symbol" #: src/components/Reown/CreateTokenRequest.js:87 #: src/components/Reown/CreateTokenRequest.js:129 -#: src/screens/CreateTokenConfirm.js:251 +#: src/screens/CreateTokenConfirm.js:256 msgid "Deposit" msgstr "Indsæt" -#: src/screens/CreateTokenConfirm.js:259 +#: src/screens/CreateTokenConfirm.js:264 msgid "Network fee" msgstr "" -#: src/screens/CreateTokenConfirm.js:268 +#: src/screens/CreateTokenConfirm.js:273 msgid "Create token" msgstr "Opret token" @@ -708,31 +708,31 @@ msgstr "Nulstil wallet" msgid "Connect to mainnet" msgstr "" -#: src/screens/MainScreen.js:125 +#: src/screens/MainScreen.js:136 msgid "No transactions" msgstr "Ingen transaktioner" -#: src/screens/MainScreen.js:128 +#: src/screens/MainScreen.js:139 msgid "|share:Share your address| with friends and start exchanging tokens" msgstr "|share:Del din adresse| med venner og begynd at udveksle tokens" -#: src/screens/MainScreen.js:145 +#: src/screens/MainScreen.js:156 msgid "Loading transactions" msgstr "Indlæser dine transaktioner" -#: src/screens/MainScreen.js:154 +#: src/screens/MainScreen.js:165 msgid "There was an error loading your transaction history" msgstr "" -#: src/screens/MainScreen.js:157 +#: src/screens/MainScreen.js:168 msgid "Please |tryAgain:try again|" msgstr "" -#: src/screens/MainScreen.js:540 src/screens/MainScreen.js:569 +#: src/screens/MainScreen.js:551 src/screens/MainScreen.js:580 msgid "Available Balance" msgstr "Tilgængelig saldo" -#: src/screens/MainScreen.js:549 +#: src/screens/MainScreen.js:560 msgid "Locked" msgstr "Låst" @@ -973,7 +973,7 @@ msgid_plural "${ amountAndToken } available" msgstr[0] "" msgstr[1] "" -#: src/screens/SendAmountInput.js:137 src/screens/SendConfirmScreen.js:257 +#: src/screens/SendAmountInput.js:137 src/screens/SendConfirmScreen.js:287 msgid "SEND ${ tokenNameUpperCase }" msgstr "SEND ${ tokenNameUpperCase }" @@ -990,82 +990,82 @@ msgid "Insufficient balance to send this transaction." msgstr "" #: src/screens/SendConfirmScreen.js:59 -msgid "Failed to build transaction." +msgid "Failed to process transaction." msgstr "" -#: src/screens/SendConfirmScreen.js:146 src/screens/TokenSwapReview.js:205 +#: src/screens/SendConfirmScreen.js:178 src/screens/TokenSwapReview.js:205 msgid "Your transfer is being processed" msgstr "Din overførsel behandles" -#: src/sagas/helpers.js:147 src/screens/SendConfirmScreen.js:164 +#: src/sagas/helpers.js:147 src/screens/SendConfirmScreen.js:194 #: src/screens/TokenSwapReview.js:219 msgid "Enter your 6-digit pin to authorize operation" msgstr "Indtast din 6-cifrede pin for at godkende overførslen" -#: src/sagas/helpers.js:148 src/screens/SendConfirmScreen.js:165 +#: src/sagas/helpers.js:148 src/screens/SendConfirmScreen.js:195 #: src/screens/TokenSwapReview.js:220 msgid "Authorize operation" msgstr "Autoriserer overførslen" -#: src/screens/SendConfirmScreen.js:205 +#: src/screens/SendConfirmScreen.js:235 #, javascript-format msgid "${ availablePretty } available" msgid_plural "${ availablePretty } available" msgstr[0] "" msgstr[1] "" -#: src/screens/SendConfirmScreen.js:228 +#: src/screens/SendConfirmScreen.js:258 msgid "Loading fee information..." msgstr "" -#: src/screens/SendConfirmScreen.js:231 +#: src/screens/SendConfirmScreen.js:261 msgid "This is the native token, no network fees are charged." msgstr "" -#: src/screens/SendConfirmScreen.js:234 +#: src/screens/SendConfirmScreen.js:264 msgid "This token is Deposit Based, no network fee will be charged." msgstr "" -#: src/screens/SendConfirmScreen.js:236 +#: src/screens/SendConfirmScreen.js:266 msgid "This fee is fixed and required for every transfer of this token." msgstr "" #: src/components/Reown/NanoContract/NanoContractExecInfo.js:108 -#: src/screens/SendConfirmScreen.js:241 +#: src/screens/SendConfirmScreen.js:271 msgid "Loading..." msgstr "" -#: src/screens/SendConfirmScreen.js:263 +#: src/screens/SendConfirmScreen.js:293 msgid "Building your transaction" msgstr "" -#: src/screens/SendConfirmScreen.js:281 +#: src/screens/SendConfirmScreen.js:311 #, javascript-format msgid "Your transfer of **${ amountAndToken }** has been confirmed" msgstr "" -#: src/screens/SendConfirmScreen.js:292 +#: src/screens/SendConfirmScreen.js:322 msgid "Read more." msgstr "" -#: src/screens/SendConfirmScreen.js:309 +#: src/screens/SendConfirmScreen.js:344 msgid "**Transaction summary**" msgstr "" -#: src/screens/SendConfirmScreen.js:312 +#: src/screens/SendConfirmScreen.js:347 msgid "**To**" msgstr "" -#: src/screens/SendConfirmScreen.js:317 +#: src/screens/SendConfirmScreen.js:352 msgid "**Network Fee**" msgstr "" -#: src/screens/SendConfirmScreen.js:325 +#: src/screens/SendConfirmScreen.js:360 msgid "**Total**" msgstr "" #: src/screens/NetworkSettings/CustomNetworkSettingsScreen.js:295 -#: src/screens/SendConfirmScreen.js:332 +#: src/screens/SendConfirmScreen.js:367 msgid "Send" msgstr "Send" diff --git a/locale/pt-br/texts.po b/locale/pt-br/texts.po index b67698ffc..a4b472a8a 100644 --- a/locale/pt-br/texts.po +++ b/locale/pt-br/texts.po @@ -400,7 +400,7 @@ msgstr "Digite seu PIN de 6 dígitos para criar o seu token" msgid "Authorize token creation" msgstr "Autorizar criação de token" -#: src/screens/CreateTokenConfirm.js:158 src/screens/SendConfirmScreen.js:166 +#: src/screens/CreateTokenConfirm.js:158 src/screens/SendConfirmScreen.js:196 #: src/screens/TokenSwapReview.js:221 msgid "Building transaction" msgstr "Criando transação" @@ -414,25 +414,25 @@ msgstr "**${ name }** criado com sucesso" msgid "Amount of ${ name }" msgstr "Quantidade de ${ name }" -#: src/screens/CreateTokenConfirm.js:238 +#: src/screens/CreateTokenConfirm.js:243 msgid "Token name" msgstr "Nome do token" -#: src/screens/CreateTokenConfirm.js:244 src/screens/CreateTokenSymbol.js:71 +#: src/screens/CreateTokenConfirm.js:249 src/screens/CreateTokenSymbol.js:71 msgid "Token symbol" msgstr "Símbolo do token" #: src/components/Reown/CreateTokenRequest.js:87 #: src/components/Reown/CreateTokenRequest.js:129 -#: src/screens/CreateTokenConfirm.js:251 +#: src/screens/CreateTokenConfirm.js:256 msgid "Deposit" msgstr "Depósito" -#: src/screens/CreateTokenConfirm.js:259 +#: src/screens/CreateTokenConfirm.js:264 msgid "Network fee" msgstr "Taxa de Rede" -#: src/screens/CreateTokenConfirm.js:268 +#: src/screens/CreateTokenConfirm.js:273 msgid "Create token" msgstr "Criar um token" @@ -732,33 +732,33 @@ msgstr "Resetar Wallet" msgid "Connect to mainnet" msgstr "Conectar à mainnet" -#: src/screens/MainScreen.js:125 +#: src/screens/MainScreen.js:136 msgid "No transactions" msgstr "Nenhuma transação" -#: src/screens/MainScreen.js:128 +#: src/screens/MainScreen.js:139 msgid "|share:Share your address| with friends and start exchanging tokens" msgstr "" "|share:Compartilhe seu endereço| com seus amigos e comece a trocar seus " "tokens" -#: src/screens/MainScreen.js:145 +#: src/screens/MainScreen.js:156 msgid "Loading transactions" msgstr "Carregando transações" -#: src/screens/MainScreen.js:154 +#: src/screens/MainScreen.js:165 msgid "There was an error loading your transaction history" msgstr "Ocorreu um erro ao carregar seu histórico de transações" -#: src/screens/MainScreen.js:157 +#: src/screens/MainScreen.js:168 msgid "Please |tryAgain:try again|" msgstr "Por favor |tryAgain:tente novamente|" -#: src/screens/MainScreen.js:540 src/screens/MainScreen.js:569 +#: src/screens/MainScreen.js:551 src/screens/MainScreen.js:580 msgid "Available Balance" msgstr "Saldo Disponível" -#: src/screens/MainScreen.js:549 +#: src/screens/MainScreen.js:560 msgid "Locked" msgstr "Bloqueado" @@ -1002,7 +1002,7 @@ msgid_plural "${ amountAndToken } available" msgstr[0] "${ amountAndToken } disponível" msgstr[1] "${ amountAndToken } disponíveis" -#: src/screens/SendAmountInput.js:137 src/screens/SendConfirmScreen.js:257 +#: src/screens/SendAmountInput.js:137 src/screens/SendConfirmScreen.js:287 msgid "SEND ${ tokenNameUpperCase }" msgstr "ENVIAR ${ tokenNameUpperCase }" @@ -1019,82 +1019,82 @@ msgid "Insufficient balance to send this transaction." msgstr "Saldo insuficiente para completar a transação." #: src/screens/SendConfirmScreen.js:59 -msgid "Failed to build transaction." -msgstr "Falha ao criar a transação" +msgid "Failed to process transaction." +msgstr "Falha ao processar a transação" -#: src/screens/SendConfirmScreen.js:146 src/screens/TokenSwapReview.js:205 +#: src/screens/SendConfirmScreen.js:178 src/screens/TokenSwapReview.js:205 msgid "Your transfer is being processed" msgstr "Sua transferência está sendo processada" -#: src/sagas/helpers.js:147 src/screens/SendConfirmScreen.js:164 +#: src/sagas/helpers.js:147 src/screens/SendConfirmScreen.js:194 #: src/screens/TokenSwapReview.js:219 msgid "Enter your 6-digit pin to authorize operation" msgstr "Digite seu PIN de 6 dígitos para autorizar a operação" -#: src/sagas/helpers.js:148 src/screens/SendConfirmScreen.js:165 +#: src/sagas/helpers.js:148 src/screens/SendConfirmScreen.js:195 #: src/screens/TokenSwapReview.js:220 msgid "Authorize operation" msgstr "Autorizar operação" -#: src/screens/SendConfirmScreen.js:205 +#: src/screens/SendConfirmScreen.js:235 #, javascript-format msgid "${ availablePretty } available" msgid_plural "${ availablePretty } available" msgstr[0] "Você tem ${ availablePretty } disponível" msgstr[1] "Você tem ${ availablePretty } disponíveis" -#: src/screens/SendConfirmScreen.js:228 +#: src/screens/SendConfirmScreen.js:258 msgid "Loading fee information..." msgstr "Carregando informações da taxa..." -#: src/screens/SendConfirmScreen.js:231 +#: src/screens/SendConfirmScreen.js:261 msgid "This is the native token, no network fees are charged." msgstr "Token nativo, nenhuma taxa aplicada." -#: src/screens/SendConfirmScreen.js:234 +#: src/screens/SendConfirmScreen.js:264 msgid "This token is Deposit Based, no network fee will be charged." msgstr "Este token é de Depósito, nenhuma taxa de rede será cobrada." -#: src/screens/SendConfirmScreen.js:236 +#: src/screens/SendConfirmScreen.js:266 msgid "This fee is fixed and required for every transfer of this token." msgstr "Esta taxa é fixa e obrigatória para cada transação deste token." #: src/components/Reown/NanoContract/NanoContractExecInfo.js:108 -#: src/screens/SendConfirmScreen.js:241 +#: src/screens/SendConfirmScreen.js:271 msgid "Loading..." msgstr "Carregando..." -#: src/screens/SendConfirmScreen.js:263 +#: src/screens/SendConfirmScreen.js:293 msgid "Building your transaction" msgstr "Criando sua transação" -#: src/screens/SendConfirmScreen.js:281 +#: src/screens/SendConfirmScreen.js:311 #, javascript-format msgid "Your transfer of **${ amountAndToken }** has been confirmed" msgstr "Sua transferência de **${ amountAndToken }** foi confirmada" -#: src/screens/SendConfirmScreen.js:292 +#: src/screens/SendConfirmScreen.js:322 msgid "Read more." msgstr "Ler mais." -#: src/screens/SendConfirmScreen.js:309 +#: src/screens/SendConfirmScreen.js:344 msgid "**Transaction summary**" msgstr "**Resumo da transação**" -#: src/screens/SendConfirmScreen.js:312 +#: src/screens/SendConfirmScreen.js:347 msgid "**To**" msgstr "**Para**" -#: src/screens/SendConfirmScreen.js:317 +#: src/screens/SendConfirmScreen.js:352 msgid "**Network Fee**" msgstr "**Taxa de Rede**" -#: src/screens/SendConfirmScreen.js:325 +#: src/screens/SendConfirmScreen.js:360 msgid "**Total**" msgstr "**Total**" #: src/screens/NetworkSettings/CustomNetworkSettingsScreen.js:295 -#: src/screens/SendConfirmScreen.js:332 +#: src/screens/SendConfirmScreen.js:367 msgid "Send" msgstr "Enviar" diff --git a/locale/ru-ru/texts.po b/locale/ru-ru/texts.po index be6e3d4df..f784f24af 100644 --- a/locale/ru-ru/texts.po +++ b/locale/ru-ru/texts.po @@ -384,7 +384,7 @@ msgstr "Введите 6-значный PIN-код для создания то msgid "Authorize token creation" msgstr "Авторизовать создание токена" -#: src/screens/CreateTokenConfirm.js:158 src/screens/SendConfirmScreen.js:166 +#: src/screens/CreateTokenConfirm.js:158 src/screens/SendConfirmScreen.js:196 #: src/screens/TokenSwapReview.js:221 msgid "Building transaction" msgstr "" @@ -398,25 +398,25 @@ msgstr "" msgid "Amount of ${ name }" msgstr "" -#: src/screens/CreateTokenConfirm.js:238 +#: src/screens/CreateTokenConfirm.js:243 msgid "Token name" msgstr "Имя токена" -#: src/screens/CreateTokenConfirm.js:244 src/screens/CreateTokenSymbol.js:71 +#: src/screens/CreateTokenConfirm.js:249 src/screens/CreateTokenSymbol.js:71 msgid "Token symbol" msgstr "Символ токена" #: src/components/Reown/CreateTokenRequest.js:87 #: src/components/Reown/CreateTokenRequest.js:129 -#: src/screens/CreateTokenConfirm.js:251 +#: src/screens/CreateTokenConfirm.js:256 msgid "Deposit" msgstr "Депозит" -#: src/screens/CreateTokenConfirm.js:259 +#: src/screens/CreateTokenConfirm.js:264 msgid "Network fee" msgstr "" -#: src/screens/CreateTokenConfirm.js:268 +#: src/screens/CreateTokenConfirm.js:273 msgid "Create token" msgstr "Создать токен" @@ -709,32 +709,32 @@ msgstr "Сбросить кошелек" msgid "Connect to mainnet" msgstr "" -#: src/screens/MainScreen.js:125 +#: src/screens/MainScreen.js:136 msgid "No transactions" msgstr "Нет транзакций" -#: src/screens/MainScreen.js:128 +#: src/screens/MainScreen.js:139 msgid "|share:Share your address| with friends and start exchanging tokens" msgstr "" "|share:Поделитесь своим адресом| с друзьями и начните обменивать свои токены" -#: src/screens/MainScreen.js:145 +#: src/screens/MainScreen.js:156 msgid "Loading transactions" msgstr "Загрузка ваших транзакций" -#: src/screens/MainScreen.js:154 +#: src/screens/MainScreen.js:165 msgid "There was an error loading your transaction history" msgstr "" -#: src/screens/MainScreen.js:157 +#: src/screens/MainScreen.js:168 msgid "Please |tryAgain:try again|" msgstr "" -#: src/screens/MainScreen.js:540 src/screens/MainScreen.js:569 +#: src/screens/MainScreen.js:551 src/screens/MainScreen.js:580 msgid "Available Balance" msgstr "Доступный Баланс" -#: src/screens/MainScreen.js:549 +#: src/screens/MainScreen.js:560 msgid "Locked" msgstr "Заблокированный" @@ -975,7 +975,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/screens/SendAmountInput.js:137 src/screens/SendConfirmScreen.js:257 +#: src/screens/SendAmountInput.js:137 src/screens/SendConfirmScreen.js:287 msgid "SEND ${ tokenNameUpperCase }" msgstr "ОТПРАВИТЬ ${ tokenNameUpperCase }" @@ -992,24 +992,24 @@ msgid "Insufficient balance to send this transaction." msgstr "" #: src/screens/SendConfirmScreen.js:59 -msgid "Failed to build transaction." +msgid "Failed to process transaction." msgstr "" -#: src/screens/SendConfirmScreen.js:146 src/screens/TokenSwapReview.js:205 +#: src/screens/SendConfirmScreen.js:178 src/screens/TokenSwapReview.js:205 msgid "Your transfer is being processed" msgstr "Ваш перевод обрабатывается" -#: src/sagas/helpers.js:147 src/screens/SendConfirmScreen.js:164 +#: src/sagas/helpers.js:147 src/screens/SendConfirmScreen.js:194 #: src/screens/TokenSwapReview.js:219 msgid "Enter your 6-digit pin to authorize operation" msgstr "Введите 6-значный PIN-код для авторизации операции" -#: src/sagas/helpers.js:148 src/screens/SendConfirmScreen.js:165 +#: src/sagas/helpers.js:148 src/screens/SendConfirmScreen.js:195 #: src/screens/TokenSwapReview.js:220 msgid "Authorize operation" msgstr "Авторизовать операцию" -#: src/screens/SendConfirmScreen.js:205 +#: src/screens/SendConfirmScreen.js:235 #, javascript-format msgid "${ availablePretty } available" msgid_plural "${ availablePretty } available" @@ -1017,58 +1017,58 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: src/screens/SendConfirmScreen.js:228 +#: src/screens/SendConfirmScreen.js:258 msgid "Loading fee information..." msgstr "" -#: src/screens/SendConfirmScreen.js:231 +#: src/screens/SendConfirmScreen.js:261 msgid "This is the native token, no network fees are charged." msgstr "" -#: src/screens/SendConfirmScreen.js:234 +#: src/screens/SendConfirmScreen.js:264 msgid "This token is Deposit Based, no network fee will be charged." msgstr "" -#: src/screens/SendConfirmScreen.js:236 +#: src/screens/SendConfirmScreen.js:266 msgid "This fee is fixed and required for every transfer of this token." msgstr "" #: src/components/Reown/NanoContract/NanoContractExecInfo.js:108 -#: src/screens/SendConfirmScreen.js:241 +#: src/screens/SendConfirmScreen.js:271 msgid "Loading..." msgstr "" -#: src/screens/SendConfirmScreen.js:263 +#: src/screens/SendConfirmScreen.js:293 msgid "Building your transaction" msgstr "" -#: src/screens/SendConfirmScreen.js:281 +#: src/screens/SendConfirmScreen.js:311 #, javascript-format msgid "Your transfer of **${ amountAndToken }** has been confirmed" msgstr "Ваш перевод **${ amountAndToken }** был подтвержден" -#: src/screens/SendConfirmScreen.js:292 +#: src/screens/SendConfirmScreen.js:322 msgid "Read more." msgstr "" -#: src/screens/SendConfirmScreen.js:309 +#: src/screens/SendConfirmScreen.js:344 msgid "**Transaction summary**" msgstr "" -#: src/screens/SendConfirmScreen.js:312 +#: src/screens/SendConfirmScreen.js:347 msgid "**To**" msgstr "" -#: src/screens/SendConfirmScreen.js:317 +#: src/screens/SendConfirmScreen.js:352 msgid "**Network Fee**" msgstr "" -#: src/screens/SendConfirmScreen.js:325 +#: src/screens/SendConfirmScreen.js:360 msgid "**Total**" msgstr "" #: src/screens/NetworkSettings/CustomNetworkSettingsScreen.js:295 -#: src/screens/SendConfirmScreen.js:332 +#: src/screens/SendConfirmScreen.js:367 msgid "Send" msgstr "Отправить" diff --git a/locale/texts.pot b/locale/texts.pot index d3b0c6a9b..16af7394d 100644 --- a/locale/texts.pot +++ b/locale/texts.pot @@ -385,7 +385,7 @@ msgid "Authorize token creation" msgstr "" #: src/screens/CreateTokenConfirm.js:158 -#: src/screens/SendConfirmScreen.js:166 +#: src/screens/SendConfirmScreen.js:196 #: src/screens/TokenSwapReview.js:221 msgid "Building transaction" msgstr "" @@ -399,26 +399,26 @@ msgstr "" msgid "Amount of ${ name }" msgstr "" -#: src/screens/CreateTokenConfirm.js:238 +#: src/screens/CreateTokenConfirm.js:243 msgid "Token name" msgstr "" -#: src/screens/CreateTokenConfirm.js:244 +#: src/screens/CreateTokenConfirm.js:249 #: src/screens/CreateTokenSymbol.js:71 msgid "Token symbol" msgstr "" #: src/components/Reown/CreateTokenRequest.js:87 #: src/components/Reown/CreateTokenRequest.js:129 -#: src/screens/CreateTokenConfirm.js:251 +#: src/screens/CreateTokenConfirm.js:256 msgid "Deposit" msgstr "" -#: src/screens/CreateTokenConfirm.js:259 +#: src/screens/CreateTokenConfirm.js:264 msgid "Network fee" msgstr "" -#: src/screens/CreateTokenConfirm.js:268 +#: src/screens/CreateTokenConfirm.js:273 msgid "Create token" msgstr "" @@ -705,32 +705,32 @@ msgstr "" msgid "Connect to mainnet" msgstr "" -#: src/screens/MainScreen.js:125 +#: src/screens/MainScreen.js:136 msgid "No transactions" msgstr "" -#: src/screens/MainScreen.js:128 +#: src/screens/MainScreen.js:139 msgid "|share:Share your address| with friends and start exchanging tokens" msgstr "" -#: src/screens/MainScreen.js:145 +#: src/screens/MainScreen.js:156 msgid "Loading transactions" msgstr "" -#: src/screens/MainScreen.js:154 +#: src/screens/MainScreen.js:165 msgid "There was an error loading your transaction history" msgstr "" -#: src/screens/MainScreen.js:157 +#: src/screens/MainScreen.js:168 msgid "Please |tryAgain:try again|" msgstr "" -#: src/screens/MainScreen.js:540 -#: src/screens/MainScreen.js:569 +#: src/screens/MainScreen.js:551 +#: src/screens/MainScreen.js:580 msgid "Available Balance" msgstr "" -#: src/screens/MainScreen.js:549 +#: src/screens/MainScreen.js:560 msgid "Locked" msgstr "" @@ -979,7 +979,7 @@ msgstr[0] "" msgstr[1] "" #: src/screens/SendAmountInput.js:137 -#: src/screens/SendConfirmScreen.js:257 +#: src/screens/SendConfirmScreen.js:287 msgid "SEND ${ tokenNameUpperCase }" msgstr "" @@ -997,85 +997,85 @@ msgid "Insufficient balance to send this transaction." msgstr "" #: src/screens/SendConfirmScreen.js:59 -msgid "Failed to build transaction." +msgid "Failed to process transaction." msgstr "" -#: src/screens/SendConfirmScreen.js:146 +#: src/screens/SendConfirmScreen.js:178 #: src/screens/TokenSwapReview.js:205 msgid "Your transfer is being processed" msgstr "" #: src/sagas/helpers.js:147 -#: src/screens/SendConfirmScreen.js:164 +#: src/screens/SendConfirmScreen.js:194 #: src/screens/TokenSwapReview.js:219 msgid "Enter your 6-digit pin to authorize operation" msgstr "" #: src/sagas/helpers.js:148 -#: src/screens/SendConfirmScreen.js:165 +#: src/screens/SendConfirmScreen.js:195 #: src/screens/TokenSwapReview.js:220 msgid "Authorize operation" msgstr "" -#: src/screens/SendConfirmScreen.js:205 +#: src/screens/SendConfirmScreen.js:235 #, javascript-format msgid "${ availablePretty } available" msgid_plural "${ availablePretty } available" msgstr[0] "" msgstr[1] "" -#: src/screens/SendConfirmScreen.js:228 +#: src/screens/SendConfirmScreen.js:258 msgid "Loading fee information..." msgstr "" -#: src/screens/SendConfirmScreen.js:231 +#: src/screens/SendConfirmScreen.js:261 msgid "This is the native token, no network fees are charged." msgstr "" -#: src/screens/SendConfirmScreen.js:234 +#: src/screens/SendConfirmScreen.js:264 msgid "This token is Deposit Based, no network fee will be charged." msgstr "" -#: src/screens/SendConfirmScreen.js:236 +#: src/screens/SendConfirmScreen.js:266 msgid "This fee is fixed and required for every transfer of this token." msgstr "" #: src/components/Reown/NanoContract/NanoContractExecInfo.js:108 -#: src/screens/SendConfirmScreen.js:241 +#: src/screens/SendConfirmScreen.js:271 msgid "Loading..." msgstr "" -#: src/screens/SendConfirmScreen.js:263 +#: src/screens/SendConfirmScreen.js:293 msgid "Building your transaction" msgstr "" -#: src/screens/SendConfirmScreen.js:281 +#: src/screens/SendConfirmScreen.js:311 #, javascript-format msgid "Your transfer of **${ amountAndToken }** has been confirmed" msgstr "" -#: src/screens/SendConfirmScreen.js:292 +#: src/screens/SendConfirmScreen.js:322 msgid "Read more." msgstr "" -#: src/screens/SendConfirmScreen.js:309 +#: src/screens/SendConfirmScreen.js:344 msgid "**Transaction summary**" msgstr "" -#: src/screens/SendConfirmScreen.js:312 +#: src/screens/SendConfirmScreen.js:347 msgid "**To**" msgstr "" -#: src/screens/SendConfirmScreen.js:317 +#: src/screens/SendConfirmScreen.js:352 msgid "**Network Fee**" msgstr "" -#: src/screens/SendConfirmScreen.js:325 +#: src/screens/SendConfirmScreen.js:360 msgid "**Total**" msgstr "" #: src/screens/NetworkSettings/CustomNetworkSettingsScreen.js:295 -#: src/screens/SendConfirmScreen.js:332 +#: src/screens/SendConfirmScreen.js:367 msgid "Send" msgstr "" diff --git a/src/components/AmountTextInput.js b/src/components/AmountTextInput.js index a028ec3bf..77be27916 100644 --- a/src/components/AmountTextInput.js +++ b/src/components/AmountTextInput.js @@ -48,10 +48,19 @@ const AmountTextInput = forwardRef((props, ref) => { // Auto-shrink-to-fit: amounts can grow long enough to overflow the // input's column (e.g. `957,791,973.79`). We capture the column - // width once via the TextInput's `onLayout` and scale `fontSize` down + // width via the TextInput's `onLayout` and scale `fontSize` down // when the estimated text width (length × fontSize × GLYPH_RATIO) // exceeds it. When the user shortens the value, the estimate drops // and the font scales back up to the base size. + // + // IMPORTANT: `onLayout` measures this TextInput's OWN box, so callers + // MUST give it a parent-determined width — `flex: 1` when it shares a + // row (e.g. with a TokenBox), or `alignSelf: 'stretch'` / an explicit + // width when it sits alone in an `alignItems: 'center'` column. Without + // that the input sizes to its content; since `fontSize` (which this + // logic controls) also drives the content width, the measurement feeds + // back into itself and the font collapses to `minFontSize`, flickering + // on the way down. const [containerWidth, setContainerWidth] = useState(0); // Expose the focus method to parent components diff --git a/src/screens/CreateTokenConfirm.js b/src/screens/CreateTokenConfirm.js index ccaa1948c..6ca3c6a97 100644 --- a/src/screens/CreateTokenConfirm.js +++ b/src/screens/CreateTokenConfirm.js @@ -232,6 +232,11 @@ const CreateTokenConfirm = () => { editable={false} decimalPlaces={decimalPlaces} value={hathorLib.numberUtils.prettyValue(amount)} + // Stretch to the parent's width so the auto-shrink logic measures a + // fixed column width. The parent is `alignItems: 'center'`, so without + // this the input sizes to its content and the font-scaling feedback loop + // collapses the size. `textAlign: 'center'` keeps the value centered. + style={{ alignSelf: 'stretch' }} /> ( isTokenNFT(get(this.props, 'selectedToken.uid'), this.props.tokenMetadata) ) @@ -190,7 +201,7 @@ class MainScreen extends React.Component { ); } - if (status === 'loading') { + if (status === 'loading' || status === TOKEN_DOWNLOAD_STATUS.INVALIDATED) { return renderLoadingHistory(); } diff --git a/src/screens/SendConfirmScreen.js b/src/screens/SendConfirmScreen.js index 10158d14e..fc84a2969 100644 --- a/src/screens/SendConfirmScreen.js +++ b/src/screens/SendConfirmScreen.js @@ -44,10 +44,10 @@ function NoFee() { ); } -// Wallet-lib raises "No UTXOs available for the token ." when auto- -// selection can't cover the amount. HTR shortage gets its own message because, -// on FBT sends, it means insufficient HTR for the network fee. -function mapBuildError(err) { +// Translates wallet-lib error messages to user-friendly text. The UTXO +// patterns apply during build (auto-selection in prepare-tx); other errors +// (auth, signing, mining) fall through to the original lib message. +function mapTxError(err) { const msg = err?.message || ''; const htrUid = hathorLib.constants.NATIVE_TOKEN_UID; if (msg.includes(`No UTXOs available for the token ${htrUid}`)) { @@ -56,7 +56,7 @@ function mapBuildError(err) { if (msg.includes('No UTXOs available for the token')) { return t`Insufficient balance to send this transaction.`; } - return msg || t`Failed to build transaction.`; + return msg || t`Failed to process transaction.`; } const SendConfirmScreen = () => { @@ -80,6 +80,10 @@ const SendConfirmScreen = () => { const [buildError, setBuildError] = useState(null); const [modal, setModal] = useState(null); const [isTooltipShown, setIsTooltipShown] = useState(false); + // Disables the Send button from the moment it's tapped until the screen is + // interactive again, closing the window between the PinScreen dismissal and + // the feedback modal render where the button would otherwise be tappable. + const [isSending, setIsSending] = useState(false); const nativeSymbol = hathorLib.constants.DEFAULT_NATIVE_TOKEN_CONFIG.symbol; @@ -108,7 +112,7 @@ const SendConfirmScreen = () => { } catch (err) { if (cancelled) return; console.error(err); - setBuildError({ message: mapBuildError(err) }); + setBuildError({ message: mapTxError(err) }); setPhase(PHASE.ERROR); } })(); @@ -125,39 +129,65 @@ const SendConfirmScreen = () => { } }, [sendTx]); + // Re-enable the Send button whenever this screen regains focus. This covers + // the PinScreen being dismissed by cancel or hardware back (neither sets the + // feedback modal). + useEffect(() => { + const focusListener = navigation.addListener('focus', () => { + setIsSending(false); + }); + + return focusListener; + }, [navigation]); + const networkFee = phase === PHASE.READY && sendTx ? (sendTx.transaction.getFeeHeader()?.entries?.[0]?.amount ?? 0n) : null; /** - * Sign and broadcast the pre-built transaction. Failures transition - * the flow to PHASE.ERROR. + * Sign and mine the pre-built transaction. + * Returns the in-flight promise so the feedback modal can subscribe to it. + * Any error along the path is mapped to user-friendly text before rejecting. * * @param {string} pin Validated user PIN + * @returns {Promise} */ - const executeSend = async (pin) => { + const signAndSendTx = async (pin) => { try { if (useWalletService) { await wallet.validateAndRenewAuthToken(pin); } await wallet.signTx(sendTx.transaction, { pinCode: pin }); - const promise = sendTx.runFromMining(); - setModal({ - text: t`Your transfer is being processed`, - sendTransaction: sendTx, - promise, - }); + return await sendTx.runFromMining(); } catch (err) { console.error(err); - setBuildError({ message: mapBuildError(err) }); - setPhase(PHASE.ERROR); + throw new Error(mapTxError(err)); } }; + /** + * Called after PIN validation. Hands the running signAndSendTx promise to + * the feedback modal — setModal is synchronous so the modal renders in the + * same commit as the PinScreen dismissal, closing the window where the + * Send button could be tapped again. + * + * @param {string} pin Validated user PIN + */ + const executeSend = (pin) => { + setModal({ + text: t`Your transfer is being processed`, + sendTransaction: sendTx, + promise: signAndSendTx(pin), + }); + }; + /** * Executed when user clicks to send the tx and opens PIN screen */ const onSendPress = () => { + // Disable the button before opening the PinScreen so it can't be tapped + // again while we return from it and build the feedback modal. + setIsSending(true); const pinParams = { cb: executeSend, canCancel: true, @@ -300,6 +330,11 @@ const SendConfirmScreen = () => { {getAvailableString()} @@ -331,8 +366,9 @@ const SendConfirmScreen = () => { )} diff --git a/src/screens/Settings.js b/src/screens/Settings.js index 1ae896708..1af9644bf 100644 --- a/src/screens/Settings.js +++ b/src/screens/Settings.js @@ -166,7 +166,7 @@ export class Settings extends React.Component { onPress={() => this.props.navigation.navigate(NetworkSettingsFlowNav)} /> )} - {this.props.reownEnabled + {this.props.singleAddressEnabled && (