Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions .github/workflows/translate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,21 +47,28 @@ jobs:
echo "No translation changes to commit."
exit 0
fi
additions=$(while IFS= read -r f; do
jq -n --arg path "$f" --arg contents "$(base64 -w0 "$f")" \
'{path: $path, contents: $contents}'
done <<< "$files" | jq -s .)
# Pass file contents to jq via --rawfile/--slurpfile, never as
# command-line arguments: base64 of a large strings.xml exceeds
# the kernel's 128KB per-argument limit (MAX_ARG_STRLEN).
additions="$RUNNER_TEMP/additions.jsonl"
: > "$additions"
while IFS= read -r f; do
base64 -w0 "$f" > "$RUNNER_TEMP/file.b64"
jq -n --arg path "$f" --rawfile contents "$RUNNER_TEMP/file.b64" \
'{path: $path, contents: $contents}' >> "$additions"
done <<< "$files"
[ "$(jq -s length "$additions")" -eq "$(echo "$files" | wc -l)" ]
jq -n \
--arg repo "$GITHUB_REPOSITORY" \
--arg branch "$BRANCH" \
--arg oid "$(git rev-parse HEAD)" \
--argjson additions "$additions" \
--slurpfile additions "$additions" \
'{
query: "mutation($input: CreateCommitOnBranchInput!) { createCommitOnBranch(input: $input) { commit { oid } } }",
variables: {input: {
branch: {repositoryNameWithOwner: $repo, branchName: $branch},
expectedHeadOid: $oid,
message: {headline: "Translate new strings"},
message: {headline: "Translate new strings", body: "[skip ci]"},
fileChanges: {additions: $additions}
}}
}' > "$RUNNER_TEMP/commit_payload.json"
Expand Down
2 changes: 2 additions & 0 deletions translation_snapshot.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"AddEvmToken_ContractAddressNotFoundInBlockchain": "Contract address not found in %s blockchain",
"AddMoneroNode_AddNode": "Add Node",
"AddMoneroNode_Error_InvalidUrl": "Entered url is invalid. Valid url must have one of the following schemes: https",
"AddMoneroNode_Error_PortRequired": "Node url must include a port, e.g. https://node.com:18081",
"AddMoneroNode_NodeUrl": "Node Url",
"AddMoneroNode_Pasword": "Password (optional)",
"AddMoneroNode_Username": "Username (optional)",
Expand Down Expand Up @@ -659,6 +660,7 @@
"ManageAccounts_ExistingWallet": "Existing Wallet",
"ManageAccounts_ExistingWalletDescription": "Import your wallet if you already have one to continue using it.",
"ManageAccounts_ImportWallet": "Import Wallet",
"ManageAccounts_ManageWallet": "Manage Wallet",
"ManageAccounts_NoActiveWallets": "No Active Wallets",
"ManageAccounts_Title": "Manage Wallets",
"ManageAccounts_ViewOnlyWallet": "View-Only Wallet",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,21 @@ class MoneroNodeManager(
}

private fun serializeNode(uri: Uri, username: String?, password: String?): String {
return "$username:$password@${uri.host}:${uri.port}/mainnet/${uri.host ?: ""}"
return "$username:$password@${uri.host}:${effectivePort(uri)}/mainnet/${uri.host ?: ""}"
}

// nodes saved before port validation was added may have no port; url scheme is always https
private fun effectivePort(uri: Uri) = if (uri.port == -1) 443 else uri.port

// canonical "host:port"; default nodes store host that way already, custom nodes store a full url
private fun endpoint(hostOrUrl: String): String {
val uri = hostOrUrl.toUri()
return uri.host?.let { "$it:${effectivePort(uri)}" } ?: hostOrUrl
}

fun hasNode(url: String): Boolean {
val endpoint = endpoint(url)
return allNodes.any { endpoint(it.host) == endpoint }
}

fun addMoneroNode(url: String, username: String?, password: String?, trusted: Boolean) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ fun AddMoneroNodeScreen(
modifier = Modifier.padding(horizontal = 16.dp),
qrScannerEnabled = true,
onValueChange = viewModel::onEnterRpcUrl,
hint = "",
hint = "https://node.com:port",
state = getState(viewModel.uiState.urlCaution)
)
Spacer(modifier = Modifier.height(24.dp))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,13 @@ class AddMoneroNodeViewModel(
return
}

if (nodeManager.allNodes.any { it.host == url }) {
if (sourceUri.port == -1) {
urlCaution = Caution(Translator.getString(R.string.AddMoneroNode_Error_PortRequired), Caution.Type.Error)
emitState()
return
}

if (nodeManager.hasNode(url)) {
urlCaution = Caution(Translator.getString(R.string.AddMoneroNode_Warning_UrlExists), Caution.Type.Warning)
emitState()
return
Expand Down
2 changes: 2 additions & 0 deletions walletkit/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1798,4 +1798,6 @@
<string name="Send_Memo_PublicWarning">Diese Notiz wird öffentlich auf der Blockchain gespeichert.</string>
<string name="Send_Memo_EncryptedInfo">Diese Notiz ist verschlüsselt und nur für Sie und den Empfänger sichtbar.</string>
<string name="Send_Memo_OffchainInfo">Nur auf diesem Gerät gespeichert — nicht in der Blockchain.</string>
<string name="AddMoneroNode_Error_PortRequired">Node-URL muss einen Port enthalten, z. B. https://node.com:18081</string>
<string name="ManageAccounts_ManageWallet">Wallet verwalten</string>
</resources>
2 changes: 2 additions & 0 deletions walletkit/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1789,4 +1789,6 @@
<string name="Send_Memo_PublicWarning">Este memo será público en la blockchain.</string>
<string name="Send_Memo_EncryptedInfo">Este memo está cifrado y solo es visible para usted y el destinatario.</string>
<string name="Send_Memo_OffchainInfo">Almacenado solo en este dispositivo — no en la cadena de bloques.</string>
<string name="AddMoneroNode_Error_PortRequired">La URL del nodo debe incluir un puerto, p. ej. https://node.com:18081</string>
<string name="ManageAccounts_ManageWallet">Administrar Wallet</string>
</resources>
2 changes: 2 additions & 0 deletions walletkit/src/main/res/values-fa/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -721,4 +721,6 @@
<string name="Send_Memo_PublicWarning">این یادداشت در بلاک چین عمومی خواهد بود.</string>
<string name="Send_Memo_EncryptedInfo">این یادداشت رمزگذاری شده است و تنها برای شما و گیرنده قابل مشاهده است.</string>
<string name="Send_Memo_OffchainInfo">فقط در این دستگاه ذخیره شده است — در بلاک‌چین نیست.</string>
<string name="AddMoneroNode_Error_PortRequired">آدرس گره باید شامل یک پورت باشد، برای مثال https://node.com:18081</string>
<string name="ManageAccounts_ManageWallet">مدیریت کیف پول</string>
</resources>
2 changes: 2 additions & 0 deletions walletkit/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1791,4 +1791,6 @@
<string name="Send_Memo_PublicWarning">Ce mémo sera public sur la blockchain.</string>
<string name="Send_Memo_EncryptedInfo">Ce mémo est chiffré et visible uniquement pour vous et le destinataire.</string>
<string name="Send_Memo_OffchainInfo">Stocké sur cet appareil uniquement — pas sur la blockchain.</string>
<string name="AddMoneroNode_Error_PortRequired">L\'URL du nœud doit inclure un port, par exemple https://node.com:18081</string>
<string name="ManageAccounts_ManageWallet">Gérer le Wallet</string>
</resources>
2 changes: 2 additions & 0 deletions walletkit/src/main/res/values-ko/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1790,4 +1790,6 @@
<string name="Send_Memo_PublicWarning">이 메모는 블록체인에 공개됩니다.</string>
<string name="Send_Memo_EncryptedInfo">이 메모는 암호화되어 있으며 귀하와 수신자에게만 표시됩니다.</string>
<string name="Send_Memo_OffchainInfo">이 기기에만 저장됨 — 블록체인에 기록되지 않음.</string>
<string name="AddMoneroNode_Error_PortRequired">노드 URL에 포트가 포함되어야 합니다(예: https://node.com:18081)</string>
<string name="ManageAccounts_ManageWallet">지갑 관리</string>
</resources>
2 changes: 2 additions & 0 deletions walletkit/src/main/res/values-pt-rBR/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1794,4 +1794,6 @@
<string name="Send_Memo_PublicWarning">Este memorando será público na blockchain.</string>
<string name="Send_Memo_EncryptedInfo">Este memorando está criptografado e é visível apenas para você e o destinatário.</string>
<string name="Send_Memo_OffchainInfo">Armazenado apenas neste dispositivo — não na blockchain.</string>
<string name="AddMoneroNode_Error_PortRequired">A URL do nó deve incluir uma porta, por exemplo https://node.com:18081</string>
<string name="ManageAccounts_ManageWallet">Gerenciar Wallet</string>
</resources>
2 changes: 2 additions & 0 deletions walletkit/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1796,4 +1796,6 @@
<string name="Send_Memo_PublicWarning">Этот меморандум будет открыт в блокчейне.</string>
<string name="Send_Memo_EncryptedInfo">Этот меморандум зашифрован и видим только вам и получателю.</string>
<string name="Send_Memo_OffchainInfo">Сохранено только на этом устройстве — не в блокчейне.</string>
<string name="AddMoneroNode_Error_PortRequired">URL узла должен включать порт, например https://node.com:18081</string>
<string name="ManageAccounts_ManageWallet">Управление кошельком</string>
</resources>
2 changes: 2 additions & 0 deletions walletkit/src/main/res/values-tr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1790,4 +1790,6 @@
<string name="Send_Memo_PublicWarning">Bu not blockchain üzerinde herkese açık olacaktır.</string>
<string name="Send_Memo_EncryptedInfo">Bu not şifrelenir ve yalnızca sizin ve alıcının tarafından görülür.</string>
<string name="Send_Memo_OffchainInfo">Yalnızca bu cihazda depolanır — zincir üzerinde değildir.</string>
<string name="AddMoneroNode_Error_PortRequired">Düğüm URL\'si bir port içermelidir, örneğin https://node.com:18081</string>
<string name="ManageAccounts_ManageWallet">Wallet\'ı Yönet</string>
</resources>
2 changes: 2 additions & 0 deletions walletkit/src/main/res/values-zh/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1789,4 +1789,6 @@
<string name="Send_Memo_PublicWarning">此备忘录将在区块链上公开。</string>
<string name="Send_Memo_EncryptedInfo">此备忘录已加密,只有您和收款人可以看到。</string>
<string name="Send_Memo_OffchainInfo">仅存储在此设备上 — 不在区块链上。</string>
<string name="AddMoneroNode_Error_PortRequired">节点URL必须包含端口,例如 https://node.com:18081</string>
<string name="ManageAccounts_ManageWallet">管理钱包</string>
</resources>
1 change: 1 addition & 0 deletions walletkit/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1271,6 +1271,7 @@
<string name="AddMoneroNode_Pasword">Password (optional)</string>
<string name="AddMoneroNode_Warning_UrlExists">Node with this url already exists</string>
<string name="AddMoneroNode_Error_InvalidUrl">Entered url is invalid. Valid url must have one of the following schemes: https</string>
<string name="AddMoneroNode_Error_PortRequired">Node url must include a port, e.g. https://node.com:18081</string>
<string name="AddZanoNode_Warning_UrlExists">Node with this url already exists</string>
<string name="AddZanoNode_Error_InvalidUrl">Entered url is invalid. Valid url must have one of the following schemes: http, https</string>
<string name="MoneroNodeSettings_TrustedTitle">Node Preferences</string>
Expand Down