From 57ddddfce20bb039f4a0c01530426a842ab3bd5d Mon Sep 17 00:00:00 2001 From: m2049r Date: Sat, 13 Feb 2021 00:01:19 +0100 Subject: [PATCH] replace xmr.to with SideShift.ai (#710) replace xmr.to with SideShift.ai random bugfixes upgrade gradle & dependencies --- app/build.gradle | 15 +- .../com/m2049r/levin/scanner/LevinPeer.java | 16 + .../com/m2049r/xmrwallet/BaseActivity.java | 16 + .../com/m2049r/xmrwallet/LoginActivity.java | 82 ++-- .../com/m2049r/xmrwallet/ReceiveFragment.java | 3 +- .../java/com/m2049r/xmrwallet/TxFragment.java | 45 +- .../xmrwallet/XmrWalletApplication.java | 3 +- .../m2049r/xmrwallet/data/BarcodeData.java | 61 +-- .../m2049r/xmrwallet/data/DefaultNodes.java | 16 + .../com/m2049r/xmrwallet/data/TxData.java | 9 + .../com/m2049r/xmrwallet/data/TxDataBtc.java | 60 +-- .../com/m2049r/xmrwallet/data/UserNotes.java | 33 +- .../xmrwallet/dialog/ProgressDialog.java | 1 - .../send/SendAddressWizardFragment.java | 112 +---- .../send/SendBtcAmountWizardFragment.java | 147 +++---- .../send/SendBtcConfirmWizardFragment.java | 402 ++++++++---------- .../send/SendBtcSuccessWizardFragment.java | 98 ++--- .../xmrwallet/fragment/send/SendFragment.java | 18 - .../com/m2049r/xmrwallet/ledger/Ledger.java | 2 +- .../ledger/LedgerProgressDialog.java | 16 + .../shift}/NetworkCallback.java | 4 +- .../shift/ShiftApiCall.java} | 4 +- .../shift/ShiftCallback.java} | 4 +- .../xmrwallet/service/shift/ShiftError.java | 54 +++ .../shift/ShiftException.java} | 33 +- .../shift/sideshift/api/CreateOrder.java | 40 ++ .../sideshift/api/QueryOrderParameters.java} | 15 +- .../sideshift}/api/QueryOrderStatus.java | 52 +-- .../shift/sideshift/api/RequestQuote.java | 34 ++ .../shift/sideshift/api/SideShiftApi.java | 66 +++ .../sideshift/network/CreateOrderImpl.java | 118 +++++ .../network/QueryOrderParametersImpl.java | 42 +- .../network/QueryOrderStatusImpl.java | 146 +++++++ .../sideshift/network/RequestQuoteImpl.java | 117 +++++ .../sideshift/network/SideShiftApiImpl.java} | 71 ++-- .../m2049r/xmrwallet/util/ColorHelper.java | 16 + .../xmrwallet/util/CrazyPassEncoder.java | 18 +- .../com/m2049r/xmrwallet/util/DateHelper.java | 29 ++ .../m2049r/xmrwallet/util/DayNightMode.java | 16 + .../xmrwallet/util/FingerprintHelper.java | 16 + .../com/m2049r/xmrwallet/util/Helper.java | 22 +- .../m2049r/xmrwallet/util/LocaleHelper.java | 16 + .../xmrwallet/util/NightmodeHelper.java | 16 + .../xmrwallet/util/PaymentProtocolHelper.java | 102 ----- .../m2049r/xmrwallet/xmrto/XmrToError.java | 135 ------ .../xmrto/api/QueryOrderParameters.java | 31 -- .../m2049r/xmrwallet/xmrto/api/XmrToApi.java | 53 --- .../xmrto/network/CreateOrderImpl.java | 128 ------ .../xmrto/network/QueryOrderStatusImpl.java | 220 ---------- .../res/drawable/ic_baseline_launch_24.xml | 10 + .../main/res/drawable/ic_sideshift_white.xml | 48 +++ app/src/main/res/drawable/ic_xmrto_logo.xml | 51 +++ .../res/layout/fragment_send_btc_confirm.xml | 161 +++---- .../res/layout/fragment_send_btc_success.xml | 13 +- app/src/main/res/layout/fragment_tx_info.xml | 35 +- app/src/main/res/values-cat/about.xml | 4 +- app/src/main/res/values-cat/help.xml | 61 ++- app/src/main/res/values-cat/strings.xml | 38 +- app/src/main/res/values-de/about.xml | 4 +- app/src/main/res/values-de/help.xml | 80 ++-- app/src/main/res/values-de/strings.xml | 38 +- app/src/main/res/values-el/about.xml | 4 +- app/src/main/res/values-el/help.xml | 77 ++-- app/src/main/res/values-el/strings.xml | 38 +- app/src/main/res/values-eo/about.xml | 4 +- app/src/main/res/values-eo/help.xml | 76 ++-- app/src/main/res/values-eo/strings.xml | 38 +- app/src/main/res/values-es/help.xml | 73 ++-- app/src/main/res/values-es/strings.xml | 38 +- app/src/main/res/values-et/about.xml | 4 +- app/src/main/res/values-et/help.xml | 89 ++-- app/src/main/res/values-et/strings.xml | 38 +- app/src/main/res/values-fr/about.xml | 2 +- app/src/main/res/values-fr/help.xml | 76 ++-- app/src/main/res/values-fr/strings.xml | 38 +- app/src/main/res/values-hu/about.xml | 4 +- app/src/main/res/values-hu/help.xml | 73 ++-- app/src/main/res/values-hu/strings.xml | 38 +- app/src/main/res/values-it/about.xml | 4 +- app/src/main/res/values-it/help.xml | 72 ++-- app/src/main/res/values-it/strings.xml | 38 +- app/src/main/res/values-ja/about.xml | 6 +- app/src/main/res/values-ja/help.xml | 81 ++-- app/src/main/res/values-ja/strings.xml | 44 +- app/src/main/res/values-nb/about.xml | 4 +- app/src/main/res/values-nb/help.xml | 77 ++-- app/src/main/res/values-nb/strings.xml | 38 +- app/src/main/res/values-nl/about.xml | 4 +- app/src/main/res/values-nl/help.xml | 51 +-- app/src/main/res/values-nl/strings.xml | 38 +- app/src/main/res/values-pt-rBR/about.xml | 2 +- app/src/main/res/values-pt-rBR/help.xml | 79 ++-- app/src/main/res/values-pt-rBR/strings.xml | 38 +- app/src/main/res/values-pt/about.xml | 4 +- app/src/main/res/values-pt/help.xml | 77 ++-- app/src/main/res/values-pt/strings.xml | 38 +- app/src/main/res/values-ro/about.xml | 4 +- app/src/main/res/values-ro/help.xml | 73 ++-- app/src/main/res/values-ro/strings.xml | 38 +- app/src/main/res/values-ru/about.xml | 4 +- app/src/main/res/values-ru/help.xml | 83 ++-- app/src/main/res/values-ru/strings.xml | 38 +- app/src/main/res/values-sk/about.xml | 4 +- app/src/main/res/values-sk/help.xml | 76 ++-- app/src/main/res/values-sk/strings.xml | 38 +- app/src/main/res/values-sr/about.xml | 4 +- app/src/main/res/values-sr/help.xml | 77 ++-- app/src/main/res/values-sr/strings.xml | 38 +- app/src/main/res/values-sv/about.xml | 4 +- app/src/main/res/values-sv/help.xml | 81 ++-- app/src/main/res/values-sv/strings.xml | 38 +- app/src/main/res/values-uk/about.xml | 4 +- app/src/main/res/values-uk/help.xml | 90 ++-- app/src/main/res/values-uk/strings.xml | 38 +- app/src/main/res/values-zh-rCN/about.xml | 4 +- app/src/main/res/values-zh-rCN/help.xml | 64 ++- app/src/main/res/values-zh-rCN/strings.xml | 38 +- app/src/main/res/values-zh-rTW/about.xml | 4 +- app/src/main/res/values-zh-rTW/help.xml | 62 ++- app/src/main/res/values-zh-rTW/strings.xml | 38 +- app/src/main/res/values/about.xml | 4 +- app/src/main/res/values/help.xml | 77 ++-- app/src/main/res/values/strings.xml | 40 +- .../SideShiftApiCreateOrderTest.java | 211 +++++++++ .../SideShiftApiOrderParameterTest.java} | 76 ++-- .../SideShiftApiQueryOrderStatusTest.java | 192 +++++++++ .../SideShiftApiRequestQuoteTest.java | 195 +++++++++ .../com/m2049r/xmrwallet/util/HelperTest.java | 25 ++ .../m2049r/xmrwallet/util/UserNoteTest.java | 19 +- .../network/XmrToApiCreateOrderTest.java | 194 --------- .../xmrto/network/XmrToApiQueryOrderTest.java | 270 ------------ build.gradle | 2 +- monerujo.id | 1 + 133 files changed, 3404 insertions(+), 3565 deletions(-) rename app/src/main/java/com/m2049r/xmrwallet/{xmrto/network => service/shift}/NetworkCallback.java (89%) rename app/src/main/java/com/m2049r/xmrwallet/{xmrto/network/XmrToApiCall.java => service/shift/ShiftApiCall.java} (91%) rename app/src/main/java/com/m2049r/xmrwallet/{xmrto/api/XmrToCallback.java => service/shift/ShiftCallback.java} (89%) create mode 100644 app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftError.java rename app/src/main/java/com/m2049r/xmrwallet/{xmrto/XmrToException.java => service/shift/ShiftException.java} (55%) create mode 100644 app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/CreateOrder.java rename app/src/main/java/com/m2049r/xmrwallet/{xmrto/api/CreateOrder.java => service/shift/sideshift/api/QueryOrderParameters.java} (70%) rename app/src/main/java/com/m2049r/xmrwallet/{xmrto => service/shift/sideshift}/api/QueryOrderStatus.java (50%) create mode 100644 app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/RequestQuote.java create mode 100644 app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/SideShiftApi.java create mode 100644 app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/CreateOrderImpl.java rename app/src/main/java/com/m2049r/xmrwallet/{xmrto => service/shift/sideshift}/network/QueryOrderParametersImpl.java (50%) create mode 100644 app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/QueryOrderStatusImpl.java create mode 100644 app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/RequestQuoteImpl.java rename app/src/main/java/com/m2049r/xmrwallet/{xmrto/network/XmrToApiImpl.java => service/shift/sideshift/network/SideShiftApiImpl.java} (59%) create mode 100644 app/src/main/java/com/m2049r/xmrwallet/util/DateHelper.java delete mode 100644 app/src/main/java/com/m2049r/xmrwallet/util/PaymentProtocolHelper.java delete mode 100644 app/src/main/java/com/m2049r/xmrwallet/xmrto/XmrToError.java delete mode 100644 app/src/main/java/com/m2049r/xmrwallet/xmrto/api/QueryOrderParameters.java delete mode 100644 app/src/main/java/com/m2049r/xmrwallet/xmrto/api/XmrToApi.java delete mode 100644 app/src/main/java/com/m2049r/xmrwallet/xmrto/network/CreateOrderImpl.java delete mode 100644 app/src/main/java/com/m2049r/xmrwallet/xmrto/network/QueryOrderStatusImpl.java create mode 100644 app/src/main/res/drawable/ic_baseline_launch_24.xml create mode 100644 app/src/main/res/drawable/ic_sideshift_white.xml create mode 100644 app/src/main/res/drawable/ic_xmrto_logo.xml create mode 100644 app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiCreateOrderTest.java rename app/src/test/java/com/m2049r/xmrwallet/{xmrto/network/XmrToApiOrderParameterTest.java => service/shift/sideshift/SideShiftApiOrderParameterTest.java} (59%) create mode 100644 app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiQueryOrderStatusTest.java create mode 100644 app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiRequestQuoteTest.java delete mode 100644 app/src/test/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiCreateOrderTest.java delete mode 100644 app/src/test/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiQueryOrderTest.java create mode 100644 monerujo.id diff --git a/app/build.gradle b/app/build.gradle index 3a74cd86..c2bb0b4e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "com.m2049r.xmrwallet" minSdkVersion 21 targetSdkVersion 29 - versionCode 602 - versionName "1.16.2 'Karmic Nodes'" + versionCode 702 + versionName "1.17.2 'Druk'" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { @@ -56,6 +56,9 @@ android { debug { applicationIdSuffix ".debug" } + applicationVariants.all { variant -> + variant.buildConfigField "String", "ID_A", "\"" + getId("ID_A") + "\"" + } } externalNativeBuild { @@ -109,10 +112,16 @@ android { } } +def getId(name) { + def Properties props = new Properties() + props.load(new FileInputStream(new File('monerujo.id'))) + return props[name] +} + dependencies { implementation 'androidx.core:core:1.3.2' implementation 'androidx.appcompat:appcompat:1.2.0' - implementation 'com.google.android.material:material:1.3.0-alpha03' + implementation 'com.google.android.material:material:1.3.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'androidx.cardview:cardview:1.0.0' diff --git a/app/src/main/java/com/m2049r/levin/scanner/LevinPeer.java b/app/src/main/java/com/m2049r/levin/scanner/LevinPeer.java index 1e90e2e3..aba2fa88 100644 --- a/app/src/main/java/com/m2049r/levin/scanner/LevinPeer.java +++ b/app/src/main/java/com/m2049r/levin/scanner/LevinPeer.java @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2018 m2049r + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.m2049r.levin.scanner; import java.net.InetAddress; diff --git a/app/src/main/java/com/m2049r/xmrwallet/BaseActivity.java b/app/src/main/java/com/m2049r/xmrwallet/BaseActivity.java index 409feb01..43185b24 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/BaseActivity.java +++ b/app/src/main/java/com/m2049r/xmrwallet/BaseActivity.java @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2017-2020 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.m2049r.xmrwallet; import android.app.PendingIntent; diff --git a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java index 2355038c..7b1d8717 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java +++ b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java @@ -301,24 +301,21 @@ public class LoginActivity extends BaseActivity setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); - toolbar.setOnButtonListener(new Toolbar.OnButtonListener() { - @Override - public void onButton(int type) { - switch (type) { - case Toolbar.BUTTON_BACK: - onBackPressed(); - break; - case Toolbar.BUTTON_CLOSE: - finish(); - break; - case Toolbar.BUTTON_CREDITS: - CreditsFragment.display(getSupportFragmentManager()); - break; - case Toolbar.BUTTON_NONE: - break; - default: - Timber.e("Button " + type + "pressed - how can this be?"); - } + toolbar.setOnButtonListener(type -> { + switch (type) { + case Toolbar.BUTTON_BACK: + onBackPressed(); + break; + case Toolbar.BUTTON_CLOSE: + finish(); + break; + case Toolbar.BUTTON_CREDITS: + CreditsFragment.display(getSupportFragmentManager()); + break; + case Toolbar.BUTTON_NONE: + break; + default: + Timber.e("Button " + type + "pressed - how can this be?"); } }); @@ -366,34 +363,31 @@ public class LoginActivity extends BaseActivity public void onWalletDetails(final String walletName) { Timber.d("details for wallet .%s.", walletName); if (checkServiceRunning()) return; - DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - switch (which) { - case DialogInterface.BUTTON_POSITIVE: - final File walletFile = Helper.getWalletFile(LoginActivity.this, walletName); - if (WalletManager.getInstance().walletExists(walletFile)) { - Helper.promptPassword(LoginActivity.this, walletName, true, new Helper.PasswordAction() { - @Override - public void act(String walletName, String password, boolean fingerprintUsed) { - if (checkDevice(walletName, password)) - startDetails(walletFile, password, GenerateReviewFragment.VIEW_TYPE_DETAILS); - } + DialogInterface.OnClickListener dialogClickListener = (dialog, which) -> { + switch (which) { + case DialogInterface.BUTTON_POSITIVE: + final File walletFile = Helper.getWalletFile(LoginActivity.this, walletName); + if (WalletManager.getInstance().walletExists(walletFile)) { + Helper.promptPassword(LoginActivity.this, walletName, true, new Helper.PasswordAction() { + @Override + public void act(String walletName1, String password, boolean fingerprintUsed) { + if (checkDevice(walletName1, password)) + startDetails(walletFile, password, GenerateReviewFragment.VIEW_TYPE_DETAILS); + } - @Override - public void fail(String walletName, String password, boolean fingerprintUsed) { - } - }); - } else { // this cannot really happen as we prefilter choices - Timber.e("Wallet missing: %s", walletName); - Toast.makeText(LoginActivity.this, getString(R.string.bad_wallet), Toast.LENGTH_SHORT).show(); - } - break; + @Override + public void fail(String walletName1, String password, boolean fingerprintUsed) { + } + }); + } else { // this cannot really happen as we prefilter choices + Timber.e("Wallet missing: %s", walletName); + Toast.makeText(LoginActivity.this, getString(R.string.bad_wallet), Toast.LENGTH_SHORT).show(); + } + break; - case DialogInterface.BUTTON_NEGATIVE: - // do nothing - break; - } + case DialogInterface.BUTTON_NEGATIVE: + // do nothing + break; } }; diff --git a/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java b/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java index 0636a4ac..ffc0c5b4 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java +++ b/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java @@ -56,6 +56,7 @@ import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; +import com.m2049r.xmrwallet.BuildConfig; import com.m2049r.xmrwallet.data.BarcodeData; import com.m2049r.xmrwallet.ledger.LedgerProgressDialog; import com.m2049r.xmrwallet.model.Wallet; @@ -468,7 +469,7 @@ public class ReceiveFragment extends Fragment { Timber.d("CLEARQR"); return; } - bcData = new BarcodeData(BarcodeData.Asset.XMR, address, null, notes, xmrAmount); + bcData = new BarcodeData(BarcodeData.Asset.XMR, address, notes, xmrAmount); int size = Math.max(ivQrCode.getWidth(), ivQrCode.getHeight()); Bitmap qr = generate(bcData.getUriString(), size, size); if (qr != null) { diff --git a/app/src/main/java/com/m2049r/xmrwallet/TxFragment.java b/app/src/main/java/com/m2049r/xmrwallet/TxFragment.java index 17d68d8d..ccf72c42 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/TxFragment.java +++ b/app/src/main/java/com/m2049r/xmrwallet/TxFragment.java @@ -16,8 +16,11 @@ package com.m2049r.xmrwallet; +import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; +import android.graphics.Paint; +import android.net.Uri; import android.os.Bundle; import android.text.InputType; import android.view.LayoutInflater; @@ -25,6 +28,7 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -77,6 +81,9 @@ public class TxFragment extends Fragment { private TextView tvTxXmrToKey; private TextView tvDestinationBtc; private TextView tvTxAmountBtc; + private TextView tvXmrToSupport; + private TextView tvXmrToKeyLabel; + private ImageView tvXmrToLogo; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, @@ -88,6 +95,9 @@ public class TxFragment extends Fragment { tvTxXmrToKey = view.findViewById(R.id.tvTxXmrToKey); tvDestinationBtc = view.findViewById(R.id.tvDestinationBtc); tvTxAmountBtc = view.findViewById(R.id.tvTxAmountBtc); + tvXmrToSupport = view.findViewById(R.id.tvXmrToSupport); + tvXmrToKeyLabel = view.findViewById(R.id.tvXmrToKeyLabel); + tvXmrToLogo = view.findViewById(R.id.tvXmrToLogo); tvAccount = view.findViewById(R.id.tvAccount); tvAddress = view.findViewById(R.id.tvAddress); @@ -104,12 +114,9 @@ public class TxFragment extends Fragment { etTxNotes.setRawInputType(InputType.TYPE_CLASS_TEXT); - tvTxXmrToKey.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Helper.clipBoardCopy(getActivity(), getString(R.string.label_copy_xmrtokey), tvTxXmrToKey.getText().toString()); - Toast.makeText(getActivity(), getString(R.string.message_copy_xmrtokey), Toast.LENGTH_SHORT).show(); - } + tvTxXmrToKey.setOnClickListener(v -> { + Helper.clipBoardCopy(getActivity(), getString(R.string.label_copy_xmrtokey), tvTxXmrToKey.getText().toString()); + Toast.makeText(getActivity(), getString(R.string.message_copy_xmrtokey), Toast.LENGTH_SHORT).show(); }); Bundle args = getArguments(); @@ -283,12 +290,36 @@ public class TxFragment extends Fragment { showBtcInfo(); } + @SuppressLint("SetTextI18n") void showBtcInfo() { if (userNotes.xmrtoKey != null) { cvXmrTo.setVisibility(View.VISIBLE); - tvTxXmrToKey.setText(userNotes.xmrtoKey); + String key = userNotes.xmrtoKey; + if ("xmrto".equals(userNotes.xmrtoTag)) { // legacy xmr.to service :( + key = "xmrto-" + key; + } + tvTxXmrToKey.setText(key); tvDestinationBtc.setText(userNotes.xmrtoDestination); tvTxAmountBtc.setText(userNotes.xmrtoAmount + " BTC"); + switch (userNotes.xmrtoTag) { + case "xmrto": + tvXmrToSupport.setVisibility(View.GONE); + tvXmrToKeyLabel.setVisibility(View.INVISIBLE); + tvXmrToLogo.setImageResource(R.drawable.ic_xmrto_logo); + break; + case "side": // defaults in layout - just add underline + tvXmrToSupport.setPaintFlags(tvXmrToSupport.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); + tvXmrToSupport.setOnClickListener(v -> { + Uri uri = Uri.parse("https://sideshift.ai/orders/" + userNotes.xmrtoKey); + Intent intent = new Intent(Intent.ACTION_VIEW, uri); + startActivity(intent); + }); + break; + default: + tvXmrToSupport.setVisibility(View.GONE); + tvXmrToKeyLabel.setVisibility(View.INVISIBLE); + tvXmrToLogo.setVisibility(View.GONE); + } } else { cvXmrTo.setVisibility(View.GONE); } diff --git a/app/src/main/java/com/m2049r/xmrwallet/XmrWalletApplication.java b/app/src/main/java/com/m2049r/xmrwallet/XmrWalletApplication.java index c3f40b7f..16059f6f 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/XmrWalletApplication.java +++ b/app/src/main/java/com/m2049r/xmrwallet/XmrWalletApplication.java @@ -16,14 +16,13 @@ package com.m2049r.xmrwallet; - import android.app.Application; import android.content.Context; import android.content.res.Configuration; import android.os.Build; +import com.m2049r.xmrwallet.BuildConfig; import com.m2049r.xmrwallet.model.NetworkType; -import com.m2049r.xmrwallet.util.DayNightMode; import com.m2049r.xmrwallet.util.LocaleHelper; import com.m2049r.xmrwallet.util.NightmodeHelper; diff --git a/app/src/main/java/com/m2049r/xmrwallet/data/BarcodeData.java b/app/src/main/java/com/m2049r/xmrwallet/data/BarcodeData.java index fbb954b6..8d2b60f7 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/data/BarcodeData.java +++ b/app/src/main/java/com/m2049r/xmrwallet/data/BarcodeData.java @@ -21,7 +21,6 @@ import android.net.Uri; import com.m2049r.xmrwallet.model.Wallet; import com.m2049r.xmrwallet.util.BitcoinAddressValidator; import com.m2049r.xmrwallet.util.OpenAliasHelper; -import com.m2049r.xmrwallet.util.PaymentProtocolHelper; import java.net.URI; import java.net.URISyntaxException; @@ -43,7 +42,6 @@ public class BarcodeData { static final String BTC_SCHEME = "bitcoin"; static final String BTC_DESCRIPTION = "message"; static final String BTC_AMOUNT = "amount"; - static final String BTC_BIP70_PARM = "r"; public enum Asset { XMR, BTC @@ -52,8 +50,7 @@ public class BarcodeData { public enum Security { NORMAL, OA_NO_DNSSEC, - OA_DNSSEC, - BIP70 + OA_DNSSEC } final public Asset asset; @@ -62,7 +59,6 @@ public class BarcodeData { final public String amount; final public String description; final public Security security; - final public String bip70; public BarcodeData(Asset asset, String address) { this(asset, address, null, null, null, Security.NORMAL); @@ -80,21 +76,19 @@ public class BarcodeData { this(asset, address, null, description, amount, Security.NORMAL); } - public BarcodeData(Asset asset, String address, String addressName, String description, String amount, Security security) { - this(asset, address, addressName, null, description, amount, security); + public BarcodeData(Asset asset, String address, String description, String amount) { + this(asset, address, null, description, amount, Security.NORMAL); } - public BarcodeData(Asset asset, String address, String addressName, String bip70, String description, String amount, Security security) { + public BarcodeData(Asset asset, String address, String addressName, String description, String amount, Security security) { this.asset = asset; this.address = address; - this.bip70 = bip70; this.addressName = addressName; this.description = description; this.amount = amount; this.security = security; } - public Uri getUri() { return Uri.parse(getUriString()); } @@ -127,10 +121,6 @@ public class BarcodeData { if (bcData == null) { bcData = parseBitcoinUri(qrCode); } - // check for btc payment uri (like bitpay) - if (bcData == null) { - bcData = parseBitcoinPaymentUrl(qrCode); - } // check for naked btc address if (bcData == null) { bcData = parseBitcoinNaked(qrCode); @@ -195,7 +185,7 @@ public class BarcodeData { Timber.d("address invalid"); return null; } - return new BarcodeData(Asset.XMR, address, paymentId, description, amount); + return new BarcodeData(Asset.XMR, address, description, amount); } static public BarcodeData parseMoneroNaked(String address) { @@ -245,17 +235,9 @@ public class BarcodeData { } String description = parms.get(BTC_DESCRIPTION); String address = parts[0]; // no need to decode as there can bo no special characters - if (address.isEmpty()) { // possibly a BIP72 uri - String bip70 = parms.get(BTC_BIP70_PARM); - if (bip70 == null) { - Timber.d("no address and can't find pp url"); - return null; - } - if (!PaymentProtocolHelper.isHttp(bip70)) { - Timber.d("[%s] is not http url", bip70); - return null; - } - return new BarcodeData(BarcodeData.Asset.BTC, null, null, bip70, description, null, Security.NORMAL); + if (address.isEmpty()) { + Timber.d("no address"); + return null; } if (!BitcoinAddressValidator.validate(address)) { Timber.d("BTC address (%s) invalid", address); @@ -270,22 +252,7 @@ public class BarcodeData { return null; // we have an amount but its not a number! } } - return new BarcodeData(BarcodeData.Asset.BTC, address, null, description, amount); - } - - // https://bitpay.com/invoice?id=xxx - // https://bitpay.com/i/KbMdd4EhnLXSbpWGKsaeo6 - static public BarcodeData parseBitcoinPaymentUrl(String url) { - Timber.d("parseBitcoinUri=%s", url); - - if (url == null) return null; - - if (!PaymentProtocolHelper.isHttp(url)) { - Timber.d("[%s] is not http url", url); - return null; - } - - return new BarcodeData(Asset.BTC, url); + return new BarcodeData(BarcodeData.Asset.BTC, address, description, amount); } static public BarcodeData parseBitcoinNaked(String address) { @@ -333,6 +300,10 @@ public class BarcodeData { } String paymentId = oaAttrs.get(OpenAliasHelper.OA1_PAYMENTID); + if (paymentId != null) { + Timber.e("paymentId not supported"); + return null; + } String description = oaAttrs.get(OpenAliasHelper.OA1_DESCRIPTION); if (description == null) { description = oaAttrs.get(OpenAliasHelper.OA1_NAME); @@ -348,13 +319,9 @@ public class BarcodeData { return null; // we have an amount but its not a number! } } - if ((paymentId != null) && !Wallet.isPaymentIdValid(paymentId)) { - Timber.d("paymentId invalid"); - return null; - } Security sec = dnssec ? BarcodeData.Security.OA_DNSSEC : BarcodeData.Security.OA_NO_DNSSEC; - return new BarcodeData(asset, address, addressName, paymentId, description, amount, sec); + return new BarcodeData(asset, address, addressName, description, amount, sec); } } \ No newline at end of file diff --git a/app/src/main/java/com/m2049r/xmrwallet/data/DefaultNodes.java b/app/src/main/java/com/m2049r/xmrwallet/data/DefaultNodes.java index 42dd75d0..31490e22 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/data/DefaultNodes.java +++ b/app/src/main/java/com/m2049r/xmrwallet/data/DefaultNodes.java @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2020 m2049r + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.m2049r.xmrwallet.data; import lombok.AllArgsConstructor; diff --git a/app/src/main/java/com/m2049r/xmrwallet/data/TxData.java b/app/src/main/java/com/m2049r/xmrwallet/data/TxData.java index 6e0c3a2e..1aedcf7a 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/data/TxData.java +++ b/app/src/main/java/com/m2049r/xmrwallet/data/TxData.java @@ -20,6 +20,7 @@ import android.os.Parcel; import android.os.Parcelable; import com.m2049r.xmrwallet.model.PendingTransaction; +import com.m2049r.xmrwallet.model.Wallet; // https://stackoverflow.com/questions/2139134/how-to-send-an-object-from-one-android-activity-to-another-using-intents public class TxData implements Parcelable { @@ -52,6 +53,10 @@ public class TxData implements Parcelable { return amount; } + public double getAmountAsDouble() { + return 1.0 * amount / 1000000000000L; + } + public int getMixin() { return mixin; } @@ -68,6 +73,10 @@ public class TxData implements Parcelable { this.amount = amount; } + public void setAmount(double amount) { + this.amount = Wallet.getAmountFromDouble(amount); + } + public void setMixin(int mixin) { this.mixin = mixin; } diff --git a/app/src/main/java/com/m2049r/xmrwallet/data/TxDataBtc.java b/app/src/main/java/com/m2049r/xmrwallet/data/TxDataBtc.java index 635cb642..d95dbd23 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/data/TxDataBtc.java +++ b/app/src/main/java/com/m2049r/xmrwallet/data/TxDataBtc.java @@ -18,11 +18,20 @@ package com.m2049r.xmrwallet.data; import android.os.Parcel; -public class TxDataBtc extends TxData { +import androidx.annotation.NonNull; - private String xmrtoUuid; +import lombok.Getter; +import lombok.Setter; + +public class TxDataBtc extends TxData { + @Getter + @Setter + private String xmrtoOrderId; // shown in success screen + @Getter + @Setter private String btcAddress; - private String bip70; + @Getter + @Setter private double btcAmount; public TxDataBtc() { @@ -33,44 +42,11 @@ public class TxDataBtc extends TxData { super(txDataBtc); } - public String getXmrtoUuid() { - return xmrtoUuid; - } - - public void setXmrtoUuid(String xmrtoUuid) { - this.xmrtoUuid = xmrtoUuid; - } - - public String getBtcAddress() { - return btcAddress; - } - - public void setBtcAddress(String btcAddress) { - this.btcAddress = btcAddress; - } - - public String getBip70() { - return bip70; - } - - public void setBip70(String bip70) { - this.bip70 = bip70; - } - - public double getBtcAmount() { - return btcAmount; - } - - public void setBtcAmount(double btcAmount) { - this.btcAmount = btcAmount; - } - @Override public void writeToParcel(Parcel out, int flags) { super.writeToParcel(out, flags); - out.writeString(xmrtoUuid); + out.writeString(xmrtoOrderId); out.writeString(btcAddress); - out.writeString(bip70); out.writeDouble(btcAmount); } @@ -87,21 +63,19 @@ public class TxDataBtc extends TxData { protected TxDataBtc(Parcel in) { super(in); - xmrtoUuid = in.readString(); + xmrtoOrderId = in.readString(); btcAddress = in.readString(); - bip70 = in.readString(); btcAmount = in.readDouble(); } + @NonNull @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append(",xmrtoUuid:"); - sb.append(xmrtoUuid); + sb.append("xmrtoOrderId:"); + sb.append(xmrtoOrderId); sb.append(",btcAddress:"); sb.append(btcAddress); - sb.append(",bip70:"); - sb.append(bip70); sb.append(",btcAmount:"); sb.append(btcAmount); return sb.toString(); diff --git a/app/src/main/java/com/m2049r/xmrwallet/data/UserNotes.java b/app/src/main/java/com/m2049r/xmrwallet/data/UserNotes.java index 5062512a..0e831059 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/data/UserNotes.java +++ b/app/src/main/java/com/m2049r/xmrwallet/data/UserNotes.java @@ -16,16 +16,16 @@ package com.m2049r.xmrwallet.data; -import com.m2049r.xmrwallet.xmrto.api.QueryOrderStatus; +import com.m2049r.xmrwallet.service.shift.sideshift.api.CreateOrder; +import com.m2049r.xmrwallet.util.Helper; import java.util.regex.Matcher; import java.util.regex.Pattern; -import timber.log.Timber; - public class UserNotes { public String txNotes = ""; public String note = ""; + public String xmrtoTag = null; public String xmrtoKey = null; public String xmrtoAmount = null; // could be a double - but we are not doing any calculations public String xmrtoDestination = null; @@ -35,13 +35,14 @@ public class UserNotes { return; } this.txNotes = txNotes; - Pattern p = Pattern.compile("^\\{(xmrto-\\w{6}),([0-9.]*)BTC,(\\w*)\\} ?(.*)"); + Pattern p = Pattern.compile("^\\{([a-z]+)-(\\w{6,}),([0-9.]*)BTC,(\\w*)\\} ?(.*)"); Matcher m = p.matcher(txNotes); if (m.find()) { - xmrtoKey = m.group(1); - xmrtoAmount = m.group(2); - xmrtoDestination = m.group(3); - note = m.group(4); + xmrtoTag = m.group(1); + xmrtoKey = m.group(2); + xmrtoAmount = m.group(3); + xmrtoDestination = m.group(4); + note = m.group(5); } else { note = txNotes; } @@ -56,12 +57,14 @@ public class UserNotes { txNotes = buildTxNote(); } - public void setXmrtoStatus(QueryOrderStatus xmrtoStatus) { - if (xmrtoStatus != null) { - xmrtoKey = xmrtoStatus.getUuid(); - xmrtoAmount = String.valueOf(xmrtoStatus.getBtcAmount()); - xmrtoDestination = xmrtoStatus.getBtcDestAddress(); + public void setXmrtoOrder(CreateOrder order) { + if (order != null) { + xmrtoTag = order.TAG; + xmrtoKey = order.getOrderId(); + xmrtoAmount = Helper.getDisplayAmount(order.getBtcAmount()); + xmrtoDestination = order.getBtcAddress(); } else { + xmrtoTag = null; xmrtoKey = null; xmrtoAmount = null; xmrtoDestination = null; @@ -70,11 +73,13 @@ public class UserNotes { } private String buildTxNote() { - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); if (xmrtoKey != null) { if ((xmrtoAmount == null) || (xmrtoDestination == null)) throw new IllegalArgumentException("Broken notes"); sb.append("{"); + sb.append(xmrtoTag); + sb.append("-"); sb.append(xmrtoKey); sb.append(","); sb.append(xmrtoAmount); diff --git a/app/src/main/java/com/m2049r/xmrwallet/dialog/ProgressDialog.java b/app/src/main/java/com/m2049r/xmrwallet/dialog/ProgressDialog.java index 8900a44f..a8bb780d 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/dialog/ProgressDialog.java +++ b/app/src/main/java/com/m2049r/xmrwallet/dialog/ProgressDialog.java @@ -27,7 +27,6 @@ import android.widget.TextView; import androidx.appcompat.app.AlertDialog; -import com.m2049r.xmrwallet.BuildConfig; import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.util.Helper; diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAddressWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAddressWizardFragment.java index 959001bf..2ad428e8 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAddressWizardFragment.java +++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAddressWizardFragment.java @@ -34,6 +34,8 @@ import android.widget.ImageButton; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; + import com.google.android.material.textfield.TextInputLayout; import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.data.BarcodeData; @@ -45,9 +47,6 @@ import com.m2049r.xmrwallet.model.Wallet; import com.m2049r.xmrwallet.util.BitcoinAddressValidator; import com.m2049r.xmrwallet.util.Helper; import com.m2049r.xmrwallet.util.OpenAliasHelper; -import com.m2049r.xmrwallet.util.PaymentProtocolHelper; -import com.m2049r.xmrwallet.xmrto.XmrToError; -import com.m2049r.xmrwallet.xmrto.XmrToException; import java.util.Map; @@ -92,8 +91,6 @@ public class SendAddressWizardFragment extends SendWizardFragment { private ImageButton bPasteAddress; private boolean resolvingOA = false; - private boolean resolvingPP = false; - private String resolvedPP = null; OnScanListener onScanListener; @@ -125,20 +122,11 @@ public class SendAddressWizardFragment extends SendWizardFragment { @Override public void onFocusChange(View v, boolean hasFocus) { if (!hasFocus) { - View next = etAddress; String enteredAddress = etAddress.getEditText().getText().toString().trim(); String dnsOA = dnsFromOpenAlias(enteredAddress); Timber.d("OpenAlias is %s", dnsOA); if (dnsOA != null) { processOpenAlias(dnsOA); - next = null; - } else { - // maybe a bip72 or 70 URI - final String bip70 = PaymentProtocolHelper.getBip70(enteredAddress); - if (bip70 != null) { - // looks good - resolve through xmr.to - processBip70(bip70); - } } } } @@ -147,8 +135,6 @@ public class SendAddressWizardFragment extends SendWizardFragment { @Override public void afterTextChanged(Editable editable) { Timber.d("AFTER: %s", editable.toString()); - if (editable.toString().equals(resolvedPP)) return; // no change required - resolvedPP = null; etAddress.setError(null); if (isIntegratedAddress()) { Timber.d("isIntegratedAddress"); @@ -156,7 +142,7 @@ public class SendAddressWizardFragment extends SendWizardFragment { tvPaymentIdIntegrated.setVisibility(View.VISIBLE); llXmrTo.setVisibility(View.INVISIBLE); sendListener.setMode(SendFragment.Mode.XMR); - } else if (isBitcoinAddress() || (resolvedPP != null)) { + } else if (isBitcoinAddress()) { Timber.d("isBitcoinAddress"); setBtcMode(); } else { @@ -190,14 +176,7 @@ public class SendAddressWizardFragment extends SendWizardFragment { et.setSelection(et.getText().length()); etAddress.requestFocus(); } else { - final String bip70 = PaymentProtocolHelper.getBip70(clip); - if (bip70 != null) { - final EditText et = etAddress.getEditText(); - et.setText(clip); - et.setSelection(et.getText().length()); - processBip70(bip70); - } else - Toast.makeText(getActivity(), getString(R.string.send_address_invalid), Toast.LENGTH_SHORT).show(); + Toast.makeText(getActivity(), getString(R.string.send_address_invalid), Toast.LENGTH_SHORT).show(); } } }); @@ -273,62 +252,10 @@ public class SendAddressWizardFragment extends SendWizardFragment { } // else ignore } - private void processBip70(final String bip70) { - Timber.d("RESOLVED PP: %s", resolvedPP); - if (resolvingPP) return; // already resolving - just wait - resolvingPP = true; - sendListener.popBarcodeData(); - etAddress.setError(getString(R.string.send_address_resolve_bip70)); - PaymentProtocolHelper.resolve(bip70, new PaymentProtocolHelper.OnResolvedListener() { - @Override - public void onResolved(BarcodeData.Asset asset, String address, double amount, String resolvedBip70) { - resolvingPP = false; - if (asset != BarcodeData.Asset.BTC) - throw new IllegalArgumentException("only BTC here"); - - if (resolvedBip70 == null) - throw new IllegalArgumentException("success means we have a pp_url - else die"); - - final BarcodeData barcodeData = - new BarcodeData(BarcodeData.Asset.BTC, address, null, - resolvedBip70, null, String.valueOf(amount), - BarcodeData.Security.BIP70); - etNotes.post(new Runnable() { - @Override - public void run() { - Timber.d("security is %s", barcodeData.security); - processScannedData(barcodeData); - etNotes.requestFocus(); - } - }); - } - - @Override - public void onFailure(final Exception ex) { - resolvingPP = false; - etAddress.post(new Runnable() { - @Override - public void run() { - int errorMsgId = R.string.send_address_not_bip70; - if (ex instanceof XmrToException) { - XmrToError error = ((XmrToException) ex).getError(); - if (error != null) { - errorMsgId = error.getErrorMsgId(); - } - } - etAddress.setError(getString(errorMsgId)); - } - }); - Timber.d("PP FAILED"); - } - }); - } - private boolean checkAddressNoError() { String address = etAddress.getEditText().getText().toString(); return Wallet.isAddressValid(address) - || BitcoinAddressValidator.validate(address) - || (resolvedPP != null); + || BitcoinAddressValidator.validate(address); } private boolean checkAddress() { @@ -365,11 +292,6 @@ public class SendAddressWizardFragment extends SendWizardFragment { Timber.d("OpenAlias is %s", dnsOA); if (dnsOA != null) { processOpenAlias(dnsOA); - } else { - String bip70 = PaymentProtocolHelper.getBip70(enteredAddress); - if (bip70 != null) { - processBip70(bip70); - } } return false; } @@ -377,15 +299,7 @@ public class SendAddressWizardFragment extends SendWizardFragment { if (sendListener != null) { TxData txData = sendListener.getTxData(); if (txData instanceof TxDataBtc) { - if (resolvedPP != null) { - // take the value from the field nonetheless as this is what the user sees - // (in case we have a bug somewhere) - ((TxDataBtc) txData).setBip70(etAddress.getEditText().getText().toString()); - ((TxDataBtc) txData).setBtcAddress(null); - } else { - ((TxDataBtc) txData).setBtcAddress(etAddress.getEditText().getText().toString()); - ((TxDataBtc) txData).setBip70(null); - } + ((TxDataBtc) txData).setBtcAddress(etAddress.getEditText().getText().toString()); txData.setDestinationAddress(null); } else { txData.setDestinationAddress(etAddress.getEditText().getText().toString()); @@ -398,7 +312,7 @@ public class SendAddressWizardFragment extends SendWizardFragment { } @Override - public void onAttach(Context context) { + public void onAttach(@NonNull Context context) { super.onAttach(context); if (context instanceof OnScanListener) { onScanListener = (OnScanListener) context; @@ -424,21 +338,11 @@ public class SendAddressWizardFragment extends SendWizardFragment { } public void processScannedData() { - resolvedPP = null; BarcodeData barcodeData = sendListener.getBarcodeData(); if (barcodeData != null) { Timber.d("GOT DATA"); - if (barcodeData.bip70 != null) { - setBtcMode(); - if (barcodeData.security == BarcodeData.Security.BIP70) { - resolvedPP = barcodeData.bip70; - etAddress.setError(getString(R.string.send_address_bip70)); - } else { - processBip70(barcodeData.bip70); - } - etAddress.getEditText().setText(barcodeData.bip70); - } else if (barcodeData.address != null) { + if (barcodeData.address != null) { etAddress.getEditText().setText(barcodeData.address); if (checkAddress()) { if (barcodeData.security == BarcodeData.Security.OA_NO_DNSSEC) diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcAmountWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcAmountWizardFragment.java index 8a6055d2..b819d5cd 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcAmountWizardFragment.java +++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcAmountWizardFragment.java @@ -19,7 +19,6 @@ package com.m2049r.xmrwallet.fragment.send; import android.os.Bundle; import android.text.Html; import android.text.Spanned; -import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -31,15 +30,14 @@ import com.m2049r.xmrwallet.data.TxDataBtc; import com.m2049r.xmrwallet.model.Wallet; import com.m2049r.xmrwallet.util.Helper; import com.m2049r.xmrwallet.util.OkHttpHelper; -import com.m2049r.xmrwallet.widget.ExchangeEditText; import com.m2049r.xmrwallet.widget.ExchangeOtherEditText; import com.m2049r.xmrwallet.widget.SendProgressView; -import com.m2049r.xmrwallet.xmrto.XmrToError; -import com.m2049r.xmrwallet.xmrto.XmrToException; -import com.m2049r.xmrwallet.xmrto.api.QueryOrderParameters; -import com.m2049r.xmrwallet.xmrto.api.XmrToApi; -import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; -import com.m2049r.xmrwallet.xmrto.network.XmrToApiImpl; +import com.m2049r.xmrwallet.service.shift.ShiftError; +import com.m2049r.xmrwallet.service.shift.ShiftException; +import com.m2049r.xmrwallet.service.shift.sideshift.api.QueryOrderParameters; +import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi; +import com.m2049r.xmrwallet.service.shift.ShiftCallback; +import com.m2049r.xmrwallet.service.shift.sideshift.network.SideShiftApiImpl; import java.text.NumberFormat; import java.util.Locale; @@ -93,17 +91,22 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment { @Override public boolean onValidateFields() { + Timber.i(maxBtc + "/" + minBtc); if (!etAmount.validate(maxBtc, minBtc)) { return false; } + if (orderParameters == null) { + return false; // this should never happen + } if (sendListener != null) { TxDataBtc txDataBtc = (TxDataBtc) sendListener.getTxData(); String btcString = etAmount.getNativeAmount(); if (btcString != null) { try { double btc = Double.parseDouble(btcString); - Timber.d("setAmount %f", btc); + Timber.d("setBtcAmount %f", btc); txDataBtc.setBtcAmount(btc); + txDataBtc.setAmount(btc / orderParameters.getPrice()); } catch (NumberFormatException ex) { Timber.d(ex.getLocalizedMessage()); txDataBtc.setBtcAmount(0); @@ -115,17 +118,6 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment { return true; } - private void setBip70Mode() { - TxDataBtc txDataBtc = (TxDataBtc) sendListener.getTxData(); - if (txDataBtc.getBip70() == null) { - etAmount.setEditable(true); - Helper.showKeyboard(getActivity()); - } else { - etAmount.setEditable(false); - Helper.hideKeyboard(getActivity()); - } - } - double maxBtc = 0; double minBtc = 0; @@ -152,7 +144,6 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment { etAmount.setAmount(data.amount); } } - setBip70Mode(); callXmrTo(); } @@ -164,45 +155,37 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment { private void processOrderParms(final QueryOrderParameters orderParameters) { this.orderParameters = orderParameters; - getView().post(new Runnable() { - @Override - public void run() { - etAmount.setExchangeRate(1.0d / orderParameters.getPrice()); - NumberFormat df = NumberFormat.getInstance(Locale.US); - df.setMaximumFractionDigits(6); - String min = df.format(orderParameters.getLowerLimit()); - String max = df.format(orderParameters.getUpperLimit()); - String rate = df.format(orderParameters.getPrice()); - Spanned xmrParmText = Html.fromHtml(getString(R.string.info_send_xmrto_parms, min, max, rate)); - if (orderParameters.isZeroConfEnabled()) { - String zeroConf = df.format(orderParameters.getZeroConfMaxAmount()); - Spanned zeroConfText = Html.fromHtml(getString(R.string.info_send_xmrto_zeroconf, zeroConf)); - xmrParmText = (Spanned) TextUtils.concat(xmrParmText, " ", zeroConfText); - } - tvXmrToParms.setText(xmrParmText); - maxBtc = orderParameters.getUpperLimit(); - minBtc = orderParameters.getLowerLimit(); - Timber.d("minBtc=%f / maxBtc=%f", minBtc, maxBtc); + getView().post(() -> { + final double price = orderParameters.getPrice(); + etAmount.setExchangeRate(1 / price); + maxBtc = price * orderParameters.getUpperLimit(); + minBtc = price * orderParameters.getLowerLimit(); + Timber.d("minBtc=%f / maxBtc=%f", minBtc, maxBtc); + NumberFormat df = NumberFormat.getInstance(Locale.US); + df.setMaximumFractionDigits(6); + String min = df.format(minBtc); + String max = df.format(maxBtc); + String rate = df.format(price); + Spanned xmrParmText = Html.fromHtml(getString(R.string.info_send_xmrto_parms, min, max, rate)); + tvXmrToParms.setText(xmrParmText); - final long funds = getTotalFunds(); - double availableXmr = 1.0 * funds / 1000000000000L; - maxBtc = Math.min(maxBtc, availableXmr * orderParameters.getPrice()); + final long funds = getTotalFunds(); + double availableXmr = 1.0 * funds / 1000000000000L; - String availBtcString; - String availXmrString; - if (!sendListener.getActivityCallback().isStreetMode()) { - availBtcString = df.format(availableXmr * orderParameters.getPrice()); - availXmrString = df.format(availableXmr); - } else { - availBtcString = getString(R.string.unknown_amount); - availXmrString = availBtcString; - } - tvFunds.setText(getString(R.string.send_available_btc, - availXmrString, - availBtcString)); - llXmrToParms.setVisibility(View.VISIBLE); - evParams.hideProgress(); + String availBtcString; + String availXmrString; + if (!sendListener.getActivityCallback().isStreetMode()) { + availBtcString = df.format(availableXmr * price); + availXmrString = df.format(availableXmr); + } else { + availBtcString = getString(R.string.unknown_amount); + availXmrString = availBtcString; } + tvFunds.setText(getString(R.string.send_available_btc, + availXmrString, + availBtcString)); + llXmrToParms.setVisibility(View.VISIBLE); + evParams.hideProgress(); }); } @@ -212,44 +195,38 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment { maxBtc = 0; minBtc = 0; Timber.e(ex); - getView().post(new Runnable() { - @Override - public void run() { - if (ex instanceof XmrToException) { - XmrToException xmrEx = (XmrToException) ex; - XmrToError xmrErr = xmrEx.getError(); - if (xmrErr != null) { - if (xmrErr.isRetryable()) { - evParams.showMessage(xmrErr.getErrorId().toString(), xmrErr.getErrorMsg(), - getString(R.string.text_retry)); - evParams.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - evParams.setOnClickListener(null); - callXmrTo(); - } - }); - } else { - evParams.showMessage(xmrErr.getErrorId().toString(), xmrErr.getErrorMsg(), - getString(R.string.text_noretry)); - } + getView().post(() -> { + if (ex instanceof ShiftException) { + ShiftException xmrEx = (ShiftException) ex; + ShiftError xmrErr = xmrEx.getError(); + if (xmrErr != null) { + if (xmrErr.isRetryable()) { + evParams.showMessage(xmrErr.getErrorType().toString(), xmrErr.getErrorMsg(), + getString(R.string.text_retry)); + evParams.setOnClickListener(v -> { + evParams.setOnClickListener(null); + callXmrTo(); + }); } else { - evParams.showMessage(getString(R.string.label_generic_xmrto_error), - getString(R.string.text_generic_xmrto_error, xmrEx.getCode()), + evParams.showMessage(xmrErr.getErrorType().toString(), xmrErr.getErrorMsg(), getString(R.string.text_noretry)); } } else { evParams.showMessage(getString(R.string.label_generic_xmrto_error), - ex.getLocalizedMessage(), + getString(R.string.text_generic_xmrto_error, xmrEx.getCode()), getString(R.string.text_noretry)); } + } else { + evParams.showMessage(getString(R.string.label_generic_xmrto_error), + ex.getLocalizedMessage(), + getString(R.string.text_noretry)); } }); } private void callXmrTo() { evParams.showProgress(getString(R.string.label_send_progress_queryparms)); - getXmrToApi().queryOrderParameters(new XmrToCallback() { + getXmrToApi().queryOrderParameters(new ShiftCallback() { @Override public void onSuccess(final QueryOrderParameters orderParameters) { processOrderParms(orderParameters); @@ -262,13 +239,13 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment { }); } - private XmrToApi xmrToApi = null; + private SideShiftApi xmrToApi = null; - private XmrToApi getXmrToApi() { + private SideShiftApi getXmrToApi() { if (xmrToApi == null) { synchronized (this) { if (xmrToApi == null) { - xmrToApi = new XmrToApiImpl(OkHttpHelper.getOkHttpClient(), + xmrToApi = new SideShiftApiImpl(OkHttpHelper.getOkHttpClient(), Helper.getXmrToBaseUrl()); } } diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcConfirmWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcConfirmWizardFragment.java index 514ef165..27ff90db 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcConfirmWizardFragment.java +++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcConfirmWizardFragment.java @@ -17,13 +17,6 @@ package com.m2049r.xmrwallet.fragment.send; import android.os.Bundle; -import android.os.Handler; - -import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import com.google.android.material.textfield.TextInputLayout; -import android.text.Editable; -import android.text.TextWatcher; -import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -31,8 +24,6 @@ import android.widget.Button; import android.widget.TextView; import android.widget.Toast; -import androidx.appcompat.app.AlertDialog; - import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.data.TxData; import com.m2049r.xmrwallet.data.TxDataBtc; @@ -41,13 +32,13 @@ import com.m2049r.xmrwallet.model.Wallet; import com.m2049r.xmrwallet.util.Helper; import com.m2049r.xmrwallet.util.OkHttpHelper; import com.m2049r.xmrwallet.widget.SendProgressView; -import com.m2049r.xmrwallet.xmrto.XmrToError; -import com.m2049r.xmrwallet.xmrto.XmrToException; -import com.m2049r.xmrwallet.xmrto.api.CreateOrder; -import com.m2049r.xmrwallet.xmrto.api.QueryOrderStatus; -import com.m2049r.xmrwallet.xmrto.api.XmrToApi; -import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; -import com.m2049r.xmrwallet.xmrto.network.XmrToApiImpl; +import com.m2049r.xmrwallet.service.shift.ShiftError; +import com.m2049r.xmrwallet.service.shift.ShiftException; +import com.m2049r.xmrwallet.service.shift.sideshift.api.CreateOrder; +import com.m2049r.xmrwallet.service.shift.sideshift.api.RequestQuote; +import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi; +import com.m2049r.xmrwallet.service.shift.ShiftCallback; +import com.m2049r.xmrwallet.service.shift.sideshift.network.SideShiftApiImpl; import java.text.NumberFormat; import java.util.Locale; @@ -55,8 +46,6 @@ import java.util.Locale; import timber.log.Timber; public class SendBtcConfirmWizardFragment extends SendWizardFragment implements SendConfirm { - private final int QUERY_INTERVAL = 500;//ms - public static SendBtcConfirmWizardFragment newInstance(SendConfirmWizardFragment.Listener listener) { SendBtcConfirmWizardFragment instance = new SendBtcConfirmWizardFragment(); instance.setSendListener(listener); @@ -65,9 +54,8 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements SendConfirmWizardFragment.Listener sendListener; - public SendBtcConfirmWizardFragment setSendListener(SendConfirmWizardFragment.Listener listener) { + public void setSendListener(SendConfirmWizardFragment.Listener listener) { this.sendListener = listener; - return this; } private View llStageA; @@ -103,7 +91,6 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements tvTxFee = view.findViewById(R.id.tvTxFee); tvTxTotal = view.findViewById(R.id.tvTxTotal); - llStageA = view.findViewById(R.id.llStageA); evStageA = view.findViewById(R.id.evStageA); llStageB = view.findViewById(R.id.llStageB); @@ -111,12 +98,9 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements llStageC = view.findViewById(R.id.llStageC); evStageC = view.findViewById(R.id.evStageC); - tvTxXmrToKey.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Helper.clipBoardCopy(getActivity(), getString(R.string.label_copy_xmrtokey), tvTxXmrToKey.getText().toString()); - Toast.makeText(getActivity(), getString(R.string.message_copy_xmrtokey), Toast.LENGTH_SHORT).show(); - } + tvTxXmrToKey.setOnClickListener(v -> { + Helper.clipBoardCopy(getActivity(), getString(R.string.label_copy_xmrtokey), tvTxXmrToKey.getText().toString()); + Toast.makeText(getActivity(), getString(R.string.message_copy_xmrtokey), Toast.LENGTH_SHORT).show(); }); llConfirmSend = view.findViewById(R.id.llConfirmSend); @@ -125,13 +109,10 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements bSend = view.findViewById(R.id.bSend); bSend.setEnabled(false); - bSend.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Timber.d("bSend.setOnClickListener"); - bSend.setEnabled(false); - preSend(); - } + bSend.setOnClickListener(v -> { + Timber.d("bSend.setOnClickListener"); + bSend.setEnabled(false); + preSend(); }); return view; @@ -208,8 +189,8 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements Toast.makeText(getContext(), getString(R.string.send_xmrto_timeout), Toast.LENGTH_SHORT).show(); return; } - sendListener.getTxData().getUserNotes().setXmrtoStatus(xmrtoStatus); - ((TxDataBtc) sendListener.getTxData()).setXmrtoUuid(xmrtoStatus.getUuid()); + sendListener.getTxData().getUserNotes().setXmrtoOrder(xmrtoOrder); // note the transaction in the TX notes + ((TxDataBtc) sendListener.getTxData()).setXmrtoOrderId(xmrtoOrder.getOrderId()); // remember the order id for later // TODO make method in TxDataBtc to set both of the above in one go sendListener.commitTransaction(); getActivity().runOnUiThread(() -> pbProgressSend.setVisibility(View.VISIBLE)); @@ -226,19 +207,15 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements public void transactionCreated(final String txTag, final PendingTransaction pendingTransaction) { if (isResumed && (inProgress == STAGE_C) - && (xmrtoStatus != null) - && (xmrtoStatus.isCreated() - && (xmrtoStatus.getUuid().equals(txTag)))) { + && (xmrtoOrder != null) + && (xmrtoOrder.getOrderId().equals(txTag))) { this.pendingTransaction = pendingTransaction; - getView().post(new Runnable() { - @Override - public void run() { - hideProgress(); - tvTxFee.setText(Wallet.getDisplayAmount(pendingTransaction.getFee())); - tvTxTotal.setText(Wallet.getDisplayAmount( - pendingTransaction.getFee() + pendingTransaction.getAmount())); - updateSendButton(); - } + getView().post(() -> { + hideProgress(); + tvTxFee.setText(Wallet.getDisplayAmount(pendingTransaction.getFee())); + tvTxTotal.setText(Wallet.getDisplayAmount( + pendingTransaction.getFee() + pendingTransaction.getAmount())); + updateSendButton(); }); } else { this.pendingTransaction = null; @@ -291,20 +268,19 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements evStageC.hideProgress(); isResumed = true; if ((pendingTransaction == null) && (inProgress == STAGE_X)) { - createOrder(); + stageA(); } // otherwise just sit there blank // TODO: don't sit there blank - can this happen? should we just die? } private int sendCountdown = 0; - private static final int XMRTO_COUNTDOWN = 10 * 60; // 10 minutes private static final int XMRTO_COUNTDOWN_STEP = 1; // 1 second Runnable updateRunnable = null; - void startSendTimer() { + void startSendTimer(int timeout) { Timber.d("startSendTimer()"); - sendCountdown = XMRTO_COUNTDOWN; + sendCountdown = timeout; updateRunnable = new Runnable() { @Override public void run() { @@ -363,240 +339,228 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements // or createTransactionFailed() void prepareSend() { if (!isResumed) return; - if ((xmrtoStatus == null)) { - throw new IllegalStateException("xmrtoStatus is null"); - } - if ((!xmrtoStatus.isCreated())) { - throw new IllegalStateException("order is not created"); + if ((xmrtoOrder == null)) { + throw new IllegalStateException("xmrtoOrder is null"); } showProgress(3, getString(R.string.label_send_progress_create_tx)); - TxData txData = sendListener.getTxData(); - txData.setDestinationAddress(xmrtoStatus.getReceivingSubaddress()); - txData.setAmount(Wallet.getAmountFromDouble(xmrtoStatus.getIncomingAmountTotal())); - getActivityCallback().onPrepareSend(xmrtoStatus.getUuid(), txData); + final TxData txData = sendListener.getTxData(); + txData.setDestinationAddress(xmrtoOrder.getXmrAddress()); + txData.setAmount(xmrtoOrder.getXmrAmount()); + getActivityCallback().onPrepareSend(xmrtoOrder.getOrderId(), txData); } SendFragment.Listener getActivityCallback() { return sendListener.getActivityCallback(); } - private CreateOrder xmrtoOrder = null; + private RequestQuote xmrtoQuote = null; + private int stageARetries = 0; + private final int RETRIES = 3; + private double stageAPrice = 0; - private void processCreateOrder(final CreateOrder createOrder) { - Timber.d("processCreateOrder %s", createOrder.getUuid()); - xmrtoOrder = createOrder; - if (QueryOrderStatus.State.TO_BE_CREATED.toString().equals(createOrder.getState())) { - getView().post(new Runnable() { - @Override - public void run() { - tvTxXmrToKey.setText(createOrder.getUuid()); - tvTxBtcAddress.setText(createOrder.getBtcDestAddress()); - hideProgress(); - } - }); - queryOrder(createOrder.getUuid()); - } else { - throw new IllegalStateException("Create Order is not TO_BE_CREATED"); + private void processStageA(final RequestQuote requestQuote) { + Timber.d("processCreateOrder %s", requestQuote.getId()); + TxDataBtc txDataBtc = (TxDataBtc) sendListener.getTxData(); + // verify the BTC amount is correct (price can change and we can only specify XMR amount) + if (requestQuote.getBtcAmount() != txDataBtc.getBtcAmount()) { + if (--stageARetries <= 0) { + Timber.d("Failed to get quote"); + getView().post(() -> + showStageError(ShiftError.Error.SERVICE.toString(), + getString(R.string.shift_noquote), + getString(R.string.shift_checkamount))); + return; // just stop for now + } + if (stageAPrice == requestQuote.getPrice()) { + // same price but different BTC amount - something else is wrong (e.g. too many decimals) + Timber.d("Price unchanged"); + getView().post(() -> + showStageError(ShiftError.Error.SERVICE.toString(), + getString(R.string.shift_noquote), + getString(R.string.shift_checkamount))); + return; // just stop for now + } + stageAPrice = requestQuote.getPrice(); + // recalc XMR and try again + txDataBtc.setAmount(txDataBtc.getBtcAmount() / requestQuote.getPrice()); + getView().post(this::stageAOneShot); + return; // stageA will run in the main thread } + xmrtoQuote = requestQuote; + getView().post(() -> { + NumberFormat df = NumberFormat.getInstance(Locale.US); + df.setMaximumFractionDigits(12); + final String btcAmount = df.format(xmrtoQuote.getBtcAmount()); + final String xmrAmountTotal = df.format(xmrtoQuote.getXmrAmount()); + tvTxBtcAmount.setText(getString(R.string.text_send_btc_amount, btcAmount, xmrAmountTotal)); + final String xmrPriceBtc = df.format(xmrtoQuote.getPrice()); + tvTxBtcRate.setText(getString(R.string.text_send_btc_rate, xmrPriceBtc)); + hideProgress(); + }); + stageB(requestQuote.getId()); } - private void processCreateOrderError(final Exception ex) { - Timber.e("processCreateOrderError %s", ex.getLocalizedMessage()); - getView().post(new Runnable() { - @Override - public void run() { - if (ex instanceof XmrToException) { - XmrToException xmrEx = (XmrToException) ex; - XmrToError xmrErr = xmrEx.getError(); - if (xmrErr != null) { - if (xmrErr.isRetryable()) { - showStageError(xmrErr.getErrorId().toString(), xmrErr.getErrorMsg(), - getString(R.string.text_retry)); - evStageA.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - evStageA.setOnClickListener(null); - createOrder(); - } - }); - } else { - showStageError(xmrErr.getErrorId().toString(), xmrErr.getErrorMsg(), - getString(R.string.text_noretry)); - } + private void processStageAError(final Exception ex) { + Timber.e("processStageAError %s", ex.getLocalizedMessage()); + getView().post(() -> { + if (ex instanceof ShiftException) { + ShiftException xmrEx = (ShiftException) ex; + ShiftError xmrErr = xmrEx.getError(); + if (xmrErr != null) { + if (xmrErr.isRetryable()) { + showStageError(xmrErr.getErrorType().toString(), xmrErr.getErrorMsg(), + getString(R.string.text_retry)); + evStageA.setOnClickListener(v -> { + evStageA.setOnClickListener(null); + stageA(); + }); } else { - showStageError(getString(R.string.label_generic_xmrto_error), - getString(R.string.text_generic_xmrto_error, xmrEx.getCode()), + showStageError(xmrErr.getErrorType().toString(), xmrErr.getErrorMsg(), getString(R.string.text_noretry)); } } else { - evStageA.showMessage(getString(R.string.label_generic_xmrto_error), - ex.getLocalizedMessage(), + showStageError(getString(R.string.label_generic_xmrto_error), + getString(R.string.text_generic_xmrto_error, xmrEx.getCode()), getString(R.string.text_noretry)); } + } else { + evStageA.showMessage(getString(R.string.label_generic_xmrto_error), + ex.getLocalizedMessage(), + getString(R.string.text_noretry)); } }); } - private void createOrder() { + private void stageA() { + stageARetries = RETRIES; + stageAOneShot(); + } + + private void stageAOneShot() { if (!isResumed) return; - Timber.d("createOrder"); + Timber.d("Request Quote"); + xmrtoQuote = null; xmrtoOrder = null; - xmrtoStatus = null; showProgress(1, getString(R.string.label_send_progress_xmrto_create)); TxDataBtc txDataBtc = (TxDataBtc) sendListener.getTxData(); + stageAPrice = 0; - XmrToCallback callback = new XmrToCallback() { + ShiftCallback callback = new ShiftCallback() { @Override - public void onSuccess(CreateOrder createOrder) { + public void onSuccess(RequestQuote requestQuote) { if (!isResumed) return; - if (xmrtoOrder != null) { - Timber.w("another ongoing create order request"); + if (xmrtoQuote != null) { + Timber.w("another ongoing request quote request"); return; } - processCreateOrder(createOrder); + processStageA(requestQuote); } @Override public void onError(Exception ex) { if (!isResumed) return; - if (xmrtoOrder != null) { - Timber.w("another ongoing create order request"); + if (xmrtoQuote != null) { + Timber.w("another ongoing request quote request"); return; } - processCreateOrderError(ex); + processStageAError(ex); } }; - if (txDataBtc.getBip70() != null) { - getXmrToApi().createOrder(txDataBtc.getBip70(), callback); - } else { - getXmrToApi().createOrder(txDataBtc.getBtcAmount(), txDataBtc.getBtcAddress(), callback); - } + getXmrToApi().requestQuote(txDataBtc.getAmountAsDouble(), callback); } - private QueryOrderStatus xmrtoStatus = null; + private CreateOrder xmrtoOrder = null; - private void processQueryOrder(final QueryOrderStatus status) { - Timber.d("processQueryOrder %s for %s", status.getState().toString(), status.getUuid()); - xmrtoStatus = status; - if (status.isCreated()) { - getView().post(new Runnable() { - @Override - public void run() { - NumberFormat df = NumberFormat.getInstance(Locale.US); - df.setMaximumFractionDigits(12); - String btcAmount = df.format(status.getBtcAmount()); - String xmrAmountTotal = df.format(status.getIncomingAmountTotal()); - tvTxBtcAmount.setText(getString(R.string.text_send_btc_amount, btcAmount, xmrAmountTotal)); - String xmrPriceBtc = df.format(status.getIncomingPriceBtc()); - tvTxBtcRate.setText(getString(R.string.text_send_btc_rate, xmrPriceBtc)); - - double calcRate = status.getBtcAmount() / status.getIncomingPriceBtc(); - Timber.d("Rates: %f / %f", calcRate, status.getIncomingPriceBtc()); - - tvTxBtcAddress.setText(status.getBtcDestAddress()); // TODO test if this is different? - - Timber.d("Expires @ %s, in %s seconds", status.getExpiresAt().toString(), status.getSecondsTillTimeout()); - - Timber.d("Status = %s", status.getState().toString()); - tvTxXmrToKey.setText(status.getUuid()); - - Timber.d("AmountRemaining=%f, XmrAmountTotal=%f", status.getRemainingAmountIncoming(), status.getIncomingAmountTotal()); - hideProgress(); - startSendTimer(); - prepareSend(); - } - }); - } else { - Timber.d("try again!"); - handler.postDelayed(new Runnable() { - @Override - public void run() { - queryOrder(status.getUuid()); - } - }, QUERY_INTERVAL); + private void processStageB(final CreateOrder order) { + Timber.d("processCreateOrder %s for %s", order.getOrderId(), order.getQuoteId()); + TxDataBtc txDataBtc = (TxDataBtc) sendListener.getTxData(); + // verify amount & destination + if ((order.getBtcAmount() != txDataBtc.getBtcAmount()) + || (!order.getBtcAddress().equals(txDataBtc.getBtcAddress()))) { + throw new IllegalStateException("Order does not fulfill quote!"); // something is terribly wrong - die } + xmrtoOrder = order; + getView().post(() -> { + tvTxXmrToKey.setText(order.getOrderId()); + tvTxBtcAddress.setText(order.getBtcAddress()); + hideProgress(); + Timber.d("Expires @ %s", order.getExpiresAt().toString()); + final int timeout = (int) (order.getExpiresAt().getTime() - order.getCreatedAt().getTime()) / 1000 - 60; // -1 minute buffer + startSendTimer(timeout); + prepareSend(); + }); } - Handler handler = new Handler(); - - private void processQueryOrderError(final Exception ex) { - Timber.e("processQueryOrderError %s", ex.getLocalizedMessage()); - getView().post(new Runnable() { - @Override - public void run() { - if (ex instanceof XmrToException) { - XmrToException xmrEx = (XmrToException) ex; - XmrToError xmrErr = xmrEx.getError(); - if (xmrErr != null) { - if (xmrErr.isRetryable()) { - showStageError(xmrErr.getErrorId().toString(), xmrErr.getErrorMsg(), - getString(R.string.text_retry)); - evStageB.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - evStageB.setOnClickListener(null); - queryOrder(xmrtoOrder.getUuid()); - } - }); - } else { - showStageError(xmrErr.getErrorId().toString(), xmrErr.getErrorMsg(), - getString(R.string.text_noretry)); - } + private void processStageBError(final Exception ex) { + Timber.e("processCreateOrderError %s", ex.getLocalizedMessage()); + getView().post(() -> { + if (ex instanceof ShiftException) { + ShiftException xmrEx = (ShiftException) ex; + ShiftError xmrErr = xmrEx.getError(); + if (xmrErr != null) { + if (xmrErr.isRetryable()) { + showStageError(xmrErr.getErrorType().toString(), xmrErr.getErrorMsg(), + getString(R.string.text_retry)); + evStageB.setOnClickListener(v -> { + evStageB.setOnClickListener(null); + stageB(xmrtoOrder.getOrderId()); + }); } else { - showStageError(getString(R.string.label_generic_xmrto_error), - getString(R.string.text_generic_xmrto_error, xmrEx.getCode()), + showStageError(xmrErr.getErrorType().toString(), xmrErr.getErrorMsg(), getString(R.string.text_noretry)); } } else { - evStageB.showMessage(getString(R.string.label_generic_xmrto_error), - ex.getLocalizedMessage(), + showStageError(getString(R.string.label_generic_xmrto_error), + getString(R.string.text_generic_xmrto_error, xmrEx.getCode()), getString(R.string.text_noretry)); } + } else { + evStageB.showMessage(getString(R.string.label_generic_xmrto_error), + ex.getLocalizedMessage(), + getString(R.string.text_noretry)); } }); } - private void queryOrder(final String uuid) { - Timber.d("queryOrder(%s)", uuid); + private void stageB(final String quoteId) { + Timber.d("createOrder(%s)", quoteId); if (!isResumed) return; - getView().post(new Runnable() { - @Override - public void run() { - xmrtoStatus = null; - showProgress(2, getString(R.string.label_send_progress_xmrto_query)); - getXmrToApi().queryOrderStatus(uuid, new XmrToCallback() { - @Override - public void onSuccess(QueryOrderStatus status) { - if (!isResumed) return; - if (xmrtoOrder == null) return; - if (!status.getUuid().equals(xmrtoOrder.getUuid())) { - Timber.d("Query UUID does not match"); - // ignore (we got a response to a stale request) - return; - } - if (xmrtoStatus != null) - throw new IllegalStateException("xmrtoStatus must be null here!"); - processQueryOrder(status); + final String btcAddress = ((TxDataBtc) sendListener.getTxData()).getBtcAddress(); + getView().post(() -> { + xmrtoOrder = null; + showProgress(2, getString(R.string.label_send_progress_xmrto_query)); + getXmrToApi().createOrder(quoteId, btcAddress, new ShiftCallback() { + @Override + public void onSuccess(CreateOrder order) { + if (!isResumed) return; + if (xmrtoQuote == null) return; + if (!order.getQuoteId().equals(xmrtoQuote.getId())) { + Timber.d("Quote ID does not match"); + // ignore (we got a response to a stale request) + return; } + if (xmrtoOrder != null) + throw new IllegalStateException("xmrtoOrder must be null here!"); + processStageB(order); + } - @Override - public void onError(Exception ex) { - if (!isResumed) return; - processQueryOrderError(ex); - } - }); - } + @Override + public void onError(Exception ex) { + if (!isResumed) return; + processStageBError(ex); + } + }); }); } - private XmrToApi xmrToApi = null; + private SideShiftApi xmrToApi = null; - private XmrToApi getXmrToApi() { + private SideShiftApi getXmrToApi() { if (xmrToApi == null) { synchronized (this) { if (xmrToApi == null) { - xmrToApi = new XmrToApiImpl(OkHttpHelper.getOkHttpClient(), + xmrToApi = new SideShiftApiImpl(OkHttpHelper.getOkHttpClient(), Helper.getXmrToBaseUrl()); } } diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcSuccessWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcSuccessWizardFragment.java index f1ea08fc..d2a6462a 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcSuccessWizardFragment.java +++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcSuccessWizardFragment.java @@ -16,6 +16,9 @@ package com.m2049r.xmrwallet.fragment.send; +import android.content.Intent; +import android.graphics.Paint; +import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -29,13 +32,13 @@ import android.widget.Toast; import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.data.PendingTx; import com.m2049r.xmrwallet.data.TxDataBtc; +import com.m2049r.xmrwallet.service.shift.ShiftCallback; +import com.m2049r.xmrwallet.service.shift.ShiftException; +import com.m2049r.xmrwallet.service.shift.sideshift.api.QueryOrderStatus; +import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi; +import com.m2049r.xmrwallet.service.shift.sideshift.network.SideShiftApiImpl; import com.m2049r.xmrwallet.util.Helper; import com.m2049r.xmrwallet.util.OkHttpHelper; -import com.m2049r.xmrwallet.xmrto.XmrToException; -import com.m2049r.xmrwallet.xmrto.api.QueryOrderStatus; -import com.m2049r.xmrwallet.xmrto.api.XmrToApi; -import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; -import com.m2049r.xmrwallet.xmrto.network.XmrToApiImpl; import java.text.NumberFormat; import java.util.Locale; @@ -52,9 +55,8 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment { SendSuccessWizardFragment.Listener sendListener; - public SendBtcSuccessWizardFragment setSendListener(SendSuccessWizardFragment.Listener listener) { + public void setSendListener(SendSuccessWizardFragment.Listener listener) { this.sendListener = listener; - return this; } ImageButton bCopyTxId; @@ -69,6 +71,7 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment { private ImageView ivXmrToStatusBig; private ProgressBar pbXmrto; private TextView tvTxXmrToKey; + private TextView tvXmrToSupport; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, @@ -101,14 +104,14 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment { pbXmrto.getIndeterminateDrawable().setColorFilter(0x61000000, android.graphics.PorterDuff.Mode.MULTIPLY); tvTxXmrToKey = view.findViewById(R.id.tvTxXmrToKey); - tvTxXmrToKey.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Helper.clipBoardCopy(getActivity(), getString(R.string.label_copy_xmrtokey), tvTxXmrToKey.getText().toString()); - Toast.makeText(getActivity(), getString(R.string.message_copy_xmrtokey), Toast.LENGTH_SHORT).show(); - } + tvTxXmrToKey.setOnClickListener(v -> { + Helper.clipBoardCopy(getActivity(), getString(R.string.label_copy_xmrtokey), tvTxXmrToKey.getText().toString()); + Toast.makeText(getActivity(), getString(R.string.message_copy_xmrtokey), Toast.LENGTH_SHORT).show(); }); + tvXmrToSupport = view.findViewById(R.id.tvXmrToSupport); + tvXmrToSupport.setPaintFlags(tvXmrToSupport.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); + return view; } @@ -149,7 +152,12 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment { String btcAmount = df.format(btcData.getBtcAmount()); tvXmrToAmount.setText(getString(R.string.info_send_xmrto_success_btc, btcAmount)); //TODO btcData.getBtcAddress(); - tvTxXmrToKey.setText(btcData.getXmrtoUuid()); + tvTxXmrToKey.setText(btcData.getXmrtoOrderId()); + tvXmrToSupport.setOnClickListener(v -> { + Uri orderUri = getXmrToApi().getQueryOrderUri(btcData.getXmrtoOrderId()); + Intent intent = new Intent(Intent.ACTION_VIEW, orderUri); + startActivity(intent); + }); queryOrder(); } else { throw new IllegalStateException("btcData is null"); @@ -158,33 +166,23 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment { sendListener.enableDone(); } - private final int QUERY_INTERVAL = 1000; // ms - private void processQueryOrder(final QueryOrderStatus status) { - Timber.d("processQueryOrder %s for %s", status.getState().toString(), status.getUuid()); - if (!btcData.getXmrtoUuid().equals(status.getUuid())) + Timber.d("processQueryOrder %s for %s", status.getState().toString(), status.getOrderId()); + if (!btcData.getXmrtoOrderId().equals(status.getOrderId())) throw new IllegalStateException("UUIDs do not match!"); if (isResumed && (getView() != null)) - getView().post(new Runnable() { - @Override - public void run() { - showXmrToStatus(status); - if (!status.isTerminal()) { - getView().postDelayed(new Runnable() { - @Override - public void run() { - queryOrder(); - } - }, QUERY_INTERVAL); - } + getView().post(() -> { + showXmrToStatus(status); + if (!status.isTerminal()) { + getView().postDelayed(this::queryOrder, SideShiftApi.QUERY_INTERVAL); } }); } private void queryOrder() { - Timber.d("queryOrder(%s)", btcData.getXmrtoUuid()); + Timber.d("queryOrder(%s)", btcData.getXmrtoOrderId()); if (!isResumed) return; - getXmrToApi().queryOrderStatus(btcData.getXmrtoUuid(), new XmrToCallback() { + getXmrToApi().queryOrderStatus(btcData.getXmrtoOrderId(), new ShiftCallback() { @Override public void onSuccess(QueryOrderStatus status) { if (!isAdded()) return; @@ -194,38 +192,34 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment { @Override public void onError(final Exception ex) { if (!isResumed) return; - Timber.e(ex); - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - if (ex instanceof XmrToException) { - Toast.makeText(getActivity(), ((XmrToException) ex).getError().getErrorMsg(), Toast.LENGTH_LONG).show(); - } else { - Toast.makeText(getActivity(), ex.getLocalizedMessage(), Toast.LENGTH_LONG).show(); - } + Timber.w(ex); + getActivity().runOnUiThread(() -> { + if (ex instanceof ShiftException) { + Toast.makeText(getActivity(), ((ShiftException) ex).getError().getErrorMsg(), Toast.LENGTH_LONG).show(); + } else { + Toast.makeText(getActivity(), ex.getLocalizedMessage(), Toast.LENGTH_LONG).show(); } }); } }); } - private int statusResource = 0; - void showXmrToStatus(final QueryOrderStatus status) { + int statusResource = 0; if (status.isError()) { tvXmrToStatus.setText(getString(R.string.info_send_xmrto_error, status.toString())); statusResource = R.drawable.ic_error_red_24dp; pbXmrto.getIndeterminateDrawable().setColorFilter(0xff8b0000, android.graphics.PorterDuff.Mode.MULTIPLY); - } else if (status.isSent()) { + } else if (status.isSent() || status.isPaid()) { tvXmrToStatus.setText(getString(R.string.info_send_xmrto_sent)); statusResource = R.drawable.ic_success_green_24dp; pbXmrto.getIndeterminateDrawable().setColorFilter(0xFF417505, android.graphics.PorterDuff.Mode.MULTIPLY); + } else if (status.isWaiting()) { + tvXmrToStatus.setText(getString(R.string.info_send_xmrto_unpaid)); + statusResource = R.drawable.ic_pending_orange_24dp; + pbXmrto.getIndeterminateDrawable().setColorFilter(0xFFFF6105, android.graphics.PorterDuff.Mode.MULTIPLY); } else if (status.isPending()) { - if (status.isPaid()) { - tvXmrToStatus.setText(getString(R.string.info_send_xmrto_paid)); - } else { - tvXmrToStatus.setText(getString(R.string.info_send_xmrto_unpaid)); - } + tvXmrToStatus.setText(getString(R.string.info_send_xmrto_paid)); statusResource = R.drawable.ic_pending_orange_24dp; pbXmrto.getIndeterminateDrawable().setColorFilter(0xFFFF6105, android.graphics.PorterDuff.Mode.MULTIPLY); } else { @@ -240,13 +234,13 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment { } } - private XmrToApi xmrToApi = null; + private SideShiftApi xmrToApi = null; - private final XmrToApi getXmrToApi() { + private SideShiftApi getXmrToApi() { if (xmrToApi == null) { synchronized (this) { if (xmrToApi == null) { - xmrToApi = new XmrToApiImpl(OkHttpHelper.getOkHttpClient(), + xmrToApi = new SideShiftApiImpl(OkHttpHelper.getOkHttpClient(), Helper.getXmrToBaseUrl()); } } diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendFragment.java index b32d0fa7..2e0faf52 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendFragment.java +++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendFragment.java @@ -563,22 +563,4 @@ public class SendFragment extends Fragment inflater.inflate(R.menu.send_menu, menu); super.onCreateOptionsMenu(menu, inflater); } - - // xmr.to info box - private static final String PREF_SHOW_XMRTO_ENABLED = "info_xmrto_enabled_send"; - - boolean showXmrtoEnabled = true; - - void loadPrefs() { - SharedPreferences sharedPref = activityCallback.getPrefs(); - showXmrtoEnabled = sharedPref.getBoolean(PREF_SHOW_XMRTO_ENABLED, true); - } - - void saveXmrToPrefs() { - SharedPreferences sharedPref = activityCallback.getPrefs(); - SharedPreferences.Editor editor = sharedPref.edit(); - editor.putBoolean(PREF_SHOW_XMRTO_ENABLED, showXmrtoEnabled); - editor.apply(); - } - } diff --git a/app/src/main/java/com/m2049r/xmrwallet/ledger/Ledger.java b/app/src/main/java/com/m2049r/xmrwallet/ledger/Ledger.java index 365d9297..47edbf6f 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/ledger/Ledger.java +++ b/app/src/main/java/com/m2049r/xmrwallet/ledger/Ledger.java @@ -2,7 +2,7 @@ ******************************************************************************* * BTChip Bitcoin Hardware Wallet Java API * (c) 2014 BTChip - 1BTChip7VfTnrPra5jqci7ejnMguuHogTn - * (c) m2049r + * Copyright (c) 2018 m2049r * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/app/src/main/java/com/m2049r/xmrwallet/ledger/LedgerProgressDialog.java b/app/src/main/java/com/m2049r/xmrwallet/ledger/LedgerProgressDialog.java index de61e858..0c81cb2b 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/ledger/LedgerProgressDialog.java +++ b/app/src/main/java/com/m2049r/xmrwallet/ledger/LedgerProgressDialog.java @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2018 m2049r + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.m2049r.xmrwallet.ledger; import android.content.Context; diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/NetworkCallback.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/NetworkCallback.java similarity index 89% rename from app/src/main/java/com/m2049r/xmrwallet/xmrto/network/NetworkCallback.java rename to app/src/main/java/com/m2049r/xmrwallet/service/shift/NetworkCallback.java index ba7caabb..f77128c2 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/NetworkCallback.java +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/NetworkCallback.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package com.m2049r.xmrwallet.xmrto.network; +package com.m2049r.xmrwallet.service.shift; import org.json.JSONObject; -interface NetworkCallback { +public interface NetworkCallback { void onSuccess(JSONObject jsonObject); diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiCall.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftApiCall.java similarity index 91% rename from app/src/main/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiCall.java rename to app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftApiCall.java index fdb01cc8..c4daeb32 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiCall.java +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftApiCall.java @@ -14,13 +14,13 @@ * limitations under the License. */ -package com.m2049r.xmrwallet.xmrto.network; +package com.m2049r.xmrwallet.service.shift; import androidx.annotation.NonNull; import org.json.JSONObject; -interface XmrToApiCall { +public interface ShiftApiCall { void call(@NonNull final String path, @NonNull final NetworkCallback callback); diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/api/XmrToCallback.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftCallback.java similarity index 89% rename from app/src/main/java/com/m2049r/xmrwallet/xmrto/api/XmrToCallback.java rename to app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftCallback.java index 1758363e..4dee50d3 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/api/XmrToCallback.java +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftCallback.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.m2049r.xmrwallet.xmrto.api; +package com.m2049r.xmrwallet.service.shift; -public interface XmrToCallback { +public interface ShiftCallback { void onSuccess(T t); diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftError.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftError.java new file mode 100644 index 00000000..d789ec53 --- /dev/null +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftError.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2017-2021 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.m2049r.xmrwallet.service.shift; + +import androidx.annotation.NonNull; + +import org.json.JSONException; +import org.json.JSONObject; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +public class ShiftError { + @Getter + private final Error errorType; + @Getter + private final String errorMsg; + + public enum Error { + SERVICE, + INFRASTRUCTURE + } + + public boolean isRetryable() { + return errorType == Error.INFRASTRUCTURE; + } + + public ShiftError(final JSONObject jsonObject) throws JSONException { + final JSONObject errorObject = jsonObject.getJSONObject("error"); + errorType = Error.SERVICE; + errorMsg = errorObject.getString("message"); + } + + @Override + @NonNull + public String toString() { + return getErrorMsg(); + } +} diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/XmrToException.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftException.java similarity index 55% rename from app/src/main/java/com/m2049r/xmrwallet/xmrto/XmrToException.java rename to app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftException.java index 05f810e5..3a750b17 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/XmrToException.java +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/ShiftException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 m2049r et al. + * Copyright (c) 2017-2021 m2049r et al. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,29 +14,20 @@ * limitations under the License. */ -package com.m2049r.xmrwallet.xmrto; +package com.m2049r.xmrwallet.service.shift; -public class XmrToException extends Exception { - private int code; - private XmrToError error; +import lombok.Getter; +import lombok.RequiredArgsConstructor; - public XmrToException(final int code) { - super(); +@RequiredArgsConstructor +public class ShiftException extends Exception { + @Getter + private final int code; + @Getter + private final ShiftError error; + + public ShiftException(int code) { this.code = code; this.error = null; } - - public XmrToException(final int code, final XmrToError error) { - super(); - this.code = code; - this.error = error; - } - - public int getCode() { - return code; - } - - public XmrToError getError() { - return error; - } } diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/CreateOrder.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/CreateOrder.java new file mode 100644 index 00000000..e36e2eaf --- /dev/null +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/CreateOrder.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2017-2021 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.m2049r.xmrwallet.service.shift.sideshift.api; + +import java.util.Date; + +public interface CreateOrder { + String TAG = "side"; + + double getBtcAmount(); + + String getBtcAddress(); + + String getQuoteId(); + + String getOrderId(); + + double getXmrAmount(); + + String getXmrAddress(); + + Date getCreatedAt(); // createdAt + + Date getExpiresAt(); // expiresAt + +} diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/api/CreateOrder.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/QueryOrderParameters.java similarity index 70% rename from app/src/main/java/com/m2049r/xmrwallet/xmrto/api/CreateOrder.java rename to app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/QueryOrderParameters.java index ca5c391b..ebd2d2fe 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/api/CreateOrder.java +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/QueryOrderParameters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 m2049r et al. + * Copyright (c) 2017-2021 m2049r et al. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,17 +14,14 @@ * limitations under the License. */ -package com.m2049r.xmrwallet.xmrto.api; +package com.m2049r.xmrwallet.service.shift.sideshift.api; -public interface CreateOrder { - Double getBtcAmount(); +public interface QueryOrderParameters { - String getBtcDestAddress(); + double getLowerLimit(); - String getBtcBip70(); + double getPrice(); - String getState(); - - String getUuid(); + double getUpperLimit(); } diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/api/QueryOrderStatus.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/QueryOrderStatus.java similarity index 50% rename from app/src/main/java/com/m2049r/xmrwallet/xmrto/api/QueryOrderStatus.java rename to app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/QueryOrderStatus.java index 122d9852..acb201cb 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/api/QueryOrderStatus.java +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/QueryOrderStatus.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 m2049r et al. + * Copyright (c) 2017-2021 m2049r et al. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,60 +14,52 @@ * limitations under the License. */ -package com.m2049r.xmrwallet.xmrto.api; +package com.m2049r.xmrwallet.service.shift.sideshift.api; import java.util.Date; public interface QueryOrderStatus { enum State { - UNDEF, - TO_BE_CREATED, // order creation pending - UNPAID, // waiting for Monero payment by user - UNDERPAID, // order partially paid - PAID_UNCONFIRMED, // order paid, waiting for enough confirmations - PAID, // order paid and sufficiently confirmed - BTC_SENT, // bitcoin payment sent - TIMED_OUT, // order timed out before payment was complete - NOT_FOUND // order wasn’t found in system (never existed or was purged) + WAITING, // Waiting for mempool + PENDING, // Detected (waiting for confirmations) + SETTLING, // Settlement in progress + SETTLED, // Settlement completed + // no refunding in monerujo so theese are ignored: +// REFUND, // Queued for refund +// REFUNDING, // Refund in progress +// REFUNDED // Refund completed + UNDEFINED } boolean isCreated(); boolean isTerminal(); + boolean isWaiting(); + boolean isPending(); - boolean isPaid(); - boolean isSent(); + boolean isPaid(); + boolean isError(); QueryOrderStatus.State getState(); - double getBtcAmount(); - - String getBtcDestAddress(); - - String getUuid(); - - int getBtcNumConfirmationsThreshold(); + String getOrderId(); Date getCreatedAt(); Date getExpiresAt(); - int getSecondsTillTimeout(); + double getBtcAmount(); - double getIncomingAmountTotal(); + String getBtcAddress(); - double getRemainingAmountIncoming(); + double getXmrAmount(); - int getIncomingNumConfirmationsRemaining(); + String getXmrAddress(); - double getIncomingPriceBtc(); - - String getReceivingSubaddress(); - - int getRecommendedMixin(); -} + double getPrice(); +} \ No newline at end of file diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/RequestQuote.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/RequestQuote.java new file mode 100644 index 00000000..cbbb36fb --- /dev/null +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/RequestQuote.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2017-2021 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.m2049r.xmrwallet.service.shift.sideshift.api; + +import java.util.Date; + +public interface RequestQuote { + + double getBtcAmount(); // settleAmount + + String getId(); // id + + Date getCreatedAt(); // createdAt + + Date getExpiresAt(); // expiresAt + + double getXmrAmount(); // depositAmount + + double getPrice(); // rate +} diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/SideShiftApi.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/SideShiftApi.java new file mode 100644 index 00000000..1bad6cc0 --- /dev/null +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/SideShiftApi.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2017-2021 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.m2049r.xmrwallet.service.shift.sideshift.api; + +import android.net.Uri; + +import androidx.annotation.NonNull; + +import com.m2049r.xmrwallet.service.shift.ShiftCallback; + +public interface SideShiftApi { + + String ASSET = "btc"; + int QUERY_INTERVAL = 5000; // ms + + /** + * Queries the order parameter. + * + * @param callback the callback with the OrderParameter object + */ + void queryOrderParameters(@NonNull final ShiftCallback callback); + + /** + * Creates an order + * + * @param xmrAmount the desired XMR amount + */ + void requestQuote(final double xmrAmount, @NonNull final ShiftCallback callback); + + /** + * Creates an order + * + * @param quoteId the desired XMR amount + * @param btcAddress the target bitcoin address + */ + void createOrder(final String quoteId, @NonNull final String btcAddress, @NonNull final ShiftCallback callback); + + /** + * Queries the order status for given current order + * + * @param orderId the order ID + * @param callback the callback with the OrderStatus object + */ + void queryOrderStatus(@NonNull final String orderId, @NonNull final ShiftCallback callback); + + /* + * Returns the URL for manually querying the order status + * + * @param orderId the order ID + */ + Uri getQueryOrderUri(String orderId); +} diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/CreateOrderImpl.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/CreateOrderImpl.java new file mode 100644 index 00000000..d209c40e --- /dev/null +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/CreateOrderImpl.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2017-2021 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.m2049r.xmrwallet.service.shift.sideshift.network; + +import androidx.annotation.NonNull; + +import com.m2049r.xmrwallet.BuildConfig; +import com.m2049r.xmrwallet.service.shift.NetworkCallback; +import com.m2049r.xmrwallet.service.shift.ShiftApiCall; +import com.m2049r.xmrwallet.service.shift.ShiftCallback; +import com.m2049r.xmrwallet.service.shift.sideshift.api.CreateOrder; +import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi; +import com.m2049r.xmrwallet.util.DateHelper; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.text.ParseException; +import java.util.Date; + +import lombok.Getter; + +class CreateOrderImpl implements CreateOrder { + @Getter + private final double btcAmount; + @Getter + private final String btcAddress; + @Getter + private final String quoteId; + @Getter + private final String orderId; + @Getter + private final double xmrAmount; + @Getter + private final String xmrAddress; + @Getter + private final Date createdAt; + @Getter + private final Date expiresAt; + + CreateOrderImpl(final JSONObject jsonObject) throws JSONException { + // sanity checks + final String depositMethod = jsonObject.getString("depositMethodId"); + final String settleMethod = jsonObject.getString("settleMethodId"); + if (!"xmr".equals(depositMethod) || !SideShiftApi.ASSET.equals(settleMethod)) + throw new IllegalStateException(); + + btcAmount = jsonObject.getDouble("settleAmount"); + JSONObject settleAddress = jsonObject.getJSONObject("settleAddress"); + btcAddress = settleAddress.getString("address"); + + xmrAmount = jsonObject.getDouble("depositAmount"); + JSONObject depositAddress = jsonObject.getJSONObject("depositAddress"); + xmrAddress = depositAddress.getString("address"); + + quoteId = jsonObject.getString("quoteId"); + + orderId = jsonObject.getString("orderId"); + + try { + final String created = jsonObject.getString("createdAtISO"); + createdAt = DateHelper.parse(created); + final String expires = jsonObject.getString("expiresAtISO"); + expiresAt = DateHelper.parse(expires); + } catch (ParseException ex) { + throw new JSONException(ex.getLocalizedMessage()); + } + } + + public static void call(@NonNull final ShiftApiCall api, final String quoteId, @NonNull final String btcAddress, + @NonNull final ShiftCallback callback) { + try { + final JSONObject request = createRequest(quoteId, btcAddress); + api.call("orders", request, new NetworkCallback() { + @Override + public void onSuccess(JSONObject jsonObject) { + try { + callback.onSuccess(new CreateOrderImpl(jsonObject)); + } catch (JSONException ex) { + callback.onError(ex); + } + } + + @Override + public void onError(Exception ex) { + callback.onError(ex); + } + }); + } catch (JSONException ex) { + callback.onError(ex); + } + } + + static JSONObject createRequest(final String quoteId, final String address) throws JSONException { + final JSONObject jsonObject = new JSONObject(); + jsonObject.put("type", "fixed"); + jsonObject.put("quoteId", quoteId); + jsonObject.put("settleAddress", address); + if (!BuildConfig.ID_A.isEmpty() && !"null".equals(BuildConfig.ID_A)) { + jsonObject.put("affiliateId", BuildConfig.ID_A); + } + return jsonObject; + } +} diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/QueryOrderParametersImpl.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/QueryOrderParametersImpl.java similarity index 50% rename from app/src/main/java/com/m2049r/xmrwallet/xmrto/network/QueryOrderParametersImpl.java rename to app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/QueryOrderParametersImpl.java index ddaf0606..a1bf31c9 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/QueryOrderParametersImpl.java +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/QueryOrderParametersImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 m2049r et al. + * Copyright (c) 2017-2021 m2049r et al. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,23 +14,24 @@ * limitations under the License. */ -package com.m2049r.xmrwallet.xmrto.network; +package com.m2049r.xmrwallet.service.shift.sideshift.network; import androidx.annotation.NonNull; -import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; -import com.m2049r.xmrwallet.xmrto.api.QueryOrderParameters; +import com.m2049r.xmrwallet.service.shift.NetworkCallback; +import com.m2049r.xmrwallet.service.shift.ShiftApiCall; +import com.m2049r.xmrwallet.service.shift.sideshift.api.QueryOrderParameters; +import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi; +import com.m2049r.xmrwallet.service.shift.ShiftCallback; import org.json.JSONException; import org.json.JSONObject; class QueryOrderParametersImpl implements QueryOrderParameters { - private double lowerLimit; // "lower_limit": , - private double price; // "price": , - private double upperLimit; // "upper_limit": , - private boolean isZeroConfEnabled; // "zero_conf_enabled": , - private double zeroConfMaxAmount; // "zero_conf_max_amount": + private double lowerLimit; + private double price; + private double upperLimit; public double getLowerLimit() { return lowerLimit; @@ -44,25 +45,15 @@ class QueryOrderParametersImpl implements QueryOrderParameters { return upperLimit; } - public boolean isZeroConfEnabled() { - return isZeroConfEnabled; - } - - public double getZeroConfMaxAmount() { - return zeroConfMaxAmount; - } - QueryOrderParametersImpl(final JSONObject jsonObject) throws JSONException { - lowerLimit = jsonObject.getDouble("lower_limit"); - price = jsonObject.getDouble("price"); - upperLimit = jsonObject.getDouble("upper_limit"); - isZeroConfEnabled = jsonObject.getBoolean("zero_conf_enabled"); - zeroConfMaxAmount = jsonObject.getDouble("zero_conf_max_amount"); + lowerLimit = jsonObject.getDouble("min"); + price = jsonObject.getDouble("rate"); + upperLimit = jsonObject.getDouble("max"); } - public static void call(@NonNull final XmrToApiCall api, - @NonNull final XmrToCallback callback) { - api.call("order_parameter_query", new NetworkCallback() { + public static void call(@NonNull final ShiftApiCall api, + @NonNull final ShiftCallback callback) { + api.call("pairs/xmr/" + SideShiftApi.ASSET, new NetworkCallback() { @Override public void onSuccess(JSONObject jsonObject) { try { @@ -78,5 +69,4 @@ class QueryOrderParametersImpl implements QueryOrderParameters { } }); } - //{"zero_conf_enabled":true,"price":0.015537,"upper_limit":20.0,"lower_limit":0.001,"zero_conf_max_amount":0.1} } diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/QueryOrderStatusImpl.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/QueryOrderStatusImpl.java new file mode 100644 index 00000000..439cb93f --- /dev/null +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/QueryOrderStatusImpl.java @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2017-2021 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.m2049r.xmrwallet.service.shift.sideshift.network; + +import androidx.annotation.NonNull; + +import com.m2049r.xmrwallet.service.shift.NetworkCallback; +import com.m2049r.xmrwallet.service.shift.ShiftApiCall; +import com.m2049r.xmrwallet.util.DateHelper; +import com.m2049r.xmrwallet.service.shift.sideshift.api.QueryOrderStatus; +import com.m2049r.xmrwallet.service.shift.ShiftCallback; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.text.ParseException; +import java.util.Date; + +import lombok.Getter; +import timber.log.Timber; + +class QueryOrderStatusImpl implements QueryOrderStatus { + + @Getter + private QueryOrderStatus.State state; + @Getter + private final String orderId; + @Getter + private final Date createdAt; + @Getter + private final Date expiresAt; + @Getter + private final double btcAmount; + @Getter + private final String btcAddress; + @Getter + private final double xmrAmount; + @Getter + private final String xmrAddress; + + public boolean isCreated() { + return true; + } + + public boolean isTerminal() { + return (state.equals(State.SETTLED) || isError()); + } + + public boolean isError() { + return state.equals(State.UNDEFINED); + } + + public boolean isWaiting() { + return state.equals(State.WAITING); + } + + public boolean isPending() { + return state.equals(State.PENDING); + } + + public boolean isSent() { + return state.equals(State.SETTLING); + } + + public boolean isPaid() { + return state.equals(State.SETTLED); + } + + public double getPrice() { + return btcAmount / xmrAmount; + } + + QueryOrderStatusImpl(final JSONObject jsonObject) throws JSONException { + try { + String created = jsonObject.getString("createdAtISO"); + createdAt = DateHelper.parse(created); + String expires = jsonObject.getString("expiresAtISO"); + expiresAt = DateHelper.parse(expires); + } catch (ParseException ex) { + throw new JSONException(ex.getLocalizedMessage()); + } + orderId = jsonObject.getString("orderId"); + + btcAmount = jsonObject.getDouble("settleAmount"); + JSONObject settleAddress = jsonObject.getJSONObject("settleAddress"); + btcAddress = settleAddress.getString("address"); + + xmrAmount = jsonObject.getDouble("depositAmount"); + JSONObject depositAddress = jsonObject.getJSONObject("depositAddress"); + xmrAddress = settleAddress.getString("address"); + + JSONArray deposits = jsonObject.getJSONArray("deposits"); + // we only create one deposit, so die if there are more than one: + if (deposits.length() > 1) + throw new IllegalStateException("more than one deposits"); + + state = State.UNDEFINED; + if (deposits.length() == 0) { + state = State.WAITING; + } else if (deposits.length() == 1) { + // sanity check + if (!orderId.equals(deposits.getJSONObject(0).getString("orderId"))) + throw new IllegalStateException("deposit has different order id!"); + String stateName = deposits.getJSONObject(0).getString("status"); + try { + state = State.valueOf(stateName.toUpperCase()); + } catch (IllegalArgumentException ex) { + state = State.UNDEFINED; + } + } + } + + public static void call(@NonNull final ShiftApiCall api, @NonNull final String orderId, + @NonNull final ShiftCallback callback) { + api.call("orders/" + orderId, new NetworkCallback() { + @Override + public void onSuccess(JSONObject jsonObject) { + try { + callback.onSuccess(new QueryOrderStatusImpl(jsonObject)); + } catch (JSONException ex) { + callback.onError(ex); + } + } + + @Override + public void onError(Exception ex) { + callback.onError(ex); + } + }); + } +} diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/RequestQuoteImpl.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/RequestQuoteImpl.java new file mode 100644 index 00000000..91addc56 --- /dev/null +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/RequestQuoteImpl.java @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2017-2021 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.m2049r.xmrwallet.service.shift.sideshift.network; + +import androidx.annotation.NonNull; + +import com.m2049r.xmrwallet.service.shift.NetworkCallback; +import com.m2049r.xmrwallet.service.shift.ShiftApiCall; +import com.m2049r.xmrwallet.util.DateHelper; +import com.m2049r.xmrwallet.service.shift.sideshift.api.RequestQuote; +import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi; +import com.m2049r.xmrwallet.service.shift.ShiftCallback; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.text.DecimalFormat; +import java.text.ParseException; +import java.util.Date; + +import lombok.Getter; +import timber.log.Timber; + +class RequestQuoteImpl implements RequestQuote { + @Getter + private final double btcAmount; + @Getter + private final String id; + @Getter + private final Date createdAt; + @Getter + private final Date expiresAt; + @Getter + private final double xmrAmount; + @Getter + private final double price; + + // TODO do something with errors - they always seem to send us 500 + + RequestQuoteImpl(final JSONObject jsonObject) throws JSONException { + // sanity checks + final String depositMethod = jsonObject.getString("depositMethod"); + final String settleMethod = jsonObject.getString("settleMethod"); + if (!"xmr".equals(depositMethod) || !SideShiftApi.ASSET.equals(settleMethod)) + throw new IllegalStateException(); + + btcAmount = jsonObject.getDouble("settleAmount"); + id = jsonObject.getString("id"); + + try { + final String created = jsonObject.getString("createdAt"); + createdAt = DateHelper.parse(created); + final String expires = jsonObject.getString("expiresAt"); + expiresAt = DateHelper.parse(expires); + } catch (ParseException ex) { + throw new JSONException(ex.getLocalizedMessage()); + } + xmrAmount = jsonObject.getDouble("depositAmount"); + price = jsonObject.getDouble("rate"); + } + + public static void call(@NonNull final ShiftApiCall api, final double xmrAmount, + @NonNull final ShiftCallback callback) { + try { + final JSONObject request = createRequest(xmrAmount); + api.call("quotes", request, new NetworkCallback() { + @Override + public void onSuccess(JSONObject jsonObject) { + try { + callback.onSuccess(new RequestQuoteImpl(jsonObject)); + } catch (JSONException ex) { + callback.onError(ex); + } + } + + @Override + public void onError(Exception ex) { + callback.onError(ex); + } + }); + } catch (JSONException ex) { + callback.onError(ex); + } + } + + /** + * Create JSON request object + * + * @param xmrAmount how much XMR to shift to BTC + */ + + static JSONObject createRequest(final double xmrAmount) throws JSONException { + final JSONObject jsonObject = new JSONObject(); + jsonObject.put("depositMethod", "xmr"); + jsonObject.put("settleMethod", SideShiftApi.ASSET); + // #sideshift is silly and likes numbers as strings + String amount = AmountFormatter.format(xmrAmount); + jsonObject.put("depositAmount", amount); + return jsonObject; + } + + static DecimalFormat AmountFormatter = new DecimalFormat("#.############"); +} diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiImpl.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/SideShiftApiImpl.java similarity index 59% rename from app/src/main/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiImpl.java rename to app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/SideShiftApiImpl.java index c5c18b60..6cec5743 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiImpl.java +++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/SideShiftApiImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 m2049r et al. + * Copyright (c) 2017-2021 m2049r et al. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,18 +14,23 @@ * limitations under the License. */ -package com.m2049r.xmrwallet.xmrto.network; +package com.m2049r.xmrwallet.service.shift.sideshift.network; + +import android.net.Uri; import androidx.annotation.NonNull; +import com.m2049r.xmrwallet.service.shift.NetworkCallback; +import com.m2049r.xmrwallet.service.shift.ShiftApiCall; +import com.m2049r.xmrwallet.service.shift.ShiftCallback; +import com.m2049r.xmrwallet.service.shift.ShiftError; +import com.m2049r.xmrwallet.service.shift.ShiftException; +import com.m2049r.xmrwallet.service.shift.sideshift.api.CreateOrder; +import com.m2049r.xmrwallet.service.shift.sideshift.api.QueryOrderParameters; +import com.m2049r.xmrwallet.service.shift.sideshift.api.QueryOrderStatus; +import com.m2049r.xmrwallet.service.shift.sideshift.api.RequestQuote; +import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi; import com.m2049r.xmrwallet.util.OkHttpHelper; -import com.m2049r.xmrwallet.xmrto.XmrToError; -import com.m2049r.xmrwallet.xmrto.XmrToException; -import com.m2049r.xmrwallet.xmrto.api.CreateOrder; -import com.m2049r.xmrwallet.xmrto.api.QueryOrderParameters; -import com.m2049r.xmrwallet.xmrto.api.QueryOrderStatus; -import com.m2049r.xmrwallet.xmrto.api.XmrToApi; -import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; import org.json.JSONException; import org.json.JSONObject; @@ -41,42 +46,45 @@ import okhttp3.RequestBody; import okhttp3.Response; import timber.log.Timber; -public class XmrToApiImpl implements XmrToApi, XmrToApiCall { +public class SideShiftApiImpl implements SideShiftApi, ShiftApiCall { @NonNull private final OkHttpClient okHttpClient; private final HttpUrl baseUrl; - public XmrToApiImpl(@NonNull final OkHttpClient okHttpClient, final HttpUrl baseUrl) { + public SideShiftApiImpl(@NonNull final OkHttpClient okHttpClient, final HttpUrl baseUrl) { this.okHttpClient = okHttpClient; this.baseUrl = baseUrl; } @Override - public void createOrder(final double amount, @NonNull final String address, - @NonNull final XmrToCallback callback) { - CreateOrderImpl.call(this, amount, address, callback); + public void queryOrderParameters(@NonNull final ShiftCallback callback) { + QueryOrderParametersImpl.call(this, callback); } @Override - public void createOrder(@NonNull final String url, - @NonNull final XmrToCallback callback) { - CreateOrderImpl.call(this, url, callback); + public void requestQuote(final double xmrAmount, @NonNull final ShiftCallback callback) { + RequestQuoteImpl.call(this, xmrAmount, callback); + } + + @Override + public void createOrder(final String quoteId, @NonNull final String btcAddress, + @NonNull final ShiftCallback callback) { + CreateOrderImpl.call(this, quoteId, btcAddress, callback); } @Override public void queryOrderStatus(@NonNull final String uuid, - @NonNull final XmrToCallback callback) { + @NonNull final ShiftCallback callback) { QueryOrderStatusImpl.call(this, uuid, callback); } @Override - public void queryOrderParameters(@NonNull final XmrToCallback callback) { - QueryOrderParametersImpl.call(this, callback); + public Uri getQueryOrderUri(String orderId) { + return Uri.parse("https://sideshift.ai/orders/" + orderId); } - @Override public void call(@NonNull final String path, @NonNull final NetworkCallback callback) { call(path, null, callback); @@ -85,24 +93,18 @@ public class XmrToApiImpl implements XmrToApi, XmrToApiCall { @Override public void call(@NonNull final String path, final JSONObject request, @NonNull final NetworkCallback callback) { final HttpUrl url = baseUrl.newBuilder() - .addPathSegment(path) - .addPathSegment("") // xmr.to needs a trailing slash! + .addPathSegments(path) .build(); - - Timber.d(url.toString()); final Request httpRequest = createHttpRequest(request, url); - Timber.d(httpRequest.toString()); - Timber.d(request == null ? "null request" : request.toString()); okHttpClient.newCall(httpRequest).enqueue(new okhttp3.Callback() { @Override public void onFailure(final Call call, final IOException ex) { - Timber.d("A"); callback.onError(ex); } @Override - public void onResponse(final Call call, final Response response) throws IOException { + public void onResponse(@NonNull final Call call, @NonNull final Response response) throws IOException { Timber.d("onResponse code=%d", response.code()); if (response.isSuccessful()) { try { @@ -115,11 +117,11 @@ public class XmrToApiImpl implements XmrToApi, XmrToApiCall { try { final JSONObject json = new JSONObject(response.body().string()); Timber.d(json.toString(2)); - final XmrToError error = new XmrToError(json); - Timber.e("xmr.to says %d/%s", response.code(), error.toString()); - callback.onError(new XmrToException(response.code(), error)); + final ShiftError error = new ShiftError(json); + Timber.w("%s says %d/%s", CreateOrder.TAG, response.code(), error.toString()); + callback.onError(new ShiftException(response.code(), error)); } catch (JSONException ex) { - callback.onError(new XmrToException(response.code())); + callback.onError(new ShiftException(response.code())); } } } @@ -128,8 +130,7 @@ public class XmrToApiImpl implements XmrToApi, XmrToApiCall { private Request createHttpRequest(final JSONObject request, final HttpUrl url) { if (request != null) { - final RequestBody body = RequestBody.create( - MediaType.parse("application/json"), request.toString()); + final RequestBody body = RequestBody.create(request.toString(), MediaType.parse("application/json")); return OkHttpHelper.getPostRequest(url, body); } else { return OkHttpHelper.getGetRequest(url); diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/ColorHelper.java b/app/src/main/java/com/m2049r/xmrwallet/util/ColorHelper.java index 1de996fa..520e1609 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/util/ColorHelper.java +++ b/app/src/main/java/com/m2049r/xmrwallet/util/ColorHelper.java @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2019 m2049r + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.m2049r.xmrwallet.util; import android.content.Context; diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/CrazyPassEncoder.java b/app/src/main/java/com/m2049r/xmrwallet/util/CrazyPassEncoder.java index cd884d71..37f5329b 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/util/CrazyPassEncoder.java +++ b/app/src/main/java/com/m2049r/xmrwallet/util/CrazyPassEncoder.java @@ -1,6 +1,20 @@ -package com.m2049r.xmrwallet.util; +/* + * Copyright (c) 2018 m2049r + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ -import com.m2049r.xmrwallet.model.WalletManager; +package com.m2049r.xmrwallet.util; import java.math.BigInteger; diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/DateHelper.java b/app/src/main/java/com/m2049r/xmrwallet/util/DateHelper.java new file mode 100644 index 00000000..e791cea0 --- /dev/null +++ b/app/src/main/java/com/m2049r/xmrwallet/util/DateHelper.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2017 m2049r er al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.m2049r.xmrwallet.util; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class DateHelper { + public static final SimpleDateFormat DATETIME_FORMATTER = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); + + public static Date parse(String dateString) throws ParseException { + return DATETIME_FORMATTER.parse(dateString.replaceAll("Z$", "+0000")); + } +} diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/DayNightMode.java b/app/src/main/java/com/m2049r/xmrwallet/util/DayNightMode.java index 3bedc242..6e8cdffd 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/util/DayNightMode.java +++ b/app/src/main/java/com/m2049r/xmrwallet/util/DayNightMode.java @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2020 m2049r + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.m2049r.xmrwallet.util; import androidx.appcompat.app.AppCompatDelegate; diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/FingerprintHelper.java b/app/src/main/java/com/m2049r/xmrwallet/util/FingerprintHelper.java index 960c4846..906dba83 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/util/FingerprintHelper.java +++ b/app/src/main/java/com/m2049r/xmrwallet/util/FingerprintHelper.java @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2018-2020 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.m2049r.xmrwallet.util; import android.app.KeyguardManager; diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java b/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java index 23d5a63d..326da625 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java +++ b/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java @@ -226,16 +226,14 @@ public class Helper { return displayB; } - // min 2 significant digits after decimal point - static public String getFormattedAmount(double amount) { - if ((amount >= 1.0d) || (amount == 0)) - return String.format(Locale.US, "%,.2f", amount); - else { // amount < 1 - int decimals = 1 - (int) Math.floor(Math.log10(amount)); - if (decimals < 2) decimals = 2; - if (decimals > 12) decimals = 12; - return String.format(Locale.US, "%,." + decimals + "f", amount); - } + static public String getDisplayAmount(double amount) { + // a Java bug does not strip zeros properly if the value is 0 + BigDecimal d = new BigDecimal(amount) + .setScale(12, BigDecimal.ROUND_HALF_UP) + .stripTrailingZeros(); + if (d.scale() < 1) + d = d.setScale(1, BigDecimal.ROUND_UNNECESSARY); + return d.toPlainString(); } static public Bitmap getBitmap(Context context, int drawableId) { @@ -328,9 +326,9 @@ public class Helper { static public HttpUrl getXmrToBaseUrl() { if ((WalletManager.getInstance() == null) || (WalletManager.getInstance().getNetworkType() != NetworkType.NetworkType_Mainnet)) { - return HttpUrl.parse("https://test.xmr.to/api/v3/xmr2btc/"); + throw new IllegalStateException("Only mainnet not supported"); } else { - return HttpUrl.parse("https://xmr.to/api/v3/xmr2btc/"); + return HttpUrl.parse("https://sideshift.ai/api/v1/"); } } diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/LocaleHelper.java b/app/src/main/java/com/m2049r/xmrwallet/util/LocaleHelper.java index 56495eca..b98e5da3 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/util/LocaleHelper.java +++ b/app/src/main/java/com/m2049r/xmrwallet/util/LocaleHelper.java @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2018-2020 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.m2049r.xmrwallet.util; import android.annotation.SuppressLint; diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/NightmodeHelper.java b/app/src/main/java/com/m2049r/xmrwallet/util/NightmodeHelper.java index 58d19add..e80b8589 100644 --- a/app/src/main/java/com/m2049r/xmrwallet/util/NightmodeHelper.java +++ b/app/src/main/java/com/m2049r/xmrwallet/util/NightmodeHelper.java @@ -1,3 +1,19 @@ +/* + * Copyright (c) 2020 m2049r + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.m2049r.xmrwallet.util; import android.content.Context; diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/PaymentProtocolHelper.java b/app/src/main/java/com/m2049r/xmrwallet/util/PaymentProtocolHelper.java deleted file mode 100644 index ba904e65..00000000 --- a/app/src/main/java/com/m2049r/xmrwallet/util/PaymentProtocolHelper.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 2018 m2049r - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// Specs from https://openalias.org/ - -package com.m2049r.xmrwallet.util; - -import com.m2049r.xmrwallet.data.BarcodeData; -import com.m2049r.xmrwallet.xmrto.api.CreateOrder; -import com.m2049r.xmrwallet.xmrto.api.XmrToApi; -import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; -import com.m2049r.xmrwallet.xmrto.network.XmrToApiImpl; - -import java.net.MalformedURLException; -import java.net.URISyntaxException; -import java.net.URL; - -import timber.log.Timber; - -public class PaymentProtocolHelper { - - //https://bitpay.com/i/xxx - public static boolean isHttp(String string) { - if ((string == null) || (string.isEmpty())) return false; - try { - // new URL(string).toURI() checks if its a real url - return new URL(string).toURI().getScheme().startsWith("http"); - } catch (MalformedURLException | URISyntaxException ex) { - return false; - } - } - - // guess if the string may be a valid payment uri - //https://bitpay.com/i/xxx - //bitcoin:?r=https://bitpay.com/i/xxx - public static String getBip70(String bip72Or70) { - if ((bip72Or70 == null) || (bip72Or70.isEmpty())) return null; - if (isHttp(bip72Or70)) return bip72Or70; - BarcodeData bc = BarcodeData.parseBitcoinUri(bip72Or70); - if (bc == null) return null; - return bc.bip70; - } - - public interface OnResolvedListener { - void onResolved(BarcodeData.Asset asset, String address, double amount, String bip70); - - void onFailure(Exception ex); - - } - - static public boolean resolve(final String bip70, final OnResolvedListener resolvedListener) { - if ((bip70 == null) || (bip70.isEmpty())) - return false; //pointless trying to lookup nothing - Timber.d("Resolving %s", bip70); - getXmrToApi().createOrder(bip70, new XmrToCallback() { - @Override - public void onSuccess(CreateOrder createOrder) { - if (resolvedListener != null) { - resolvedListener.onResolved(BarcodeData.Asset.BTC, - createOrder.getBtcDestAddress(), - createOrder.getBtcAmount(), - createOrder.getBtcBip70()); - } - } - - @Override - public void onError(Exception ex) { - if (resolvedListener != null) { - resolvedListener.onFailure(ex); - } - } - }); - return true; - } - - static private XmrToApi xmrToApi = null; - - static private XmrToApi getXmrToApi() { - if (xmrToApi == null) { - synchronized (PaymentProtocolHelper.class) { - if (xmrToApi == null) { - xmrToApi = new XmrToApiImpl(OkHttpHelper.getOkHttpClient(), - Helper.getXmrToBaseUrl()); - } - } - } - return xmrToApi; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/XmrToError.java b/app/src/main/java/com/m2049r/xmrwallet/xmrto/XmrToError.java deleted file mode 100644 index bf3f07b5..00000000 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/XmrToError.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (c) 2017 m2049r et al. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.m2049r.xmrwallet.xmrto; - -import com.m2049r.xmrwallet.R; - -import org.json.JSONException; -import org.json.JSONObject; - -public class XmrToError { - private final Error errorId; - private final String errorMsg; - - public enum Error { - XMRTO_ERROR_UNDEF, - XMRTO_ERROR_001, // (503) internal services not available try again later - XMRTO_ERROR_002, // (400) malformed bitcoin address check address validity - XMRTO_ERROR_003, // (400) invalid bitcoin amount check amount data type - XMRTO_ERROR_004, // (400) bitcoin amount out of bounds check min and max amount - XMRTO_ERROR_005, // (400) unexpected validation error contact support - XMRTO_ERROR_006, // (404) requested order not found check order UUID - XMRTO_ERROR_007, // (503) third party service not available try again later - XMRTO_ERROR_008, // (503) insufficient funds available try again later - XMRTO_ERROR_009, // (400) invalid request check request parameters - XMRTO_ERROR_010, // (400) payment protocol failed invalid or outdated data served by url - XMRTO_ERROR_011, // (400) malformed payment protocol url url is malformed or cannot be contacted - XMRTO_ERROR_012 // (403) too many requests - } - - public boolean isRetryable() { - return (errorId == Error.XMRTO_ERROR_001) - || (errorId == Error.XMRTO_ERROR_007) - || (errorId == Error.XMRTO_ERROR_008); - } - - public static String getErrorIdString(Error anError) { - return anError.toString().replace('_', '-'); - } - - // mostly for testing - public XmrToError(String errorId, String message) { - Error error; - try { - error = Error.valueOf(errorId.replace('-', '_')); - } catch (IllegalArgumentException ex) { - error = Error.XMRTO_ERROR_UNDEF; - } - this.errorId = error; - this.errorMsg = message; - } - - public XmrToError(final JSONObject jsonObject) throws JSONException { - final String errorId = jsonObject.getString("error"); - Error error; - try { - error = Error.valueOf(errorId.replace('-', '_')); - } catch (IllegalArgumentException ex) { - error = Error.XMRTO_ERROR_UNDEF; - } - this.errorId = error; - this.errorMsg = jsonObject.getString("error_msg"); - } - - public Error getErrorId() { - return errorId; - } - - public String getErrorMsg() { - return errorMsg; - } - - public int getErrorMsgId() { - switch (errorId) { - case XMRTO_ERROR_001: - return R.string.xmrto_error_001; - case XMRTO_ERROR_004: - return R.string.xmrto_error_004; - case XMRTO_ERROR_010: - return R.string.xmrto_error_010; - case XMRTO_ERROR_012: - return R.string.xmrto_error_012; - default: - return R.string.xmrto_error; - } - } - - @Override - public String toString() { - return getErrorIdString(getErrorId()) + ": " + getErrorMsg(); - } - - /* Errors from Query Parameters - HTTP code XMR.TO error code Error message/reason Solution - 503 XMRTO-ERROR-001 internal services not available try again later - 503 XMRTO-ERROR-007 third party service not available try again later - 503 XMRTO-ERROR-008 insufficient funds available try again later - */ - - /* Errors from Create Order - HTTP code XMR.TO error code Error message/reason Solution - 503 XMRTO-ERROR-001 internal services not available try again later - 400 XMRTO-ERROR-002 malformed bitcoin address check address validity - 400 XMRTO-ERROR-003 invalid bitcoin amount check amount data type - 503 XMRTO-ERROR-004 bitcoin amount out of bounds check min and max amount - 400 XMRTO-ERROR-005 unexpected validation error contact support - - Errors from Create Order Payment Protocol - 400 XMRTO-ERROR-010 payment protocol failed invalid or outdated data served by url - 400 XMRTO-ERROR-011 malformed payment protocol url url is malformed or cannot be contacted - */ - - /* Errors from Query Order - HTTP code XMR.TO error code Error message/reason Solution - 400 XMRTO-ERROR-009 invalid request check request parameters - 404 XMRTO-ERROR-006 requested order not found check order UUID - */ - - /* General - 403 XMRTO-ERROR-012 too many requests - */ -} diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/api/QueryOrderParameters.java b/app/src/main/java/com/m2049r/xmrwallet/xmrto/api/QueryOrderParameters.java deleted file mode 100644 index e27c4587..00000000 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/api/QueryOrderParameters.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2017 m2049r et al. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.m2049r.xmrwallet.xmrto.api; - -public interface QueryOrderParameters { - - double getLowerLimit(); // "lower_limit": , - - double getPrice(); // "price": , - - double getUpperLimit(); // "upper_limit": , - - boolean isZeroConfEnabled(); // "zero_conf_enabled": , - - double getZeroConfMaxAmount(); // "zero_conf_max_amount": - -} diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/api/XmrToApi.java b/app/src/main/java/com/m2049r/xmrwallet/xmrto/api/XmrToApi.java deleted file mode 100644 index 495da758..00000000 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/api/XmrToApi.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2017 m2049r et al. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.m2049r.xmrwallet.xmrto.api; - -import androidx.annotation.NonNull; - -public interface XmrToApi { - - /** - * Queries the order parameter. - * - * @param callback the callback with the OrderParameter object - */ - void queryOrderParameters(@NonNull final XmrToCallback callback); - - /** - * Creates an order - * - * @param amount the desired amount - * @param address the target bitcoin address - */ - void createOrder(final double amount, @NonNull final String address, @NonNull final XmrToCallback callback); - - /** - * Creates an order through BIP70 payment protocol like bitpay - * - * @param url the BIP70 URL - */ - void createOrder(@NonNull final String url, @NonNull final XmrToCallback callback); - - /** - * Queries the order status for given current order - * - * @param uuid the order uuid - * @param callback the callback with the OrderStatus object - */ - void queryOrderStatus(@NonNull final String uuid, @NonNull final XmrToCallback callback); - -} diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/CreateOrderImpl.java b/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/CreateOrderImpl.java deleted file mode 100644 index 729ba099..00000000 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/CreateOrderImpl.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 2017 m2049r et al. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.m2049r.xmrwallet.xmrto.network; - -import androidx.annotation.NonNull; - -import com.m2049r.xmrwallet.xmrto.api.CreateOrder; -import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; - -import org.json.JSONException; -import org.json.JSONObject; - -class CreateOrderImpl implements CreateOrder { - - private final String state; - private final double btcAmount; - private final String btcDestAddress; - private final String btcBip70; - private final String uuid; - - public Double getBtcAmount() { - return btcAmount; - } - - public String getBtcDestAddress() { - return btcDestAddress; - } - - public String getBtcBip70() { - return btcBip70; - } - - public String getUuid() { - return uuid; - } - - public String getState() { - return state; - } - - CreateOrderImpl(final JSONObject jsonObject) throws JSONException { - this.state = jsonObject.getString("state"); - this.btcAmount = jsonObject.getDouble("btc_amount"); - this.btcDestAddress = jsonObject.getString("btc_dest_address"); - if (jsonObject.has("pp_url")) - this.btcBip70 = jsonObject.getString("pp_url"); - else - this.btcBip70 = null; - this.uuid = jsonObject.getString("uuid"); - } - - public static void call(@NonNull final XmrToApiCall api, final double amount, @NonNull final String address, - @NonNull final XmrToCallback callback) { - try { - final JSONObject request = createRequest(amount, address); - api.call("order_create", request, new NetworkCallback() { - @Override - public void onSuccess(JSONObject jsonObject) { - try { - callback.onSuccess(new CreateOrderImpl(jsonObject)); - } catch (JSONException ex) { - callback.onError(ex); - } - } - - @Override - public void onError(Exception ex) { - callback.onError(ex); - } - }); - } catch (JSONException ex) { - callback.onError(ex); - } - } - - public static void call(@NonNull final XmrToApiCall api, @NonNull final String url, - @NonNull final XmrToCallback callback) { - try { - final JSONObject request = createRequest(url); - api.call("order_create_pp", request, new NetworkCallback() { - @Override - public void onSuccess(JSONObject jsonObject) { - try { - callback.onSuccess(new CreateOrderImpl(jsonObject)); - } catch (JSONException ex) { - callback.onError(ex); - } - } - - @Override - public void onError(Exception ex) { - callback.onError(ex); - } - }); - } catch (JSONException ex) { - callback.onError(ex); - } - } - - static JSONObject createRequest(final double amount, final String address) throws JSONException { - final JSONObject jsonObject = new JSONObject(); - jsonObject.put("amount", amount); - jsonObject.put("amount_currency", "BTC"); - jsonObject.put("btc_dest_address", address); - return jsonObject; - } - - static JSONObject createRequest(final String ppUrl) throws JSONException { - final JSONObject jsonObject = new JSONObject(); - jsonObject.put("pp_url", ppUrl); - return jsonObject; - } - -} diff --git a/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/QueryOrderStatusImpl.java b/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/QueryOrderStatusImpl.java deleted file mode 100644 index d4da9754..00000000 --- a/app/src/main/java/com/m2049r/xmrwallet/xmrto/network/QueryOrderStatusImpl.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (c) 2017 m2049r et al. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.m2049r.xmrwallet.xmrto.network; - -import androidx.annotation.NonNull; - -import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; -import com.m2049r.xmrwallet.xmrto.api.QueryOrderStatus; - -import org.json.JSONException; -import org.json.JSONObject; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; - -import timber.log.Timber; - -class QueryOrderStatusImpl implements QueryOrderStatus { - public static final SimpleDateFormat DATETIME_FORMATTER = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - - public static Date parseDate(String dateString) throws ParseException { - return DATETIME_FORMATTER.parse(dateString.replaceAll("Z$", "+0000")); - } - - private QueryOrderStatus.State state; // "state": "", - private double btcAmount; // "btc_amount": , - private String btcDestAddress; // "btc_dest_address": "", - private String uuid; // "uuid": "" - // the following are only returned if the state is "after" TO_BE_CREATED - //private int btcNumConfirmations; // "btc_num_confirmations": , - private int btcNumConfirmationsThreshold; // "btc_num_confirmations_threshold": , - private Date createdAt; // "created_at": "", - private Date expiresAt; // "expires_at": "", - private int secondsTillTimeout; // "seconds_till_timeout": , - private double incomingAmountTotal; // "incoming_amount_total": , - private double remainingAmountIncoming; // "remaining_amount_incoming": , - private int incomingNumConfirmationsRemaining; // "incoming_num_confirmations_remaining": , - private double incomingPriceBtc; // "incoming_price_btc": , - private String receivingSubaddress; // "receiving_subaddress": , - private int recommendedMixin; // "recommended_mixin": , - - public QueryOrderStatus.State getState() { - return state; - } - - public double getBtcAmount() { - return btcAmount; - } - - public String getBtcDestAddress() { - return btcDestAddress; - } - - public String getUuid() { - return uuid; - } - - public int getBtcNumConfirmationsThreshold() { - return btcNumConfirmationsThreshold; - } - - public Date getCreatedAt() { - return createdAt; - } - - public Date getExpiresAt() { - return expiresAt; - } - - public int getSecondsTillTimeout() { - return secondsTillTimeout; - } - - public double getIncomingAmountTotal() { - return incomingAmountTotal; - } - - public double getRemainingAmountIncoming() { - return remainingAmountIncoming; - } - - public int getIncomingNumConfirmationsRemaining() { - return incomingNumConfirmationsRemaining; - } - - public double getIncomingPriceBtc() { - return incomingPriceBtc; - } - - public String getReceivingSubaddress() { - return receivingSubaddress; - } - - public int getRecommendedMixin() { - return recommendedMixin; - } - - public boolean isCreated() { - return (state.equals(State.UNPAID) || - state.equals(State.BTC_SENT) || - state.equals(State.PAID) || - state.equals(State.PAID_UNCONFIRMED) || - state.equals(State.UNDERPAID)); - } - - public boolean isTerminal() { - return (state.equals(State.BTC_SENT) || isError()); - } - - - public boolean isError() { - return (state.equals(State.UNDEF) || - state.equals(State.NOT_FOUND) || - state.equals(State.TIMED_OUT)); - } - - public boolean isPending() { - return (state.equals(State.TO_BE_CREATED) || - state.equals(State.UNPAID) || - state.equals(State.UNDERPAID) || - state.equals(State.PAID_UNCONFIRMED) || - state.equals(State.PAID)); - } - - public boolean isPaid() { - return (state.equals(State.PAID_UNCONFIRMED) || - state.equals(State.PAID)); - } - - public boolean isSent() { - return state.equals(State.BTC_SENT); - } - - - QueryOrderStatusImpl(final JSONObject jsonObject) throws JSONException { - Timber.d(jsonObject.toString(4)); - String stateName = jsonObject.getString("state"); // "state": "", - State state; - try { - state = State.valueOf(stateName); - } catch (IllegalArgumentException ex) { - state = State.UNDEF; //TODO: throws IllegalArgumentException? - } - this.state = state; - - btcAmount = jsonObject.getDouble("btc_amount"); // "btc_amount": , - btcDestAddress = jsonObject.getString("btc_dest_address"); // "btc_dest_address": "", - uuid = jsonObject.getString("uuid"); // "uuid": "" - - if (isCreated()) { - btcNumConfirmationsThreshold = jsonObject.getInt("btc_num_confirmations_threshold"); - try { - String created = jsonObject.getString("created_at"); - createdAt = parseDate(created); - String expires = jsonObject.getString("expires_at"); - expiresAt = parseDate(expires); - } catch (ParseException ex) { - throw new JSONException(ex.getLocalizedMessage()); - } - secondsTillTimeout = jsonObject.getInt("seconds_till_timeout"); - incomingAmountTotal = jsonObject.getDouble("incoming_amount_total"); - remainingAmountIncoming = jsonObject.getDouble("remaining_amount_incoming"); - incomingNumConfirmationsRemaining = jsonObject.getInt("incoming_num_confirmations_remaining"); - incomingPriceBtc = jsonObject.getDouble("incoming_price_btc"); - receivingSubaddress = jsonObject.getString("receiving_subaddress"); - recommendedMixin = jsonObject.getInt("recommended_mixin"); - } - } - - public static void call(@NonNull final XmrToApiCall api, @NonNull final String uuid, - @NonNull final XmrToCallback callback) { - try { - final JSONObject request = createRequest(uuid); - api.call("order_status_query", request, new NetworkCallback() { - @Override - public void onSuccess(JSONObject jsonObject) { - try { - callback.onSuccess(new QueryOrderStatusImpl(jsonObject)); - } catch (JSONException ex) { - callback.onError(ex); - } - } - - @Override - public void onError(Exception ex) { - callback.onError(ex); - } - }); - } catch (JSONException ex) { - callback.onError(ex); - } - } - - /** - * Create JSON request object - * - * @param uuid unique_order_identifier_as_12_character_string - */ - - static JSONObject createRequest(final String uuid) throws JSONException { - final JSONObject jsonObject = new JSONObject(); - jsonObject.put("uuid", uuid); - return jsonObject; - } -} diff --git a/app/src/main/res/drawable/ic_baseline_launch_24.xml b/app/src/main/res/drawable/ic_baseline_launch_24.xml new file mode 100644 index 00000000..455b503a --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_launch_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_sideshift_white.xml b/app/src/main/res/drawable/ic_sideshift_white.xml new file mode 100644 index 00000000..7d8a3284 --- /dev/null +++ b/app/src/main/res/drawable/ic_sideshift_white.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_xmrto_logo.xml b/app/src/main/res/drawable/ic_xmrto_logo.xml new file mode 100644 index 00000000..b4bc3f29 --- /dev/null +++ b/app/src/main/res/drawable/ic_xmrto_logo.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_send_btc_confirm.xml b/app/src/main/res/layout/fragment_send_btc_confirm.xml index d882eda8..ef0408e5 100644 --- a/app/src/main/res/layout/fragment_send_btc_confirm.xml +++ b/app/src/main/res/layout/fragment_send_btc_confirm.xml @@ -29,7 +29,8 @@ android:id="@+id/evStageA" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="center" /> + android:layout_gravity="center" + android:visibility="visible" /> - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -155,7 +157,8 @@ android:id="@+id/evStageC" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="center" /> + android:layout_gravity="center" + android:visibility="visible" /> + tools:text="f173118220f1461841da" /> + card_view:drawableEndCompat="@drawable/ic_baseline_launch_24" /> diff --git a/app/src/main/res/layout/fragment_tx_info.xml b/app/src/main/res/layout/fragment_tx_info.xml index 5fc6b00a..c160b61a 100644 --- a/app/src/main/res/layout/fragment_tx_info.xml +++ b/app/src/main/res/layout/fragment_tx_info.xml @@ -64,7 +64,6 @@ android:layout_height="wrap_content" android:layout_margin="16dp" android:foreground="?android:attr/selectableItemBackground" - android:visibility="gone" card_view:contentPadding="8dp"> - + + tools:text="f173118220f1461841da" /> - + + + diff --git a/app/src/main/res/values-cat/about.xml b/app/src/main/res/values-cat/about.xml index 1c2cea33..65923cf9 100644 --- a/app/src/main/res/values-cat/about.xml +++ b/app/src/main/res/values-cat/about.xml @@ -30,8 +30,8 @@

Si utilitzeu la funcionalitat d’intercanvi (opcional), monerujo obté el canvi          a través de l’API pública de coinmarketcap.com.          Consulteu la seva política de privacitat a https://coinmarketcap.com/privacy per a més detalls sobre com es recullen les dades de les vostres peticions

-

Si utilitzeu l’aplicació per pagar a adreces BTC, utilitzareu el servei XMR.TO. -         Consulteu la seva política de privacitat a https://xmr.to/ per obtenir més informació. Monerujo els envia l’adreça de destinació de BTC i la quantitat. La vostra IP també podrà ser recollida.

+

Si utilitzeu l’aplicació per pagar a adreces BTC, utilitzareu el servei SideShift.ai. +         Consulteu la seva política de privacitat a https://sideshift.ai/ per obtenir més informació. Monerujo els envia l’adreça de destinació de BTC i la quantitat. La vostra IP també podrà ser recollida.

Permisos de la App

  • INTERNET : Connectar a la xarxa Monero mitjançant un Node Daemon de Monero
  • diff --git a/app/src/main/res/values-cat/help.xml b/app/src/main/res/values-cat/help.xml index f3ff8b5c..3b3635c0 100644 --- a/app/src/main/res/values-cat/help.xml +++ b/app/src/main/res/values-cat/help.xml @@ -117,52 +117,41 @@
    • un OpenAlias per XMR o BTC
    • una adreça BTC
    • -
    • un bitcoin: URI (inclòs BIP70 com bitpay)
    • - Tingueu en compte que l’enviament de BTC es duu a terme a través del servei XMR.TO (consulteu https://xmr.to per a més detalls). Consulteu la secció sobre l’enviament de BTC més avall.

      -

      ID de Pagament

      -

      Podeu utilitzar un ID de pagament per identificar el motiu pel qual heu enviat a Monero entre dues parts. Això és totalment opcional i privat. Per exemple, això pot permetre a una empresa associar la transacció amb un article que heu comprat.

      + Tingueu en compte que l’enviament de BTC es duu a terme a través del servei SideShift.ai (consulteu https://sideshift.ai per a més detalls). Consulteu la secció sobre l’enviament de BTC més avall.

      Enviant BTC

      -

      XMR.TO

      -

      XMR.TO és un servei de tercers que fa proporciona el canvi de Monero a Bitcoin. -         Nosaltres fem servir l’API XMR.TO per integrar els pagaments de Bitcoin a Monerujo. Si us plau, doneu un cop d’ull a https://xmr.to i decidiu vosaltres mateixos si és una cosa que volgueu utilitzar. L’equip de Monerujo no està associat amb XMR.TO i no pot oferir assistència amb el seu servei.

      -

      Tipus de Canvi XMR.TO

      -

      A la pantalla \"Quantitat\" es mostraran els paràmetres actuals del servei XMR.TO. Aquests -         inclouen el tipus de canvi actual, així com els límits de BTC superiors i inferiors. Tingueu en compte que la tarifa no està garantida en aquell mateix moment. També veureu -         la quantitat fins a la qual la transacció BTC s’executarà instantàniament sense esperar -         a confirmacions de XMR (consulteu les preguntes freqüents sobre XMR.TO per obtenir més informació). Tingueu en compte que el servei XMR.TO no suposa càrrecs addicionals: oi que mola?

      -

      Ordre de compra XMR.TO

      -

      A la pantalla \"Confirmar\", veureu l’ordre de compra XMR.TO real. Aquesta comanda és vàlida per a +

      SideShift.ai

      +

      SideShift.ai és un servei de tercers que fa proporciona el canvi de Monero a Bitcoin. +         Nosaltres fem servir l’API SideShift.ai per integrar els pagaments de Bitcoin a Monerujo. Si us plau, doneu un cop d’ull a https://sideshift.ai i decidiu vosaltres mateixos si és una cosa que volgueu utilitzar. L’equip de Monerujo no està associat amb SideShift.ai i no pot oferir assistència amb el seu servei.

      +

      Tipus de Canvi SideShift.ai

      +

      A la pantalla \"Quantitat\" es mostraran els paràmetres actuals del servei SideShift.ai. Aquests +         inclouen el tipus de canvi actual, així com els límits de BTC superiors i inferiors. Tingueu en compte que la tarifa no està garantida en aquell mateix moment.

      +

      Ordre de compra SideShift.ai

      +

      A la pantalla \"Confirmar\", veureu l’ordre de compra SideShift.ai real. Aquesta comanda és vàlida per a          un temps limitat: és possible que veieu un compte enrere en el botó \"Gastar\". El tipus de canvi pot          ser diferent del mostrat en pantalles anteriors.

      -

      Clau Secreta XMR.TO

      -

      Com que Monerujo només gestiona la part Monero de la vostra transacció, la vostra clau secreta per XMR.TO es pot utilitzar per fer el seguiment de la part de Bitcoin de la vostra comanda a la pàgina principal de XMR.TO.

      -

      Tingueu en compte que aquesta clau secreta només és vàlida durant 24 hores després que la transacció -         ha començat!

      -

      Compte enrere XMR.TO!

      -

      Una vegada el compte enrere arribi a zero haureu d’obtenir una nova sol·licitud de XMR.TO tornant enrere al pas anterior i després tornar a la pantalla de \"Confirmar\".

      +

      Clau Secreta SideShift.ai

      +

      Com que Monerujo només gestiona la part Monero de la vostra transacció, la vostra clau secreta per SideShift.ai es pot utilitzar per fer el seguiment de la part de Bitcoin de la vostra comanda a la pàgina principal de SideShift.ai.

      +

      Compte enrere SideShift.ai!

      +

      Una vegada el compte enrere arribi a zero haureu d’obtenir una nova sol·licitud de SideShift.ai tornant enrere al pas anterior i després tornar a la pantalla de \"Confirmar\".

      ]]> Enviant BTC -

      XMR.TO

      -

      XMR.TO és un servei de tercers que fa proporciona el canvi de Monero a Bitcoin. -         Nosaltres fem servir l’API XMR.TO per integrar els pagaments de Bitcoin a Monerujo. Si us plau, doneu un cop d’ull a https://xmr.to i decidiu vosaltres mateixos si és una cosa que volgueu utilitzar. L’equip de Monerujo no està associat amb XMR.TO i no pot oferir assistència amb el seu servei.

      -

      Tipus de Canvi XMR.TO

      -

      A la pantalla \"Quantitat\" es mostraran els paràmetres actuals del servei XMR.TO. Aquests -         inclouen el tipus de canvi actual, així com els límits de BTC superiors i inferiors. Tingueu en compte que la tarifa no està garantida en aquell mateix moment. També veureu -         la quantitat fins a la qual la transacció BTC s’executarà instantàniament sense esperar -         a confirmacions de XMR (consulteu les preguntes freqüents sobre XMR.TO per obtenir més informació). Tingueu en compte que el servei XMR.TO no suposa càrrecs addicionals: oi que mola?

      -

      Ordre de compra XMR.TO

      -

      A la pantalla \"Confirmar\", veureu l’ordre de compra XMR.TO real. Aquesta comanda és vàlida per a +

      SideShift.ai

      +

      SideShift.ai és un servei de tercers que fa proporciona el canvi de Monero a Bitcoin. +         Nosaltres fem servir l’API SideShift.ai per integrar els pagaments de Bitcoin a Monerujo. Si us plau, doneu un cop d’ull a https://sideshift.ai i decidiu vosaltres mateixos si és una cosa que volgueu utilitzar. L’equip de Monerujo no està associat amb SideShift.ai i no pot oferir assistència amb el seu servei.

      +

      Tipus de Canvi SideShift.ai

      +

      A la pantalla \"Quantitat\" es mostraran els paràmetres actuals del servei SideShift.ai. Aquests +         inclouen el tipus de canvi actual, així com els límits de BTC superiors i inferiors. Tingueu en compte que la tarifa no està garantida en aquell mateix moment.

      +

      Ordre de compra SideShift.ai

      +

      A la pantalla \"Confirmar\", veureu l’ordre de compra SideShift.ai real. Aquesta comanda és vàlida per a          un temps limitat: és possible que veieu un compte enrere en el botó \"Gastar\". El tipus de canvi pot          ser diferent del mostrat en pantalles anteriors.

      -

      Clau Secreta XMR.TO

      -

      Com que Monerujo només gestiona la part Monero de la vostra transacció, la vostra clau secreta per XMR.TO es pot utilitzar per fer el seguiment de la part de Bitcoin de la vostra comanda a la pàgina principal de XMR.TO.

      -

      Tingueu en compte que aquesta clau secreta només és vàlida durant 24 hores després que la transacció -         ha començat!

      -

      Compte enrere XMR.TO!

      -

      Una vegada el compte enrere arribi a zero haureu d’obtenir una nova sol·licitud de XMR.TO tornant enrere al pas anterior i després tornar a la pantalla de \"Confirmar\".

      +

      Clau Secreta SideShift.ai

      +

      Com que Monerujo només gestiona la part Monero de la vostra transacció, la vostra clau secreta per SideShift.ai es pot utilitzar per fer el seguiment de la part de Bitcoin de la vostra comanda a la pàgina principal de SideShift.ai.

      +

      Compte enrere SideShift.ai!

      +

      Una vegada el compte enrere arribi a zero haureu d’obtenir una nova sol·licitud de SideShift.ai tornant enrere al pas anterior i després tornar a la pantalla de \"Confirmar\".

      ]]>
      Heu introduït una adreça de Bitcoin.
      - Està a punt d\'enviar XMR i el destinatari rebrà BTC a través del servei XMR.TO service. + Està a punt d\'enviar XMR i el destinatari rebrà BTC a través del servei SideShift.ai service. ]]>
      - Ordre XMR.TO + Ordre SideShift.ai %1$s BTC Confirmació Pendent Pagament Pendent - Error de XMR.TO (%1$s) + Error de SideShift.ai (%1$s) BTC Enviats! Consultant … You can send %1$s — %2$s BTC.
      - XMR.TO està oferint una tasa de canvi de %3$s BTC en aquest moment. + SideShift.ai està oferint una tasa de canvi de %3$s BTC en aquest moment. ]]>
      Quantitats fins a %1$s BTC seran enviats a l\'instant! @@ -62,25 +62,25 @@ ✔ ID de pagment integrat Preparant la seva transacció - Creant ordre XMR.TO - Consultant ordre XMR.TO + Creant ordre SideShift.ai + Consultant ordre SideShift.ai Preparant transacció Monero - Consultant paràmetres XMR.TO + Consultant paràmetres SideShift.ai - ERROR XMR.TO + ERROR SideShift.ai Codi: %1$d Premi aquí per tornar-ho a intentar Vatua l\'olla! Sembla ser que estem encallats! - Ups, sembla que XMR.TO no està disponible ara mateix! + Ups, sembla que SideShift.ai no està disponible ara mateix! %1$s BTC = %2$s XMR (Canvi: %1$s BTC/XMR) - Visita xmr.to per suport i seguiment - Clau secreta\nXMR.TO - Clau secreta XMR.TO + Visita SideShift.ai per suport i seguiment + Clau secreta\nSideShift.ai + Clau secreta SideShift.ai Adreça BTC de destí Quantitat @@ -153,9 +153,9 @@ Clau de visualització Adreça Pública - Clau de XMR.TO + Clau Clau de visualització copiada al porta-retalls! - Clau de XMR.TO copiada al porta-retalls! + Clau de SideShift.ai copiada al porta-retalls! Adreça del portamonedes copiada al porta-retalls! ID de transacció copiada al porta-retalls! S\'ha inhabilitat la funció de copiar per raons de seguretat! @@ -352,12 +352,9 @@ S\'han marcat de forma automàtica els millors %1$d nodes Provar - Resolució del Pagament URI… - No s\'ha pogut resoldre el pagament URI - S\'ha resolt el pagament URI ✔ Receptor - XMR.TO fora de línia - intenti-ho més tard + SideShift.ai fora de línia - intenti-ho més tard Quantitat de BTC fora dels límits URL de pagament no vàlida o obsoleta Massa peticions @@ -385,7 +382,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -406,4 +403,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-de/about.xml b/app/src/main/res/values-de/about.xml index c5b8f5a8..970bd2f0 100644 --- a/app/src/main/res/values-de/about.xml +++ b/app/src/main/res/values-de/about.xml @@ -33,8 +33,8 @@ den aktuellen Kurs über die öffentliche Schnittstelle von coinmarketcap.com ab. Siehe dir ihre Datenschutzerklärung unter https://coinmarketcap.com/privacy für Details darüber an, wie Daten in deinen Anfragen gesammelt werden.

      -

      Wenn du die App zum Bezahlen an BTC-Adressen verwendest, verwendest du den Dienst XMR.TO. - Weitere Informationen findest du in der Datenschutzerklärung unter https://xmr.to/. +

      Wenn du die App zum Bezahlen an BTC-Adressen verwendest, verwendest du den Dienst SideShift.ai. + Weitere Informationen findest du in der Datenschutzerklärung unter https://sideshift.ai/. Monerujo schickt dem Anbieter die BTC-Zieladresse und den Betrag. Deine IP-Adresse kann dabei aufgezeichnet werden.

      App-Berechtigungen

      diff --git a/app/src/main/res/values-de/help.xml b/app/src/main/res/values-de/help.xml index 67b5ed13..b5828d0d 100644 --- a/app/src/main/res/values-de/help.xml +++ b/app/src/main/res/values-de/help.xml @@ -148,62 +148,50 @@
      • einen OpenAlias für XMR oder BTC
      • eine BTC-Adresse
      • -
      • eine Bitcoin: URI (inklusive BIP70 – wie BitPay)
      • - nutzen. Beachte bitte, dass das Senden von BTC über den Service von XMR.TO erfolgt. (Siehe https://xmr.to + nutzen. Beachte bitte, dass das Senden von BTC über den Service von SideShift.ai erfolgt. (Siehe https://sideshift.ai für Details). Weitere Details sind weiter unten unter "BTC senden".

        -

        Zahlungs-ID

        -

        Du kannst eine Zahlungs-ID benutzen, um den Grund einer Transaktion zwischen zwei Parteien zu identifizieren. Dies ist optional - und nicht öffentlich einsehbar. Zum Beispiel kann ein Unternehmen damit Zahlungen und Verkäufe miteinander verbinden.

        BTC senden

        -

        XMR.TO

        -

        XMR.TO ist ein Drittanbieter-Service, welcher als Wechselservice von Monero zu Bitcoin fungiert. - Wir nutzen die XMR.TO-Schnittstelle, um Bitcoin-Zahlungen in Monerujo zu integrieren. Bitte schaue dir - https://xmr.to an und entscheide selbst, ob du diesen Service nutzen willst. Das Monerujo-Team - gehört nicht zu XMR.TO und kann keinen Support für dessen Service bieten.

        -

        XMR.TO-Wechselkurs

        -

        Auf dem \"Menge\" Bildschirm siehst du die aktuellen Werte des XMR.TO-Service. Diese beinhalten den aktuellen Tauschkurs - sowie die oberen und unteren BTC-Limits. Bitte bedenke, dass dieser Kurs zu diesem Zeitpunkt nicht garantiert ist. - Außerdem siehst du den Wert, bis zu dem eine BTC-Zahlung sofort ausgeführt wird, - ohne auf XMR-Bestätigungen warten zu müssen (siehe die XMR.TO-FAQ für mehr Details). - XMR.TO erhebt keine zusätzlichen Gebühren – wie cool ist das denn?

        -

        XMR.TO-Auftrag

        -

        Auf dem \"Bestätigen\" Bildschirm siehst du das genaue XMR.TO-Angebot. Dieses Angebot gilt +

        SideShift.ai

        +

        SideShift.ai ist ein Drittanbieter-Service, welcher als Wechselservice von Monero zu Bitcoin fungiert. + Wir nutzen die SideShift.ai-Schnittstelle, um Bitcoin-Zahlungen in Monerujo zu integrieren. Bitte schaue dir + https://sideshift.ai an und entscheide selbst, ob du diesen Service nutzen willst. Das Monerujo-Team + gehört nicht zu SideShift.ai und kann keinen Support für dessen Service bieten.

        +

        SideShift.ai-Wechselkurs

        +

        Auf dem \"Menge\" Bildschirm siehst du die aktuellen Werte des SideShift.ai-Service. Diese beinhalten den aktuellen Tauschkurs + sowie die oberen und unteren BTC-Limits. Bitte bedenke, dass dieser Kurs zu diesem Zeitpunkt nicht garantiert ist.

        +

        SideShift.ai-Auftrag

        +

        Auf dem \"Bestätigen\" Bildschirm siehst du das genaue SideShift.ai-Angebot. Dieses Angebot gilt für eine bestimmte Zeit – du siehst einen Countdown auf dem \"Ausgeben\" Button. Der Wechselkurs kann sich von den vorherigen Angaben unterscheiden.

        -

        Geheimer XMR.TO-Schlüssel

        -

        Da Monerujo nur den Monero-Teil deiner Transaktion verarbeitet, kann dein geheimer XMR.TO-Schlüssel - dazu benutzt werden, den Bitcoin-Teil deines Auftrags auf der XMR.TO-Homepage zu verfolgen.

        -

        Dieser geheime Schlüssel ist für 24h nach Start der Transaktion gültig!

        -

        XMR.TO-Countdown!

        -

        Wenn der Countdown 0 erreicht, musst du ein neues Angebot von XMR.TO anfordern, indem du zum vorherigen Schritt +

        Geheimer SideShift.ai-Schlüssel

        +

        Da Monerujo nur den Monero-Teil deiner Transaktion verarbeitet, kann dein geheimer SideShift.ai-Schlüssel + dazu benutzt werden, den Bitcoin-Teil deines Auftrags auf der SideShift.ai-Homepage zu verfolgen.

        +

        SideShift.ai-Countdown!

        +

        Wenn der Countdown 0 erreicht, musst du ein neues Angebot von SideShift.ai anfordern, indem du zum vorherigen Schritt zurückkehrst und wieder zum \"Bestätigen\"-Bildschirm zurückkommst.

        ]]> BTC senden -

        XMR.TO

        -

        XMR.TO ist ein Drittanbieter-Service, der als Wechselservice von Monero zu Bitcoin fungiert. - Wir verwenden die XMR.TO-Schnittstelle, um Bitcoin-Zahlungen in Monerujo zu integrieren. Bitte sieh dir - https://xmr.to an und entscheide selbst, ob es etwas ist, was du verwenden möchtest. Das Monerujo-Team - ist nicht mit XMR.TO verbunden und kann keinen Support für dessen Service bieten.

        -

        XMR.TO-Wechselkurs

        -

        Auf dem Bildschirm \"Menge\" werden dir die aktuellen Parameter des XMR.TO-Dienstes angezeigt. Diese - beinhalten den aktuellen Wechselkurs sowie Ober- und Untergrenzen von BTC. Bitte beachte, dass diese Rate - zu diesem Zeitpunkt noch nicht garantiert werden kann. Du siehst auch den Betrag, bis zu dem die BTC-Transaktion - sofort ausgeführt wird, ohne auf XMR-Bestätigungen zu warten (siehe XMR.TO-FAQ für weitere Details). - Bitte beachte, dass XMR.TO keine zusätzlichen Gebühren berechnet – ist doch cool, oder?

        -

        XMR.TO-Auftrag

        -

        Auf dem Bildschirm \"Bestätigen\" siehst du das aktuelle XMR.TO-Angebot. Dieses Angebot ist nur für eine - bestimmte Zeit gültig – du wirst vielleicht einen Countdown auf dem \"Ausgeben\"-Knopf sehen. Der Wechselkurs - kann sich von dem auf den vorherigen Bildschirmen angezeigten, indikativen Wechselkurs unterscheiden.

        -

        Geheimer XMR.TO-Schlüssel

        -

        Da Monerujo nur den Monero-Teil deiner Transaktion bearbeitet, kann dein geheimer XMR.TO-Schlüssel verwendet werden, - um den Bitcoin-Teil der Bestellung auf der XMR.TO-Homepage zu verfolgen.

        -

        Bitte beachte, dass dieser geheime Schlüssel nur bis zu 24 Stunden nach Start der Transaktion gültig ist!

        -

        XMR.TO-Countdown!

        -

        Sobald der Countdown Null erreicht hat, musst du ein neues Angebot von XMR.TO anfordern, - indem du zum vorherigen Schritt zurückgehst und dann zum Bildschirm "Bestätigen" zurückkehrst.

        +

        SideShift.ai

        +

        SideShift.ai ist ein Drittanbieter-Service, welcher als Wechselservice von Monero zu Bitcoin fungiert. + Wir nutzen die SideShift.ai-Schnittstelle, um Bitcoin-Zahlungen in Monerujo zu integrieren. Bitte schaue dir + https://sideshift.ai an und entscheide selbst, ob du diesen Service nutzen willst. Das Monerujo-Team + gehört nicht zu SideShift.ai und kann keinen Support für dessen Service bieten.

        +

        SideShift.ai-Wechselkurs

        +

        Auf dem \"Menge\" Bildschirm siehst du die aktuellen Werte des SideShift.ai-Service. Diese beinhalten den aktuellen Tauschkurs + sowie die oberen und unteren BTC-Limits. Bitte bedenke, dass dieser Kurs zu diesem Zeitpunkt nicht garantiert ist.

        +

        SideShift.ai-Auftrag

        +

        Auf dem \"Bestätigen\" Bildschirm siehst du das genaue SideShift.ai-Angebot. Dieses Angebot gilt + für eine bestimmte Zeit – du siehst einen Countdown auf dem \"Ausgeben\" Button. Der Wechselkurs kann + sich von den vorherigen Angaben unterscheiden.

        +

        Geheimer SideShift.ai-Schlüssel

        +

        Da Monerujo nur den Monero-Teil deiner Transaktion verarbeitet, kann dein geheimer SideShift.ai-Schlüssel + dazu benutzt werden, den Bitcoin-Teil deines Auftrags auf der SideShift.ai-Homepage zu verfolgen.

        +

        SideShift.ai-Countdown!

        +

        Wenn der Countdown 0 erreicht, musst du ein neues Angebot von SideShift.ai anfordern, indem du zum vorherigen Schritt + zurückkehrst und wieder zum \"Bestätigen\"-Bildschirm zurückkommst.

        ]]>
        Du hast eine BTC-Adresse eingegeben.
        - Du wirst XMR versenden und der Empfänger durch den XMR.TO Service BTC erhalten. + Du wirst XMR versenden und der Empfänger durch den SideShift.ai Service BTC erhalten. ]]>
        - XMR.TO-Auftrag + SideShift.ai-Auftrag %1$s BTC Bestätigung ausstehend Bezahlung ausstehend - XMR.TO-Fehler (%1$s) + SideShift.ai-Fehler (%1$s) BTC gesendet! Frage ab … Du kannst %1$s — %2$s BTC senden.
        - XMR.TO gibt dir aktuell einen Wechselkurs von %3$s BTC. + SideShift.ai gibt dir aktuell einen Wechselkurs von %3$s BTC. ]]>
        Beträge bis zu %1$s BTC werden sofort versendet! @@ -63,25 +63,25 @@ ✔ Zahlungs-ID integriert Bereite deine Transaktion vor - Erstelle XMR.TO-Auftrag - Frage XMR.TO-Auftrag ab + Erstelle SideShift.ai-Auftrag + Frage SideShift.ai-Auftrag ab Bereite Monero-Transaktion vor - Frage XMR.TO-Parameter ab + Frage SideShift.ai-Parameter ab - XMR.TO-FEHLER + SideShift.ai-FEHLER Code: %1$d Berühre zum Wiederholen Jetzt hängen wir hier fest! - Oh oh – XMR.TO scheint im Moment nicht verfügbar zu sein! + Oh oh – SideShift.ai scheint im Moment nicht verfügbar zu sein! %1$s BTC = %2$s XMR (Kurs: %1$s BTC/XMR) - Besuche XMR.TO für Support & Nachverfolgung - Geheimer Schlüssel\nXMR.TO - XMR.TO – Geheimer Schlüssel + Besuche SideShift.ai für Support & Nachverfolgung + Geheimer Schlüssel\nSideShift.ai + SideShift.ai – Geheimer Schlüssel BTC-Zieladresse Betrag @@ -153,9 +153,9 @@ View-Key Empfangsadresse - XMR.TO-Schlüssel + Schlüssel View-Key in Zwischenablage kopiert! - XMR.TO-Schlüssel in Zwischenablage kopiert! + Schlüssel in Zwischenablage kopiert! Wallet-Adresse in Zwischenablage kopiert! Transaktions-ID in Zwischenablage kopiert! Kopieren aus Sicherheitsgründen deaktiviert! @@ -355,12 +355,9 @@ Beste %1$d Nodes automatisch vorgemerkt Testen - Löse Zahlungs-URI auf… - Konnte Zahlungs-URI nicht auflösen - Zahlungs-URI aufgelöst ✔ Empfänger - XMR.TO nicht erreichbar – versuche es später nochmal + SideShift.ai nicht erreichbar – versuche es später nochmal BTC-Betrag außerhalb des gültigen Bereiches Ungültige oder veraltete Zahlungs-URL Zu viele Anfragen @@ -388,7 +385,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -409,4 +406,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-el/about.xml b/app/src/main/res/values-el/about.xml index 874895f1..81d45158 100644 --- a/app/src/main/res/values-el/about.xml +++ b/app/src/main/res/values-el/about.xml @@ -34,8 +34,8 @@ rate through the public API of coinmarketcap.com. See their privacy policy at https://coinmarketcap.com/privacy for details on how data in your requests is collected.

        -

        If you use the app to pay to BTC addresses, you will be using the XMR.TO service. - See their privacy policy at https://xmr.to/ for details. Monerujo send them the BTC +

        If you use the app to pay to BTC addresses, you will be using the SideShift.ai service. + See their privacy policy at https://sideshift.ai/ for details. Monerujo send them the BTC destination address and amount. Your IP will also be collectable.

        App Permissions

          diff --git a/app/src/main/res/values-el/help.xml b/app/src/main/res/values-el/help.xml index 3a2c5bf9..53374dda 100644 --- a/app/src/main/res/values-el/help.xml +++ b/app/src/main/res/values-el/help.xml @@ -127,66 +127,51 @@
          • an OpenAlias for XMR or BTC
          • a BTC address
          • -
          • a bitcoin: URI (including BIP70 like bitpay)
          • - Please note, that sending BTC is processed through the XMR.TO service (see https://xmr.to + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai for details). See the section on sending BTC below.

            -

            ID Πληρωμής

            -

            Μπορείς να χρησιμοποιήσεις ένα ID Πληρωμής(Payment ID) για να προσδιορίσεις τον λόγο που στέλνεις Monero - ανάμεσα σε δύο ενδιαφερόμενους αυτό είναι προεραιτικό και ιδωτικό. Για παράδειγμα μπορεί να επιτρέψει σε μια επιχείρηση - να κανονίσει την συναλλαγή σου με ένα αντικείμενο που αγόρασες.

            Αποστολή BTC

            -

            XMR.TO

            -

            Το XMR.TO είναι τρίτος πάροχος που δρα σαν ανταλλακτήριο από Monero σε Bitcoin. - Χρησιμοποιούμε το API του XMR.TO για να ενσωματώσουμε πληρωμές Bitcoin στο Monerujo. Παρακαλώ δες το - https://xmr.to και αποφάσισε για τον εαυτό σου εαν αυτό είναι κάτι που θες να χρησιμοποιήσεις. Η Ομάδα του - Monerujo δεν συνδέεται με το XMR.TO και δεν μπορεί να σε βοηθήσει με την υπηρεσία.

            -

            Ισοτιμία συναλλάγματος XMR.TO

            -

            Στην οθόνη \"Ποσό\" θα σου δωθούν οι τρέχουσες παράμετροι της υπηρεσίας XMR.TO. Αυτές +

            SideShift.ai

            +

            Το SideShift.ai είναι τρίτος πάροχος που δρα σαν ανταλλακτήριο από Monero σε Bitcoin. + Χρησιμοποιούμε το API του SideShift.ai για να ενσωματώσουμε πληρωμές Bitcoin στο Monerujo. Παρακαλώ δες το + https://sideshift.ai και αποφάσισε για τον εαυτό σου εαν αυτό είναι κάτι που θες να χρησιμοποιήσεις. Η Ομάδα του + Monerujo δεν συνδέεται με το SideShift.ai και δεν μπορεί να σε βοηθήσει με την υπηρεσία.

            +

            Ισοτιμία συναλλάγματος SideShift.ai

            +

            Στην οθόνη \"Ποσό\" θα σου δωθούν οι τρέχουσες παράμετροι της υπηρεσίας SideShift.ai. Αυτές περιλαμβάνουν την τρέχουσα ισοτιμία καθώς και τα μέγιστα και ελάχιστα όρια BTC. Σημειωτέον ότι αυτή η - ισοτιμία δεν εξασφαλίζεται σε αυτό το σημείο. Θα δεις επίσης το ποσό για το οποιό - η συναλλαγή BTC θα εκτελεσθέι άμεσα χωρίς αναμονή για επιβαιώσεις στο δίκτυο του - XMR (δες το FAQ του XMR.TO για περισσότερες λεπτομέρειες). Σημειωτέο, ότι το XMR.TO - δεν χρεώνει επιπλέον προμήθειες - πόσο πρώτο είναι αυτό;

            -

            Εντολή XMR.TO

            -

            Στην οθόνη \"Επιβεβαίωση\", θα δεις την πραγματική εντολή XMR.TO. Αυτή η εντολή ισχύει για + ισοτιμία δεν εξασφαλίζεται σε αυτό το σημείο.

            +

            Εντολή SideShift.ai

            +

            Στην οθόνη \"Επιβεβαίωση\", θα δεις την πραγματική εντολή SideShift.ai. Αυτή η εντολή ισχύει για περιορισμένο χρόνο - μπορεί να προσέξεις μια αντίστροφη μέτρηση στο κουμπί \"Ξόδεψε\". Η ισοτιμία μπορεί να είναι διαφορετική από την ενδεικτική που φαινόταν σε προηγούμενες οθόνες.

            -

            Μυστικό Κλειδί XMR.TO

            -

            Μιας και το Monerujo διαχειρίζεται μόνο την πλευρά του Monero της συναλλαγής το μυστικό κλειδί XMR.TO - μπορεί να χρησιμοποιηθεί για να εντοπίσει την συναλλαγή απο μεριάς Bitcoin στην XMR.TO εντολή σου στην αρχική τους σελίδα.

            -

            Σημειωτέο ότι, αυτό το μυστικό κλειδί θα ισχύει για 24 ώρες από όταν ξεκίνησες - την συναλλαγή!

            -

            Αντίστροφη μέτρηση XMR.TO!

            -

            Μόλις η αντίστροφη μέτρηση φθάσει στο μηδέν, χρειάζεται να ξεκινήσεις πάλι την συναλλαγή στο XMR.TO πηγαίνοντας +

            Μυστικό Κλειδί SideShift.ai

            +

            Μιας και το Monerujo διαχειρίζεται μόνο την πλευρά του Monero της συναλλαγής το μυστικό κλειδί SideShift.ai + μπορεί να χρησιμοποιηθεί για να εντοπίσει την συναλλαγή απο μεριάς Bitcoin στην SideShift.ai εντολή σου στην αρχική τους σελίδα.

            +

            Αντίστροφη μέτρηση SideShift.ai!

            +

            Μόλις η αντίστροφη μέτρηση φθάσει στο μηδέν, χρειάζεται να ξεκινήσεις πάλι την συναλλαγή στο SideShift.ai πηγαίνοντας πίσω στο προηγούμενο βήμα και μετά επιστρέφοντας στην οθόνη \"Επιβεβαίωση\".

            ]]> Αποστολή BTC -

            XMR.TO

            -

            Το XMR.TO είναι τρίτος πάροχος που δρα σαν ανταλλακτήριο από Monero σε Bitcoin - Χρησιμοποιούμε το API του XMR.TO για να ενσωματώσουμε πληρωμές Bitcoin στο Monerujo. Παρακαλώ δες το - https://xmr.to και αποφάσισε για τον εαυτό σου εαν αυτό είναι κάτι που θες να χρησιμοποιήσεις. Η Ομάδα του - Monerujo δεν συνδέεται με το XMR.TO και δεν μπορεί να σε βοηθήσει με την υπηρεσία.

            -

            Ισοτιμία συναλλάγματος XMR.TO

            -

            Στην οθόνη \"Ποσό\" θα σου δωθούν οι τρέχουσες παράμετροι της υπηρεσίας XMR.TO. Αυτές +

            SideShift.ai

            +

            Το SideShift.ai είναι τρίτος πάροχος που δρα σαν ανταλλακτήριο από Monero σε Bitcoin. + Χρησιμοποιούμε το API του SideShift.ai για να ενσωματώσουμε πληρωμές Bitcoin στο Monerujo. Παρακαλώ δες το + https://sideshift.ai και αποφάσισε για τον εαυτό σου εαν αυτό είναι κάτι που θες να χρησιμοποιήσεις. Η Ομάδα του + Monerujo δεν συνδέεται με το SideShift.ai και δεν μπορεί να σε βοηθήσει με την υπηρεσία.

            +

            Ισοτιμία συναλλάγματος SideShift.ai

            +

            Στην οθόνη \"Ποσό\" θα σου δωθούν οι τρέχουσες παράμετροι της υπηρεσίας SideShift.ai. Αυτές περιλαμβάνουν την τρέχουσα ισοτιμία καθώς και τα μέγιστα και ελάχιστα όρια BTC. Σημειωτέον ότι αυτή η - ισοτιμία δεν εξασφαλίζεται σε αυτό το σημείο. Θα δεις επίσης το ποσό για το οποιό - η συναλλαγή BTC θα εκτελεσθέι άμεσα χωρίς αναμονή για επιβαιώσεις στο δίκτυο του - XMR (δες το FAQ του XMR.TO για περισσότερες λεπτομέρειες). Σημειωτέο, ότι το XMR.TO - δεν χρεώνει επιπλέον προμήθειες - πόσο πρώτο είναι αυτό;

            -

            Εντολή XMR.TO

            -

            Στην οθόνη \"Επιβεβαίωση\", θα δεις την πραγματική εντολή XMR.TO. Αυτή η εντολή ισχύει για + ισοτιμία δεν εξασφαλίζεται σε αυτό το σημείο.

            +

            Εντολή SideShift.ai

            +

            Στην οθόνη \"Επιβεβαίωση\", θα δεις την πραγματική εντολή SideShift.ai. Αυτή η εντολή ισχύει για περιορισμένο χρόνο - μπορεί να προσέξεις μια αντίστροφη μέτρηση στο κουμπί \"Ξόδεψε\". Η ισοτιμία μπορεί να είναι διαφορετική από την ενδεικτική που φαινόταν σε προηγούμενες οθόνες.

            -

            Μυστικό Κλειδί XMR.TO

            -

            Μιας και το Monerujo διαχειρίζεται μόνο την πλευρά του Monero της συναλλαγής το μυστικό κλειδί XMR.TO - μπορεί να χρησιμοποιηθεί για να εντοπίσει την συναλλαγή απο μεριάς Bitcoin στην XMR.TO εντολή σου στην αρχική τους σελίδα.

            -

            Σημειωτέο ότι, αυτό το μυστικό κλειδί θα ισχύει για 24 ώρες από όταν ξεκίνησες - την συναλλαγή!

            -

            Αντίστροφη μέτρηση XMR.TO!

            -

            Μόλις η αντίστροφη μέτρηση φθάσει στο μηδέν, χρειάζεται να ξεκινήσεις πάλι την συναλλαγή στο XMR.TO πηγαίνοντας +

            Μυστικό Κλειδί SideShift.ai

            +

            Μιας και το Monerujo διαχειρίζεται μόνο την πλευρά του Monero της συναλλαγής το μυστικό κλειδί SideShift.ai + μπορεί να χρησιμοποιηθεί για να εντοπίσει την συναλλαγή απο μεριάς Bitcoin στην SideShift.ai εντολή σου στην αρχική τους σελίδα.

            +

            Αντίστροφη μέτρηση SideShift.ai!

            +

            Μόλις η αντίστροφη μέτρηση φθάσει στο μηδέν, χρειάζεται να ξεκινήσεις πάλι την συναλλαγή στο SideShift.ai πηγαίνοντας πίσω στο προηγούμενο βήμα και μετά επιστρέφοντας στην οθόνη \"Επιβεβαίωση\".

            ]]>
            diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 871cc0af..675f8415 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -35,22 +35,22 @@ Έβαλες μια διεύθυνση bitcoin.
            - Θα στείλεις XMR και ο παραλήπτης θα πάρει BTC μέσο της υπηρεσίας XMR.TO. + Θα στείλεις XMR και ο παραλήπτης θα πάρει BTC μέσο της υπηρεσίας SideShift.ai. ]]>
            - Εντολή XMR.TO + Εντολή SideShift.ai %1$s BTC Επιβεβαίωση Εκκρεμεί Πληρωμή σε εκκρεμότητα - XMR.TO Σφάλμα (%1$s) + SideShift.ai Σφάλμα (%1$s) BTC Αποστάλθηκαν! Αίτηση … Μπορείς να στείλεις %1$s — %2$s BTC.
            - Το XMR.TO σου δίνει ισοτιμία ανταλλαγής %3$s BTC αυτή τη στιγμή. + Το SideShift.ai σου δίνει ισοτιμία ανταλλαγής %3$s BTC αυτή τη στιγμή. ]]>
            Ποσά μέχρι %1$s BTC θα σταλούν άμεσα! @@ -61,25 +61,25 @@ ✔ ID πληρωμής ενσωματωμένο Προετοιμασία της συναλλαγής σου - Δημιουργία εντολής με XMR.TO - Αίτηση εντολής στο XMR.TO + Δημιουργία εντολής με SideShift.ai + Αίτηση εντολής στο SideShift.ai Προετοιμασά συναλλαγής Monero - Αίτηση στο xmr.to για παραμέτρους + Αίτηση στο SideShift.ai για παραμέτρους - XMR.TO ΣΦΑΛΜΑ + SideShift.ai ΣΦΑΛΜΑ Κωδικός σφάλματος: %1$d Πάτησε για να προσπαθήσεις ξανά Τώρα έχουμε κολλήσει εδώ! - Ωχ,το XMR.TO φαίνεται να μην ειναι προσωρινά διαθέσιμο! + Ωχ,το SideShift.ai φαίνεται να μην ειναι προσωρινά διαθέσιμο! %1$s BTC = %2$s XMR (Rate: %1$s BTC/XMR) - Επίσκεψη στο xmr.to για υποστήριξη & με εντοπισμό συναλλαγής - Μυστικό Κλειδί\nXMR.TO - XMR.TO Μυστικό Κλειδί + Επίσκεψη στο SideShift.ai για υποστήριξη & με εντοπισμό συναλλαγής + Μυστικό Κλειδί\nSideShift.ai + SideShift.ai Μυστικό Κλειδί BTC Διεύθυνση Παραλήπτη Ποσό @@ -142,9 +142,9 @@ Κλειδί Προβολής(View Key) Δημόσια Διεύθυνση(Public Address) - Κλειδή XMR.TO + Κλειδή Το Κλειδί Προβολής αντιγράφηκε στο πρόχειρο! - Το Κλειδή XMR.TO αντιγράφηκε στο πρόχειρο! + Το Κλειδή αντιγράφηκε στο πρόχειρο! Η διύθυνση πορτοφολιού αντιγράφηκε στο πρόχειρο! Το ID συναλλαγής αντιγράφηκε στο πρόχειρο! Η αντιγραφή είναι απενεργοποιημένη για λόγους ασφαλείας! @@ -354,12 +354,9 @@ Automatically bookmarked best %1$d nodes Test - Resolving Payment URI… - Could not resolve Payment URI - Resolved Payment URI ✔ Receiver - XMR.TO offline - try again later + SideShift.ai offline - try again later BTC amount out of bounds Invalid or outdated Payment URL Too many requests @@ -387,7 +384,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -408,4 +405,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-eo/about.xml b/app/src/main/res/values-eo/about.xml index c70552a9..2742fef3 100644 --- a/app/src/main/res/values-eo/about.xml +++ b/app/src/main/res/values-eo/about.xml @@ -30,8 +30,8 @@ monerujo informpetos pri la kurzo per la publika interfaco de coinmarketcap.com. Vidu ilian privatecan politikon je https://coinmarketcap.com/privacy por detaloj pri kiel la datumo de viaj petoj kolektiĝos.

            -

            Se vi uzas la aplikaĵon por pagi al Bitmono-adresoj, vi uzos la XMR.TO-servon. - Vidu ilian privatecan politikon je https://xmr.to/ por detaloj. Monerujo sendos al ili la +

            Se vi uzas la aplikaĵon por pagi al Bitmono-adresoj, vi uzos la SideShift.ai-servon. + Vidu ilian privatecan politikon je https://sideshift.ai/ por detaloj. Monerujo sendos al ili la BTC-ricevontadreson kaj kvanton. Via IP-adreso ankaŭ kolekteblos.

            Permesoj de la aplikaĵo

              diff --git a/app/src/main/res/values-eo/help.xml b/app/src/main/res/values-eo/help.xml index b13f6e3e..9ed1f8da 100644 --- a/app/src/main/res/values-eo/help.xml +++ b/app/src/main/res/values-eo/help.xml @@ -180,66 +180,58 @@
              • iun OpenAlias por XMR aŭ BTC
              • bitmonan-adreson (BTC)
              • -
              • bitmonan pag-URI (inkluzive BIP70 kiel bitpay)
              -

              Paga ID

              -

              Vi povas uzi pagan IDon por identigi la kialon de la transakcio. Tio estas tute opcia kaj - privata. Ekzemple, tio ebligas komercon kunligi vian transakcion kun varo kiun vi aĉetis.

              + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai + for details). See the section on sending BTC below.

              Sendi BTC

              -

              XMR.TO

              -

              XMR.TO estas ekstera liveranto kiu agas kiel ŝanĝisto de Monero al Bitmono. Ni uzas la +

              SideShift.ai

              +

              SideShift.ai estas ekstera liveranto kiu agas kiel ŝanĝisto de Monero al Bitmono. Ni uzas la interfacon de XMR.TR por integrigi pagojn de bitmono en Monerujo. Bonvolu mem legi ĉe - https://xmr.to kaj decidu ĉu vi volas uzi tion. La Monerujo-teamo ne asocias kun XMR.TO kaj ne + https://sideshift.ai kaj decidu ĉu vi volas uzi tion. La Monerujo-teamo ne asocias kun SideShift.ai kaj ne kapablas helpi vin kun ilia servo.

              -

              Kurzo de XMR.TO

              -

              Sur la \"Kvanto\"-ekrano montriĝos la nunaj parametroj de la XMR.TO-servo. Ili inkludas la +

              Kurzo de SideShift.ai

              +

              Sur la \"Kvanto\"-ekrano montriĝos la nunaj parametroj de la SideShift.ai-servo. Ili inkludas la nunan XMR/BTC-kurzon, la superan limon kaj suban limon de la eblaj BTC-transakcioj. Bonvolu - noti ke tiu kurzo ĉiam ŝanĝiĝas. Vi ankaŭ vidos la limon ĝis kiu ĉiu BTC-transakcio pleniĝos - tuj, sen atendi XMR-konfirmojn (vidu la informpaĝon de XMR.TO por pliaj detaloj). Bonvolu noti - ke XMR.TO ne postulas pliajn honorariojn. Ĉu ne mojose?

              -

              Mendo al XMR.TO

              -

              Sur la \"konfirmi\"-ekrano, vi vidos la efektivan XMR.TO-mendon. Tiu mendo validas nur dum + noti ke tiu kurzo ĉiam ŝanĝiĝas.

              +

              Mendo al SideShift.ai

              +

              Sur la \"konfirmi\"-ekrano, vi vidos la efektivan SideShift.ai-mendon. Tiu mendo validas nur dum limigita tempo - vi certe ekvidos retrokalkulon sur la \"Spendi\"-butonon. La kurzo estos eble malsama ol tiu antaŭe montrita.

              -

              Sekreta ŝlosilo de XMR.TO

              +

              Sekreta ŝlosilo de SideShift.ai

              Ĉar Monerujo nur traktas la Monero-flankon de via transakcio, vi uzu la sekretan - XMR.TO-ŝlosilon por sekvi la Bitmono-parton de via mendo sur la hejmpaĝo de XMR.TO.

              -

              Bonvolu noti, ke tiu sekreta ŝlosilo validas nur 24 horoj post kiam via transakcio - komenciĝis!

              -

              La retrokalkulo de XMR.TO!

              -

              Kiam la retrokalkulo atingas nulon, vi devos akiri novan QUOTE de XMR.TO, reirante al la + SideShift.ai-ŝlosilon por sekvi la Bitmono-parton de via mendo sur la hejmpaĝo de SideShift.ai.

              +

              La retrokalkulo de SideShift.ai!

              +

              Kiam la retrokalkulo atingas nulon, vi devos akiri novan QUOTE de SideShift.ai, reirante al la antaŭa fazo kaj el tie repaŝi ĝis la \"Konfirmi\"-ekrano.

              ]]> Elspezi Bitmonon -

              XMR.TO

              -

              XMR.TO estas ekstera liveranto kiu aga kiel ŝanĝisto de Monero al Bitmono. Ni uzas la - interfacon de XMR.TR por integrigi pagojn de bitmono en Monerujo. Bonvolu mem legi ĉe - https://xmr.to kaj decidu ĉu vi volas uzi tion. La Monerujo-teamo ne asocias kun XMR.TO kaj ne - kapablas helpi vin kun ilia servo.

              -

              Kurzo de XMR.TO

              -

              Sur la \"Kvanto\"-ekrano montriĝos la nunaj parametroj de la XMR.TO-servo. Ili inkludas la - nunan XMR/BTC-kurzon, la superan limon kaj suban limon de la eblaj BTC-transakcioj. Bonvolu - noti ke tiu kurzo ĉiam ŝanĝiĝas. Vi ankaŭ vidos la limon ĝis kiu ĉiu BTC-transakcio pleniĝos - tuj, sen atendi XMR-konfirmojn (vidu la informpaĝon de XMR.TO por pliaj detaloj). Bonvolu noti - ke XMR.TO ne postulas pliajn honorariojn. Ĉu ne mojose?

              -

              Mendo al XMR.TO

              -

              Sur la \"konfirmi\"-ekrano, vi vidos la efektivan XMR.TO-mendon. Tiu mendo validas nur dum - limigita tempo - vi certe ekvidos retrokalkulon sur la \"Spendi\"-butonon. La kurzo estos - eble malsama de tiu antaŭe montrita.

              -

              Sekreta ŝlosilo de XMR.TO

              -

              Ĉar Monerujo nur traktas la Monero-parton de via transakcio, vi uzu la sekretan - XMR.TO-ŝlosilon por sekvi la Bitmono-flankon de via mendo sur la hejmpaĝo de XMR.TO.

              -

              Bonvolu noti, ke tiu sekreta ŝlosilo validas nur dum 24 horoj post kiam via transakcio - komenciĝis!

              -

              La retrokalkulo de XMR.TO!

              -

              Kiam la retrokalkulo atingas nulon, vi devos akiri novan kurzproponon de XMR.TO, reirante al la +

              SideShift.ai

              +

              SideShift.ai estas ekstera liveranto kiu agas kiel ŝanĝisto de Monero al Bitmono. Ni uzas la + interfacon de XMR.TR por integrigi pagojn de bitmono en Monerujo. Bonvolu mem legi ĉe + https://sideshift.ai kaj decidu ĉu vi volas uzi tion. La Monerujo-teamo ne asocias kun SideShift.ai kaj ne + kapablas helpi vin kun ilia servo.

              + +

              Kurzo de SideShift.ai

              +

              Sur la \"Kvanto\"-ekrano montriĝos la nunaj parametroj de la SideShift.ai-servo. Ili inkludas la + nunan XMR/BTC-kurzon, la superan limon kaj suban limon de la eblaj BTC-transakcioj. Bonvolu + noti ke tiu kurzo ĉiam ŝanĝiĝas.

              +

              Mendo al SideShift.ai

              +

              Sur la \"konfirmi\"-ekrano, vi vidos la efektivan SideShift.ai-mendon. Tiu mendo validas nur dum + limigita tempo - vi certe ekvidos retrokalkulon sur la \"Spendi\"-butonon. La kurzo estos + eble malsama ol tiu antaŭe montrita.

              + +

              Sekreta ŝlosilo de SideShift.ai

              +

              Ĉar Monerujo nur traktas la Monero-flankon de via transakcio, vi uzu la sekretan + SideShift.ai-ŝlosilon por sekvi la Bitmono-parton de via mendo sur la hejmpaĝo de SideShift.ai.

              +

              La retrokalkulo de SideShift.ai!

              +

              Kiam la retrokalkulo atingas nulon, vi devos akiri novan QUOTE de SideShift.ai, reirante al la antaŭa fazo kaj el tie repaŝi ĝis la \"Konfirmi\"-ekrano.

              ]]>
              diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index 8c064d24..6bafaf02 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -36,22 +36,22 @@ Vi entajpis Bitmono-adreson.
              - Vi sendos XMR-on, kaj per laXMR.to-servo, la ricevanto havos BTC-on. + Vi sendos XMR-on, kaj per laSideShift.ai-servo, la ricevanto havos BTC-on. ]]>
              - mendo al XMR.TO + mendo al SideShift.ai %1$s BTC Konfirmo okazonta Pago okazonta - XMR.TO eraro (%1$s) + SideShift.ai eraro (%1$s) BTC sendiĝis! Informpetante … Vi povas sendi %1$s — %2$s BTC.
              - XMR.TO proponas al vi tiun kurzon: %3$s BTC nun. + SideShift.ai proponas al vi tiun kurzon: %3$s BTC nun. ]]>
              Kvantoj ĝis %1$s BTC sendiĝos senatende! @@ -62,25 +62,25 @@ ✔ Paga-ID integriĝis Preparante vian transakcion - Kreante mendon al XMR.TO - Petante XMR.TO-mendon + Kreante mendon al SideShift.ai + Petante SideShift.ai-mendon Preparante la Monero-transakcion - Petante la XMR.TO-parametrojn + Petante la SideShift.ai-parametrojn - ERARO JE XMR.TO + ERARO JE SideShift.ai kodo: %1$d Tuŝu por reprovi Ni blokiĝis ĉi tie! - Uh-oh, ŝajne XMR.TO ne disponas momente! + Uh-oh, ŝajne SideShift.ai ne disponas momente! %1$s BTC = %2$s XMR (kurzo: %1$s BTC/XMR) - Vizitu xmr.to por helpo kaj sekvado - Sekreta ŝlosilo\nXMR.TO - XMR.TO sekreta ŝlosilo + Vizitu SideShift.ai por helpo kaj sekvado + Sekreta ŝlosilo\nSideShift.ai + SideShift.ai sekreta ŝlosilo Ricevanta BTC-adreso Kvanto @@ -153,9 +153,9 @@ Vida ŝlosilo Publika adreso - XMR.TO ŝlosilo + Ŝlosilo Vida ŝlosilo kopiiĝis en la tondujon! - XMR.TO ŝlosilo kopiiĝis en la tondujon! + Ŝlosilo kopiiĝis en la tondujon! La monujadreso kopiiĝis en la tondujon! La transakcia ID kopiiĝis en la tondujon! Por pli da sekureco, vi ne rajtas kopii tion! @@ -354,12 +354,9 @@ Aŭtomate memoris la %1$d plej bonajn nodojn Testo - Solvante la pagan URI… - Ne sukcesis solvi la pagan URI - Sukcesis solvi la pagan URI✔ Ricevanto - XMR.TO ne enretas - provu pli poste + SideShift.ai ne enretas - provu pli poste BTC-kvanto tro grandas La paga URL malvalidas aŭ ne ĝisdatiĝis Tro da mendoj @@ -387,7 +384,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -408,4 +405,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-es/help.xml b/app/src/main/res/values-es/help.xml index 6de85cc1..bb386f00 100644 --- a/app/src/main/res/values-es/help.xml +++ b/app/src/main/res/values-es/help.xml @@ -164,68 +164,53 @@
              • an OpenAlias for XMR or BTC
              • a BTC address
              • -
              • a bitcoin: URI (including BIP70 like bitpay)
              • - Please note, that sending BTC is processed through the XMR.TO service (see https://xmr.to + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai for details). See the section on sending BTC below.

                -

                ID de Pago

                - Al ser Monero ofuscado por naturaleza, puedes usar un ID de Pago para identificar un envío de Monero entre - dos partes. Esto es completamente opcional y privado. Por ejemplo, esto permitiría que un - negocio pueda asociar inequívocamente tu transacción con un producto que has comprado.

                Enviar BTC

                -

                XMR.TO

                -

                XMR.TO es un servicio de terceros que actúa como casa de cambio de Monero a Bitcoin. - Usamos la API de XMR.TO para integrar pagos de Bitcoin dentro de Monerujo. Por favor revisa - https://xmr.to y decide por ti mismo si es un servicio que quieres usar. El equipo de Monerujo - no está asociado con XMR.TO y no puede ayudarte con su servicio.

                -

                Tipo de cambio XMR.TO

                -

                En la pantalla de \"Monto\" se te mostrará las condiciones actuales del servicio XMR.TO. +

                SideShift.ai

                +

                SideShift.ai es un servicio de terceros que actúa como casa de cambio de Monero a Bitcoin. + Usamos la API de SideShift.ai para integrar pagos de Bitcoin dentro de Monerujo. Por favor revisa + https://sideshift.ai y decide por ti mismo si es un servicio que quieres usar. El equipo de Monerujo + no está asociado con SideShift.ai y no puede ayudarte con su servicio.

                +

                Tipo de cambio SideShift.ai

                +

                En la pantalla de \"Monto\" se te mostrará las condiciones actuales del servicio SideShift.ai. Estas incluyen el tipo de cambio del momento así como también los límites mínimo y máximo de BTC. - Toma nota de que el tipo de cambio aún no está garantizado en esa instancia. También verás el - monto tope hasta el cual la transacción será ejecutada instantáneamente sin esperar a - confirmaciones de XMR (revisa el FAQ de XMR.TO para más detalles). Por favor observa que - XMR.TO no cobra comisiones extra - increíble, verdad?

                -

                Orden XMR.TO

                -

                En la pantalla \"Confirmar\" verás la orden XMR.TO final. Esta orden es válida por un + Toma nota de que el tipo de cambio aún no está garantizado en esa instancia.

                +

                Orden SideShift.ai

                +

                En la pantalla \"Confirmar\" verás la orden SideShift.ai final. Esta orden es válida por un tiempo limitado - notarás una cuenta atrás en el botón de \"Gastar\". El tipo de cambio a esta altura puede ser distinto al aproximado que era mostrado en pantallas anteriores.

                -

                Clave secreta XMR.TO

                +

                Clave secreta SideShift.ai

                Dado que Monerujo sólo administra la parte en Monero de tu transacción, puedes usar tu - clave secreta XMR.TO para rastrear la parte en Bitcoin de tu orden en la página de XMR.TO.

                -

                Por favor ten en cuenta que esta clave secreta sólo es válida por 24 horas a partir de - iniciada la transacción!

                -

                Cuenta atrás XMR.TO!

                + clave secreta SideShift.ai para rastrear la parte en Bitcoin de tu orden en la página de SideShift.ai.

                +

                Cuenta atrás SideShift.ai!

                Una vez que la cuenta atrás alcanza el cero, necesitarás pedir una nueva cotización de - parte de XMR.TO, esto se logra dando un paso atrás y luego volviendo a la pantalla de + parte de SideShift.ai, esto se logra dando un paso atrás y luego volviendo a la pantalla de \"Confirmar\".

                ]]> Enviar BTC -

                XMR.TO

                -

                XMR.TO es un servicio de terceros que actúa como casa de cambio de Monero a Bitcoin. - Usamos la API de XMR.TO para integrar pagos de Bitcoin dentro de Monerujo. Por favor revisa - https://xmr.to y decide por ti mismo si es un servicio que quieres usar. El equipo de Monerujo - no está asociado con XMR.TO y no puede ayudarte con su servicio.

                -

                Tipo de cambio XMR.TO

                -

                En la pantalla de \"Monto\" se te mostrará las condiciones actuales del servicio XMR.TO. +

                SideShift.ai

                +

                SideShift.ai es un servicio de terceros que actúa como casa de cambio de Monero a Bitcoin. + Usamos la API de SideShift.ai para integrar pagos de Bitcoin dentro de Monerujo. Por favor revisa + https://sideshift.ai y decide por ti mismo si es un servicio que quieres usar. El equipo de Monerujo + no está asociado con SideShift.ai y no puede ayudarte con su servicio.

                +

                Tipo de cambio SideShift.ai

                +

                En la pantalla de \"Monto\" se te mostrará las condiciones actuales del servicio SideShift.ai. Estas incluyen el tipo de cambio del momento así como también los límites mínimo y máximo de BTC. - Toma nota de que el tipo de cambio aún no está garantizado en esa instancia. También verás el - monto tope hasta el cual la transacción será ejecutada instantáneamente sin esperar a - confirmaciones de XMR (revisa el FAQ de XMR.TO para más detalles). Por favor observa que - XMR.TO no cobra comisiones extra - increíble, verdad?

                -

                Orden XMR.TO

                -

                En la pantalla \"Confirmar\" verás la orden XMR.TO final. Esta orden es válida por un + Toma nota de que el tipo de cambio aún no está garantizado en esa instancia.

                +

                Orden SideShift.ai

                +

                En la pantalla \"Confirmar\" verás la orden SideShift.ai final. Esta orden es válida por un tiempo limitado - notarás una cuenta atrás en el botón de \"Gastar\". El tipo de cambio a esta altura puede ser distinto al aproximado que era mostrado en pantallas anteriores.

                -

                Clave secreta XMR.TO

                +

                Clave secreta SideShift.ai

                Dado que Monerujo sólo administra la parte en Monero de tu transacción, puedes usar tu - clave secreta XMR.TO para rastrear la parte en Bitcoin de tu orden en la página de XMR.TO.

                -

                Por favor ten en cuenta que esta clave secreta sólo es válida por 24 horas a partir de - iniciada la transacción!

                -

                Cuenta atrás XMR.TO!

                + clave secreta SideShift.ai para rastrear la parte en Bitcoin de tu orden en la página de SideShift.ai.

                +

                Cuenta atrás SideShift.ai!

                Una vez que la cuenta atrás alcanza el cero, necesitarás pedir una nueva cotización de - parte de XMR.TO, esto se logra dando un paso atrás y luego volviendo a la pantalla de + parte de SideShift.ai, esto se logra dando un paso atrás y luego volviendo a la pantalla de \"Confirmar\".

                ]]>
                diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index bb30b711..2b84f3d4 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -219,41 +219,41 @@ Restaurar monedero con semilla de 25 palabras Ingresaste una dirección Bitcoin
                - Vas a enviar XMR y el destinatario recibirá BTC usando el servicio XMR.TO. + Vas a enviar XMR y el destinatario recibirá BTC usando el servicio SideShift.ai. ]]>
                %1$s BTC Confirmación pendiente Pago pendiente - Error de XMR.TO (%1$s) + Error de SideShift.ai (%1$s) BTC Enviados! Consultando … Puedes enviar %1$s — %2$s BTC.
                - XMR.TO está ofreciendo una tasa de cambio de %3$s BTC en este momento. + SideShift.ai está ofreciendo una tasa de cambio de %3$s BTC en este momento. ]]>
                Montos hasta %1$s BTC serán enviados en el momento! ]]> Saldo: %2$s BTC (%1$s XMR) - Creando orden XMR.TO - Consultando orden XMR.TO + Creando orden SideShift.ai + Consultando orden SideShift.ai Preparando transacción Monero - Consultando parámetros XMR.TO - ERROR XMR.TO + Consultando parámetros SideShift.ai + ERROR SideShift.ai Código: %1$d Toca para reintentar Parece que estamos atascados! - Oh-oh, parece que XMR.TO no está disponible ahora! + Oh-oh, parece que SideShift.ai no está disponible ahora! %1$s BTC = %2$s XMR (Cambio: %1$s BTC/XMR) - Visita https://xmr.to para soporte y rastreo - Clave secreta\nXMR.TO - Clave secreta XMR.TO + Visita https://sideshift.ai para soporte y rastreo + Clave secreta\nSideShift.ai + Clave secreta SideShift.ai Dirección BTC destino Monto Oye, esperaste demasiado! - Clave XMR.TO - ¡Clave XMR.TO copiada al portapapeles! + Clave + ¡Clave copiada al portapapeles! Enviar mis preciados moneroj Gastar mis preciados moneroj (%1$s) No es una dirección válida @@ -264,7 +264,7 @@ Destino\n(BTC) Monto\n(BTC) Soy monerujo - Orden XMR.TO + Orden SideShift.ai Pago en BTC activado, toca para más info. Ledger activado, toca para más info. @@ -344,13 +344,10 @@ Mejores %1$d nodos marcados automáticamente Probar - Resolving Payment URI… - Could not resolve Payment URI - Resolved Payment URI ✔ Receptor - XMR.TO offline - try again later + SideShift.ai offline - try again later BTC amount out of bounds Invalid or outdated Payment URL Too many requests @@ -378,7 +375,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -399,4 +396,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-et/about.xml b/app/src/main/res/values-et/about.xml index 9efe4be8..78de89ec 100644 --- a/app/src/main/res/values-et/about.xml +++ b/app/src/main/res/values-et/about.xml @@ -33,8 +33,8 @@ https://coinmarketcap.com/privacy, et saada üksikasju, kuidas teie päringute kohta andmeid kogutakse.

                Kui kasutate äppi BTC-aadressitele raha saatmiseks, siis kasutatakse selleks - XMR.TO teenust. Lisateabe saamiseks vaadake nende privaatsuspoliitikat aadressil - https://xmr.to/. Monerujo saadab neile BTC sihtkoha aadressi ja summa. Koguda + SideShift.ai teenust. Lisateabe saamiseks vaadake nende privaatsuspoliitikat aadressil + https://sideshift.ai/. Monerujo saadab neile BTC sihtkoha aadressi ja summa. Koguda võidakse ka teie IP aadressi.

                Äpi õigused

                  diff --git a/app/src/main/res/values-et/help.xml b/app/src/main/res/values-et/help.xml index 6ea94e7e..69fd6518 100644 --- a/app/src/main/res/values-et/help.xml +++ b/app/src/main/res/values-et/help.xml @@ -159,78 +159,51 @@
                  • an OpenAlias for XMR or BTC
                  • a BTC address
                  • -
                  • a bitcoin: URI (including BIP70 like bitpay)
                  • - Please note, that sending BTC is processed through the XMR.TO service (see https://xmr.to + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai for details). See the section on sending BTC below.

                    -

                    Makse ID

                    -

                    You can use a Payment ID to identify the reason you sent Monero between two parties. This - is fully optional and private. For example it can allow a business to reconcile your - transaction with an item you bought.

                    -

                    Ring\'i suurus

                    -

                    There are a number of ring sizes to choose from in Monerujo. If you are a beginner user - we recommend you stick with a ring size of 7. Increasing the ring size above 7 increases - the amount of signers in a ring signature, theoretically providing increased plausible - deniability. However setting high ring sizes can also make your transaction stand out on - the blockchain.

                    -

                    Tähtsus

                    -

                    This setting determines the speed at which your transaction will be included in the - blockchain. A high priority setting will correlate directly with a higher transaction fee - and the inverse is true for a low priority. Please note that if you set your transaction to - a low priority it can be hours before it is included on the blockchain. The default priority - is \"Medium\".

                    Bitcoini (BTC) saatmine

                    -

                    XMR.TO

                    -

                    XMR.TO is a third party service which acts as an exchange from Monero to Bitcoin. - We use the XMR.TO API to integrate Bitcoin payments into Monerujo. Please check out - https://xmr.to and decide for yourself if this is something you want to use. The Monerujo - Team is not associated with XMR.TO and cannot help you with their service.

                    -

                    XMR.TO vahetuskurss

                    -

                    On the \"Amount\" screen you will be shown the current parameters of the XMR.TO service. These +

                    SideShift.ai

                    +

                    SideShift.ai is a third party service which acts as an exchange from Monero to Bitcoin. + We use the SideShift.ai API to integrate Bitcoin payments into Monerujo. Please check out + https://sideshift.ai and decide for yourself if this is something you want to use. The Monerujo + Team is not associated with SideShift.ai and cannot help you with their service.

                    +

                    SideShift.ai vahetuskurss

                    +

                    On the \"Amount\" screen you will be shown the current parameters of the SideShift.ai service. These include the current exchange rate as well as upper and lower BTC limits. Note that this - rate is not guaranteed at this point. You will also see - the amount up to which the BTC transaction will be executed instantly without waiting for - XMR confirmations (see the XMR.TO FAQ for more details). Please note, that XMR.TO does - not charge extra fees - how cool is that?

                    -

                    XMR.TO tellimus

                    -

                    On the \"Confirm\" screen, you will see the actual XMR.TO order. This order is valid for + rate is not guaranteed at this point.

                    +

                    SideShift.ai tellimus

                    +

                    On the \"Confirm\" screen, you will see the actual SideShift.ai order. This order is valid for a limited time - you may notice a countdown on the \"Spend\" button. The exchange rate may be different to the indicative one shown on previous screens.

                    -

                    XMR.TO privaatvõti

                    -

                    Since Monerujo only handles the Monero part of your transaction your XMR.TO secret key - can be used to track the Bitcoin part of your order on the XMR.TO homepage.

                    -

                    Please note, that this secret key is only valid for 24 hours after the transaction is - started!

                    -

                    XMR.TO loendur

                    -

                    Once the countdown reaches zero, you need to get a new quote from XMR.TO by going back to the +

                    SideShift.ai privaatvõti

                    +

                    Since Monerujo only handles the Monero part of your transaction your SideShift.ai secret key + can be used to track the Bitcoin part of your order on the SideShift.ai homepage.

                    +

                    SideShift.ai loendur

                    +

                    Once the countdown reaches zero, you need to get a new quote from SideShift.ai by going back to the previous step and then coming back to the \"Confirm\" screen.

                    ]]> Bitcoini (BTC) saatmine -

                    XMR.TO

                    -

                    XMR.TO is a third party service which acts as an exchange from Monero to Bitcoin. - We use the XMR.TO API to integrate Bitcoin payments into Monerujo. Please check out - https://xmr.to and decide for yourself if this is something you want to use. The Monerujo - Team is not associated with XMR.TO and cannot help you with their service.

                    -

                    XMR.TO vahetuskurss

                    -

                    On the \"Amount\" screen you will be shown the current parameters of the XMR.TO service. These +

                    SideShift.ai

                    +

                    SideShift.ai is a third party service which acts as an exchange from Monero to Bitcoin. + We use the SideShift.ai API to integrate Bitcoin payments into Monerujo. Please check out + https://sideshift.ai and decide for yourself if this is something you want to use. The Monerujo + Team is not associated with SideShift.ai and cannot help you with their service.

                    +

                    SideShift.ai vahetuskurss

                    +

                    On the \"Amount\" screen you will be shown the current parameters of the SideShift.ai service. These include the current exchange rate as well as upper and lower BTC limits. Note that this - rate is not guaranteed at this point. You will also see - the amount up to which the BTC transaction will be executed instantly without waiting for - XMR confirmations (see the XMR.TO FAQ for more details). Please note, that XMR.TO does - not charge extra fees - how cool is that?

                    -

                    XMR.TO tellimus

                    -

                    On the \"Confirm\" screen, you will see the actual XMR.TO order. This order is valid for + rate is not guaranteed at this point.

                    +

                    SideShift.ai tellimus

                    +

                    On the \"Confirm\" screen, you will see the actual SideShift.ai order. This order is valid for a limited time - you may notice a countdown on the \"Spend\" button. The exchange rate may be different to the indicative one shown on previous screens.

                    -

                    XMR.TO privaatvõti

                    -

                    Since Monerujo only handles the Monero part of your transaction your XMR.TO secret key - can be used to track the Bitcoin part of your order on the XMR.TO homepage.

                    -

                    Please note, that this secret key is only valid for 24 hours after the transaction is - started!

                    -

                    XMR.TO loendur

                    -

                    Once the countdown reaches zero, you need to get a new quote from XMR.TO by going back to the +

                    SideShift.ai privaatvõti

                    +

                    Since Monerujo only handles the Monero part of your transaction your SideShift.ai secret key + can be used to track the Bitcoin part of your order on the SideShift.ai homepage.

                    +

                    SideShift.ai loendur

                    +

                    Once the countdown reaches zero, you need to get a new quote from SideShift.ai by going back to the previous step and then coming back to the \"Confirm\" screen.

                    ]]>
                    diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 1cd2f8e7..8b10e14e 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -36,22 +36,22 @@ Sa sisestasid Bitcoini aadressi.
                    - See tähendab, et sa saadad Monerosid ning kohale jõuavad Bitcoinid kasutades XMR.TO teenust. + See tähendab, et sa saadad Monerosid ning kohale jõuavad Bitcoinid kasutades SideShift.ai teenust. ]]>
                    - XMR.TO tellimus + SideShift.ai tellimus %1$s BTC Ootan kinnitust Ootan makset - XMR.TO viga (%1$s) + SideShift.ai viga (%1$s) BTC saadetud! Küsin … Sa saad saata %1$s — %2$s BTC.
                    - XMR.TO annab hetkel vahetuskursiks %3$s BTC. + SideShift.ai annab hetkel vahetuskursiks %3$s BTC. ]]>
                    Kuni %1$s BTC saadetakse viivitamatult! @@ -62,25 +62,25 @@ ✔ Makse ID integreeritud Valmistan ülekannet ette - Loon XMR.TO tellimust - Küsin XMR.TO tellimust + Loon SideShift.ai tellimust + Küsin SideShift.ai tellimust Valmistan ette Monero ülekannet - Küsin XMR.TO parameetreid + Küsin SideShift.ai parameetreid - XMR.TO viga + SideShift.ai viga Kood: %1$d Puuduta uuesti proovimiseks Nüüd jõudsime küll tupikusse! - Oh ei, XMR.TO ei ole hetkel saadaval! + Oh ei, SideShift.ai ei ole hetkel saadaval! %1$s BTC = %2$s XMR (Kurss: %1$s BTC/XMR) - Külasta xmr.to lisainfo saamiseks & jälgin - Privaatvõti\nXMR.TO - XMR.TO privaatvõti + Külasta SideShift.ai lisainfo saamiseks & jälgin + Privaatvõti\nSideShift.ai + SideShift.ai privaatvõti Sihtkoha Bitcoini aadress Kogus @@ -151,9 +151,9 @@ Vaatamise võti Avalik aadress - XMR.TO võti + Võti Vaatamise võti on kopeeritud lõikepuhvrisse! - XMR.TO võti on kopeeritud lõikepuhvrisse! + Võti on kopeeritud lõikepuhvrisse! Rahakoti aadress on kopeeritud lõikepuhvrisse! Ülekande ID on kopeeritud lõikepuhvrisse! Lõikepuhvrisse kopeerimine on turvakaalutlustel keelatud! @@ -351,13 +351,10 @@ Tagavarakoopia õnnestus - Resolving Payment URI… - Could not resolve Payment URI - Resolved Payment URI ✔ Saaja - XMR.TO offline - try again later + SideShift.ai offline - try again later BTC amount out of bounds Invalid or outdated Payment URL Too many requests @@ -385,7 +382,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -406,4 +403,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-fr/about.xml b/app/src/main/res/values-fr/about.xml index f33f4767..78c82cb4 100644 --- a/app/src/main/res/values-fr/about.xml +++ b/app/src/main/res/values-fr/about.xml @@ -36,7 +36,7 @@ Consultez leur politique de confidentialité sur https://coinmarketcap.com/privacy pour des détails sur la façon dont les données de vos requêtes sont collectées.

                    Si vous utilisez l’application pour payer à une adresse BTC, vous utiliserez - le service XMR.TO. Consultez leur politique de confidentialité sur https://xmr.to/ + le service SideShift.ai. Consultez leur politique de confidentialité sur https://sideshift.ai/ pour plus de détails. Monerujo leur transmet l’adresse de destination BTC et le montant. Votre IP serait également collectable.

                    Permissions de l’application

                    diff --git a/app/src/main/res/values-fr/help.xml b/app/src/main/res/values-fr/help.xml index 4992c21d..ee0eb640 100644 --- a/app/src/main/res/values-fr/help.xml +++ b/app/src/main/res/values-fr/help.xml @@ -157,68 +157,54 @@
                    • une adresse OpenAlias pour XMR ou BTC
                    • une adresse BTC
                    • -
                    • une URI bitcoin: (incluant BIP70 comme bitpay)
                    • - Notez que l’envoi de BTC est traité à travers le service XMR.TO (voir https://xmr.to pour + Notez que l’envoi de BTC est traité à travers le service SideShift.ai (voir https://sideshift.ai pour plus de détails). Voir la rubrique sur l’envoi de BTC plus bas.

                      -

                      ID de Paiement

                      -

                      Vous pouvez utiliser un ID de paiement pour identifier la raison pour laquelle vous avez - envoyé des Moneroj entre deux parties. C’est totallement privé et optionnel. Il permet par - exemple à une société de faire concorder votre transaction avec un article que vous avez - acheté.

                      Envoyer des BTC

                      -

                      XMR.TO

                      -

                      XMR.TO est un service tierce-partie qui agit commme un change depuis Monero vers Bitcoin. - Nous utilisons l’API XMR.TO pour intégrer les paiements Bitcoin dans Monerujo. Veuillez - consulter https://xmr.to et décidez vous-même si vous souhaitez l’utiliser. L’équipe Monerujo - n’est pas affiliée à XMR.TO et ne peut pas vous aider concernant leurs services.

                      -

                      Taux de change XMR.TO

                      -

                      Sur l’écran \"Montant\" vous seront indiqué les paramètres actuels du serive XMR.TO. Cela +

                      SideShift.ai

                      +

                      SideShift.ai est un service tierce-partie qui agit commme un change depuis Monero vers Bitcoin. + Nous utilisons l’API SideShift.ai pour intégrer les paiements Bitcoin dans Monerujo. Veuillez + consulter https://sideshift.ai et décidez vous-même si vous souhaitez l’utiliser. L’équipe Monerujo + n’est pas affiliée à SideShift.ai et ne peut pas vous aider concernant leurs services.

                      +

                      Taux de change SideShift.ai

                      +

                      Sur l’écran \"Montant\" vous seront indiqué les paramètres actuels du serive SideShift.ai. Cela inclus le taux de change actuel, ainsi que les limites BTC hautes et basses. Notez que ce taux - n’est pas garantit à ce stade. Vous verrez également le montnt jusqu’auquel la transaction BTC - sera exécutée instantanément sans attendre de confirmation XMR (voir la FAQ XMR.TO pour plus de - détails). Veuillez noter que XMR.TO n’ajoute pas de frais additionnels - c’est pas cool ça ?

                      -

                      Ordre XMR.TO

                      -

                      Sur l’écran \"Confirmation\", vous verez l’ordre XMR.TO actuel. Cette ordre est valide pour + n’est pas garantit à ce stade.

                      +

                      Ordre SideShift.ai

                      +

                      Sur l’écran \"Confirmation\", vous verez l’ordre SideShift.ai actuel. Cette ordre est valide pour un temps limité - vous pouvez remarquer le compte à rebours sur le bouton \"Dépenser\". Ce taux de change peut être différent du taux indicatif de l’écran précédent.

                      -

                      Clef Secrète XMR.TO

                      +

                      Clef Secrète SideShift.ai

                      Comme Monerujo ne traite que le volet Monero de votre transaction, votre clef secrète - XMR.TO peut être utilisée pour suivre le volet Bitcoin de votre ordre sur la page d’accueil - de XMR.TO.

                      -

                      Veuillez noter que cette clef secrète est seulement valable 24h après le lancement de la - transaction !

                      -

                      Compte à Rebours XMR.TO !

                      + SideShift.ai peut être utilisée pour suivre le volet Bitcoin de votre ordre sur la page d’accueil + de SideShift.ai.

                      +

                      Compte à Rebours SideShift.ai !

                      Une fois que le compte à rebours atteint zéro, vous devrez obtenir un nouveau devis depuis - XMR.TO en retournant à l’étape précédente puis en revenant à l’écran \"Confirmation\".

                      + SideShift.ai en retournant à l’étape précédente puis en revenant à l’écran \"Confirmation\".

                      ]]> Envoyer des BTC -

                      XMR.TO

                      -

                      XMR.TO est un service tierce-partie qui agit commme un change depuis Monero vers Bitcoin. - Nous utilisons l’API XMR.TO pour intégrer les paiements Bitcoin dans Monerujo. Veuillez - consulter https://xmr.to et décidez vous-même si vous souhaitez l’utiliser. L’équipe Monerujo - n’est pas affiliée à XMR.TO et ne peut pas vous aider concernant leurs services.

                      -

                      Taux de change XMR.TO

                      -

                      Sur l’écran \"Montant\" vous seront indiqué les paramètres actuels du serive XMR.TO. Cela +

                      SideShift.ai

                      +

                      SideShift.ai est un service tierce-partie qui agit commme un change depuis Monero vers Bitcoin. + Nous utilisons l’API SideShift.ai pour intégrer les paiements Bitcoin dans Monerujo. Veuillez + consulter https://sideshift.ai et décidez vous-même si vous souhaitez l’utiliser. L’équipe Monerujo + n’est pas affiliée à SideShift.ai et ne peut pas vous aider concernant leurs services.

                      +

                      Taux de change SideShift.ai

                      +

                      Sur l’écran \"Montant\" vous seront indiqué les paramètres actuels du serive SideShift.ai. Cela inclus le taux de change actuel, ainsi que les limites BTC hautes et basses. Notez que ce taux - n’est pas garantit à ce stade. Vous verrez également le montnt jusqu’auquel la transaction BTC - sera exécutée instantanément sans attendre de confirmation XMR (voir la FAQ XMR.TO pour plus de - détails). Veuillez noter que XMR.TO n’ajoute pas de frais additionnels - c’est pas cool ça ?

                      -

                      Ordre XMR.TO

                      -

                      Sur l’écran \"Confirmation\", vous verez l’ordre XMR.TO actuel. Cette ordre est valide pour + n’est pas garantit à ce stade.

                      +

                      Ordre SideShift.ai

                      +

                      Sur l’écran \"Confirmation\", vous verez l’ordre SideShift.ai actuel. Cette ordre est valide pour un temps limité - vous pouvez remarquer le compte à rebours sur le bouton \"Dépenser\". Ce taux de change peut être différent du taux indicatif de l’écran précédent.

                      -

                      Clef Secrète XMR.TO

                      +

                      Clef Secrète SideShift.ai

                      Comme Monerujo ne traite que le volet Monero de votre transaction, votre clef secrète - XMR.TO peut être utilisée pour suivre le volet Bitcoin de votre ordre sur la page d’accueil - de XMR.TO.

                      -

                      Veuillez noter que cette clef secrète est seulement valable 24h après le lancement de la - transaction !

                      -

                      Compte à Rebours XMR.TO !

                      + SideShift.ai peut être utilisée pour suivre le volet Bitcoin de votre ordre sur la page d’accueil + de SideShift.ai.

                      +

                      Compte à Rebours SideShift.ai !

                      Une fois que le compte à rebours atteint zéro, vous devrez obtenir un nouveau devis depuis - XMR.TO en retournant à l’étape précédente puis en revenant à l’écran \"Confirmation\".

                      + SideShift.ai en retournant à l’étape précédente puis en revenant à l’écran \"Confirmation\".

                      ]]>
                      Vous avez entré une adresse Bitcoin.
                      - Vous envoyez des XMR et le destinataire recevra des BTC via le service XMR.TO. + Vous envoyez des XMR et le destinataire recevra des BTC via le service SideShift.ai. ]]>
                      - Ordres XMR.TO + Ordres SideShift.ai %1$s BTC En Attente de Confirmation En Attente de Paiement - Erreur XMR.TO (%1$s) + Erreur SideShift.ai (%1$s) BTC Envoyé ! Interrogation … Vous pouvez envoyer %1$s — %2$s BTC.
                      - XMR.TO vous donne un taux de change de %3$s BTC actuellement. + SideShift.ai vous donne un taux de change de %3$s BTC actuellement. ]]>
                      Les montant n\'excédant pas %1$s BTC seront envoyés immédiatement! @@ -63,25 +63,25 @@ ✔ ID de Paiement intégré Préparation de votre transaction - Création de l\'ordre XMR.TO - Interrogation de l\'ordre XMR.TO + Création de l\'ordre SideShift.ai + Interrogation de l\'ordre SideShift.ai Préparation de la Transaction Monero - Interrogation des paramètres xmr.to + Interrogation des paramètres SideShift.ai - ERREUR XMR.TO + ERREUR SideShift.ai Code : %1$d Touchez pour réessayer Maintenant on est coincé ici ! - Oh-oh, XMR.TO n\'a pas l\'air disponible pour le moment ! + Oh-oh, SideShift.ai n\'a pas l\'air disponible pour le moment ! %1$s BTC = %2$s XMR (Taux : %1$s BTC/XMR) - Visitez xmr.to pour l\'assistance & le suivi - Clef Secrète\nXMR.TO - Clef Secrète XMR.TO + Visitez SideShift.ai pour l\'assistance & le suivi + Clef Secrète\nSideShift.ai + Clef Secrète SideShift.ai Adresse BTC Destination Montant @@ -153,9 +153,9 @@ Clef d\'Audit Adresse Publique - Clef XMR.TO + Clef Clef d\'audit copiée ! - Clef XMR.TO copiée ! + Clef copiée ! Adresse du Portefeuille copiée ! ID de Transaction copié ! Copie désactivée par sécurité ! @@ -357,13 +357,10 @@ %1$d meilleurs nœuds mis en favoris automatiquement Tester - Résolution de l\'URI de Paiement… - Résolution de l\'URI de Paiement impossible - URI de Paiement Résolue ✔ Destinataire - XMR.TO hors ligne - réessayer ultérieurement + SideShift.ai hors ligne - réessayer ultérieurement Montant BTC hors limites URL de Paiement invalide ou périmée Trop de requêtes @@ -391,7 +388,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -412,4 +409,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-hu/about.xml b/app/src/main/res/values-hu/about.xml index 3f61f913..4720a2a0 100644 --- a/app/src/main/res/values-hu/about.xml +++ b/app/src/main/res/values-hu/about.xml @@ -34,8 +34,8 @@ nyilvános API-ján keresztül kéri le az árfolyamot. A kéréseid során történő adatgyűjtés módjával kapcsolatban tekintsd meg az adatvédelmi irányelveiket a https://coinmarketcap.com/privacy weboldalon.

                      -

                      Ha BTC-címekre való fizetésre használod az applikációt, akkor az XMR.TO szolgáltatását - használod. Részletes adatvédelmi irányelveiket a https://xmr.to/ weboldalon tekintheted meg. +

                      Ha BTC-címekre való fizetésre használod az applikációt, akkor az SideShift.ai szolgáltatását + használod. Részletes adatvédelmi irányelveiket a https://sideshift.ai/ weboldalon tekintheted meg. A monerujo számukra a kedvezményezett BTC-címet és a küldeni kívánt mennyiséget közli meg, ám az IP-címed is begyűjthető.

                      Applikációengedélyek

                      diff --git a/app/src/main/res/values-hu/help.xml b/app/src/main/res/values-hu/help.xml index 33aaacc1..94cc8e99 100644 --- a/app/src/main/res/values-hu/help.xml +++ b/app/src/main/res/values-hu/help.xml @@ -146,68 +146,53 @@
                      • an OpenAlias for XMR or BTC
                      • a BTC address
                      • -
                      • a bitcoin: URI (including BIP70 like bitpay)
                      • - Please note, that sending BTC is processed through the XMR.TO service (see https://xmr.to + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai for details). See the section on sending BTC below.

                        -

                        Fizetési azonosító

                        -

                        Fizetési azonosítót (payment ID) használhatsz arra a célra, hogy beazonosítsd, miért történt - tranzakció két fél között. Ez teljes mértékben opcionális és privát. A fizetési azonosító például - lehetővé teszi egy üzlet számára a tranzakciód és a megvásárolt tételed összeegyeztetését.

                        BTC-küldés

                        -

                        XMR.TO

                        -

                        Az XMR.TO egy harmadik féltől származó szolgáltatás, mely Moneróról Bitcoinra való átváltóként - viselkedik. Az XMR.TO API-ját használjuk a Bitcoinban való fizetés monerujóba való integrálásához. - Kérlek, látogass el a https://xmr.to weboldalra, és döntsd el magad, hogy szeretnéd-e használni. - A monerujo csapata nincsen kapcsolatban az XMR.TO-val és nem tudnak segítséget nyújtani a +

                        SideShift.ai

                        +

                        Az SideShift.ai egy harmadik féltől származó szolgáltatás, mely Moneróról Bitcoinra való átváltóként + viselkedik. Az SideShift.ai API-ját használjuk a Bitcoinban való fizetés monerujóba való integrálásához. + Kérlek, látogass el a https://sideshift.ai weboldalra, és döntsd el magad, hogy szeretnéd-e használni. + A monerujo csapata nincsen kapcsolatban az SideShift.ai-val és nem tudnak segítséget nyújtani a szolgáltatásaikkal kapcsolatban.

                        -

                        XMR.TO árfolyam

                        -

                        A Mennyiség oldalon kerülnek megjelenítésre az XMR.TO szolgáltatás paraméterei. Ez magában +

                        SideShift.ai árfolyam

                        +

                        A Mennyiség oldalon kerülnek megjelenítésre az SideShift.ai szolgáltatás paraméterei. Ez magában foglalja az aktuális árfolyamot, valamint a BTC alsó és felső határértékeit. Vedd figyelembe, - hogy ez az árfolyam ekkor még nem garantált. Megjelenítésre kerül az a mennyiség is, amely mellett - a BTC-tranzakció azonnal megvalósításra kerül XMR-megerősítések nélkül (részletekért olvad el az - XMR.TO oldalán a gyakran ismételt kérdéseket). Az XMR.TO nem számol fel extra költségeket - milyen - király már ez?

                        -

                        XMR.TO megrendelés

                        + hogy ez az árfolyam ekkor még nem garantált.

                        +

                        SideShift.ai megrendelés

                        A Megerősítés oldalon láthatod a tényleges megrendelést. A megrendelés korlátozott ideig érvényes - láthatod a visszaszámlálást a Küldés gombon. Az árfolyam különbözhet a korábbi képernyőkön látottaktól.

                        -

                        XMR.TO titkos kulcs

                        -

                        Mivel a monerujo csak a tranzakciód Monero részét kezeli, így az XMR.TO titkos kulcsod - használható a megrendelésed Bitcoin részének nyomonkövetésére az XMR.TO kezdőlapján.

                        -

                        Kérjük vedd figyelembe, hogy ez a titkos kulcs csak a tranzakció kezdetétől számított - 24 óráig érvényes!

                        -

                        XMR.TO visszaszámlálás!

                        -

                        Amint a visszaszámlálás eléri a nullát, új ajánlatot kell kérned az XMR.TO-tól azáltal, hogy +

                        SideShift.ai titkos kulcs

                        +

                        Mivel a monerujo csak a tranzakciód Monero részét kezeli, így az SideShift.ai titkos kulcsod + használható a megrendelésed Bitcoin részének nyomonkövetésére az SideShift.ai kezdőlapján.

                        +

                        SideShift.ai visszaszámlálás!

                        +

                        Amint a visszaszámlálás eléri a nullát, új ajánlatot kell kérned az SideShift.ai-tól azáltal, hogy visszamész az előző lépésre, majd visszajössz a Megerősítés oldalra.

                        ]]> BTC-küldés -

                        XMR.TO

                        -

                        Az XMR.TO egy harmadik féltől származó szolgáltatás, mely Moneróról Bitcoinra való átváltóként - viselkedik. Az XMR.TO API-ját használjuk a Bitcoinban való fizetés monerujóba való integrálásához. - Kérlek, látogass el a https://xmr.to weboldalra, és döntsd el magad, hogy szeretnéd-e használni. - A monerujo csapata nincsen kapcsolatban az XMR.TO-val és nem tudnak segítséget nyújtani a +

                        SideShift.ai

                        +

                        Az SideShift.ai egy harmadik féltől származó szolgáltatás, mely Moneróról Bitcoinra való átváltóként + viselkedik. Az SideShift.ai API-ját használjuk a Bitcoinban való fizetés monerujóba való integrálásához. + Kérlek, látogass el a https://sideshift.ai weboldalra, és döntsd el magad, hogy szeretnéd-e használni. + A monerujo csapata nincsen kapcsolatban az SideShift.ai-val és nem tudnak segítséget nyújtani a szolgáltatásaikkal kapcsolatban.

                        -

                        XMR.TO árfolyam

                        -

                        A Mennyiség oldalon kerülnek megjelenítésre az XMR.TO szolgáltatás paraméterei. Ez magában +

                        SideShift.ai árfolyam

                        +

                        A Mennyiség oldalon kerülnek megjelenítésre az SideShift.ai szolgáltatás paraméterei. Ez magában foglalja az aktuális árfolyamot, valamint a BTC alsó és felső határértékeit. Vedd figyelembe, - hogy ez az árfolyam ekkor még nem garantált. Megjelenítésre kerül az a mennyiség is, amely mellett - a BTC-tranzakció azonnal megvalósításra kerül XMR-megerősítések nélkül (részletekért olvad el az - XMR.TO oldalán a gyakran ismételt kérdéseket). Az XMR.TO nem számol fel extra költségeket - milyen - király már ez?

                        -

                        XMR.TO megrendelés

                        + hogy ez az árfolyam ekkor még nem garantált.

                        +

                        SideShift.ai megrendelés

                        A Megerősítés oldalon láthatod a tényleges megrendelést. A megrendelés korlátozott ideig érvényes - láthatod a visszaszámlálást a Küldés gombon. Az árfolyam különbözhet a korábbi képernyőkön látottaktól.

                        -

                        XMR.TO titkos kulcs

                        -

                        ivel a monerujo csak a tranzakciód Monero részét kezeli, így az XMR.TO titkos kulcsod - használható a megrendelésed Bitcoin részének nyomonkövetésére az XMR.TO kezdőlapján.

                        -

                        Kérjük vedd figyelembe, hogy ez a titkos kulcs csak a tranzakció kezdetétől számított - 24 óráig érvényes!

                        -

                        XMR.TO visszaszámlálás!

                        -

                        Amint a visszaszámlálás eléri a nullát, új ajánlatot kell kérned az XMR.TO-tól azáltal, hogy +

                        SideShift.ai titkos kulcs

                        +

                        Mivel a monerujo csak a tranzakciód Monero részét kezeli, így az SideShift.ai titkos kulcsod + használható a megrendelésed Bitcoin részének nyomonkövetésére az SideShift.ai kezdőlapján.

                        +

                        SideShift.ai visszaszámlálás!

                        +

                        Amint a visszaszámlálás eléri a nullát, új ajánlatot kell kérned az SideShift.ai-tól azáltal, hogy visszamész az előző lépésre, majd visszajössz a Megerősítés oldalra.

                        ]]>
                        diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index ab701993..5892dde8 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -36,22 +36,22 @@ Bitcoin-címet adtál meg.
                        - XMR-t fogsz küldeni, a fogadó pedig BTC-t fog kapni az XMR.TO szolgáltatásán keresztül. + XMR-t fogsz küldeni, a fogadó pedig BTC-t fog kapni az SideShift.ai szolgáltatásán keresztül. ]]>
                        - XMR.TO megrendelés + SideShift.ai megrendelés %1$s BTC Megerősítés folyamatban Kifizetés folyamatban - XMR.TO-hiba (%1$s) + SideShift.ai-hiba (%1$s) BTC elküldve! Lekérdezés… Elküldhetsz: %1$s — %2$s BTC.
                        - Az XMR.TO aktuális árfolyama: %3$s BTC. + Az SideShift.ai aktuális árfolyama: %3$s BTC. ]]>
                        A legfeljebb %1$s BTC nagyságú összegek azonnal elküldésre kerülnek! @@ -62,25 +62,25 @@ ✔ Fizetési azonosító integrálva Tranzakció előkészítése - XMR.TO megrendelés létrehozása - XMR.TO megrendelés lekérdezése + SideShift.ai megrendelés létrehozása + SideShift.ai megrendelés lekérdezése Monero-tranzakció előkészítése - XMR.TO paraméterek lekérdezése + SideShift.ai paraméterek lekérdezése - XMR.TO HIBA + SideShift.ai HIBA Kód: %1$d Koppints az újrapróbálkozáshoz Itt most elakadtunk! - Ajjaj! Úgy néz ki, az XMR.TO most nem elérhető! + Ajjaj! Úgy néz ki, az SideShift.ai most nem elérhető! %1$s BTC = %2$s XMR (Arány: %1$s BTC/XMR) - Segítségért és nyomonkövetésért látogass el az XMR.TO weboldalra - Titkos kulcs\nXMR.TO - XMR.TO titkos kulcs + Segítségért és nyomonkövetésért látogass el az SideShift.ai weboldalra + Titkos kulcs\nSideShift.ai + SideShift.ai titkos kulcs Kedvezményezett BTC-címe Mennyiség @@ -151,9 +151,9 @@ Figyelőkulcs Nyilvános cím - XMR.TO kulcs + Kulcs Figyelőkulcs vágólapra másolva! - XMR.TO kulcs vágólapra másolva! + Kulcs vágólapra másolva! Tárcacím vágólapra másolva! Tranzakcióazonosító vágólapra másolva! A másolás biztonsági okokból tiltásra került! @@ -356,12 +356,9 @@ Backup successful - Resolving Payment URI… - Could not resolve Payment URI - Resolved Payment URI ✔ Receiver - XMR.TO offline - try again later + SideShift.ai offline - try again later BTC amount out of bounds Invalid or outdated Payment URL Too many requests @@ -389,7 +386,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -410,4 +407,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-it/about.xml b/app/src/main/res/values-it/about.xml index 4f7db23c..63e3d31c 100644 --- a/app/src/main/res/values-it/about.xml +++ b/app/src/main/res/values-it/about.xml @@ -27,8 +27,8 @@

                        Altri dati personali non sono raccolti dall\'app.

                        Se usi la funzionalità (opzionale) del cambio, monerujo recupera il tasso di cambio attraverso le API pubbliche di coinmarketcap.com. Controlla la loro politica per la privacy (in lingua inglese) su https://coinmarketcap.com/privacy per conoscere i dettagli su come vengono raccolti i dati nelle tue richieste.

                        -

                        Se utilizzi l\'app per effettuare pagamenti ad indirizzi BTC, stai usando il servizio XMR.TO. - Controlla la loro politica per la privacy (in lingua inglese) su https://xmr.to/ per conoscere i dettagli. Monerujo invia a loro l\'indirizzo di destinazione BTC e l\'ammontare della transazione. Anche il tuo IP potrebbe essere raccolto.

                        +

                        Se utilizzi l\'app per effettuare pagamenti ad indirizzi BTC, stai usando il servizio SideShift.ai. + Controlla la loro politica per la privacy (in lingua inglese) su https://sideshift.ai/ per conoscere i dettagli. Monerujo invia a loro l\'indirizzo di destinazione BTC e l\'ammontare della transazione. Anche il tuo IP potrebbe essere raccolto.

                        Permessi app

                        • INTERNET : Connessione alla rete Monero attraverso un nodo
                        • diff --git a/app/src/main/res/values-it/help.xml b/app/src/main/res/values-it/help.xml index 9c5690fb..659114e6 100644 --- a/app/src/main/res/values-it/help.xml +++ b/app/src/main/res/values-it/help.xml @@ -152,61 +152,51 @@
                          • an OpenAlias for XMR or BTC
                          • a BTC address
                          • -
                          • a bitcoin: URI (including BIP70 like bitpay)
                          • - Please note, that sending BTC is processed through the XMR.TO service (see https://xmr.to + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai for details). See the section on sending BTC below.

                            -

                            ID Pagamento

                            -

                            Puoi usare un ID Pagamento per identificare la causale della transazione. Questa è un'informazione - opzionale e privata. Ad esempio può aiutare un venditore ad associare una transazione ricevuta ad un bene da te acquistato.

                            Inviare BTC

                            -

                            XMR.TO

                            -

                            XMR.TO è un servizio di terze parti che funziona come cambiavaluta da Monero a Bitcoin. - Utilizziamo le API XMR.TO per integrare pagamenti Bitcoin all'interno di Monerujo. Controlla https://xmr.to +

                            SideShift.ai

                            +

                            SideShift.ai è un servizio di terze parti che funziona come cambiavaluta da Monero a Bitcoin. + Utilizziamo le API SideShift.ai per integrare pagamenti Bitcoin all'interno di Monerujo. Controlla https://sideshift.ai e decidi tu stesso se questa è una funzionalità che vuoi usare. Il team Monerujo non è associato in alcun modo - con XMR.TO e non è in grado di aiutarti con il servizio da loro offerto.

                            -

                            Tasso di cambio XMR.TO

                            -

                            Sulla schermata \"Ammontare\" ti verranno mostrati i parametri attuali del servizio XMR.TO. Questi parametri + con SideShift.ai e non è in grado di aiutarti con il servizio da loro offerto.

                            +

                            Tasso di cambio SideShift.ai

                            +

                            Sulla schermata \"Ammontare\" ti verranno mostrati i parametri attuali del servizio SideShift.ai. Questi parametri includono il tasso di cambio attuale oltre ai limiti massimo e minimo di BTC. Considera che il tasso che ti viene mostrato - non è ancora garantito in questa fase. Vedrai inoltre l'ammontare fino al quale la transazione BTC verrà eseguita - istantaneamente senza attendere conferme XMR (vedi le FAQ XMR.TO per maggiori informazioni). Considera inoltre che il servizio - XMR.TO non aggiunge commissioni extra - bello vero?

                            -

                            Ordine XMR.TO

                            -

                            Sulla schermata \"Conferma\", troverai il vero ordine XMR.TO. Questo ordine è valido per un tempo limitato - potresti + non è ancora garantito in questa fase.

                            +

                            Ordine SideShift.ai

                            +

                            Sulla schermata \"Conferma\", troverai il vero ordine SideShift.ai. Questo ordine è valido per un tempo limitato - potresti notare un conto alla rovescia sul pulsante \"Spendi\". Il tasso di cambio potrebbe essere diverso da quello indicativo mostrato nelle schermate precedenti.

                            -

                            Chiave segreta XMR.TO

                            +

                            Chiave segreta SideShift.ai

                            Dal momento che Monerujo gestisce soltanto il versante Monero della tua transazione, può essere usata la chiave - segreta XMR.TO per tracciare il versante Bitcoin del tuo ordine sulla homepage XMR.TO.

                            -

                            Considera che questa chiave segreta è valida solamente per 24 ore dall'inizio della transazione!

                            -

                            Conto alla rovescia XMR.TO!

                            -

                            Non appena il conto alla rovescia arriva a zero, è necessario richiedere una nuova quotazione a XMR.TO tornando + segreta SideShift.ai per tracciare il versante Bitcoin del tuo ordine sulla homepage SideShift.ai.

                            +

                            Conto alla rovescia SideShift.ai!

                            +

                            Non appena il conto alla rovescia arriva a zero, è necessario richiedere una nuova quotazione a SideShift.ai tornando indietro al passo precedente e tornando poi di nuovo alla schermata \"Conferma\".

                            ]]> Inviare BTC -

                            XMR.TO

                            -

                            XMR.TO è un servizio di terze parti che funziona come cambiavaluta da Monero a Bitcoin. - Utilizziamo le API XMR.TO per integrare pagamenti Bitcoin all'interno di Monerujo. Controlla https://xmr.to e decidi - tu stesso se questa è una funzionalità che vuoi usare. Il team Monerujo non è associato in alcun modo con XMR.TO e - non è in grado di aiutarti con il servizio da loro offerto.

                            -

                            Tasso di cambio XMR.TO

                            -

                            Sulla schermata \"Ammontare\" ti verranno mostrati i parametri attuali del servizio XMR.TO. Questi parametri includono - il tasso di cambio attuale oltre ai limiti massimo e minimo di BTC. Considera che il tasso che ti viene mostrato non è ancora - garantito in questa fase. Vedrai inoltre l'ammontare fino al quale la transazione BTC verrà eseguita istantaneamente - senza attendere conferme XMR (vedi le FAQ XMR.TO per maggiori informazioni). Considera inoltre che il servizio XMR.TO non - aggiunge commissioni extra - bello vero?

                            -

                            XMR.TO Order

                            -

                            Sulla schermata \"Conferma\", troverai il vero ordine XMR.TO. Questo ordine è valido per un tempo limitato - - potresti notare un conto alla rovescia sul pulsante \"Spendi\". Il tasso di cambio potrebbe essere diverso da quello - indicativo mostrato nelle schermate precedenti.

                            -

                            Chiave segreta XMR.TO

                            +

                            SideShift.ai

                            +

                            SideShift.ai è un servizio di terze parti che funziona come cambiavaluta da Monero a Bitcoin. + Utilizziamo le API SideShift.ai per integrare pagamenti Bitcoin all'interno di Monerujo. Controlla https://sideshift.ai + e decidi tu stesso se questa è una funzionalità che vuoi usare. Il team Monerujo non è associato in alcun modo + con SideShift.ai e non è in grado di aiutarti con il servizio da loro offerto.

                            +

                            Tasso di cambio SideShift.ai

                            +

                            Sulla schermata \"Ammontare\" ti verranno mostrati i parametri attuali del servizio SideShift.ai. Questi parametri + includono il tasso di cambio attuale oltre ai limiti massimo e minimo di BTC. Considera che il tasso che ti viene mostrato + non è ancora garantito in questa fase.

                            +

                            Ordine SideShift.ai

                            +

                            Sulla schermata \"Conferma\", troverai il vero ordine SideShift.ai. Questo ordine è valido per un tempo limitato - potresti + notare un conto alla rovescia sul pulsante \"Spendi\". Il tasso di cambio potrebbe essere diverso da quello indicativo + mostrato nelle schermate precedenti.

                            +

                            Chiave segreta SideShift.ai

                            Dal momento che Monerujo gestisce soltanto il versante Monero della tua transazione, può essere usata la chiave - segreta XMR.TO per tracciare il versante Bitcoin del tuo ordine sulla homepage XMR.TO.

                            -

                            Considera che questa chiave segreta è valida solamente per 24 ore dall'inizio della transazione!

                            -

                            Conto alla rovescia XMR.TO!

                            -

                            Non appena il conto alla rovescia arriva a zero, è necessario richiedere una nuova quotazione a XMR.TO tornando + segreta SideShift.ai per tracciare il versante Bitcoin del tuo ordine sulla homepage SideShift.ai.

                            +

                            Conto alla rovescia SideShift.ai!

                            +

                            Non appena il conto alla rovescia arriva a zero, è necessario richiedere una nuova quotazione a SideShift.ai tornando indietro al passo precedente e tornando poi di nuovo alla schermata \"Conferma\".

                            ]]>
                            diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 576b1b40..b79b5003 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -36,23 +36,23 @@ Hai inserito un indirizzo Bitcoin.
                            - Invierai XMR e il destinatario riceverà BTC tramite il servizio XMR.TO. + Invierai XMR e il destinatario riceverà BTC tramite il servizio SideShift.ai. ]]>
                            - Ordine XMR.TO + Ordine SideShift.ai %1$s BTC In attesa di conferma In attesa del pagamento - Errore XMR.TO (%1$s) + Errore SideShift.ai (%1$s) BTC Inviati! Richiedendo … Puoi inviare %1$s — %2$s BTC.
                            - XMR.TO ti sta attualmente concedendo un tasso di cambio di %3$s BTC. + SideShift.ai ti sta attualmente concedendo un tasso di cambio di %3$s BTC. ]]>
                            Ammontare fino a %1$s BTC inviati istantaneamente! @@ -63,25 +63,25 @@ ✔ ID pagamento integrato Preparando la tua transazione - Creando l\'ordine XMR.TO - Richiedendo l\'ordine XMR.TO + Creando l\'ordine SideShift.ai + Richiedendo l\'ordine SideShift.ai Preparando la transazione Monero - Richiedendo i parametri XMR.TO + Richiedendo i parametri SideShift.ai - ERRORE XMR.TO + ERRORE SideShift.ai Codice: %1$d Tocca per riprovare Ora siamo bloccati qui!! - Oh Oh, XMR.TO sembra non essere disponibile in questo momento! + Oh Oh, SideShift.ai sembra non essere disponibile in questo momento! %1$s BTC = %2$s XMR (Tasso: %1$s BTC/XMR) - Visita xmr.to per supporto e tracciamento - Chiave segreta\nXMR.TO - Chiave segreta XMR.TO + Visita SideShift.ai per supporto e tracciamento + Chiave segreta\nSideShift.ai + Chiave segreta SideShift.ai Indirizzo BTC di destinazione Ammontare @@ -153,9 +153,9 @@ Chiave di visualizzazione Indirizzo pubblico - Chiave XMR.TO + Chiave Chiave di visualizzazione copiata negli appunti! - Chiave XMR.TO copiata negli appunti! + Chiave copiata negli appunti! Indirizzo del portafoglio copiato negli appunti! ID transazione copiato negli appunti! Copia disabilitata per ragioni di sicurezza! @@ -356,13 +356,10 @@ Aggiunti automaticamente ai segnalibri i %1$d nodi migliori Effettua Test - Risolvendo URI pagamento… - Impossibile risolvere pagamento URI - Risolto URI pagamento✔ Ricevente - XMR.TO è offline - prova più tardi + SideShift.ai è offline - prova più tardi Ammontare in BTC fuori dai limiti URL di pagamento obsoleto o invalido Troppe richieste @@ -390,7 +387,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -411,4 +408,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-ja/about.xml b/app/src/main/res/values-ja/about.xml index 30e50a75..3ecf7b6f 100644 --- a/app/src/main/res/values-ja/about.xml +++ b/app/src/main/res/values-ja/about.xml @@ -36,9 +36,9 @@ 詳細については、coinmarketcap.com のプライバシーポリシーを https://coinmarketcap.com/privacy にて参照してください。

                            もしあなたがこのアプリをビットコインアドレス宛に支払う場合、 - あなたは XMR.TO のサービスを使うことになります。 - https://xmr.to/ を参照して XMR.TO のプライバシーポリシーを - ご覧ください。Monerujoは XMR.TO にビットコインの支払先アドレスと + あなたは SideShift.ai のサービスを使うことになります。 + https://sideshift.ai/ を参照して SideShift.ai のプライバシーポリシーを + ご覧ください。Monerujoは SideShift.ai にビットコインの支払先アドレスと 数量を送信します。あなたのIPアドレスもまた収集されます。

                            アプリの権限

                              diff --git a/app/src/main/res/values-ja/help.xml b/app/src/main/res/values-ja/help.xml index 2f88073d..49a8034f 100644 --- a/app/src/main/res/values-ja/help.xml +++ b/app/src/main/res/values-ja/help.xml @@ -243,89 +243,70 @@
                              • XMRやBTCのOpenAlias
                              • BTCアドレス
                              • -
                              • bitcoin: URI (bitpayのようなBIP70もいい)
                              • - BTCの送信はXMR.TOサービス(https://xmr.to)を介して処理されることに注意してください。 + BTCの送信はSideShift.aiサービス(https://sideshift.ai)を介して処理されることに注意してください。 下記のBTCの送信に関するセクションを参照してください。

                                -

                                ペイメントID(Payment ID)

                                -

                                あなたは2者間でモネロを送金した理由を特定するために - ペイメントIDを使うことができます。 - これはオプションの機能であり、内容は秘匿化されます。 - 例えば、ペイメントIDを使うことで販売者が - トランザクションと商品を紐付けることができます。

                                BTCの送金

                                -

                                XMR.TO

                                -

                                XMR.TO はモネロからビットコインに換金する交換所として +

                                SideShift.ai

                                +

                                SideShift.ai はモネロからビットコインに換金する交換所として 機能するサードパーティ製のサービスです。私達は - XMR.TO のAPIを使うことでビットコインの支払い機能を + SideShift.ai のAPIを使うことでビットコインの支払い機能を Monerujoに組み込んでいます。 - https://xmr.to を確認して、これがあなたが使いたい + https://sideshift.ai を確認して、これがあなたが使いたい 機能であるかどうかをご自身で判断してください。 - Monerujoの開発チームは XMR.TO とは無関係であり、 - XMR.TOのサービスに関してあなたをサポートすることはできません。

                                -

                                XMR.TO の交換レート

                                -

                                「数量」(Amount)の画面では XMR.TO の現在の + Monerujoの開発チームは SideShift.ai とは無関係であり、 + SideShift.aiのサービスに関してあなたをサポートすることはできません。

                                +

                                SideShift.ai の交換レート

                                +

                                「数量」(Amount)の画面では SideShift.ai の現在の パラメータが表示されます。これらは現在の交換レートに加えて 送金可能なBTCの上限・下限を含みます。この交換レートは - 現時点では保証されたものではないことに注意してください。 - また、XMRの送金が承認されるのを待つことなく - 直ちにビットコインと交換できる数量も表示されるでしょう - (詳細は XMR.TO のFAQをご覧ください)。また、XMR.TO は - 余分な手数料を取ることはしません。かっこいいと思いませんか?

                                -

                                XMR.TO の注文

                                -

                                「確認」(Confirm)の画面で、あなたは実際の XMR.TO + 現時点では保証されたものではないことに注意してください。

                                +

                                SideShift.ai の注文

                                +

                                「確認」(Confirm)の画面で、あなたは実際の SideShift.ai の注文を見ることになります。この注文は制限時間内でのみ有効です。 あなたは送金(Spend)ボタンにカウントダウンが 表示されていることに気づくかもしれません。 交換レートは前の画面で表示されたものとは異なる可能性が有ります。

                                -

                                XMR.TO のシークレットキー

                                +

                                SideShift.ai のシークレットキー

                                Monerujo はBTCとXMRのうち、XMRの方だけを取り扱います。 - XMR.TO のシークレットキーは、 XMR.TO のホームページにて + SideShift.ai のシークレットキーは、 SideShift.ai のホームページにて BTCの方の注文を追跡するのに使用できます。

                                -

                                このシークレットキーは取引が始まってから - 24時間のみ有効であることに注意してください!

                                -

                                XMR.TO カウントダウン!

                                +

                                SideShift.ai カウントダウン!

                                一旦カウントダウンがゼロに到達すると、 あなたは一度前のステップに戻って「確認」(Confirm)の画面に戻って、 - もう一度 XMR.TO から新しい見積もりを取得する必要があります。

                                + もう一度 SideShift.ai から新しい見積もりを取得する必要があります。

                                ]]> BTCの送金 -

                                XMR.TO

                                -

                                XMR.TO はモネロからビットコインに換金する交換所として +

                                SideShift.ai

                                +

                                SideShift.ai はモネロからビットコインに換金する交換所として 機能するサードパーティ製のサービスです。私達は - XMR.TO のAPIを使うことでビットコインの支払い機能を + SideShift.ai のAPIを使うことでビットコインの支払い機能を Monerujoに組み込んでいます。 - https://xmr.to を確認して、これがあなたが使いたい + https://sideshift.ai を確認して、これがあなたが使いたい 機能であるかどうかをご自身で判断してください。 - Monerujoの開発チームは XMR.TO とは無関係であり、 - XMR.TOのサービスに関してあなたをサポートすることはできません。

                                -

                                XMR.TO の交換レート

                                -

                                「数量」(Amount)の画面では XMR.TO の現在の + Monerujoの開発チームは SideShift.ai とは無関係であり、 + SideShift.aiのサービスに関してあなたをサポートすることはできません。

                                +

                                SideShift.ai の交換レート

                                +

                                「数量」(Amount)の画面では SideShift.ai の現在の パラメータが表示されます。これらは現在の交換レートに加えて 送金可能なBTCの上限・下限を含みます。この交換レートは - 現時点では保証されたものではないことに注意してください。 - また、XMRの送金が承認されるのを待つことなく - 直ちにビットコインと交換できる数量も表示されるでしょう - (詳細は XMR.TO のFAQをご覧ください)。また、XMR.TO は - 余分な手数料を取ることはしません。かっこいいと思いませんか?

                                -

                                XMR.TO の注文

                                -

                                「確認」(Confirm)の画面で、あなたは実際の XMR.TO + 現時点では保証されたものではないことに注意してください。

                                +

                                SideShift.ai の注文

                                +

                                「確認」(Confirm)の画面で、あなたは実際の SideShift.ai の注文を見ることになります。この注文は制限時間内でのみ有効です。 あなたは送金(Spend)ボタンにカウントダウンが 表示されていることに気づくかもしれません。 交換レートは前の画面で表示されたものとは異なる可能性が有ります。

                                -

                                XMR.TO のシークレットキー

                                +

                                SideShift.ai のシークレットキー

                                Monerujo はBTCとXMRのうち、XMRの方だけを取り扱います。 - XMR.TO のシークレットキーは、 XMR.TO のホームページにて + SideShift.ai のシークレットキーは、 SideShift.ai のホームページにて BTCの方の注文を追跡するのに使用できます。

                                -

                                このシークレットキーは取引が始まってから - 24時間のみ有効であることに注意してください!

                                -

                                XMR.TO カウントダウン!

                                +

                                SideShift.ai カウントダウン!

                                一旦カウントダウンがゼロに到達すると、 あなたは一度前のステップに戻って「確認」(Confirm)の画面に戻って、 - もう一度 XMR.TO から新しい見積もりを取得する必要があります。

                                + もう一度 SideShift.ai から新しい見積もりを取得する必要があります。

                                ]]>
                                - monerujo ウォレット Monerujoについて @@ -37,22 +36,22 @@ あなたが入力したのはビットコインのアドレスです。
                                - あなたはXMRを送金し、受け手は XMR.TO のサービスを利用してBTCを受取ります。 + あなたはXMRを送金し、受け手は SideShift.ai のサービスを利用してBTCを受取ります。 ]]>
                                - XMR.TO の注文 + SideShift.ai の注文 %1$s BTC 承認を待っています 支払いを待っています - XMR.TO のエラー (%1$s) + SideShift.ai のエラー (%1$s) BTCが送金されました! 問い合わせ中 … %1$s から %2$s BTC を送金することができます。
                                - XMR.TO での交換レートは現在%3$s BTCです。 + SideShift.ai での交換レートは現在%3$s BTCです。 ]]>
                                %1$s BTC までの数量は 即時に送金可能です! @@ -63,25 +62,25 @@ ✔ ペイメントID組み込み済み 取引を準備しています - XMR.TO の注文を作成しています - XMR.TO の注文を問い合わせています + SideShift.ai の注文を作成しています + SideShift.ai の注文を問い合わせています モネロの取引を準備しています - XMR.TO のパラメータを問い合わせています + SideShift.ai のパラメータを問い合わせています - XMR.TO のエラー + SideShift.ai のエラー コード: %1$d タッチして再試行 私達はここで立ち往生のようです! - あーあ、 XMR.TO は現在利用不能のようです! + あーあ、 SideShift.ai は現在利用不能のようです! %1$s BTC = %2$s XMR (レート: %1$s BTC/XMR) - サポートと追跡については xmr.to をご覧ください - シークレットキー\nXMR.TO - XMR.TO のシークレットキー + サポートと追跡については SideShift.ai をご覧ください + シークレットキー\nSideShift.ai + SideShift.ai のシークレットキー 支払先の BTC アドレス 数量 @@ -155,9 +154,9 @@ 表示用キー 公開アドレス - XMR.TO キー + キー 表示用キーがクリップボードにコピーされました! - XMR.TO キーがクリップボードにコピーされました! + キーがクリップボードにコピーされました! ウォレットアドレスがクリップボードにコピーされました! 取引IDがクリップボードにコピーされました! セキュリティ上の理由でコピーは無効化されています! @@ -288,9 +287,6 @@ 秘密鍵からウォレットを復元 25単語のシードからウォレットを復元 - %1$s XMR - (%1$d, %2$d) - アカウントを作成 新しいアカウントを追加 #%1$d アカウント # @@ -326,8 +322,6 @@ あなたが何をしたいのかわかりません! NFCが利用可能です! - \?\?\? - シークレットを見せてください! ストリートモード @@ -362,13 +356,10 @@ バックアップ成功 - ペイメントIDの名前解決中… - ペイメントIDの名前解決できませんでした - ペイメントIDの名前解決しました ✔ 受け取り手 - XMR.TOはオフラインです。もう一度お試しください + SideShift.aiはオフラインです。もう一度お試しください BTCの金額は範囲外 ペイメントURLは不正古いです リクエストは多すぎます @@ -396,7 +387,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -417,4 +408,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again
                                diff --git a/app/src/main/res/values-nb/about.xml b/app/src/main/res/values-nb/about.xml index 57c85e3f..d4e480d2 100644 --- a/app/src/main/res/values-nb/about.xml +++ b/app/src/main/res/values-nb/about.xml @@ -34,8 +34,8 @@ rate through the public API of coinmarketcap.com. See their privacy policy at https://coinmarketcap.com/privacy for details on how data in your requests is collected.

                                -

                                If you use the app to pay to BTC addresses, you will be using the XMR.TO service. - See their privacy policy at https://xmr.to/ for details. Monerujo send them the BTC +

                                If you use the app to pay to BTC addresses, you will be using the SideShift.ai service. + See their privacy policy at https://sideshift.ai/ for details. Monerujo send them the BTC destination address and amount. Your IP will also be collectable.

                                App Permissions

                                  diff --git a/app/src/main/res/values-nb/help.xml b/app/src/main/res/values-nb/help.xml index 3fa5e4a4..c02afe55 100644 --- a/app/src/main/res/values-nb/help.xml +++ b/app/src/main/res/values-nb/help.xml @@ -147,66 +147,51 @@
                                  • an OpenAlias for XMR or BTC
                                  • a BTC address
                                  • -
                                  • a bitcoin: URI (including BIP70 like bitpay)
                                  • - Please note, that sending BTC is processed through the XMR.TO service (see https://xmr.to + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai for details). See the section on sending BTC below.

                                    -

                                    Betalings-ID

                                    -

                                    Du kan bruke betalings-ID til å identifisere hvorfor du sendte Monero mellom to parter. Dette er - helt frivillig og privat. For eksempel lar det en bedrift tilknytte transaksjonen din med - en vare du har kjøpt.

                                    Å sende BTC

                                    -

                                    XMR.TO

                                    -

                                    XMR.TO er en tredjepartstjeneste som lar deg veksle Monero til Bitcoin. - Vi bruker XMR.TO-APIen til å integrere BTC-betalinger i Monerujo. Sjekk ut - https://xmr.to og bestem for deg selv om dette er noe du vil bruke. Monerujo-utviklerne - er ikke assosierte med XMR.TO og kan ikke hjelpe deg med deres tjeneste.

                                    -

                                    XMR.TO vekslingskurs

                                    -

                                    På \"Mengde\" skjermen vil du bli vist de nåværende parametrene til XMR.TO-tjenesten. Disse +

                                    SideShift.ai

                                    +

                                    SideShift.ai er en tredjepartstjeneste som lar deg veksle Monero til Bitcoin. + Vi bruker SideShift.ai-APIen til å integrere BTC-betalinger i Monerujo. Sjekk ut + https://sideshift.ai og bestem for deg selv om dette er noe du vil bruke. Monerujo-utviklerne + er ikke assosierte med SideShift.ai og kan ikke hjelpe deg med deres tjeneste.

                                    +

                                    SideShift.ai vekslingskurs

                                    +

                                    På \"Mengde\" skjermen vil du bli vist de nåværende parametrene til SideShift.ai-tjenesten. Disse inkluderer den nåværende vekslingskursen så vel som nedre og øvre BTC-grenser. Vær oppmerksom på at - kursen ikke er garantert på dette punktet. Du vil også se - den øvre grensa for at BTC-transaksjonen skal gå igjennom uten å vente på - XMR-bekreftelser (se XMR.TO-FAQen for fler detaljer). Legg merke til at XMR.TO - ikke har noen ekstra avgifter - hvor kult er ikke det?

                                    -

                                    XMR.TO ordre

                                    -

                                    På \"Bekreft\" skjermen, vil du se den faktiske XMR.TO ordren. Denne ordren er gyldig for + kursen ikke er garantert på dette punktet.

                                    +

                                    SideShift.ai ordre

                                    +

                                    På \"Bekreft\" skjermen, vil du se den faktiske SideShift.ai ordren. Denne ordren er gyldig for en begrensa tid - du legger kanskje til en nedtelling på \"Bruk\" knappen. Veklingskursen kan være enn den veiledende kursen vist på de tidligere skjermene.

                                    -

                                    XMR.TO hemmelig nøkkel

                                    -

                                    Fordi Monerujo bare håndterer XMR delen av transaksjonen din, kan din XMR.TO hemmelige nøkkel - bli brukt til å spore BTC-transaksjonen på XMR.TO sine hjemmesider.

                                    -

                                    Vær oppmerksom på at denne nøkkelen kun er tilgjengelig for 24-timer etter transaksjonen - har blitt utført!

                                    -

                                    XMR.TO nedtelling!

                                    -

                                    Når nedtellinga når null, må du få en ny kvote fra XMR.TO ved å gå tilbake til +

                                    SideShift.ai hemmelig nøkkel

                                    +

                                    Fordi Monerujo bare håndterer XMR delen av transaksjonen din, kan din SideShift.ai hemmelige nøkkel + bli brukt til å spore BTC-transaksjonen på SideShift.ai sine hjemmesider.

                                    +

                                    SideShift.ai nedtelling!

                                    +

                                    Når nedtellinga når null, må du få en ny kvote fra SideShift.ai ved å gå tilbake til det tidligere steget og komme tilbake til \"Bekreft\" skjermen.

                                    ]]> Å sende BTC -

                                    XMR.TO

                                    -

                                    XMR.TO er en tredjepartstjeneste som lar deg veksle Monero til Bitcoin. - Vi bruker XMR.TO-APIen til å integrere BTC-betalinger i Monerujo. Sjekk ut - https://xmr.to og bestem for deg selv om dette er noe du vil bruke. Monerujo-utviklerne - er ikke assosierte med XMR.TO og kan ikke hjelpe deg med deres tjeneste.

                                    -

                                    XMR.TO vekslingskurs

                                    -

                                    På \"Mengde\" skjermen vil du bli vist de nåværende parametrene til XMR.TO-tjenesten. Disse +

                                    SideShift.ai

                                    +

                                    SideShift.ai er en tredjepartstjeneste som lar deg veksle Monero til Bitcoin. + Vi bruker SideShift.ai-APIen til å integrere BTC-betalinger i Monerujo. Sjekk ut + https://sideshift.ai og bestem for deg selv om dette er noe du vil bruke. Monerujo-utviklerne + er ikke assosierte med SideShift.ai og kan ikke hjelpe deg med deres tjeneste.

                                    +

                                    SideShift.ai vekslingskurs

                                    +

                                    På \"Mengde\" skjermen vil du bli vist de nåværende parametrene til SideShift.ai-tjenesten. Disse inkluderer den nåværende vekslingskursen så vel som nedre og øvre BTC-grenser. Vær oppmerksom på at - kursen ikke er garantert på dette punktet. Du vil også se - den øvre grensa for at BTC-transaksjonen skal gå igjennom uten å vente på - XMR-bekreftelser (se XMR.TO-FAQen for fler detaljer). Legg merke til at XMR.TO - ikke har noen ekstra avgifter - hvor kult er ikke det?

                                    -

                                    XMR.TO ordre

                                    -

                                    På \"Bekreft\" skjermen, vil du se den faktiske XMR.TO ordren. Denne ordren er gyldig for + kursen ikke er garantert på dette punktet.

                                    +

                                    SideShift.ai ordre

                                    +

                                    På \"Bekreft\" skjermen, vil du se den faktiske SideShift.ai ordren. Denne ordren er gyldig for en begrensa tid - du legger kanskje til en nedtelling på \"Bruk\" knappen. Veklingskursen kan være enn den veiledende kursen vist på de tidligere skjermene.

                                    -

                                    XMR.TO hemmelig nøkkel

                                    -

                                    Fordi Monerujo bare håndterer XMR delen av transaksjonen din, kan din XMR.TO hemmelige nøkkel - bli brukt til å spore BTC-transaksjonen på XMR.TO sine hjemmesider.

                                    -

                                    Vær oppmerksom på at denne nøkkelen kun er tilgjengelig for 24-timer etter transaksjonen - har blitt utført!

                                    -

                                    XMR.TO nedtelling!

                                    -

                                    Når nedtellinga når null, må du få en ny kvote fra XMR.TO ved å gå tilbake til +

                                    SideShift.ai hemmelig nøkkel

                                    +

                                    Fordi Monerujo bare håndterer XMR delen av transaksjonen din, kan din SideShift.ai hemmelige nøkkel + bli brukt til å spore BTC-transaksjonen på SideShift.ai sine hjemmesider.

                                    +

                                    SideShift.ai nedtelling!

                                    +

                                    Når nedtellinga når null, må du få en ny kvote fra SideShift.ai ved å gå tilbake til det tidligere steget og komme tilbake til \"Bekreft\" skjermen.

                                    ]]>
                                    diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 50739f6e..73deac15 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -36,21 +36,21 @@ Du skrev inn en Bitcoin addresse.
                                    - Du vil sende XMR og mottakeren vil få BTC gjennom XMR.TO tjenesten. + Du vil sende XMR og mottakeren vil få BTC gjennom SideShift.ai tjenesten. ]]>
                                    - XMR.TO Ordre + SideShift.ai Ordre %1$s BTC Bekreftelse venter Betaling venter - XMR.TO error (%1$s) + SideShift.ai error (%1$s) BTC sendt! Spør … Du kan sende %1$s — %2$s BTC.
                                    - XMR.TO gir deg en vekslingskurs på %3$s BTC akkurat nå. + SideShift.ai gir deg en vekslingskurs på %3$s BTC akkurat nå. ]]>
                                    Mengder opp til %1$s BTC vil bli sendt umiddelbart! @@ -61,25 +61,25 @@ ✔ Betalings ID integrert Forbereder din transaksjon - Lager XMR.TO ordre - Spør etter XMR.TO ordre + Lager SideShift.ai ordre + Spør etter SideShift.ai ordre Forbereder Monero transaksjon - Spør etter xmr.to parametre + Spør etter SideShift.ai parametre - XMR.TO ERROR + SideShift.ai ERROR Kode: %1$d Trykk for å prøve igjen Nå sitter vi fast her! - Ops, det ser ikke ut til at XMR.TO er tilgjengelig for øyeblikket! + Ops, det ser ikke ut til at SideShift.ai er tilgjengelig for øyeblikket! %1$s BTC = %2$s XMR (Rate: %1$s BTC/XMR) - Besøk xmr.to for støtte og sporing - Hemmelig nøkkel\nXMR.TO - XMR.TO Hemmelig nøkkel + Besøk SideShift.ai for støtte og sporing + Hemmelig nøkkel\nSideShift.ai + SideShift.ai Hemmelig nøkkel BTC destinasjonsadresse Mengde @@ -151,9 +151,9 @@ View-nøkkel Offentlig adresse - XMR.TO nøkkel + Nøkkel View-nøkkel kopiert til utklippstavle! - XMR.TO-nøkkel kopiert til utklippstavle! + Nøkkel kopiert til utklippstavle! Lommebokadresse kopiert til utklippstavle! Transaksjons-ID kopiert til utklippstavle! Kopiering skrudd av for sikkerhetsgrunner! @@ -354,12 +354,9 @@ Automatically bookmarked best %1$d nodes Test - Resolving Payment URI… - Could not resolve Payment URI - Resolved Payment URI ✔ Receiver - XMR.TO offline - try again later + SideShift.ai offline - try again later BTC amount out of bounds Invalid or outdated Payment URL Too many requests @@ -387,7 +384,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -408,4 +405,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-nl/about.xml b/app/src/main/res/values-nl/about.xml index d3bd0267..6697d6a4 100644 --- a/app/src/main/res/values-nl/about.xml +++ b/app/src/main/res/values-nl/about.xml @@ -27,8 +27,8 @@

                                    Verder worden er geen persoonlijke gegevens verzameld door de app.

                                    Als je de optionele wisselkoersfunctie gebruikt, haalt monerujo de wisselkoers op via de openbare API van coinmarketcap.com. Zie het privacybeleid op https://coinmarketcap.com/privacy voor meer informatie over hoe de gegevens in je aanvragen worden verzameld.

                                    -

                                    Als je de app gebruikt om naar BTC-adressen te betalen, maak je gebruik van de service XMR.TO. - Zie hun privacybeleid op https://xmr.to/ voor meer informatie. Monerujo verzendt het BTC-adres en -bedrag van de bestemming naar XMR.TO. Je IP-adres kan ook worden bewaard.

                                    +

                                    Als je de app gebruikt om naar BTC-adressen te betalen, maak je gebruik van de service SideShift.ai. + Zie hun privacybeleid op https://sideshift.ai/ voor meer informatie. Monerujo verzendt het BTC-adres en -bedrag van de bestemming naar SideShift.ai. Je IP-adres kan ook worden bewaard.

                                    App-machtigingen

                                    • INTERNET: Verbinding maken met het Monero-netwerk via een Monero-node
                                    • diff --git a/app/src/main/res/values-nl/help.xml b/app/src/main/res/values-nl/help.xml index 2f397abe..2af578dc 100644 --- a/app/src/main/res/values-nl/help.xml +++ b/app/src/main/res/values-nl/help.xml @@ -116,41 +116,36 @@
                                      • an OpenAlias for XMR or BTC
                                      • a BTC address
                                      • -
                                      • a bitcoin: URI (including BIP70 like bitpay)
                                      • - Please note, that sending BTC is processed through the XMR.TO service (see https://xmr.to + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai for details). See the section on sending BTC below.

                                        -

                                        Betalings-ID

                                        -

                                        Je kunt een Betalings-ID gebruiken om aan te geven waarom je Monero verzendt. Dit is volledig optioneel en blijft vertrouwelijk tussen beide partijen. Een bedrijf kan bijvoorbeeld jouw transactie koppelen aan een artikel dat je hebt gekocht.

                                        BTC verzenden

                                        -

                                        XMR.TO

                                        -

                                        XMR.TO is een externe service waarmee je Monero kunt inwisselen voor Bitcoin. - We gebruiken de API van XMR.TO om Bitcoin-betalingen te integreren in Monerujo. Neem eens een kijkje op https://xmr.to en besluit zelf of je dit wilt gebruiken. Het Monerujo-team is niet verbonden aan XMR.TO en kan je niet helpen met deze service.

                                        -

                                        Wisselkoers XMR.TO

                                        -

                                        Op het scherm \"Bedrag\" worden de huidige waarden voor het gebruik van XMR.TO weergegeven. Hierbij staat de huidige wisselkoers, maar ook het maximale en minimale BTC-bedrag. Houd er rekening mee dat deze koers op dit moment nog niet wordt gegarandeerd. Je ziet hier ook het maximale bedrag waarvoor de BTC-transactie meteen wordt uitgevoerd zonder te wachten op XMR-bevestigingen (zie de FAQ van XMR.TO voor meer informatie). En het mooiste is dat XMR.TO geen extra transactiekosten rekent. Hoe cool is dat?

                                        -

                                        XMR.TO-opdracht

                                        -

                                        Op het scherm \"Bevestigen\" wordt de eigenlijke XMR.TO-opdracht weergegeven. Deze opdracht is geldig voor een beperkte tijd. Er wordt afgeteld op de knop \"Uitgeven\". De wisselkoers kan hier anders zijn dan de schatting die op eerdere schermen is weergegeven.

                                        -

                                        Geheime sleutel XMR.TO

                                        -

                                        Omdat Monerujo alleen het Monero-gedeelte van je transactie verwerkt, kun je je geheime sleutel voor XMR.TO gebruiken om het Bitcoin-gedeelte van de opdracht te volgen op de XMR.TO-website.

                                        -

                                        Houd er rekening mee dat deze geheime sleutel maar 24 uur geldig is nadat de transactie is gestart!

                                        -

                                        XMR.TO telt af!

                                        -

                                        Als de knop heeft afgeteld naar nul, moet je een nieuw aanbod van XMR.TO aanvragen. Ga daarvoor terug naar de vorige stap en open het scherm \"Bevestigen\" opnieuw.

                                        +

                                        SideShift.ai

                                        +

                                        SideShift.ai is een externe service waarmee je Monero kunt inwisselen voor Bitcoin. + We gebruiken de API van SideShift.ai om Bitcoin-betalingen te integreren in Monerujo. Neem eens een kijkje op https://sideshift.ai en besluit zelf of je dit wilt gebruiken. Het Monerujo-team is niet verbonden aan SideShift.ai en kan je niet helpen met deze service.

                                        +

                                        Wisselkoers SideShift.ai

                                        +

                                        Op het scherm \"Bedrag\" worden de huidige waarden voor het gebruik van SideShift.ai weergegeven. Hierbij staat de huidige wisselkoers, maar ook het maximale en minimale BTC-bedrag. Houd er rekening mee dat deze koers op dit moment nog niet wordt gegarandeerd.

                                        +

                                        SideShift.ai-opdracht

                                        +

                                        Op het scherm \"Bevestigen\" wordt de eigenlijke SideShift.ai-opdracht weergegeven. Deze opdracht is geldig voor een beperkte tijd. Er wordt afgeteld op de knop \"Uitgeven\". De wisselkoers kan hier anders zijn dan de schatting die op eerdere schermen is weergegeven.

                                        +

                                        Geheime sleutel SideShift.ai

                                        +

                                        Omdat Monerujo alleen het Monero-gedeelte van je transactie verwerkt, kun je je geheime sleutel voor SideShift.ai gebruiken om het Bitcoin-gedeelte van de opdracht te volgen op de SideShift.ai-website.

                                        +

                                        SideShift.ai telt af!

                                        +

                                        Als de knop heeft afgeteld naar nul, moet je een nieuw aanbod van SideShift.ai aanvragen. Ga daarvoor terug naar de vorige stap en open het scherm \"Bevestigen\" opnieuw.

                                        ]]> BTC verzenden -

                                        XMR.TO

                                        -

                                        XMR.TO is een externe service waarmee je Monero kunt inwisselen voor Bitcoin. - We gebruiken de API van XMR.TO om Bitcoin-betalingen te integreren in Monerujo. Neem eens een kijkje op https://xmr.to en besluit zelf of je dit wilt gebruiken. Het Monerujo-team is niet verbonden aan XMR.TO en kan je niet helpen met deze service.

                                        -

                                        Wisselkoers XMR.TO

                                        -

                                        Op het scherm \"Bedrag\" worden de huidige waarden voor het gebruik van XMR.TO weergegeven. Hierbij staat de huidige wisselkoers, maar ook het maximale en minimale BTC-bedrag. Houd er rekening mee dat deze koers op dit moment nog niet wordt gegarandeerd. Je ziet hier ook het maximale bedrag waarvoor de BTC-transactie meteen wordt uitgevoerd zonder te wachten op XMR-bevestigingen (zie de FAQ van XMR.TO voor meer informatie). En het mooiste is dat XMR.TO geen extra transactiekosten rekent. Hoe cool is dat?

                                        -

                                        XMR.TO-opdracht

                                        -

                                        Op het scherm \"Bevestigen\" wordt de eigenlijke XMR.TO-opdracht weergegeven. Deze opdracht is geldig voor een beperkte tijd. Er wordt afgeteld op de knop \"Uitgeven\". De wisselkoers kan hier anders zijn dan de schatting die op eerdere schermen is weergegeven.

                                        -

                                        Geheime sleutel XMR.TO

                                        -

                                        Omdat Monerujo alleen het Monero-gedeelte van je transactie verwerkt, kun je je geheime sleutel voor XMR.TO gebruiken om het Bitcoin-gedeelte van de opdracht te volgen op de XMR.TO-website.

                                        -

                                        Houd er rekening mee dat deze geheime sleutel maar 24 uur geldig is nadat de transactie is gestart!

                                        -

                                        XMR.TO telt af!

                                        -

                                        Als de knop heeft afgeteld naar nul, moet je een nieuw aanbod van XMR.TO aanvragen. Ga daarvoor terug naar de vorige stap en open het scherm \"Bevestigen\" opnieuw.

                                        +

                                        SideShift.ai

                                        +

                                        SideShift.ai is een externe service waarmee je Monero kunt inwisselen voor Bitcoin. + We gebruiken de API van SideShift.ai om Bitcoin-betalingen te integreren in Monerujo. Neem eens een kijkje op https://sideshift.ai en besluit zelf of je dit wilt gebruiken. Het Monerujo-team is niet verbonden aan SideShift.ai en kan je niet helpen met deze service.

                                        +

                                        Wisselkoers SideShift.ai

                                        +

                                        Op het scherm \"Bedrag\" worden de huidige waarden voor het gebruik van SideShift.ai weergegeven. Hierbij staat de huidige wisselkoers, maar ook het maximale en minimale BTC-bedrag. Houd er rekening mee dat deze koers op dit moment nog niet wordt gegarandeerd.

                                        +

                                        SideShift.ai-opdracht

                                        +

                                        Op het scherm \"Bevestigen\" wordt de eigenlijke SideShift.ai-opdracht weergegeven. Deze opdracht is geldig voor een beperkte tijd. Er wordt afgeteld op de knop \"Uitgeven\". De wisselkoers kan hier anders zijn dan de schatting die op eerdere schermen is weergegeven.

                                        +

                                        Geheime sleutel SideShift.ai

                                        +

                                        Omdat Monerujo alleen het Monero-gedeelte van je transactie verwerkt, kun je je geheime sleutel voor SideShift.ai gebruiken om het Bitcoin-gedeelte van de opdracht te volgen op de SideShift.ai-website.

                                        +

                                        SideShift.ai telt af!

                                        +

                                        Als de knop heeft afgeteld naar nul, moet je een nieuw aanbod van SideShift.ai aanvragen. Ga daarvoor terug naar de vorige stap en open het scherm \"Bevestigen\" opnieuw.

                                        ]]>
                                        Je hebt een Bitcoin-adres ingevoerd.
                                        - Je verzendt XMR en de ontvanger krijgt BTC via XMR.TO. + Je verzendt XMR en de ontvanger krijgt BTC via SideShift.ai. ]]>
                                        - XMR.TO-opdracht + SideShift.ai-opdracht %1$s BTC Wacht op bevestiging Wacht op betaling - Fout bij XMR.TO (%1$s) + Fout bij SideShift.ai (%1$s) BTC verzonden! Aanvragen… Je kunt %1$s — %2$s BTC verzenden.
                                        - XMR.TO biedt nu een wisselkoers van %3$s BTC aan. + SideShift.ai biedt nu een wisselkoers van %3$s BTC aan. ]]>
                                        Bedragen tot %1$s BTC worden meteen verzonden! @@ -62,25 +62,25 @@ ✔ Betalings-ID geïntegreerd Transactie wordt voorbereid - XMR.TO-opdracht maken - XMR.TO-opdracht aanvragen + SideShift.ai-opdracht maken + SideShift.ai-opdracht aanvragen Monero-transactie voorbereiden - XMR.TO-parameters aanvragen + SideShift.ai-parameters aanvragen - FOUT BIJ XMR.TO + FOUT BIJ SideShift.ai Code: %1$d Opnieuw proberen Nu zitten we vast… - Oeps, XMR.TO is op dit moment niet beschikbaar. + Oeps, SideShift.ai is op dit moment niet beschikbaar. %1$s BTC = %2$s XMR (Koers: %1$s BTC/XMR) - Ga naar xmr.to voor hulp en traceren - Geheime sleutel\nXMR.TO - Geheime sleutel XMR.TO + Ga naar SideShift.ai voor hulp en traceren + Geheime sleutel\nSideShift.ai + Geheime sleutel SideShift.ai BTC-doeladres Bedrag @@ -151,9 +151,9 @@ Alleen-lezen sleutel Openbaar adres - Sleutel XMR.TO + Sleutel Alleen-lezen sleutel gekopieerd naar klembord! - Sleutel XMR.TO gekopieerd naar klembord! + Sleutel gekopieerd naar klembord! Portemonnee-adres gekopieerd naar klembord! Transactie-ID gekopieerd naar klembord! Kopiëren uitgeschakeld voor de veiligheid! @@ -353,13 +353,10 @@ Backup successful - Resolving Payment URI… - Could not resolve Payment URI - Resolved Payment URI ✔ Ontvanger - XMR.TO offline - try again later + SideShift.ai offline - try again later BTC amount out of bounds Invalid or outdated Payment URL Too many requests @@ -387,7 +384,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -408,4 +405,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-pt-rBR/about.xml b/app/src/main/res/values-pt-rBR/about.xml index fbbe5e7b..f59ba870 100755 --- a/app/src/main/res/values-pt-rBR/about.xml +++ b/app/src/main/res/values-pt-rBR/about.xml @@ -35,7 +35,7 @@ detalhes de como as requisições são coletadas.

                                        Se você usar nosso aplicativo para fazer pagamentos em BTC, você estará - usando o serviço XMR.TO. Verifique sua política de privacidade em https://xmr.to/ + usando o serviço SideShift.ai. Verifique sua política de privacidade em https://sideshift.ai/ para detalhes. O monerujo envia o endereço de destino e valor ao serviço. Seu IP também pode ser coletado.

                                        Permissões do aplicativo

                                        diff --git a/app/src/main/res/values-pt-rBR/help.xml b/app/src/main/res/values-pt-rBR/help.xml index 5383c9fe..a290c31f 100755 --- a/app/src/main/res/values-pt-rBR/help.xml +++ b/app/src/main/res/values-pt-rBR/help.xml @@ -158,63 +158,52 @@
                                        • um OpenAlias para XMR ou BTC
                                        • um endereço BTC
                                        • -
                                        • um URI bitcoin: (incluindo o BIP70 usado em serviços como o bitpay)
                                        • - Observe que o envio de BTC é processado pelo serviço XMR.TO (veja https://xmr.to para detalhes). + Observe que o envio de BTC é processado pelo serviço SideShift.ai (veja https://sideshift.ai para detalhes). Consulte a seção sobre envio de BTC abaixo.

                                          -

                                          ID do Pagamento

                                          -

                                          Você pode usar o ID do Pagamento para identificar a razão pela qual você transacionou com a contraparte. - Essa opção é opcional e privada. Por exemplo, lojistas podem reconciliar o seu pagamento com - o produto que você comprou.

                                          Enviando BTC

                                          -

                                          XMR.TO

                                          -

                                          XMR.TO é um serviço terceiro que age como casa de câmbio de Monero para Bitcoin. - Nós usamos a API do XMR.TO para integrar pagamentos em Bitcoin direto na carteira Monerujo. Consulte https://xmr.to - e decide por sua própria conta se este é um serviço que você quer usar. A equipe Monerujo não está associada com o XMR.TO +

                                          SideShift.ai

                                          +

                                          SideShift.ai é um serviço terceiro que age como casa de câmbio de Monero para Bitcoin. + Nós usamos a API do SideShift.ai para integrar pagamentos em Bitcoin direto na carteira Monerujo. Consulte https://sideshift.ai + e decide por sua própria conta se este é um serviço que você quer usar. A equipe Monerujo não está associada com o SideShift.ai e não podemos ajudá-lo caso algo não funcione no serviço.

                                          -

                                          Cotação XMR.TO

                                          -

                                          Na tela que exibe o valor da transação você poderá consultar os parâmetros do XMR.TO. +

                                          Cotação SideShift.ai

                                          +

                                          Na tela que exibe o valor da transação você poderá consultar os parâmetros do SideShift.ai. Nos quais estão incluídos a cotação, assim como os limites máximos e mínimos de envio de BTC. - Note que nesse momento a cotação ainda não é garantida. Você também verá o valor máximo no qual - a transação será executada de forma instantânea, sem esperar alguma confirmação da transação em XMR. - (consulte o FAQ do XMR.TO para mais detalhes). O XMR.TO não cobra taxas extras, legal né?

                                          -

                                          Ordem XMR.TO

                                          -

                                          Na tela de confirmação você verá a ordem criada no XMR.TO. A ordem é válida somente por + Note que nesse momento a cotação ainda não é garantida.

                                          +

                                          Ordem SideShift.ai

                                          +

                                          Na tela de confirmação você verá a ordem criada no SideShift.ai. A ordem é válida somente por um período limitado - você pode observar uma contagem regressiva no botão de confirmação. A cotação pode ser diferente do que estava indicado na tela anterior.

                                          -

                                          Chave secreta do XMR.TO

                                          +

                                          Chave secreta do SideShift.ai

                                          Como o Monerujo somente lida com a parte da transação que é em Monero, você pode usar sua chave secreta do - XMR.TO para rastrear a parte da transação que é em Bitcoin no website do XMR.TO.

                                          -

                                          Lembre-se que essa chave secreta só é válida por 24 horas depois do início da transação!

                                          -

                                          Contagem regressiva do XMR.TO

                                          -

                                          Quando o contador chega a zero será preciso iniciar uma nova ordem e solicitar uma nova cotação ao XMR.TO. Volte para a tela + SideShift.ai para rastrear a parte da transação que é em Bitcoin no website do SideShift.ai.

                                          +

                                          Contagem regressiva do SideShift.ai

                                          +

                                          Quando o contador chega a zero será preciso iniciar uma nova ordem e solicitar uma nova cotação ao SideShift.ai. Volte para a tela anterior e faça o processo novamente.

                                          ]]> Enviando BTC -

                                          XMR.TO

                                          -

                                          XMR.TO é um serviço terceiro que age como casa de câmbio de Monero para Bitcoin. - Nós usamos a API do XMR.TO para integrar pagamentos em Bitcoin direto na carteira Monerujo. Consulte https://xmr.to - e decida por sua própria conta se este é um serviço que você quer usar. A equipe Monerujo não está associada com o XMR.TO - e não podemos ajudá-lo caso algo não funcione no serviço.

                                          -

                                          Cotação XMR.TO

                                          -

                                          Na tela que exibe o valor da transação você poderá consultar os parâmetros do XMR.TO. - Nos quais estão incluídos a cotação, assim como os limites máximos e mínimos de envio de BTC. - Note que nesse momento a cotação ainda não é garantida. Você também verá o valor máximo no qual - a transação será executada de forma instantânea, sem esperar alguma confirmação da transação em XMR. - (consulte o FAQ do XMR.TO para mais detalhes). O XMR.TO não cobra taxas extras, legal né?

                                          -

                                          Ordem XMR.TO

                                          -

                                          Na tela de confirmação você verá a ordem criada no XMR.TO. A ordem é válida somente por - um período limitado - você pode observar uma contagem regressiva no botão de confirmação. A cotação pode - ser diferente do que estava indicado na tela anterior.

                                          -

                                          Chave secreta do XMR.TO

                                          -

                                          Como o Monerujo somente lida com a parte da transação que é em Monero, você pode usar sua chave secreta do - XMR.TO para rastrear a parte da transação que é em Bitcoin no website do XMR.TO.

                                          -

                                          Lembre-se que essa chave secreta só é válida por 24 horas depois do início da transação!

                                          -

                                          Contagem regressiva do XMR.TO

                                          -

                                          Quando o contador chega a zero será preciso iniciar uma nova ordem e solicitar uma nova cotação ao XMR.TO. Volte para a tela - anterior e faça o processo novamente.

                                          +

                                          Enviando BTC

                                          +

                                          SideShift.ai

                                          +

                                          SideShift.ai é um serviço terceiro que age como casa de câmbio de Monero para Bitcoin. + Nós usamos a API do SideShift.ai para integrar pagamentos em Bitcoin direto na carteira Monerujo. Consulte https://sideshift.ai + e decide por sua própria conta se este é um serviço que você quer usar. A equipe Monerujo não está associada com o SideShift.ai + e não podemos ajudá-lo caso algo não funcione no serviço.

                                          +

                                          Cotação SideShift.ai

                                          +

                                          Na tela que exibe o valor da transação você poderá consultar os parâmetros do SideShift.ai. + Nos quais estão incluídos a cotação, assim como os limites máximos e mínimos de envio de BTC. + Note que nesse momento a cotação ainda não é garantida.

                                          +

                                          Ordem SideShift.ai

                                          +

                                          Na tela de confirmação você verá a ordem criada no SideShift.ai. A ordem é válida somente por + um período limitado - você pode observar uma contagem regressiva no botão de confirmação. A cotação pode + ser diferente do que estava indicado na tela anterior.

                                          +

                                          Chave secreta do SideShift.ai

                                          +

                                          Como o Monerujo somente lida com a parte da transação que é em Monero, você pode usar sua chave secreta do + SideShift.ai para rastrear a parte da transação que é em Bitcoin no website do SideShift.ai.

                                          +

                                          Contagem regressiva do SideShift.ai

                                          +

                                          Quando o contador chega a zero será preciso iniciar uma nova ordem e solicitar uma nova cotação ao SideShift.ai. Volte para a tela + anterior e faça o processo novamente.

                                          ]]>
                                          Você colocou um endereço Bitcoin.
                                          - Você enviará XMR e o destinatário receberá BTC via o serviço XMR.TO + Você enviará XMR e o destinatário receberá BTC via o serviço SideShift.ai ]]>
                                          - Ordem no XMR.TO + Ordem no SideShift.ai %1$s BTC Confirmação Pendente Pagamento Pendente - Erro XMR.TO (%1$s) + Erro SideShift.ai (%1$s) BTC Enviado! Consultando … Você pode enviar %1$s — %2$s BTC.
                                          - XMR.TO enviou a cotação de %3$s BTC neste momento. + SideShift.ai enviou a cotação de %3$s BTC neste momento. ]]>
                                          Quantias até %1$s BTC serão enviadas instantaneamente! @@ -62,25 +62,25 @@ ✔ ID do pagamento integrado Preparando sua transação - Criando a ordem no XMR.TO - Atualizando a ordem no XMR.TO + Criando a ordem no SideShift.ai + Atualizando a ordem no SideShift.ai Preparando a transação em Monero - Consultando os parâmetros no XMR.TO + Consultando os parâmetros no SideShift.ai - ERRO XMR.TO + ERRO SideShift.ai Código: %1$d Toque aqui para tentar novamente Opa, estamos travados aqui! - Hm, parece que o XMR.TO não está disponível no momento + Hm, parece que o SideShift.ai não está disponível no momento %1$s BTC = %2$s XMR (Cotação: %1$s BTC/XMR) - Visite o XMR.TO para suporte & rastreio da ordem - Chave secreta\nXMR.TO - Chave secreta XMR.TO + Visite o SideShift.ai para suporte & rastreio da ordem + Chave secreta\nSideShift.ai + Chave secreta SideShift.ai Endereço BTC de destino Valor @@ -152,9 +152,9 @@ Chave de visualização Endereço público - Chave XMR.TO + Chave Chave de visualização copiada para a área de transferência! - Chave XMR.TO copiada para a área de transferência! + Chave copiada para a área de transferência! Endereço da carteira copiado para a área de transferência! ID da transação copiado para a área de transferência! Copiar está desativado por razões de segurança! @@ -346,12 +346,9 @@ Backup feito com successo - Resolvendo URI do Pagamento… - Não foi possível resolver o URI do pagamento - URI do Pagamento resolvido ✔ Destinatário - XMR.TO offline - tente novamente mais tarde + SideShift.ai offline - tente novamente mais tarde Valor BTC fora dos limites URL de pagamento inválido Solicitações em excesso @@ -379,7 +376,7 @@ Mantenha sua semente em segurança A semente dá acesso total a qualquer pessoa que a tenha. Se você perdê-la, nós não conseguiremos lhe ajudar a recuperá-la e você perderá seus amados moneroj. Enviar Bitcoin - A Monerujo possui o XMR.to integrado. Basta colar ou escaner um endereço Bitcoin e você estará enviando BTC, mas gastando em XMR. + A Monerujo possui o SideShift.ai integrado. Basta colar ou escaner um endereço Bitcoin e você estará enviando BTC, mas gastando em XMR. "Nós", do seu jeito Os nós conectam você à rede Monero. Escolha entre nós públicos ou seja completamente "cypherpunk" e utilize seu próprio nó. Enviar usando a digital @@ -400,4 +397,7 @@ Último Bloco: %1$d minutos atrás Último Bloco: %1$d horas atrás Último Bloco: %1$d dias atrás + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-pt/about.xml b/app/src/main/res/values-pt/about.xml index 4e460ca8..4e254ec1 100644 --- a/app/src/main/res/values-pt/about.xml +++ b/app/src/main/res/values-pt/about.xml @@ -35,8 +35,8 @@ Confirme a política de privacidade deste serviço em https://www.kraken.com/legal/privacy para mais detalhes em como estes pedidos são processados (especialmente a secção "Informação que recolhemos automaticament").

                                          -

                                          Se utilizar esta app para pagar em BTC, você estará a utilizar o serviço XMR.TO. - Veja a sua política de privacidade em https://xmr.to/ para mais detalhes. O monerujo envia +

                                          Se utilizar esta app para pagar em BTC, você estará a utilizar o serviço SideShift.ai. + Veja a sua política de privacidade em https://sideshift.ai/ para mais detalhes. O monerujo envia para este serviço a quantidade e o endereço de destino das BTC. O seu IP vai ser registado.

                                          Permissões da app

                                            diff --git a/app/src/main/res/values-pt/help.xml b/app/src/main/res/values-pt/help.xml index a2707f90..bddcfa72 100644 --- a/app/src/main/res/values-pt/help.xml +++ b/app/src/main/res/values-pt/help.xml @@ -145,70 +145,55 @@
                                            • Um OpenAlias para XMR ou BTC
                                            • um endereço de BTC
                                            • -
                                            • um enderço bitcoin: URI (incluindo BIP70 tipo bitpay)
                                            • - Não deixar de notar que, enviar BTC é processado através do serviço XMR.TO (ver https://xmr.to + Não deixar de notar que, enviar BTC é processado através do serviço SideShift.ai (ver https://sideshift.ai para detalhes). Ver a secção enviar BTC.

                                              -

                                              ID do Pagamento

                                              -

                                              Utiliza-se o ID do Pagamento para identificar a razão porque foram transaccionados Moneroj. - Isto é opcional e privado. Por exemplo, isto permite que um negócio identifique que item - é que uma determinada transacção está a pagar.

                                              Enviar BTC

                                              -

                                              XMR.TO

                                              -

                                              XMR.TO é um serviço de terceiros que funciona como intercâmbio de Monero para Bitcoin. - Nós utilizamos a API do XMR.TO para integrar pagamentos de Bitcoin no Monerujo. Por favor - vai a https://xmr.to e decide por ti próprio se queres utilizar este serviço. A equipa - do Monerujo não está associada com o XMR.TO e não te pode ajudar com este serviço.

                                              -

                                              Taxa de câmbio XMR.TO

                                              -

                                              No ecrã de \"Quantidade\" vais ver os parâmetros actuais do serviço XMR.TO. Estes +

                                              SideShift.ai

                                              +

                                              SideShift.ai é um serviço de terceiros que funciona como intercâmbio de Monero para Bitcoin. + Nós utilizamos a API do SideShift.ai para integrar pagamentos de Bitcoin no Monerujo. Por favor + vai a https://sideshift.ai e decide por ti próprio se queres utilizar este serviço. A equipa + do Monerujo não está associada com o SideShift.ai e não te pode ajudar com este serviço.

                                              +

                                              Taxa de câmbio SideShift.ai

                                              +

                                              No ecrã de \"Quantidade\" vais ver os parâmetros actuais do serviço SideShift.ai. Estes incluem a taxa de câmbio assim como os limites superiores e inferiores em BTC. Nota que - esta taxa ainda não é garantido. Também vais ver a quantidade máxima de BTC para que - a transação seja executada instantaneamente sem ter que esperar pelas confirmações XMR - (ver o FAQ do XMR.TO para mais detalhes). Nota que o XMR.TO não cobra nenhumas taxas - extra - isto não é brutal?

                                              -

                                              Pedido XMR.TO

                                              -

                                              No ecrão de \"Confirmação\", vais ver o pedido actual XMR.TO. Este pedido é válido + esta taxa ainda não é garantido.

                                              +

                                              Pedido SideShift.ai

                                              +

                                              No ecrão de \"Confirmação\", vais ver o pedido actual SideShift.ai. Este pedido é válido por um período limitado de tempo - podes reparar que exite uma contagem decrescente no botão de \"Enviar\". A taxa de câmbio pode ser diferente da taxa indicativa mostrada nos ecrãs anteriores.

                                              -

                                              Chave Secreta XMR.TO

                                              -

                                              Como o Monerujo só controla a parte Monero da transacção, a chave secreta XMR.TO +

                                              Chave Secreta SideShift.ai

                                              +

                                              Como o Monerujo só controla a parte Monero da transacção, a chave secreta SideShift.ai pode ser utilizada para monitorar a parte Bitcoin da transacção na página pricipal do - XMR.TO.

                                              -

                                              Nota que esta chave secreta só é válida por 24 horas depois de a transacção ter - iniciado!

                                              -

                                              Contagem decrescente XMR.TO!

                                              -

                                              Quando a contagem chega a zero, precisas de obter uma nova taxa de câmbio do XMR.TO + SideShift.ai.

                                              +

                                              Contagem decrescente SideShift.ai!

                                              +

                                              Quando a contagem chega a zero, precisas de obter uma nova taxa de câmbio do SideShift.ai indo ao passo anterior e depois voltando ao ecrã de \"Confirmar\".

                                              ]]> Enviar BTC -

                                              XMR.TO

                                              -

                                              XMR.TO é um serviço de terceiros que funciona como intercâmbio de Monero para Bitcoin. - Nós utilizamos a API do XMR.TO para integrar pagamentos de Bitcoin no Monerujo. Por favor - vai a https://xmr.to e decide por ti próprio se queres utilizar este serviço. A equipa - do Monerujo não está associada com o XMR.TO e não te pode ajudar com este serviço.

                                              -

                                              Taxa de câmbio XMR.TO

                                              -

                                              No ecrã de \"Quantidade\" vais ver os parâmetros actuais do serviço XMR.TO. Estes +

                                              SideShift.ai

                                              +

                                              SideShift.ai é um serviço de terceiros que funciona como intercâmbio de Monero para Bitcoin. + Nós utilizamos a API do SideShift.ai para integrar pagamentos de Bitcoin no Monerujo. Por favor + vai a https://sideshift.ai e decide por ti próprio se queres utilizar este serviço. A equipa + do Monerujo não está associada com o SideShift.ai e não te pode ajudar com este serviço.

                                              +

                                              Taxa de câmbio SideShift.ai

                                              +

                                              No ecrã de \"Quantidade\" vais ver os parâmetros actuais do serviço SideShift.ai. Estes incluem a taxa de câmbio assim como os limites superiores e inferiores em BTC. Nota que - este taxa ainda não é garantido. Também vais ver a quantidade máxima de BTC para que - a transação seja executada instantaneamente sem ter que esperar pelas confirmações XMR - (ver o FAQ do XMR.TO para mais detalhes). Nota que o XMR.TO não cobra nenhumas taxas - extra - isto não é brutal?

                                              -

                                              Pedido XMR.TO

                                              -

                                              No ecrão de \"Confirmação\", vais ver o pedido actual XMR.TO. Este pedido é válido + esta taxa ainda não é garantido.

                                              +

                                              Pedido SideShift.ai

                                              +

                                              No ecrão de \"Confirmação\", vais ver o pedido actual SideShift.ai. Este pedido é válido por um período limitado de tempo - podes reparar que exite uma contagem decrescente no botão de \"Enviar\". A taxa de câmbio pode ser diferente da taxa indicativa mostrada nos ecrãs anteriores.

                                              -

                                              Chave Secreta XMR.TO

                                              -

                                              Como o Monerujo só controla a parte Monero da transacção, a chave secreta XMR.TO +

                                              Chave Secreta SideShift.ai

                                              +

                                              Como o Monerujo só controla a parte Monero da transacção, a chave secreta SideShift.ai pode ser utilizada para monitorar a parte Bitcoin da transacção na página pricipal do - XMR.TO.

                                              -

                                              Nota que esta chave secreta só é válida por 24 horas depois de a transacção ter - iniciado!

                                              -

                                              Contagem decrescente XMR.TO!

                                              -

                                              Quando a contagem chega a zero, precisas de obter uma nova taxa de câmbio do XMR.TO + SideShift.ai.

                                              +

                                              Contagem decrescente SideShift.ai!

                                              +

                                              Quando a contagem chega a zero, precisas de obter uma nova taxa de câmbio do SideShift.ai indo ao passo anterior e depois voltando ao ecrã de \"Confirmar\".

                                              ]]>
                                              diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 238ade98..9b6fea95 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -36,22 +36,22 @@ Introduziu um endereço Bitcoin.
                                              - Vai enviar em XMR e o destinatário vai receber BTC através do serviço XMR.TO + Vai enviar em XMR e o destinatário vai receber BTC através do serviço SideShift.ai ]]>
                                              - XMR.TO Order + SideShift.ai Order %1$s BTC Confirmação Pendente Pagamento Pendente - Erro XMR.TO (%1$s) + Erro SideShift.ai (%1$s) BTC Enviadas! A comunicar … Pode enviar %1$s — %2$s BTC.
                                              - XMR.TO está com uma taxa de conversão de %3$s BTC neste momento. + SideShift.ai está com uma taxa de conversão de %3$s BTC neste momento. ]]>
                                              Quantidades até %1$s BTC serão enviadas instantaneament! @@ -62,25 +62,25 @@ ✔ ID do pagamento integrado A preparar a transacção - A criar um pedido XMR.TO - A actualizar o pedido XMR.TO + A criar um pedido SideShift.ai + A actualizar o pedido SideShift.ai A preparar a transacção Monero - A obter os parâmetros xmr.to + A obter os parâmetros SideShift.ai - ERRO XMR.TO + ERRO SideShift.ai Código: %1$d Toca para voltar a tentar Agora estamos emperrados aqui! - Ups, XMR.TO não parece estar disponível neste momento! + Ups, SideShift.ai não parece estar disponível neste momento! %1$s BTC = %2$s XMR (Rácio: %1$s BTC/XMR) - Vai a xmr.to para suporte & seguimento - Chave secreta\nXMR.TO - XMR.TO Chave secreta + Vai a SideShift.ai para suporte & seguimento + Chave secreta\nSideShift.ai + SideShift.ai Chave secreta Endereço BTC de destino Quantidade @@ -149,9 +149,9 @@ Ver chave Endereço público - Chave XMR.TO + Chave Chave de visualização copiada para a área de transferência - Chave XMR.TO copiada para a área de transferência! + Chave copiada para a área de transferência! Endereço da carteira copiado para a área de transferência! ID da transacção copiado para a área de transferência! Copiar está desactivo por razões de segurança! @@ -358,12 +358,9 @@ Backup bem sucedido - A resolver URI… de pagamento - Não foi possivel resolver URI de pagamento - Pagemento URI ✔ resolvido Receptor - XMR.TO offline - tenta mais tarde + SideShift.ai offline - tenta mais tarde Montante de BTC fora dos limites URL de pagamento invalido ou fora de prazo Demasiadas solicitações @@ -391,7 +388,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -412,4 +409,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-ro/about.xml b/app/src/main/res/values-ro/about.xml index 932f0a33..ffb56883 100644 --- a/app/src/main/res/values-ro/about.xml +++ b/app/src/main/res/values-ro/about.xml @@ -35,8 +35,8 @@ Vizualizează politica de confidențialitate la adresa https://www.kraken.com/legal/privacy pentru a vedea cum este procesată informația (În special secțiunea "Information We Collect Automatically").

                                              În cazul in care folosești aplicația pentru a face o plată către o adresă de portofel BTC, - vei folosi serviciul oferit de XMR.TO. - Vizualizează politica lor de confidențialitate la adresa https://xmr.to/ pentru detalii. Monerujo le va trimite lor + vei folosi serviciul oferit de SideShift.ai. + Vizualizează politica lor de confidențialitate la adresa https://sideshift.ai/ pentru detalii. Monerujo le va trimite lor adresa de destinație și suma BTC. Adresa ta de IP poate fi colectată.

                                              Permisiunile aplicației

                                                diff --git a/app/src/main/res/values-ro/help.xml b/app/src/main/res/values-ro/help.xml index 15cabca9..ca8217ed 100644 --- a/app/src/main/res/values-ro/help.xml +++ b/app/src/main/res/values-ro/help.xml @@ -137,62 +137,51 @@
                                                • an OpenAlias for XMR or BTC
                                                • a BTC address
                                                • -
                                                • a bitcoin: URI (including BIP70 like bitpay)
                                                • - Please note, that sending BTC is processed through the XMR.TO service (see https://xmr.to + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai for details). See the section on sending BTC below.

                                                  -

                                                  Payment ID

                                                  -

                                                  Poți utiliza un ID de plată pentru a identifica suma trimisă între două terțe, acest lucru - este complet opțional și privat. Ca exemplu, poate permite identificare într-o activitate comercială - pentru a reconcilia pentru un produs pe care l-ați achiziționat.

                                                  Transferul de BTC

                                                  -

                                                  XMR.TO

                                                  -

                                                  XMR.TO este un serviciu terță parte care care acționeaza ca un schimb valutar între Monero și Bitcoin. - Noi folosim API-ul XMR.TO pentru a integra plățile Bitcoin în Monerujo. Verifică - https://xmr.to and și decide singur dacă este un serviciu pe care dorești să îl folosești. Echipa Monerujo - nu este asociată în niciun fel cu XMR.TO și nu te poate ajuta cu serviciile oferite de ei.

                                                  -

                                                  Rata de schimb al XMR.TO

                                                  -

                                                  Pe ecranul cu \"Suma\" vor fi afișați parametrii ai serviciului XMR.TO. Aceștia includ cursul de +

                                                  SideShift.ai

                                                  +

                                                  SideShift.ai este un serviciu terță parte care care acționeaza ca un schimb valutar între Monero și Bitcoin. + Noi folosim API-ul SideShift.ai pentru a integra plățile Bitcoin în Monerujo. Verifică + https://sideshift.ai and și decide singur dacă este un serviciu pe care dorești să îl folosești. Echipa Monerujo + nu este asociată în niciun fel cu SideShift.ai și nu te poate ajuta cu serviciile oferite de ei.

                                                  +

                                                  Rata de schimb al SideShift.ai

                                                  +

                                                  Pe ecranul cu \"Suma\" vor fi afișați parametrii ai serviciului SideShift.ai. Aceștia includ cursul de schimb actual precum și limitele superioare și inferioare ale BTC. Reține că aceste rate de schimb - nu sunt garantate în acest moment. Vei vedea, de asemenea, suma până la care tranzacția BTC va fi - executată instantaneu fără a aștepta confirmarea XMR (verifică FAQ-ul XMR.TO pentru detalii). Notează că, XMR.TO - nu percepe comisioane extra - nu e așa că este cool?

                                                  -

                                                  Dispoziție XMR.TO

                                                  -

                                                  Pe ecranul cu \"Confirm\", vei vedea comanda actuală a XMR.TO. Această comandă este valabilă pentru + nu sunt garantate în acest moment.

                                                  +

                                                  Dispoziție SideShift.ai

                                                  +

                                                  Pe ecranul cu \"Confirm\", vei vedea comanda actuală a SideShift.ai. Această comandă este valabilă pentru un timp limitat - este posibil să observi o numărătoare inversă pe butonul \"Consum\". Rata de schimb poate fi diferită de cea indicată pe ecranele anterioare.

                                                  -

                                                  Cheia secretă XMR.TO

                                                  -

                                                  Din moment ce Monerujo gestionează numai partea Monero din tranzacția ta, cheia secretă a XMR.TO - poate fi folosită pentru a urmari partea Bitcoin a comenzii tale de pe site-ul XMR.TO.

                                                  -

                                                  Te rog notează, că această cheie secretă este validă doar pentru 24 ore din momentul începerii tranzacției!

                                                  -

                                                  Numerotarea inversă XMR.TO

                                                  -

                                                  În momentul în care numerotarea inversă ajunge la zero, va trebui să obți o noua cotație de la XMR.TO mergând +

                                                  Cheia secretă SideShift.ai

                                                  +

                                                  Din moment ce Monerujo gestionează numai partea Monero din tranzacția ta, cheia secretă a SideShift.ai + poate fi folosită pentru a urmari partea Bitcoin a comenzii tale de pe site-ul SideShift.ai.

                                                  +

                                                  Numerotarea inversă SideShift.ai

                                                  +

                                                  În momentul în care numerotarea inversă ajunge la zero, va trebui să obți o noua cotație de la SideShift.ai mergând înapoi la pasul anterior apoi revenind la ecranul \"Confirm\".

                                                  ]]> Transferul de BTC -

                                                  XMR.TO

                                                  -

                                                  XMR.TO este un serviciu terță parte care care acționeaza ca un schimb valutar între Monero și Bitcoin. - Noi folosim API-ul XMR.TO pentru a integra plățile Bitcoin în Monerujo. Verifică - https://xmr.to and și decide singur dacă este un serviciu pe care dorești să îl folosești. - Echipa Monerujo nu este asociată în niciun fel cu XMR.TO și nu te poate ajuta cu serviciile oferite de ei.

                                                  -

                                                  Rata de schimb al XMR.TO

                                                  -

                                                  Pe ecranul cu \"Suma\" vor fi afișați parametrii ai serviciului XMR.TO. Aceștia includ cursul de +

                                                  SideShift.ai

                                                  +

                                                  SideShift.ai este un serviciu terță parte care care acționeaza ca un schimb valutar între Monero și Bitcoin. + Noi folosim API-ul SideShift.ai pentru a integra plățile Bitcoin în Monerujo. Verifică + https://sideshift.ai and și decide singur dacă este un serviciu pe care dorești să îl folosești. Echipa Monerujo + nu este asociată în niciun fel cu SideShift.ai și nu te poate ajuta cu serviciile oferite de ei.

                                                  +

                                                  Rata de schimb al SideShift.ai

                                                  +

                                                  Pe ecranul cu \"Suma\" vor fi afișați parametrii ai serviciului SideShift.ai. Aceștia includ cursul de schimb actual precum și limitele superioare și inferioare ale BTC. Reține că aceste rate de schimb - nu sunt garantate în acest moment. Vei vedea, de asemenea, suma până la care tranzacția BTC va fi - executată instantaneu fără a aștepta confirmarea XMR (verifică FAQ-ul XMR.TO pentru detalii). Notează că, XMR.TO - nu percepe comisioane extra - nu e așa că este cool?

                                                  -

                                                  Dispoziție XMR.TO

                                                  -

                                                  Pe ecranul cu \"Confirm\", vei vedea comanda actuală a XMR.TO. Această comandă este valabilă pentru + nu sunt garantate în acest moment.

                                                  +

                                                  Dispoziție SideShift.ai

                                                  +

                                                  Pe ecranul cu \"Confirm\", vei vedea comanda actuală a SideShift.ai. Această comandă este valabilă pentru un timp limitat - este posibil să observi o numărătoare inversă pe butonul \"Consum\". Rata de schimb poate fi diferită de cea indicată pe ecranele anterioare.

                                                  -

                                                  Cheia secretă XMR.TO

                                                  -

                                                  Din moment ce Monerujo gestionează numai partea Monero din tranzacția ta, cheia secretă a XMR.TO - poate fi folosită pentru a urmari partea Bitcoin a comenzii tale de pe site-ul XMR.TO.

                                                  -

                                                  Te rog notează, că această cheie secretă este validă doar pentru 24 ore din momentul începerii tranzacției!

                                                  -

                                                  Numerotarea inversă XMR.TO

                                                  -

                                                  În momentul în care numerotarea inversă ajunge la zero, va trebui să obți o noua cotație de la XMR.TO mergând +

                                                  Cheia secretă SideShift.ai

                                                  +

                                                  Din moment ce Monerujo gestionează numai partea Monero din tranzacția ta, cheia secretă a SideShift.ai + poate fi folosită pentru a urmari partea Bitcoin a comenzii tale de pe site-ul SideShift.ai.

                                                  +

                                                  Numerotarea inversă SideShift.ai

                                                  +

                                                  În momentul în care numerotarea inversă ajunge la zero, va trebui să obți o noua cotație de la SideShift.ai mergând înapoi la pasul anterior apoi revenind la ecranul \"Confirm\".

                                                  ]]>
                                                  diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 4f083dd4..6a37db66 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -35,22 +35,22 @@ Ai introdus o adresă de Bitcoin.
                                                  - Vei trimite XMR și destinatarul va primi BTC folosind serviciul XMR.TO. + Vei trimite XMR și destinatarul va primi BTC folosind serviciul SideShift.ai. ]]>
                                                  - Ordin XMR.TO + Ordin SideShift.ai %1$s BTC Confirmare în așteptare Plată în așteptare - Eroare XMR.TO (%1$s) + Eroare SideShift.ai (%1$s) BTC trimis! Interogare … Poți trimite %1$s — %2$s BTC.
                                                  - XMR.TO îți oferă un curs de %3$s BTC în acest moment. + SideShift.ai îți oferă un curs de %3$s BTC în acest moment. ]]>
                                                  Sume până la %1$s BTC vor fi trimise instantaneu! @@ -61,25 +61,25 @@ ✔ Payment ID integrat Se pregătește tranzacția - Creearea ordinului XMR.TO - Interogare ordin XMR.TO + Creearea ordinului SideShift.ai + Interogare ordin SideShift.ai Pregătirea tranzacției Monero - Interogare parametrii xmr.to + Interogare parametrii SideShift.ai - EROARE XMR.TO + EROARE SideShift.ai Cod: %1$d Atinge pentru reîncercare Pff.. ne-am blocat cum! - Oh, serviciul XMR.TO este momentan indisponibil! + Oh, serviciul SideShift.ai este momentan indisponibil! %1$s BTC = %2$s XMR (Rată: %1$s BTC/XMR) - Vizitează xmr.to pentru suport & interogare - Cheia secretă \nXMR.TO - Cheia secretă XMR.TO + Vizitează SideShift.ai pentru suport & interogare + Cheia secretă \nSideShift.ai + Cheia secretă SideShift.ai Destinație adresă BTC Sumă @@ -142,9 +142,9 @@ Cheie Vizualizare Adresă publică - Cheie XMR.TO + Cheie Cheie vizualizre copiată la clipboard! - Cheie XMR.TO copiată la clipboard! + Cheie copiată la clipboard! Adresă portofel copiatp la clipboard! ID tranzacție copiată la clipboard! Copierea dezactivată din motive de securitate! @@ -354,12 +354,9 @@ Automatically bookmarked best %1$d nodes Test - Resolving Payment URI… - Could not resolve Payment URI - Resolved Payment URI ✔ Receiver - XMR.TO offline - try again later + SideShift.ai offline - try again later BTC amount out of bounds Invalid or outdated Payment URL Too many requests @@ -387,7 +384,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -408,4 +405,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-ru/about.xml b/app/src/main/res/values-ru/about.xml index 494a7f3a..6841f31f 100644 --- a/app/src/main/res/values-ru/about.xml +++ b/app/src/main/res/values-ru/about.xml @@ -34,8 +34,8 @@ Перейдите по адресу https://coinmarketcap.com/privacy для получения подробной информации о том, как собираются ваши персональные данные в запросах.

                                                  Если вы используете приложение для оплаты по адресам BTC, - вы будете использовать сервис XMR.TO. Их политика конфиденциальности подробно - изложена на вебсайте https://xmr.to/. Monerujo отправляет им адрес + вы будете использовать сервис SideShift.ai. Их политика конфиденциальности подробно + изложена на вебсайте https://sideshift.ai/. Monerujo отправляет им адрес назначения BTC и сумму. Ваш IP также указывается.

                                                  Разрешения, необходимые приложению

                                                    diff --git a/app/src/main/res/values-ru/help.xml b/app/src/main/res/values-ru/help.xml index f37d67b0..26df4809 100644 --- a/app/src/main/res/values-ru/help.xml +++ b/app/src/main/res/values-ru/help.xml @@ -150,69 +150,54 @@
                                                    • OpenAlias для XMR или BTC
                                                    • BTC адрес
                                                    • -
                                                    • bitcoin: URI (включая BIP70, как и bitpay)
                                                    • - Обращаем ваше внимание, что отправка BTC выполняется через сервис XMR.TO (посетите https://xmr.to + Обращаем ваше внимание, что отправка BTC выполняется через сервис SideShift.ai (посетите https://sideshift.ai для получения доп. информации). Ознакомьтесь с разделом об отправке BTC ниже.

                                                      -

                                                      Идентификатор оплаты (Payment ID)

                                                      -

                                                      Вы можете использовать Payment ID для идентификации причины, по которой Monero передаётся - между двумя сторонами. Это опциональная и конфиденциальная операция. Например, - она позволяет коммерсантам сверить вашу транзакцию с товаром, который был приобретён вами.

                                                      Отправка BTC

                                                      -

                                                      XMR.TO

                                                      -

                                                      XMR.TO является сторонним сервисом, который помогает осуществлять обмен Monero на Bitcoin. - Мы используем API службы XMR.TO для включения платежей с использованием Bitcoin в Monerujo. - Пожалуйста, посетите https://xmr.to, и решите, хотите ли вы использовать эту возможность. - Команда Monerujo не связана с XMR.TO и не может помочь вам в работе с этой службой.

                                                      -

                                                      Курс обмена XMR.TO

                                                      -

                                                      На экране \"Сумма\" отображаются текущие параметры службы XMR.TO. +

                                                      SideShift.ai

                                                      +

                                                      SideShift.ai является сторонним сервисом, который помогает осуществлять обмен Monero на Bitcoin. + Мы используем API службы SideShift.ai для включения платежей с использованием Bitcoin в Monerujo. + Пожалуйста, посетите https://sideshift.ai, и решите, хотите ли вы использовать эту возможность. + Команда Monerujo не связана с SideShift.ai и не может помочь вам в работе с этой службой.

                                                      +

                                                      Курс обмена SideShift.ai

                                                      +

                                                      На экране \"Сумма\" отображаются текущие параметры службы SideShift.ai. Здесь также отображается обменный курс, верхний и нижний предел BTC. Необходимо отметить, - что на данном этапе курс не гарантируется. Вы также сможете увидеть сумму, вплоть до которой - транзакция BTC будет произведена немедленно без ожидания подтверждения со стороны XMR - (подробности описаны в XMR.TO FAQ). Помимо этого, XMR.TO не требует выплаты какой-либо - дополнительной комиссии. Круто?

                                                      -

                                                      Заказ XMR.TO

                                                      -

                                                      На экране \"Подтверждение\" можно увидеть фактический заказ XMR.TO. Этот заказ + что на данном этапе курс не гарантируется.

                                                      +

                                                      Заказ SideShift.ai

                                                      +

                                                      На экране \"Подтверждение\" можно увидеть фактический заказ SideShift.ai. Этот заказ действителен в течение ограниченного времени. Обратный отсчёт можно увидеть на кнопке траты \"Трата\". Курс обмена может отличаться от того, что был показан на предыдущих экранах.

                                                      -

                                                      Секретный ключ XMR.TO

                                                      +

                                                      Секретный ключ SideShift.ai

                                                      Так как Monerujo отвечает за ту часть транзакции, которая связана с Monero, для отслеживания вашего заказа, которая связана с Bitcoin, можно использовать секретный ключ на домашней странице - XMR.TO.

                                                      -

                                                      Следует помнить о том, что такой секретный ключ действителен только в течение 24 часов после - начала транзакции!

                                                      -

                                                      Обратный отсчёт XMR.TO

                                                      -

                                                      Как только обратный отсчёт достигнет нулевой точки, вам понадобится получить от XMR.TO новое + SideShift.ai.

                                                      +

                                                      Обратный отсчёт SideShift.ai

                                                      +

                                                      Как только обратный отсчёт достигнет нулевой точки, вам понадобится получить от SideShift.ai новое предложение, вернувшись к предыдущему шагу, а затем к экрану \"Подтверждение\".

                                                      ]]> Отправка BTC -

                                                      XMR.TO

                                                      -

                                                      XMR.TO является сторонним сервисом, который помогает осуществлять обмен Monero на Bitcoin. - Мы используем API службы XMR.TO для интеграции платежей с использованием Bitcoin в Monerujo. - Пожалуйста, посетите https://xmr.to, и решите, хотите ли вы использовать эту возможность. - Команда Monerujo не связана с XMR.TO и не может помочь вам в работе с этой службой.

                                                      -

                                                      Курс обмена XMR.TO

                                                      -

                                                      На экране указания \"Сумма\" отображаются текущие параметры службы XMR.TO. - Здесь также отображается обменный курс, верхние и нижние пределы BTC. Необходимо отметить, - что на данном этапе курс не гарантируется. Вы также сможете увидеть сумму, вплоть до которой - транзакция BTC будет произведена немедленно без ожидания подтверждения со стороны XMR - (подробности описаны в XMR.TO FAQ). Помимо этого, XMR.TO не требует выплаты какой-либо - дополнительной комиссии. Круто?

                                                      -

                                                      Заказ XMR.TO

                                                      -

                                                      На экране \"Подтверждение\" можно увидеть фактический заказ XMR.TO. Этот заказ - действителен в течение ограниченного времени. Обратный отсчёт можно увидеть на кнопке \"Трата\". - Курс обмена может отличаться от того, что был показан на предыдущих экранах.

                                                      -

                                                      Секретный ключ XMR.TO

                                                      +

                                                      SideShift.ai

                                                      +

                                                      SideShift.ai является сторонним сервисом, который помогает осуществлять обмен Monero на Bitcoin. + Мы используем API службы SideShift.ai для включения платежей с использованием Bitcoin в Monerujo. + Пожалуйста, посетите https://sideshift.ai, и решите, хотите ли вы использовать эту возможность. + Команда Monerujo не связана с SideShift.ai и не может помочь вам в работе с этой службой.

                                                      +

                                                      Курс обмена SideShift.ai

                                                      +

                                                      На экране \"Сумма\" отображаются текущие параметры службы SideShift.ai. + Здесь также отображается обменный курс, верхний и нижний предел BTC. Необходимо отметить, + что на данном этапе курс не гарантируется.

                                                      +

                                                      Заказ SideShift.ai

                                                      +

                                                      На экране \"Подтверждение\" можно увидеть фактический заказ SideShift.ai. Этот заказ + действителен в течение ограниченного времени. Обратный отсчёт можно увидеть на кнопке + траты \"Трата\". Курс обмена может отличаться от того, что был показан на предыдущих экранах.

                                                      +

                                                      Секретный ключ SideShift.ai

                                                      Так как Monerujo отвечает за ту часть транзакции, которая связана с Monero, для отслеживания - вашего заказа, которая связана с Bitcoin, можно использовать секретный ключ на домашней странице - XMR.TO.

                                                      -

                                                      Следует помнить о том, что такой секретный ключ действителен только в течение 24 часов после - начала транзакции!

                                                      -

                                                      Обратный отсчёт XMR.TO

                                                      -

                                                      Как только обратный отсчёт достигнет нулевой точки, вам понадобится получить от XMR.TO новое - предложение, вернувшись к предыдущему шагу, а затем к экрану \"Подтверждение\".

                                                      + вашего заказа, которая связана с Bitcoin, можно использовать секретный ключ на домашней странице + SideShift.ai.

                                                      +

                                                      Обратный отсчёт SideShift.ai

                                                      +

                                                      Как только обратный отсчёт достигнет нулевой точки, вам понадобится получить от SideShift.ai новое + предложение, вернувшись к предыдущему шагу, а затем к экрану \"Подтверждение\".

                                                      ]]>
                                                      Вы ввели Bitcoin адрес.
                                                      - Отправляйте XMR, получатель получит BTC, используя сервис XMR.TO + Отправляйте XMR, получатель получит BTC, используя сервис SideShift.ai ]]>
                                                      - Заказ XMR.TO + Заказ SideShift.ai %1$s BTC Ожидание подтверждения Ожидание платежа - Ошибка XMR.TO (%1$s) + Ошибка SideShift.ai (%1$s) BTC успешно отправлены! Запрос … Вы можете отправить %1$s — %2$s BTC.
                                                      - XMR.TO устанавливает курс обмена %3$s BTC в данный момент. + SideShift.ai устанавливает курс обмена %3$s BTC в данный момент. ]]>
                                                      Сумма до %1$s BTC будет отправлена немедленно! @@ -63,25 +63,25 @@ ✔ Интегрированный ID платежа Подготовка транзакции - Создание заказа XMR.TO - Запрос заказа XMR.TO + Создание заказа SideShift.ai + Запрос заказа SideShift.ai Подготовка транзакции Monero - Запрос параметров XMR.TO + Запрос параметров SideShift.ai - XMR.TO ОШИБКА + SideShift.ai ОШИБКА Код: %1$d Нажмите, чтобы повторить попытку Теперь мы застряли здесь! - Ой-ой! Кажется XMR.TO недоступен в данный момент! + Ой-ой! Кажется SideShift.ai недоступен в данный момент! %1$s BTC = %2$s XMR (Курс: %1$s BTC/XMR) - Посетите xmr.to для получения помощи & - Секретный ключ\nXMR.TO - XMR.TO секретный ключ + Посетите SideShift.ai для получения помощи & + Секретный ключ\nSideShift.ai + SideShift.ai секретный ключ Адрес получателя BTC Сумма @@ -152,9 +152,9 @@ Ключ просмотра Публичный адрес - XMR.TO ключ + Ключ Ключ просмотра скопирован в буфер обмена! - Ключ XMR.TO скопирован в буфер обмена! + Ключ скопирован в буфер обмена! Адрес кошелька скопирован в буфер обмена! ID транзакции копирован в буфер обмена! Копирование недоступно по соображениям безопасности! @@ -357,13 +357,10 @@ Резервное копирование успешно - Размещение URI платежа… - Не удалось разрешить URI платежа - URI разрешенного платежа ✔ Получатель - XMR.TO недоступен - повторите попытку позже + SideShift.ai недоступен - повторите попытку позже Сумма BTC выходит за доступные пределы Неверный или устаревший платежный URL Превышен лимит запросов @@ -391,7 +388,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -412,4 +409,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-sk/about.xml b/app/src/main/res/values-sk/about.xml index 6070da25..1f1a3ba5 100644 --- a/app/src/main/res/values-sk/about.xml +++ b/app/src/main/res/values-sk/about.xml @@ -27,8 +27,8 @@

                                                      Iné osobné data nie sú zbierané a spracovávané.

                                                      Pokiaľ používaš (voliteľnú) funkciu zmenárne, monerujo vyhľadá výmenný kurz cez verejné API portálu coinmarketcap.com. Pre viac detailov pozri zásady ochrany osobných údajov na https://coinmarketcap.com/privacy kde je uvedené aké dáta zbierajú

                                                      -

                                                      Pokiaľ používaš aplikáciu pre platby na BTC adresy, využívaš služby XMR.TO. - Pre viac detailov pozri zásady ochrany osobných údajov na https://xmr.to/ . Monerujo im posiela cieľovú BTC +

                                                      Pokiaľ používaš aplikáciu pre platby na BTC adresy, využívaš služby SideShift.ai. + Pre viac detailov pozri zásady ochrany osobných údajov na https://sideshift.ai/ . Monerujo im posiela cieľovú BTC addresu príjemcu a posielané množstvo. Tvoju IP bude tiež možné zaznamenať.

                                                      Povolenia

                                                        diff --git a/app/src/main/res/values-sk/help.xml b/app/src/main/res/values-sk/help.xml index a016871b..32105563 100644 --- a/app/src/main/res/values-sk/help.xml +++ b/app/src/main/res/values-sk/help.xml @@ -152,59 +152,47 @@
                                                        • OpenAlias pre XMR či BTC
                                                        • BTC adresu
                                                        • -
                                                        • bitcoin: URI (vrátane BIP70 ako bitpay)
                                                        • - Nezabúdajte, že posielanie BTC prebieha cez službu XMR.TO (detaily na https://xmr.to). Pozri sekciu nižšie o posielaní BTC

                                                          -

                                                          ID Platby

                                                          -

                                                          ID Platby môžeš použiť na identifikáciu platby medzi dvoma stranami. - Nie je to síce povinný, ale je to súkromný údaj. - Môžeš tak napríklad prelinkovať transakciu s tovarom, alebo so svojim biznisom.

                                                          + Nezabúdajte, že posielanie BTC prebieha cez službu SideShift.ai (detaily na https://sideshift.ai). Pozri sekciu nižšie o posielaní BTC

                                                          Posielanie BTC

                                                          -

                                                          XMR.TO

                                                          -

                                                          XMR.TO je služba tretej strany, ktorá umožňuje zámenu z Monero na Bitcoin. - Používame XMR.TO API na integráciu Bitcoin platieb do Monerujo. Prosím mrkni na - https://xmr.to a rozhodni sa sám, či je to naozaj služba, ktorú chceš používať. - Tím Monerujo nie je nijako spojený so službou XMR.TO a teda nemôže pomôcť s prípadnými problémami s touto službou.

                                                          -

                                                          XMR.TO Výmenný Kurz

                                                          -

                                                          Na obrazovke \"Množstvo\" uvidíš aktuálne parametre služby XMR.TO, vrátane aktuálneho kurzu BTC, hornej a dolnej hranice. - Podotýkame, že tento kurz nie je garantovaný. - Tiež tam možno vidieť množstvo BTC, ktoré budú zamieňané instantne bez čakania na potvrdenia v Monero sieti. - (pozri XMR.TO FAQ ). XMR.TO si neúčtuje ďalšie extra poplatky za transakciu. - No nie je to cool?

                                                          -

                                                          XMR.TO Objednávka

                                                          -

                                                          Na obrazovke \"Potvrdiť\", uvidíš aktuálnu objednávku v XMR.TO. Táto objednávka je platná iba obmedzený čas - ako si môžeš všimnúť odpočítavanie na tlačítku \"Minúť\". +

                                                          SideShift.ai

                                                          +

                                                          SideShift.ai je služba tretej strany, ktorá umožňuje zámenu z Monero na Bitcoin. + Používame SideShift.ai API na integráciu Bitcoin platieb do Monerujo. Prosím mrkni na + https://sideshift.ai a rozhodni sa sám, či je to naozaj služba, ktorú chceš používať. + Tím Monerujo nie je nijako spojený so službou SideShift.ai a teda nemôže pomôcť s prípadnými problémami s touto službou.

                                                          +

                                                          SideShift.ai Výmenný Kurz

                                                          +

                                                          Na obrazovke \"Množstvo\" uvidíš aktuálne parametre služby SideShift.ai, vrátane aktuálneho kurzu BTC, hornej a dolnej hranice. + Podotýkame, že tento kurz nie je garantovaný.

                                                          +

                                                          SideShift.ai Objednávka

                                                          +

                                                          Na obrazovke \"Potvrdiť\", uvidíš aktuálnu objednávku v SideShift.ai. Táto objednávka je platná iba obmedzený čas - ako si môžeš všimnúť odpočítavanie na tlačítku \"Minúť\". Výmenný kurz sa môže líšiť od toho, ktorý bol na predošlých obrazovkách.

                                                          -

                                                          XMR.TO Tajný Kľúč

                                                          +

                                                          SideShift.ai Tajný Kľúč

                                                          Keďže Monerujo dbá len na tú časť transakcie, ktorá pracuje s Monero, - tento XMR.TO Tajný Kľúč sa môže využívať na sledovanie Bitcoinovej časti transakcie a objednávky - na domovskej stránke XMR.TO

                                                          -

                                                          Ber na vedomie, že tento Tajný Kľúč je platný iba 24 hodín od začiatku transakcie!

                                                          -

                                                          XMR.TO Odpočítavanie!

                                                          -

                                                          Akonáhle odpočítavanie dosiahne nulu, budeš potrebovať nový kľúč z XMR.TO návratom na predchádzajúci krok a obrazovku \"Potvrdiť\" .

                                                          + tento SideShift.ai Tajný Kľúč sa môže využívať na sledovanie Bitcoinovej časti transakcie a objednávky + na domovskej stránke SideShift.ai

                                                          +

                                                          SideShift.ai Odpočítavanie!

                                                          +

                                                          Akonáhle odpočítavanie dosiahne nulu, budeš potrebovať nový kľúč z SideShift.ai návratom na predchádzajúci krok a obrazovku \"Potvrdiť\" .

                                                          ]]> Posielanie BTC -

                                                          XMR.TO

                                                          -

                                                          XMR.TO je služba tretej strany umožňujúca zámenu Monero na Bitcoin. - Používame XMR.TO API na integráciu Bitcoin platieb do Monerujo. Prosím mrkni na https://xmr.to - a rozhodni sa sám, či to je niečo, čo chceš používať. - Tím Monerujo nie je nijako spojený so službou XMR.TO a teda nemôže pomôcť s prípadnými problémami s touto službou.

                                                          -

                                                          XMR.TO Výmenný Kurz

                                                          -

                                                          na obrazovke \"Množstvo\" uvidíš aktuálne parametre služby XMR.TO, vrátane aktuálneho kurzu BTC, hornej a dolnej hranice. - Pamätaj, že tento kurz nie je garantovaný. Tiež tam možno vidieť množstvo BTC, - ktoré budú zamieňané instantne bez čakania na potvrdenia v Monero sieti. - (pozri XMR.TO FAQ ). XMR.TO si neúčtuje ďalšie extra poplatky za transakciu. - No nie je to cool?

                                                          -

                                                          XMR.TO Objednávka

                                                          -

                                                          Na obrazovke \"Potvrdiť\" , uvidíš aktuálnu objednávku v XMR.TO. - Táto objednávka je platná iba obmedzený čas - ako si môžeš všimnúť odpočítavanie na tlačítku \"Minúť\". +

                                                          SideShift.ai

                                                          +

                                                          SideShift.ai je služba tretej strany, ktorá umožňuje zámenu z Monero na Bitcoin. + Používame SideShift.ai API na integráciu Bitcoin platieb do Monerujo. Prosím mrkni na + https://sideshift.ai a rozhodni sa sám, či je to naozaj služba, ktorú chceš používať. + Tím Monerujo nie je nijako spojený so službou SideShift.ai a teda nemôže pomôcť s prípadnými problémami s touto službou.

                                                          +

                                                          SideShift.ai Výmenný Kurz

                                                          +

                                                          Na obrazovke \"Množstvo\" uvidíš aktuálne parametre služby SideShift.ai, vrátane aktuálneho kurzu BTC, hornej a dolnej hranice. + Podotýkame, že tento kurz nie je garantovaný.

                                                          +

                                                          SideShift.ai Objednávka

                                                          +

                                                          Na obrazovke \"Potvrdiť\", uvidíš aktuálnu objednávku v SideShift.ai. Táto objednávka je platná iba obmedzený čas - ako si môžeš všimnúť odpočítavanie na tlačítku \"Minúť\". Výmenný kurz sa môže líšiť od toho, ktorý bol na predošlých obrazovkách.

                                                          -

                                                          XMR.TO Tajný Kľúč

                                                          -

                                                          Keďže Monerujo dbá len na tú časť transakcie, ktorá pracuje s Monero, - tento XMR.TO Tajný Kľúč sa môže využívať na sledovanie Bitcoinovej časti transakcie a objednávky - na domovskej stránke XMR.TO

                                                          -

                                                          Ber na vedomie, že tento Tajný Kľúč je platný iba 24 hodín od začiatku transakcie!

                                                          -

                                                          XMR.TO Odpočítavanie!

                                                          -

                                                          Akonáhle odpočítavanie dosiahne nulu, budeš potrebovať nový kľúč z XMR.TO návratom na predchádzajúci krok a obrazovku \"Potvrdiť\" .

                                                          +

                                                          SideShift.ai Tajný Kľúč

                                                          +

                                                          Keďže Monerujo dbá len na tú časť transakcie, ktorá pracuje s Monero, + tento SideShift.ai Tajný Kľúč sa môže využívať na sledovanie Bitcoinovej časti transakcie a objednávky + na domovskej stránke SideShift.ai

                                                          +

                                                          SideShift.ai Odpočítavanie!

                                                          +

                                                          Akonáhle odpočítavanie dosiahne nulu, budeš potrebovať nový kľúč z SideShift.ai návratom na predchádzajúci krok a obrazovku \"Potvrdiť\" .

                                                          ]]>
                                                          Vložil si Bitcoin adresu.
                                                          - Pošleš XMR a adresát dostane BTC cez službu XMR.TO. + Pošleš XMR a adresát dostane BTC cez službu SideShift.ai. ]]>
                                                          - XMR.TO Objednávka + SideShift.ai Objednávka %1$s BTC Čaká na Potvrdenie Čakajúca Platba - XMR.TO Chyba (%1$s) + SideShift.ai Chyba (%1$s) BTC Odoslané! Zisťujem … Môžeš poslať %1$s — %2$s BTC.
                                                          - XMR.TO ti dáva výmenný kurz of %3$s BTC práve teraz. + SideShift.ai ti dáva výmenný kurz of %3$s BTC práve teraz. ]]>
                                                          čiastka do %1$s BTC bude odoslaná okamžite! @@ -63,25 +63,25 @@ ✔ Payment ID integrované Pripravujem transakciu - Vytváram objednávku na XMR.TO - Pýtam sa na objednávku XMR.TO + Vytváram objednávku na SideShift.ai + Pýtam sa na objednávku SideShift.ai Pripravujem Monero transakciu - Posielam XMR.TO parametre + Posielam SideShift.ai parametre - CHYBA XMR.TO + CHYBA SideShift.ai Kód chyby: %1$d Klepni pre opakovanie Uviazli sme tu! - Myslím, že služba XMR.TO nie je momentálne dostupná! + Myslím, že služba SideShift.ai nie je momentálne dostupná! %1$s BTC = %2$s XMR (Kurz: %1$s BTC/XMR) - Navštív XMR.TO pre podporu & tracking - Tajný kľúč\nXMR.TO - XMR.TO Tajný kľúč + Navštív SideShift.ai pre podporu & tracking + Tajný kľúč\nSideShift.ai + SideShift.ai Tajný kľúč Cieľová BTC Adresa Čiastka @@ -152,9 +152,9 @@ Prezerací Kľúč Verejná Adresa - Kľúč XMR.TO + Kľúč Prezerací Kľúč skopírovaný do schránky! - XMR.TO kľúč skopírovaný do schránky! + Kľúč skopírovaný do schránky! Adresa peňaženky skopírovaná do schránky! ID Transakcie skopírované do schránky! Kopírovanie vypnuté z bezpečnostných dôvodov! @@ -354,13 +354,10 @@ úspešne zálohované - Prekladám URI platby… - Neviem spracovať URI platby - URI platby ✔ Príjemca - XMR.TO je offline - skús neskôr + SideShift.ai je offline - skús neskôr Množstvo BTC je mimo rámca Neplatná alebo stará URL platby Príliš veľa požiadaviek @@ -388,7 +385,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -409,4 +406,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-sr/about.xml b/app/src/main/res/values-sr/about.xml index 3facb594..46992513 100644 --- a/app/src/main/res/values-sr/about.xml +++ b/app/src/main/res/values-sr/about.xml @@ -34,8 +34,8 @@ rate through the public API of coinmarketcap.com. See their privacy policy at https://coinmarketcap.com/privacy for details on how data in your requests is collected.

                                                          -

                                                          If you use the app to pay to BTC addresses, you will be using the XMR.TO service. - See their privacy policy at https://xmr.to/ for details. Monerujo send them the BTC +

                                                          If you use the app to pay to BTC addresses, you will be using the SideShift.ai service. + See their privacy policy at https://sideshift.ai/ for details. Monerujo send them the BTC destination address and amount. Your IP will also be collectable.

                                                          App Permissions

                                                            diff --git a/app/src/main/res/values-sr/help.xml b/app/src/main/res/values-sr/help.xml index 7c36802c..7d8f1169 100644 --- a/app/src/main/res/values-sr/help.xml +++ b/app/src/main/res/values-sr/help.xml @@ -159,66 +159,51 @@
                                                            • an OpenAlias for XMR or BTC
                                                            • a BTC address
                                                            • -
                                                            • a bitcoin: URI (including BIP70 like bitpay)
                                                            • - Please note, that sending BTC is processed through the XMR.TO service (see https://xmr.to + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai for details). See the section on sending BTC below.

                                                              -

                                                              Payment ID

                                                              -

                                                              You can use a Payment ID to identify the reason you sent Monero between two parties. This - is fully optional and private. For example it can allow a business to reconcile your - transaction with an item you bought.

                                                              Sending BTC

                                                              -

                                                              XMR.TO

                                                              -

                                                              XMR.TO is a third party service which acts as an exchange from Monero to Bitcoin. - We use the XMR.TO API to integrate Bitcoin payments into Monerujo. Please check out - https://xmr.to and decide for yourself if this is something you want to use. The Monerujo - Team is not associated with XMR.TO and cannot help you with their service.

                                                              -

                                                              XMR.TO Exchange Rate

                                                              -

                                                              On the \"Amount\" screen you will be shown the current parameters of the XMR.TO service. These +

                                                              SideShift.ai

                                                              +

                                                              SideShift.ai is a third party service which acts as an exchange from Monero to Bitcoin. + We use the SideShift.ai API to integrate Bitcoin payments into Monerujo. Please check out + https://sideshift.ai and decide for yourself if this is something you want to use. The Monerujo + Team is not associated with SideShift.ai and cannot help you with their service.

                                                              +

                                                              SideShift.ai Exchange Rate

                                                              +

                                                              On the \"Amount\" screen you will be shown the current parameters of the SideShift.ai service. These include the current exchange rate as well as upper and lower BTC limits. Note that this - rate is not guaranteed at this point. You will also see - the amount up to which the BTC transaction will be executed instantly without waiting for - XMR confirmations (see the XMR.TO FAQ for more details). Please note, that XMR.TO does - not charge extra fees - how cool is that?

                                                              -

                                                              XMR.TO Order

                                                              -

                                                              On the \"Confirm\" screen, you will see the actual XMR.TO order. This order is valid for + rate is not guaranteed at this point.

                                                              +

                                                              SideShift.ai Order

                                                              +

                                                              On the \"Confirm\" screen, you will see the actual SideShift.ai order. This order is valid for a limited time - you may notice a countdown on the \"Spend\" button. The exchange rate may be different to the indicative one shown on previous screens.

                                                              -

                                                              XMR.TO Secret Key

                                                              -

                                                              Since Monerujo only handles the Monero part of your transaction your XMR.TO secret key - can be used to track the Bitcoin part of your order on the XMR.TO homepage.

                                                              -

                                                              Please note, that this secret key is only valid for 24 hours after the transaction is - started!

                                                              -

                                                              XMR.TO Countdown!

                                                              -

                                                              Once the countdown reaches zero, you need to get a new quote from XMR.TO by going back to the +

                                                              SideShift.ai Secret Key

                                                              +

                                                              Since Monerujo only handles the Monero part of your transaction your SideShift.ai secret key + can be used to track the Bitcoin part of your order on the SideShift.ai homepage.

                                                              +

                                                              SideShift.ai Countdown!

                                                              +

                                                              Once the countdown reaches zero, you need to get a new quote from SideShift.ai by going back to the previous step and then coming back to the \"Confirm\" screen.

                                                              ]]> Sending BTC -

                                                              XMR.TO

                                                              -

                                                              XMR.TO is a third party service which acts as an exchange from Monero to Bitcoin. - We use the XMR.TO API to integrate Bitcoin payments into Monerujo. Please check out - https://xmr.to and decide for yourself if this is something you want to use. The Monerujo - Team is not associated with XMR.TO and cannot help you with their service.

                                                              -

                                                              XMR.TO Exchange Rate

                                                              -

                                                              On the \"Amount\" screen you will be shown the current parameters of the XMR.TO service. These +

                                                              SideShift.ai

                                                              +

                                                              SideShift.ai is a third party service which acts as an exchange from Monero to Bitcoin. + We use the SideShift.ai API to integrate Bitcoin payments into Monerujo. Please check out + https://sideshift.ai and decide for yourself if this is something you want to use. The Monerujo + Team is not associated with SideShift.ai and cannot help you with their service.

                                                              +

                                                              SideShift.ai Exchange Rate

                                                              +

                                                              On the \"Amount\" screen you will be shown the current parameters of the SideShift.ai service. These include the current exchange rate as well as upper and lower BTC limits. Note that this - rate is not guaranteed at this point. You will also see - the amount up to which the BTC transaction will be executed instantly without waiting for - XMR confirmations (see the XMR.TO FAQ for more details). Please note, that XMR.TO does - not charge extra fees - how cool is that?

                                                              -

                                                              XMR.TO Order

                                                              -

                                                              On the \"Confirm\" screen, you will see the actual XMR.TO order. This order is valid for + rate is not guaranteed at this point.

                                                              +

                                                              SideShift.ai Order

                                                              +

                                                              On the \"Confirm\" screen, you will see the actual SideShift.ai order. This order is valid for a limited time - you may notice a countdown on the \"Spend\" button. The exchange rate may be different to the indicative one shown on previous screens.

                                                              -

                                                              XMR.TO Secret Key

                                                              -

                                                              Since Monerujo only handles the Monero part of your transaction your XMR.TO secret key - can be used to track the Bitcoin part of your order on the XMR.TO homepage.

                                                              -

                                                              Please note, that this secret key is only valid for 24 hours after the transaction is - started!

                                                              -

                                                              XMR.TO Countdown!

                                                              -

                                                              Once the countdown reaches zero, you need to get a new quote from XMR.TO by going back to the +

                                                              SideShift.ai Secret Key

                                                              +

                                                              Since Monerujo only handles the Monero part of your transaction your SideShift.ai secret key + can be used to track the Bitcoin part of your order on the SideShift.ai homepage.

                                                              +

                                                              SideShift.ai Countdown!

                                                              +

                                                              Once the countdown reaches zero, you need to get a new quote from SideShift.ai by going back to the previous step and then coming back to the \"Confirm\" screen.

                                                              ]]>
                                                              diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 1d916875..3a44afdf 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -36,22 +36,22 @@ Ubacio/la si Bitkoin adresu.
                                                              - You'će poslati XMR a primalac će dobiti BTC koristeći XMR.TO servis. + You'će poslati XMR a primalac će dobiti BTC koristeći SideShift.ai servis. ]]>
                                                              - XMR.TO Nalog + SideShift.ai Nalog %1$s BTC Potvrda u toku Plaćanje u toku - XMR.TO Greška (%1$s) + SideShift.ai Greška (%1$s) BTC Poslato! Ispitivanje … Možeš poslati %1$s — %2$s BTC.
                                                              - XMR.TO daje ti devizni kurs od %3$s BTC trenutno. + SideShift.ai daje ti devizni kurs od %3$s BTC trenutno. ]]>
                                                              Sume do %1$s BTC biće poslate instantly! @@ -62,25 +62,25 @@ ✔ ID plaćanja integrisan Priprema tvoje transakcije - Kreiranje XMR.TO Nalog - Ispitivanje XMR.TO Nalog + Kreiranje SideShift.ai Nalog + Ispitivanje SideShift.ai Nalog Pripremanje Monero transakcije - Ispitivanje XMR.TO parametara + Ispitivanje SideShift.ai parametara - XMR.TO GREŠKA + SideShift.ai GREŠKA Kod: %1$d Takni za novi pokušaj Sada se zaglavismo! - Uh, XMR.TO izgleda da sad nije dostupan! + Uh, SideShift.ai izgleda da sad nije dostupan! %1$s BTC = %2$s XMR (Rate: %1$s BTC/XMR) - Poseti xmr.to za bekap & praćenje - Tajna šifra\nXMR.TO - XMR.TO Tajna šifra + Poseti SideShift.ai za bekap & praćenje + Tajna šifra\nSideShift.ai + SideShift.ai Tajna šifra Odredište BTC adrese Suma @@ -154,9 +154,9 @@ Vidna šifra Javna adresa - XMR.TO šifra + Šifra Vidna šifra kopirana u klipbord! - XMR.TO šifra kopirana u klipbord! + Šifra kopirana u klipbord! Adresa novčanika kopirna u klipbord! ID transakcije kopiran u klipord! Kopiranje je onemogućeno iz sigurnosnih razloga! @@ -353,12 +353,9 @@ Automatski označeni najbolji %1$d čvorovi Testiranje - Rešavanje plaćanja URI… - Nemoguće rešavanje plaćanja URI - rešavanje plaćanja URI ✔ Primalac - XMR.TO van mreže - pokušajte kasnije ponovo + SideShift.ai van mreže - pokušajte kasnije ponovo BTC iznos izvan granica Nevalidan ili neažuriran URL plaćanja Previše zahteva @@ -386,7 +383,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -407,4 +404,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-sv/about.xml b/app/src/main/res/values-sv/about.xml index ead84b64..d0e1a703 100644 --- a/app/src/main/res/values-sv/about.xml +++ b/app/src/main/res/values-sv/about.xml @@ -34,8 +34,8 @@ Läs deras sekretesspolicy på https://www.kraken.com/legal/privacy för detaljer om hur data i dina begär är samlade (speciellt sektionen "Information We Collect Automatically").

                                                              -

                                                              Om du använder appen för att skicka pengar till BTC-adresser, behöver du använda tjänsten XMR.TO. - Läs deras sekretesspolicy för detaljer på https://xmr.to/. Monerujo skickar de BTC- +

                                                              Om du använder appen för att skicka pengar till BTC-adresser, behöver du använda tjänsten SideShift.ai. + Läs deras sekretesspolicy för detaljer på https://sideshift.ai/. Monerujo skickar de BTC- destination adressen och mängden. Din IP kan även samlas.

                                                              App-behörigheter

                                                                diff --git a/app/src/main/res/values-sv/help.xml b/app/src/main/res/values-sv/help.xml index b4314d7c..fe21ebf8 100644 --- a/app/src/main/res/values-sv/help.xml +++ b/app/src/main/res/values-sv/help.xml @@ -135,63 +135,52 @@
                                                                • an OpenAlias for XMR or BTC
                                                                • a BTC address
                                                                • -
                                                                • a bitcoin: URI (including BIP70 like bitpay)
                                                                • - Please note, that sending BTC is processed through the XMR.TO service (see https://xmr.to + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai for details). See the section on sending BTC below.

                                                                  -

                                                                  Betalnings-ID

                                                                  -

                                                                  Du kan använda ett Betalnings-ID för att identifiera anledningen du skickat Monero till någon, - det är valfritt och privat. Till exempel tillåter det en affär att förknippa din transaktion - med något du köpt.

                                                                  Skicka BTC

                                                                  -

                                                                  XMR.TO

                                                                  -

                                                                  XMR.TO är en tredjeparts tjänst som byter ut Monero mot Bitcoin. Vi använder XMR.TO API:n - för att integrera Bitcoin betalningar i Monerujo. Vänligen besök https://xmr.to och bestäm +

                                                                  SideShift.ai

                                                                  +

                                                                  SideShift.ai är en tredjeparts tjänst som byter ut Monero mot Bitcoin. Vi använder SideShift.ai API:n + för att integrera Bitcoin betalningar i Monerujo. Vänligen besök https://sideshift.ai och bestäm för dig själv om det är någonting du vill använda. Monerujo laget är inte associerad med - XMR.TO och kan inte hjälpa dig med deras tjänst.

                                                                  -

                                                                  XMR.TO Växelkurs

                                                                  -

                                                                  På \"Mängd\"skärmen ser du de nuvarande parametrarna av XMR.TO tjänsten. Dessa innehåller den + SideShift.ai och kan inte hjälpa dig med deras tjänst.

                                                                  +

                                                                  SideShift.ai Växelkurs

                                                                  +

                                                                  På \"Mängd\"skärmen ser du de nuvarande parametrarna av SideShift.ai tjänsten. Dessa innehåller den nuvarande växelkursen samt de övre och lägre BTC gränserna. Vänligen notera att denna kursen - inte är garanterad just nu. Du kommer även att se gränsen över då BTC transaktioner utförs - omedelbart utan att vänta på XMR bekräftningar (se XMR.TO FAQ:n för mer detaljer). Vänligen - notera att XMR.TO inte tar en extra avgift - hur coolt är inte det?

                                                                  -

                                                                  XMR.TO Beställning

                                                                  -

                                                                  På \"Bekräfta\" skärmen, kommer du att se den faktiska XMR.TO beställningen. Den här beställningen + inte är garanterad just nu.

                                                                  +

                                                                  SideShift.ai Beställning

                                                                  +

                                                                  På \"Bekräfta\" skärmen, kommer du att se den faktiska SideShift.ai beställningen. Den här beställningen är giltig under en begränsad tid - du kan se en nedräkning på \"Spendera\" knappen. Växelkursen kan vara annorlunda från den indikativa, visad på tidigare skärmar..

                                                                  -

                                                                  XMR.TO Privatnyckel

                                                                  -

                                                                  Eftersom att Monerujo bara tar hand om Monero delen av din transaktion, kan din XMR.TO - privatnyckel användas för att spåra Bitcoin delen av din beställning på XMR.TO sidan.

                                                                  -

                                                                  Vänligen notera att denna privatnyckeln bara är giltig i 24 timmar efter att transaktionen - är påbörjad!

                                                                  -

                                                                  XMR.TO Nedräkning!

                                                                  -

                                                                  När nedräkningen når noll, behöver du skaffa ett nytt kostnadsförslag från XMR.TO genom att gå +

                                                                  SideShift.ai Privatnyckel

                                                                  +

                                                                  Eftersom att Monerujo bara tar hand om Monero delen av din transaktion, kan din SideShift.ai + privatnyckel användas för att spåra Bitcoin delen av din beställning på SideShift.ai sidan.

                                                                  +

                                                                  SideShift.ai Nedräkning!

                                                                  +

                                                                  När nedräkningen når noll, behöver du skaffa ett nytt kostnadsförslag från SideShift.ai genom att gå tillbaka till den tidigare skärmen och sedan gå till \"Bekräfta\"skärmen.

                                                                  ]]> XMR.TO är en tredjeparts tjänst som byter ut Monero mot Bitcoin. Vi använder XMR.TO API:n - för att integrera Bitcoin betalningar i Monerujo. Vänligen besök https://xmr.to och bestäm - för dig själv om det är någonting du vill använda. Monerujo laget är inte associerad med - XMR.TO och kan inte hjälpa dig med deras tjänst.

                                                                  -

                                                                  XMR.TO Växelkurs

                                                                  -

                                                                  På \"Mängd\"skärmen ser du de nuvarande parametrarna av XMR.TO tjänsten. Dessa innehåller den - nuvarande växelkursen samt de övre och lägre BTC gränserna. Vänligen notera att denna kursen - inte är garanterad just nu. Du kommer även att se gränsen över då BTC transaktioner utförs - omedelbart utan att vänta på XMR bekräftningar (se XMR.TO FAQ:n för mer detaljer). Vänligen - notera att XMR.TO inte tar en extra avgift - hur coolt är inte det?

                                                                  -

                                                                  XMR.TO Beställning

                                                                  -

                                                                  På \"Bekräfta\" skärmen, kommer du att se den faktiska XMR.TO beställningen. Den här beställningen - är giltig under en begränsad tid - du kan se en nedräkning på \"Spendera\" knappen. Växelkursen - kan vara annorlunda från den indikativa, visad på tidigare skärmar..

                                                                  -

                                                                  XMR.TO Privatnyckel

                                                                  -

                                                                  Eftersom att Monerujo bara tar hand om Monero delen av din transaktion, kan din XMR.TO - privatnyckel användas för att spåra Bitcoin delen av din beställning på XMR.TO sidan.

                                                                  -

                                                                  Vänligen notera att denna privatnyckeln bara är giltig i 24 timmar efter att transaktionen - är påbörjad!

                                                                  -

                                                                  XMR.TO Nedräkning!

                                                                  -

                                                                  När nedräkningen når noll, behöver du skaffa ett nytt kostnadsförslag från XMR.TO genom att gå - tillbaka till den tidigare skärmen och sedan gå till \"Bekräfta\"skärmen.

                                                                  +

                                                                  Skicka BTC

                                                                  +

                                                                  SideShift.ai

                                                                  +

                                                                  SideShift.ai är en tredjeparts tjänst som byter ut Monero mot Bitcoin. Vi använder SideShift.ai API:n + för att integrera Bitcoin betalningar i Monerujo. Vänligen besök https://sideshift.ai och bestäm + för dig själv om det är någonting du vill använda. Monerujo laget är inte associerad med + SideShift.ai och kan inte hjälpa dig med deras tjänst.

                                                                  +

                                                                  SideShift.ai Växelkurs

                                                                  +

                                                                  På \"Mängd\"skärmen ser du de nuvarande parametrarna av SideShift.ai tjänsten. Dessa innehåller den + nuvarande växelkursen samt de övre och lägre BTC gränserna. Vänligen notera att denna kursen + inte är garanterad just nu.

                                                                  +

                                                                  SideShift.ai Beställning

                                                                  +

                                                                  På \"Bekräfta\" skärmen, kommer du att se den faktiska SideShift.ai beställningen. Den här beställningen + är giltig under en begränsad tid - du kan se en nedräkning på \"Spendera\" knappen. Växelkursen + kan vara annorlunda från den indikativa, visad på tidigare skärmar..

                                                                  +

                                                                  SideShift.ai Privatnyckel

                                                                  +

                                                                  Eftersom att Monerujo bara tar hand om Monero delen av din transaktion, kan din SideShift.ai + privatnyckel användas för att spåra Bitcoin delen av din beställning på SideShift.ai sidan.

                                                                  +

                                                                  SideShift.ai Nedräkning!

                                                                  +

                                                                  När nedräkningen når noll, behöver du skaffa ett nytt kostnadsförslag från SideShift.ai genom att gå + tillbaka till den tidigare skärmen och sedan gå till \"Bekräfta\"skärmen.

                                                                  ]]>
                                                                  BTC-betalning aktiverad, tryck för mer info. Ledger aktiverat, tryck för mer info. - Du har angivit en Bitcoin-adress.
                                                                  Du kommer att skicka XMR och mottagaren får BTC via tjänsten XMR.TO.]]>
                                                                  + Du har angivit en Bitcoin-adress.
                                                                  Du kommer att skicka XMR och mottagaren får BTC via tjänsten SideShift.ai.]]>
                                                                  - XMR.TO-beställning + SideShift.ai-beställning %1$s BTC Väntar på bekräftelse Väntar på betalning - XMR.TO-fel (%1$s) + SideShift.ai-fel (%1$s) BTC skickades! Frågar … - Du kan skicka %1$s — %2$s BTC.
                                                                  XMR.TO ger dig just nu en växelkurs på %3$s BTC.]]>
                                                                  + Du kan skicka %1$s — %2$s BTC.
                                                                  SideShift.ai ger dig just nu en växelkurs på %3$s BTC.]]>
                                                                  Belopp upp till %1$s BTC skickas omedelbart!]]> Saldo: %2$s BTC (%1$s XMR) @@ -54,25 +54,25 @@ ✔ Betalnings-ID integrerat Förbereder din transaktion - Skapar XMR.TO-beställning - Frågar XMR.TO-beställningen + Skapar SideShift.ai-beställning + Frågar SideShift.ai-beställningen Förbereder Monero-transaktion - Frågar xmr.to-parametrar + Frågar SideShift.ai-parametrar - XMR.TO-FEL + SideShift.ai-FEL Kod: %1$d Tryck för att försöka igen Nu har vi kört fast! - Åh nej, XMR.TO verkar inte vara tillgänglig just nu! + Åh nej, SideShift.ai verkar inte vara tillgänglig just nu! %1$s BTC = %2$s XMR (Kurs: %1$s BTC/XMR) - Besök xmr.to för support & spårning - Hemlig nyckel\nXMR.TO - XMR.TO hemlig nyckel + Besök SideShift.ai för support & spårning + Hemlig nyckel\nSideShift.ai + SideShift.ai hemlig nyckel Måladress för BTC Belopp @@ -142,9 +142,9 @@ Granskningsnyckel Publik adress - XMR.TO-nyckel + Nyckel Granskningsnyckel kopierades till urklipp! - XMR.TO-nyckel kopierades till urklipp! + Nyckel kopierades till urklipp! Plånboksadress kopierades till urklipp! Transaktions-ID kopierades till urklipp! Kopiering är inaktiverad av säkerhetskäl! @@ -337,13 +337,10 @@ Automatically bookmarked best %1$d nodes Test - Resolving Payment URI… - Could not resolve Payment URI - Resolved Payment URI ✔ Mottagaren - XMR.TO offline - try again later + SideShift.ai offline - try again later BTC amount out of bounds Invalid or outdated Payment URL Too many requests @@ -371,7 +368,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -392,4 +389,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-uk/about.xml b/app/src/main/res/values-uk/about.xml index 2c0f1431..698fd60d 100644 --- a/app/src/main/res/values-uk/about.xml +++ b/app/src/main/res/values-uk/about.xml @@ -34,8 +34,8 @@ Перейдіть за адресою https://coinmarketcap.com/privacy для отримання детальної інформації про те, як збираються ваші персональні дані в запитах.

                                                                  Якщо ви використовуєте додаток для оплати за адресами BTC, - ви будете використовувати сервіс XMR.TO. Їх політика конфіденційності детально - викладена на веб-сайті https://xmr.to/. Monerujo відправляє їм адресу + ви будете використовувати сервіс SideShift.ai. Їх політика конфіденційності детально + викладена на веб-сайті https://sideshift.ai/. Monerujo відправляє їм адресу призначення BTC і суму. Ваш IP також вказується.

                                                                  Дозволи, необхідні додатку

                                                                    diff --git a/app/src/main/res/values-uk/help.xml b/app/src/main/res/values-uk/help.xml index 13c16adb..12b3ec93 100644 --- a/app/src/main/res/values-uk/help.xml +++ b/app/src/main/res/values-uk/help.xml @@ -146,67 +146,59 @@

                                                                    Це публічна адреса гаманця, на яку ви відправляєте Monero. Ви можете скопіювати її з буфера, відсканувати QR-код або ввести вручну. Слід тричі перевірити правильність цієї адреси, щоб не відправити монети на хибну адресу.

                                                                    -

                                                                    Крім XMR служба XMR.TO дозволяє відправляти BTC (подробиці шукайте на https://xmr.to). - Див. розділ по відправленню BTC нижче.

                                                                    -

                                                                    Ідентифікатор платежу (Payment ID)

                                                                    -

                                                                    Ви можете використовувати Payment ID для ідентифікації причини, по якій Monero передається - між двома сторонами. Це опційна і конфіденційна операція. Наприклад, - вона дозволяє комерсантам звірити вашу транзакцію з товаром, який був придбаний вами.

                                                                    +

                                                                    In addition to using an XMR address, you can also use +

                                                                      +
                                                                    • an OpenAlias for XMR or BTC
                                                                    • +
                                                                    • a BTC address
                                                                    • + + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai + for details). See the section on sending BTC below.

                                                                      +

                                                                      Відправлення BTC

                                                                      -

                                                                      XMR.TO

                                                                      -

                                                                      XMR.TO є стороннім сервісом, який допомагає здійснювати обмін Monero на Bitcoin. - Ми використовуємо API служби XMR.TO для включення платежів із впровадженням Bitcoin в Monerujo. - Будь ласка, Відвідайте https://xmr.to, і виріште, чи хочете ви використовувати цю можливість. - Команда Monerujo НЕ пов\'язана з XMR.TO і не може допомогти вам в роботі з цією службою.

                                                                      -

                                                                      Курс обміну XMR.TO

                                                                      -

                                                                      На екрані \"Сума\" відображаються поточні параметри служби XMR.TO. +

                                                                      SideShift.ai

                                                                      +

                                                                      SideShift.ai є стороннім сервісом, який допомагає здійснювати обмін Monero на Bitcoin. + Ми використовуємо API служби SideShift.ai для включення платежів із впровадженням Bitcoin в Monerujo. + Будь ласка, Відвідайте https://sideshift.ai, і виріште, чи хочете ви використовувати цю можливість. + Команда Monerujo НЕ пов\'язана з SideShift.ai і не може допомогти вам в роботі з цією службою.

                                                                      +

                                                                      Курс обміну SideShift.ai

                                                                      +

                                                                      На екрані \"Сума\" відображаються поточні параметри служби SideShift.ai. Тут також відображається обмінний курс, верхня і нижня межа BTC. Необхідно відзначити, - що на даному етапі курс не гарантується. Ви також зможете побачити суму, до якої - транзакція BTC буде проведена негайно, без очікування підтвердження з боку XMR - (Подробиці описані в XMR.TO FAQ). Крім цього, XMR.TO не вимагає сплати будь-якої - додаткової комісії. Круто?

                                                                      -

                                                                      Заявка XMR.TO

                                                                      -

                                                                      На екрані \"Підтвердження\" можна побачити заявку XMR.TO. Це заявка + що на даному етапі курс не гарантується.

                                                                      +

                                                                      Заявка SideShift.ai

                                                                      +

                                                                      На екрані \"Підтвердження\" можна побачити заявку SideShift.ai. Це заявка дійсна протягом обмеженого часу. Зворотний відлік можна побачити на кнопці витрати \"Витрата\". Курс обміну може відрізнятися від того, що був показаний на попередніх екранах.

                                                                      -

                                                                      Секретний ключ XMR.TO

                                                                      +

                                                                      Секретний ключ SideShift.ai

                                                                      Так як Monerujo відповідає за ту частину транзакції, яка пов$apos;язана з Monero, для відстеження вашого замовлення, яка пов$apos;язана з Bitcoin, можна використовувати секретний ключ на домашній сторінці - XMR.TO.

                                                                      -

                                                                      Слід пам\'ятати про те, що такий секретний ключ дійсний тільки протягом 24 годин після - створення транзакції!

                                                                      -

                                                                      Зворотній відлік XMR.TO

                                                                      -

                                                                      Як тільки зворотний відлік досягне нульової точки, вам знадобиться отримати від XMR.TO нову + SideShift.ai.

                                                                      +

                                                                      Зворотній відлік SideShift.ai

                                                                      +

                                                                      Як тільки зворотний відлік досягне нульової точки, вам знадобиться отримати від SideShift.ai нову заявку по обміну, повернувшись до попереднього кроку, а потім до екрану \"Підтвердження\".

                                                                      ]]> Відправлення BTC -

                                                                      XMR.TO

                                                                      -

                                                                      XMR.TO є стороннім сервісом, який допомагає здійснювати обмін Monero на Bitcoin. - Ми використовуємо API служби XMR.TO для інтеграції платежів з використанням Bitcoin в Monerujo. - Будь ласка, відвідайте https://xmr.to, і виріште, чи хочете ви використовувати цю можливість. - Команда Monerujo не пов$apos;язана з XMR.TO і не може допомогти вам в роботі з цією службою.

                                                                      -

                                                                      Курс обміну XMR.TO

                                                                      -

                                                                      На екрані вказівки \"Сума\" відображаються поточні параметри служби XMR.TO. - Тут також відображається обмінний курс, верхні і нижні межі BTC. Необхідно відзначити, - що на даному етапі курс не гарантується. Ви також зможете побачити суму, до якої - транзакція BTC повинна бути проведена негайно, без очікування підтвердження з боку XMR - (Подробиці описані в XMR.TO FAQ). Крім цього, XMR.TO не вимагає виплати будь-якої -        додаткової комісії. Круто?

                                                                      -

                                                                      Заявка XMR.TO

                                                                      -

                                                                      На екрані \"Підтвердження\" можна побачити фактичну заявку XMR.TO. Ця заявка -        дійсна протягом обмеженого часу. Зворотний відлік можна побачити на кнопці \"Витрата\". -        Курс обміну може відрізнятися від того, що був показаний на попередніх екранах.

                                                                      -        

                                                                      Секретний ключ XMR.TO

                                                                      +

                                                                      SideShift.ai

                                                                      +

                                                                      SideShift.ai є стороннім сервісом, який допомагає здійснювати обмін Monero на Bitcoin. + Ми використовуємо API служби SideShift.ai для включення платежів із впровадженням Bitcoin в Monerujo. + Будь ласка, Відвідайте https://sideshift.ai, і виріште, чи хочете ви використовувати цю можливість. + Команда Monerujo НЕ пов\'язана з SideShift.ai і не може допомогти вам в роботі з цією службою.

                                                                      +

                                                                      Курс обміну SideShift.ai

                                                                      +

                                                                      На екрані \"Сума\" відображаються поточні параметри служби SideShift.ai. + Тут також відображається обмінний курс, верхня і нижня межа BTC. Необхідно відзначити, + що на даному етапі курс не гарантується.

                                                                      +

                                                                      Заявка SideShift.ai

                                                                      +

                                                                      На екрані \"Підтвердження\" можна побачити заявку SideShift.ai. Це заявка + дійсна протягом обмеженого часу. Зворотний відлік можна побачити на кнопці + витрати \"Витрата\". Курс обміну може відрізнятися від того, що був показаний на попередніх екранах.

                                                                      +

                                                                      Секретний ключ SideShift.ai

                                                                      Так як Monerujo відповідає за ту частину транзакції, яка пов$apos;язана з Monero, для відстеження -   вашої заявки, яка пов$apos;язана з Bitcoin, можна використовувати секретний ключ на домашній сторінці -   XMR.TO.

                                                                      -

                                                                      Слід пам\'ятати про те, що такий секретний ключ дійсний тільки протягом 24 годин після -         початку транзакції!

                                                                      -

                                                                      Зворотній відлік XMR.TO

                                                                      -

                                                                      Як тільки зворотний відлік досягне нульової точки, вам знадобиться отримати від XMR.TO нову -         заявку, повернувшись до попереднього кроку, а потім до екрану \"Підтвердження\".

                                                                      + вашого замовлення, яка пов$apos;язана з Bitcoin, можна використовувати секретний ключ на домашній сторінці + SideShift.ai.

                                                                      +

                                                                      Зворотній відлік SideShift.ai

                                                                      +

                                                                      Як тільки зворотний відлік досягне нульової точки, вам знадобиться отримати від SideShift.ai нову + заявку по обміну, повернувшись до попереднього кроку, а потім до екрану \"Підтвердження\".

                                                                      ]]>
                                                                      Ви ввели Bitcoin адресу.
                                                                      - Надсилайте XMR, одержувач отримає BTC, використовуючи сервіс XMR.TO + Надсилайте XMR, одержувач отримає BTC, використовуючи сервіс SideShift.ai ]]>
                                                                      - Заявка XMR.TO + Заявка SideShift.ai %1$s BTC Очікування підтвердження Очікування платежу - Помилка XMR.TO (%1$s) + Помилка SideShift.ai (%1$s) BTC успішно відправлені! Запит … Ви можете відправити %1$s — %2$s BTC.
                                                                      - XMR.TO встановлює курс обміну %3$s BTC в даний момент. + SideShift.ai встановлює курс обміну %3$s BTC в даний момент. ]]>
                                                                      Сума до %1$s BTC буде відправлена негайно! @@ -63,25 +63,25 @@ ✔ Інтегрований ID платежу Підготовка транзакції - Створення заявки XMR.TO - Запит заявки XMR.TO + Створення заявки SideShift.ai + Запит заявки SideShift.ai Підготовка транзакції Monero - Запит параметрів XMR.TO + Запит параметрів SideShift.ai - XMR.TO ПОМИЛКА + SideShift.ai ПОМИЛКА Код: %1$d Натисніть, щоб повторити спробу Тепер ми застрягли тут! - Ой ой! Здається XMR.TO недоступний в даний момент! + Ой ой! Здається SideShift.ai недоступний в даний момент! %1$s BTC = %2$s XMR (Курс: %1$s BTC/XMR) - Відвідайте xmr.to для отримання допомоги & - Секретний ключ\nXMR.TO - XMR.TO секретний ключ + Відвідайте SideShift.ai для отримання допомоги & + Секретний ключ\nSideShift.ai + SideShift.ai секретний ключ Адреса отримувача BTC Сума @@ -152,9 +152,9 @@ Ключ перегляду Публічна адреса - XMR.TO ключ + Ключ Ключ перегляду скопійовано в буфер обміну! - Ключ XMR.TO скопійовано в буфер обміну! + Ключ скопійовано в буфер обміну! Адресу гаманця скопійовано в буфер обміну! ID транзакції скопійовано в буфер обміну! Копіювання недоступно з міркувань безпеки! @@ -357,13 +357,10 @@ Резервне копіювання успішне - Розміщення URI платежу… - Не вдалося вирішити URI платіж - URI вирішеного платежу ✔ Отримувач - XMR.TO недоступний - спробуйте пізніше + SideShift.ai недоступний - спробуйте пізніше Сума BTC виходить за допустимі ліміти Невірний або застарілий платіжний URL Перевищено кількість запитів @@ -391,7 +388,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -412,4 +409,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-zh-rCN/about.xml b/app/src/main/res/values-zh-rCN/about.xml index 449b3991..6832d172 100644 --- a/app/src/main/res/values-zh-rCN/about.xml +++ b/app/src/main/res/values-zh-rCN/about.xml @@ -24,8 +24,8 @@

                                                                      如果您使用交易的功能(可选),monerujo將通过coinmarketcap.com的公开 API 获取当前汇率。如果您想了解被收集的信息如何被使用,请访问 https://coinmarketcap.com/privacy 查看他们的隐私政策。

                                                                      -

                                                                      如果您想使用该App支付款项至比特币地址,您将使用 XMR.TO 所提供的服务。Monerujo - 将发送比特币的目标地址以及金额信息至XMR.TO,您的IP在此时也可能会被收集。请访问 https://xmr.to/ +

                                                                      如果您想使用该App支付款项至比特币地址,您将使用 SideShift.ai 所提供的服务。Monerujo + 将发送比特币的目标地址以及金额信息至SideShift.ai,您的IP在此时也可能会被收集。请访问 https://sideshift.ai/ 查看他们的隐私政策。

                                                                      应用程序权限

                                                                        diff --git a/app/src/main/res/values-zh-rCN/help.xml b/app/src/main/res/values-zh-rCN/help.xml index 427742a5..de084104 100644 --- a/app/src/main/res/values-zh-rCN/help.xml +++ b/app/src/main/res/values-zh-rCN/help.xml @@ -132,50 +132,42 @@
                                                                        • 门罗或比特币的OpenAlias
                                                                        • 一个比特币地址
                                                                        • -
                                                                        • 一个比特币的URI(如同bitpay,包含BIP70)
                                                                        • - 请注意,如果你发往的是比特币地址,那么钱包将自动使用XMR.TO的服务(详情可查看 https://xmr.to + 请注意,如果你发往的是比特币地址,那么钱包将自动使用SideShift.ai的服务(详情可查看 https://sideshift.ai ). 查看下面关于发送比特币的信息。

                                                                          -

                                                                          支付ID

                                                                          -

                                                                          你可以使用支付ID来查看交易的原因,该ID为非必填项,且其中信息不会对外公开。 - 举例来说,这可以让商业机构对照你的交易和你购买的物品。

                                                                          发送BTC

                                                                          -

                                                                          XMR.TO

                                                                          -

                                                                          XMR.TO 是一个可以将门罗币转换为比特币的第三方服务。 - 我们利用XMR.TO的API将其服务整合至Monerujo中。请参阅 https://xmr.to 后自行决定是否使用。 - Monerujo开发团队与XMR.TO无任何关联,无法为你解决其服务的问题。

                                                                          -

                                                                          XMR.TO 汇率

                                                                          -

                                                                          在 \"金额\" 的页面中你将看到 XMR.TO 服务的参数。包含了汇率以及BTC金额的上下限。 - 请注意这个时刻显示的汇率并不一定是最终的汇率。你也可以看到在无需等待门罗确认的情况下,可以立即执行的比特币交易金额上限。 - (详见 XMR.TO的FAQ以了解更多)。请注意XMR.TO并不收取额外的手续费用,是不是很棒呢?

                                                                          -

                                                                          XMR.TO 订单

                                                                          -

                                                                          在 \"确认\" 的页面中,你将可以看到正式的XMR.TO订单。这订单仅在一段时间內有效。 +

                                                                          SideShift.ai

                                                                          +

                                                                          SideShift.ai 是一个可以将门罗币转换为比特币的第三方服务。 + 我们利用SideShift.ai的API将其服务整合至Monerujo中。请参阅 https://sideshift.ai 后自行决定是否使用。 + Monerujo开发团队与SideShift.ai无任何关联,无法为你解决其服务的问题。

                                                                          +

                                                                          SideShift.ai 汇率

                                                                          +

                                                                          在 \"金额\" 的页面中你将看到 SideShift.ai 服务的参数。包含了汇率以及BTC金额的上下限。 + 请注意这个时刻显示的汇率并不一定是最终的汇率。

                                                                          +

                                                                          SideShift.ai 订单

                                                                          +

                                                                          在 \"确认\" 的页面中,你将可以看到正式的SideShift.ai订单。这订单仅在一段时间內有效。 你可以在 \"发送\" 的按钮上看到倒数计时。这时的汇率可能与前一个页面显示的不同。

                                                                          -

                                                                          XMR.TO 私钥

                                                                          -

                                                                          Monerujo仅处理交易中门罗币的部分,你可以在XMR.TO的首页上,通过XMR.TO密钥查询比特币部分的信息。

                                                                          -

                                                                          请注意,此密钥仅在交易发起的24小时內有效。

                                                                          -

                                                                          XMR.TO 倒数计时!

                                                                          -

                                                                          当倒数计时结束的时候,你将需要回到上一步,重新向XMR.TO寻求汇率报价后,再回到\"确认\"页面。

                                                                          +

                                                                          SideShift.ai 私钥

                                                                          +

                                                                          Monerujo仅处理交易中门罗币的部分,你可以在SideShift.ai的首页上,通过SideShift.ai密钥查询比特币部分的信息。

                                                                          +

                                                                          SideShift.ai 倒数计时!

                                                                          +

                                                                          当倒数计时结束的时候,你将需要回到上一步,重新向SideShift.ai寻求汇率报价后,再回到\"确认\"页面。

                                                                          ]]> 发送 BTC -

                                                                          XMR.TO

                                                                          -

                                                                          XMR.TO 是一个可以将门罗币转换为比特币的第三方服务。 - 我们利用XMR.TO的API将其服务整合至Monerujo中。请参阅 https://xmr.to 后自行决定是否使用。 - Monerujo开发团队与XMR.TO无任何关联,无法为你解决其服务的问题。

                                                                          -

                                                                          XMR.TO 汇率

                                                                          -

                                                                          在 \"金额\" 的页面中你将看到 XMR.TO 服务的参数。包含了汇率以及BTC金额的上下限。 - 请注意这个时刻显示的汇率并不一定是最终的汇率。你也可以看到在无需等待门罗确认的情况下,可以立即执行的比特币交易金额上限。 - (详见 XMR.TO的FAQ以了解更多)。请注意XMR.TO并不收取额外的手续费用,是不是很棒呢?

                                                                          -

                                                                          XMR.TO 订单

                                                                          -

                                                                          在 \"确认\" 的页面中,你将可以看到正式的XMR.TO订单。这订单仅在一段时间內有效。 +

                                                                          发送BTC

                                                                          +

                                                                          SideShift.ai

                                                                          +

                                                                          SideShift.ai 是一个可以将门罗币转换为比特币的第三方服务。 + 我们利用SideShift.ai的API将其服务整合至Monerujo中。请参阅 https://sideshift.ai 后自行决定是否使用。 + Monerujo开发团队与SideShift.ai无任何关联,无法为你解决其服务的问题。

                                                                          +

                                                                          SideShift.ai 汇率

                                                                          +

                                                                          在 \"金额\" 的页面中你将看到 SideShift.ai 服务的参数。包含了汇率以及BTC金额的上下限。 + 请注意这个时刻显示的汇率并不一定是最终的汇率。

                                                                          +

                                                                          SideShift.ai 订单

                                                                          +

                                                                          在 \"确认\" 的页面中,你将可以看到正式的SideShift.ai订单。这订单仅在一段时间內有效。 你可以在 \"发送\" 的按钮上看到倒数计时。这时的汇率可能与前一个页面显示的不同。

                                                                          -

                                                                          XMR.TO 私钥

                                                                          -

                                                                          Monerujo仅处理交易中门罗币的部分,你可以在XMR.TO的首页上,通过XMR.TO密钥查询比特币部分的信息。

                                                                          -

                                                                          请注意,此密钥仅在交易发起的24小时內有效。

                                                                          -

                                                                          XMR.TO 倒数计时!

                                                                          -

                                                                          当倒数计时结束的时候,你将需要回到上一步,重新向XMR.TO寻求汇率报价后,再回到\"确认\"页面。

                                                                          +

                                                                          SideShift.ai 私钥

                                                                          +

                                                                          Monerujo仅处理交易中门罗币的部分,你可以在SideShift.ai的首页上,通过SideShift.ai密钥查询比特币部分的信息。

                                                                          +

                                                                          SideShift.ai 倒数计时!

                                                                          +

                                                                          当倒数计时结束的时候,你将需要回到上一步,重新向SideShift.ai寻求汇率报价后,再回到\"确认\"页面。

                                                                          ]]>
                                                                          已支持Ledger硬件钱包,点此了解更多 您输入了一个比特币地址
                                                                          -您发送的门罗币将通过XMR.TO服务,转换为比特币发送给对方。 +您发送的门罗币将通过SideShift.ai服务,转换为比特币发送给对方。 ]]>
                                                                          - XMR.TO订单 + SideShift.ai订单 %1$s BTC 等待确认中 等待支付中 - XMR.TO错误(%1$s) + SideShift.ai错误(%1$s) 成功发送比特币! 查询中… 您可以发送%1$s — %2$s BTC.
                                                                          -此刻XMR.TO的汇率是%3$s BTC . +此刻SideShift.ai的汇率是%3$s BTC . ]]>
                                                                          至多%1$s BTC将会即刻发送! @@ -47,20 +47,20 @@ 余额: %2$s BTC (%1$s XMR) ✔ 支付ID已集成 正在为您的交易做准备工作 - 创建XMR.TO订单 - XMR.TO订单查询中 + 创建SideShift.ai订单 + SideShift.ai订单查询中 Monero交易准备中 - XMR.TO参数查询中 - XMR.TO错误 + SideShift.ai参数查询中 + SideShift.ai错误 代码: %1$d 再次尝试 我们遇到了困难! - 抱歉, XMR.TO服务现在似乎不可用 + 抱歉, SideShift.ai服务现在似乎不可用 %1$s BTC = %2$s XMR (Rate: %1$s BTC/XMR) - 访问xmr.to以获得更多支持 - 密钥\nXMR.TO - XMR.TO密钥 + 访问SideShift.ai以获得更多支持 + 密钥\nSideShift.ai + SideShift.ai密钥 比特币收款地址 金额 交易ID @@ -115,9 +115,9 @@ 不开通的相机权限的话便无法扫描QR码! 查阅密钥 公开地址 - XMR.TO密钥 + 密钥 查阅密钥已复制到剪贴板! - XMR.TO密钥已复制到剪贴板! + 密钥已复制到剪贴板! 钱包地址已复制到剪贴板! 交易ID已复制到剪贴板! 因安全原因,复制功能已被禁用! @@ -280,11 +280,8 @@ 网络扫描中… 已自动将最佳%1$d节点加入书签 测试 - 解析支付URI … - 无法解析支付URI - 支付URI已解析 ✔ 收款人 - XMR.TO离线-请稍后重试 + SideShift.ai离线-请稍后重试 比特币金额超出限制 无效或过期的支付URL 当前请求数过多 @@ -310,7 +307,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -331,4 +328,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values-zh-rTW/about.xml b/app/src/main/res/values-zh-rTW/about.xml index 515440a2..18860820 100644 --- a/app/src/main/res/values-zh-rTW/about.xml +++ b/app/src/main/res/values-zh-rTW/about.xml @@ -25,8 +25,8 @@

                                                                          倘若您有使用匯兌的功能(可選用),monerujo 將透過 coinmarketcap.com 的公開 API 抓取目前的匯率。若欲了解您要求的資料會如何被收集及使用,請至 https://coinmarketcap.com/privacy 觀看他們的隱私權政策。

                                                                          -

                                                                          若您想使用本 App 支付款項至 BTC 位址,您將使用 XMR.TO 所提供的服務。Monerujo - 將發送 BTC 目標位址以及金額至 XMR.TO,您的 IP 在此時也可能會被收集。詳情請至 https://xmr.to/ +

                                                                          若您想使用本 App 支付款項至 BTC 位址,您將使用 SideShift.ai 所提供的服務。Monerujo + 將發送 BTC 目標位址以及金額至 SideShift.ai,您的 IP 在此時也可能會被收集。詳情請至 https://sideshift.ai/ 觀看他們的隱私權政策。

                                                                          應用程式權限

                                                                            diff --git a/app/src/main/res/values-zh-rTW/help.xml b/app/src/main/res/values-zh-rTW/help.xml index 80c5a7ba..284f6297 100644 --- a/app/src/main/res/values-zh-rTW/help.xml +++ b/app/src/main/res/values-zh-rTW/help.xml @@ -120,50 +120,44 @@
                                                                            • 指向 XMR 或 BTC 地址的 OpenAlias
                                                                            • BTC 地址
                                                                            • -
                                                                            • 以 bitcoin: 開頭的 URI (包含像 bitpay 所使用的 BIP70 協議)
                                                                            • - 但請注意一件事情,發送 BTC 的功能是透過 XMR.TO 服務實現的,請參考下方的「發送 BTC」說明 - (詳見 https://xmr.to 以了解更多)。

                                                                              -

                                                                              付款 ID

                                                                              -

                                                                              你可以使用付款 ID 以幫助識別雙方的款項交易。這是選填項目並且完全為隱私保護的。 - 舉例來說這可以讓公司行號辨別你的這筆款項是用來支付某項購買的商品。

                                                                              + 但請注意一件事情,發送 BTC 的功能是透過 SideShift.ai 服務實現的,請參考下方的「發送 BTC」說明 + (詳見 https://sideshift.ai 以了解更多)。

                                                                              發送 BTC

                                                                              -

                                                                              XMR.TO

                                                                              -

                                                                              XMR.TO 是一個可以將 XMR 轉換為 BTC 的第三方服務。 - 我們利用 XMR.TO 的 API 將其服務整合至 Monerujo 中。請參閱 https://xmr.to 後自行決定是否使用。 - Monerujo 開發團隊與 XMR.TO 並無相關,無法為你解決其服務上的問題

                                                                              -

                                                                              XMR.TO 匯率

                                                                              -

                                                                              在「金額」的頁面中你將看到 XMR.TO 服務的參數。包含了匯率以及 BTC 金額的上下限。 - 請注意這個階段顯示的匯率並不是確定的。你也可以看到在多少金額之下可以直接發送 BTC,而不用等待 XMR 的確認。 - (詳見 XMR.TO 的 FAQ 以了解更多)。請注意 XMR.TO 並不額外收取手續費用,是不是很棒呢?

                                                                              -

                                                                              XMR.TO 訂單

                                                                              -

                                                                              在「確認」的頁面中,你將可以看到正式的 XMR.TO 訂單。這訂單僅在一段時間內有效。 +

                                                                              SideShift.ai

                                                                              +

                                                                              SideShift.ai 是一個可以將 XMR 轉換為 BTC 的第三方服務。 + 我們利用 SideShift.ai 的 API 將其服務整合至 Monerujo 中。請參閱 https://sideshift.ai 後自行決定是否使用。 + Monerujo 開發團隊與 SideShift.ai 並無相關,無法為你解決其服務上的問題

                                                                              +

                                                                              SideShift.ai 匯率

                                                                              +

                                                                              在「金額」的頁面中你將看到 SideShift.ai 服務的參數。包含了匯率以及 BTC 金額的上下限。 + 請注意這個階段顯示的匯率並不是確定的。

                                                                              +

                                                                              SideShift.ai 訂單

                                                                              +

                                                                              在「確認」的頁面中,你將可以看到正式的 SideShift.ai 訂單。這訂單僅在一段時間內有效。 你可以在「發送」的按鈕上看到倒數計時。這時的匯率可能與前一個頁面顯示的不同

                                                                              -

                                                                              XMR.TO 私鑰

                                                                              -

                                                                              由於 Monerujo 僅處理 Monero 的部分,你的 XMR.TO 金鑰將可用在 XMR.TO 的首頁上查詢追蹤 BTC 部分的交易狀況。

                                                                              -

                                                                              請注意,此金鑰僅在交易發起的 24 小時內有效。

                                                                              -

                                                                              XMR.TO 倒數計時!

                                                                              -

                                                                              當倒數計時歸零的時候,你將會需要回到上一步再回到「確認」頁面重新向 XMR.TO 尋求匯率報價

                                                                              +

                                                                              SideShift.ai 私鑰

                                                                              +

                                                                              由於 Monerujo 僅處理 Monero 的部分,你的 SideShift.ai 金鑰將可用在 SideShift.ai 的首頁上查詢追蹤 BTC 部分的交易狀況。

                                                                              +

                                                                              SideShift.ai 倒數計時!

                                                                              +

                                                                              當倒數計時歸零的時候,你將會需要回到上一步再回到「確認」頁面重新向 SideShift.ai 尋求匯率報價

                                                                              ]]> 發送 BTC -

                                                                              XMR.TO

                                                                              -

                                                                              XMR.TO 是一個可以將 XMR 轉換為 BTC 的第三方服務。 - 我們利用 XMR.TO 的 API 將其服務整合至 Monerujo 中。請參閱 https://xmr.to 後自行決定是否使用。 - Monerujo 開發團隊與 XMR.TO 並無相關,無法為你解決其服務上的問題

                                                                              -

                                                                              XMR.TO 匯率

                                                                              -

                                                                              在「金額」的頁面中你將看到 XMR.TO 服務的參數。包含了匯率以及 BTC 金額的上下限。 +

                                                                              SideShift.ai

                                                                              +

                                                                              SideShift.ai 是一個可以將 XMR 轉換為 BTC 的第三方服務。 + 我們利用 SideShift.ai 的 API 將其服務整合至 Monerujo 中。請參閱 https://sideshift.ai 後自行決定是否使用。 + Monerujo 開發團隊與 SideShift.ai 並無相關,無法為你解決其服務上的問題

                                                                              +

                                                                              SideShift.ai 匯率

                                                                              +

                                                                              在「金額」的頁面中你將看到 SideShift.ai 服務的參數。包含了匯率以及 BTC 金額的上下限。 請注意這個階段顯示的匯率並不是確定的。你也可以看到在多少金額之下可以直接發送 BTC,而不用等待 XMR 的確認。 - (詳見 XMR.TO 的 FAQ 以了解更多)。請注意 XMR.TO 並不額外收取手續費用,是不是很棒呢?

                                                                              -

                                                                              XMR.TO 訂單

                                                                              -

                                                                              在「確認」的頁面中,你將可以看到正式的 XMR.TO 訂單。這訂單僅在一段時間內有效。 + (詳見 SideShift.ai 的 FAQ 以了解更多)。請注意 SideShift.ai 並不額外收取手續費用,是不是很棒呢?

                                                                              +

                                                                              SideShift.ai 訂單

                                                                              +

                                                                              在「確認」的頁面中,你將可以看到正式的 SideShift.ai 訂單。這訂單僅在一段時間內有效。 你可以在「發送」的按鈕上看到倒數計時。這時的匯率可能與前一個頁面顯示的不同

                                                                              -

                                                                              XMR.TO 私鑰

                                                                              -

                                                                              由於 Monerujo 僅處理 Monero 的部分,你的 XMR.TO 金鑰將可用在 XMR.TO 的首頁上查詢追蹤 BTC 部分的交易狀況。

                                                                              +

                                                                              SideShift.ai 私鑰

                                                                              +

                                                                              由於 Monerujo 僅處理 Monero 的部分,你的 SideShift.ai 金鑰將可用在 SideShift.ai 的首頁上查詢追蹤 BTC 部分的交易狀況。

                                                                              請注意,此金鑰僅在交易發起的 24 小時內有效。

                                                                              -

                                                                              XMR.TO 倒數計時!

                                                                              -

                                                                              當倒數計時歸零的時候,你將會需要回到上一步再回到「確認」頁面重新向 XMR.TO 尋求匯率報價

                                                                              +

                                                                              SideShift.ai 倒數計時!

                                                                              +

                                                                              當倒數計時歸零的時候,你將會需要回到上一步再回到「確認」頁面重新向 SideShift.ai 尋求匯率報價

                                                                              ]]>
                                                                              你輸入了 Bitcoin 地址
                                                                              - 你將會發送 XMR 而收款方將會收到 BTC (由 XMR.TO 提供轉換) + 你將會發送 XMR 而收款方將會收到 BTC (由 SideShift.ai 提供轉換) ]]>
                                                                              - XMR.TO 訂單 + SideShift.ai 訂單 %1$s BTC 等待確認中 等待付款中 - XMR.TO 發生錯誤 (%1$s) + SideShift.ai 發生錯誤 (%1$s) BTC 已發送! 查詢中 … 你可發送 %1$s — %2$s BTC.
                                                                              - XMR.TO 提供的即時匯率為 %3$s BTC. + SideShift.ai 提供的即時匯率為 %3$s BTC. ]]>
                                                                              金額少於 %1$s BTC ,將會馬上發送! @@ -63,25 +63,25 @@ ✔ 已加入付款 ID 正在準備你的交易 - 建立 XMR.TO 訂單 - 查詢 XMR.TO 訂單 + 建立 SideShift.ai 訂單 + 查詢 SideShift.ai 訂單 正在準備 Monero 交易 - 正在查詢 XMR.TO 參數 + 正在查詢 SideShift.ai 參數 - XMR.TO 發生錯誤 + SideShift.ai 發生錯誤 錯誤代碼:%1$d 點選以重試 我們卡住了! - 不好,XMR.TO 現在似乎無法提供服務! + 不好,SideShift.ai 現在似乎無法提供服務! %1$s BTC = %2$s XMR (匯率:%1$s BTC/XMR) - 參訪 XMR.TO 以獲得支援及追蹤交易 - 私鑰\nXMR.TO - XMR.TO 私鑰 + 參訪 SideShift.ai 以獲得支援及追蹤交易 + 私鑰\nSideShift.ai + SideShift.ai 私鑰 目的地 BTC 地址 金額 @@ -153,9 +153,9 @@ 查看金鑰 公開地址 - XMR.TO 金鑰 + 金鑰 查看金鑰已複製至剪貼簿! - XMR.TO 金鑰已複製至剪貼簿! + SideShift.ai 金鑰已複製至剪貼簿! 錢包地址已複製至剪貼簿! 交易 ID 已複製至剪貼簿! 因安全因素已停用複製功能! @@ -353,12 +353,9 @@ 已自動加入 %1$d 個節點至書籤 測試節點 - 解析付款 URI … - 無法解析付款 URI - 已解析付款 URI ✔ 收款者 - XMR.TO 無法使用 - 請稍候再試 + SideShift.ai 無法使用 - 請稍候再試 BTC 金額超出限制 無效或過期的付款網址 請求過於頻繁 @@ -386,7 +383,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -407,4 +404,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/main/res/values/about.xml b/app/src/main/res/values/about.xml index c04c129f..f5de856d 100644 --- a/app/src/main/res/values/about.xml +++ b/app/src/main/res/values/about.xml @@ -34,8 +34,8 @@ rate through the public API of coinmarketcap.com. See their privacy policy at https://coinmarketcap.com/privacy for details on how data in your requests is collected.

                                                                              -

                                                                              If you use the app to pay to BTC addresses, you will be using the XMR.TO service. - See their privacy policy at https://xmr.to/ for details. Monerujo send them the BTC +

                                                                              If you use the app to pay to BTC addresses, you will be using the SideShift.ai service. + See their privacy policy at https://sideshift.ai/ for details. Monerujo send them the BTC destination address and amount. Your IP will also be collectable.

                                                                              App Permissions

                                                                                diff --git a/app/src/main/res/values/help.xml b/app/src/main/res/values/help.xml index c77e02a4..6d5de44d 100644 --- a/app/src/main/res/values/help.xml +++ b/app/src/main/res/values/help.xml @@ -159,66 +159,51 @@
                                                                                • an OpenAlias for XMR or BTC
                                                                                • a BTC address
                                                                                • -
                                                                                • a bitcoin: URI (including BIP70 like bitpay)
                                                                                • - Please note, that sending BTC is processed through the XMR.TO service (see https://xmr.to + Please note, that sending BTC is processed through the SideShift.ai service (see https://sideshift.ai for details). See the section on sending BTC below.

                                                                                  -

                                                                                  Payment ID

                                                                                  -

                                                                                  You can use a Payment ID to identify the reason you sent Monero between two parties. This - is fully optional and private. For example it can allow a business to reconcile your - transaction with an item you bought.

                                                                                  Sending BTC

                                                                                  -

                                                                                  XMR.TO

                                                                                  -

                                                                                  XMR.TO is a third party service which acts as an exchange from Monero to Bitcoin. - We use the XMR.TO API to integrate Bitcoin payments into Monerujo. Please check out - https://xmr.to and decide for yourself if this is something you want to use. The Monerujo - Team is not associated with XMR.TO and cannot help you with their service.

                                                                                  -

                                                                                  XMR.TO Exchange Rate

                                                                                  -

                                                                                  On the \"Amount\" screen you will be shown the current parameters of the XMR.TO service. These +

                                                                                  SideShift.ai

                                                                                  +

                                                                                  SideShift.ai is a third party service which acts as an exchange from Monero to Bitcoin. + We use the SideShift.ai API to integrate Bitcoin payments into Monerujo. Please check out + https://sideshift.ai and decide for yourself if this is something you want to use. The Monerujo + Team is not associated with SideShift.ai and cannot help you with their service.

                                                                                  +

                                                                                  SideShift.ai Exchange Rate

                                                                                  +

                                                                                  On the \"Amount\" screen you will be shown the current parameters of the SideShift.ai service. These include the current exchange rate as well as upper and lower BTC limits. Note that this - rate is not guaranteed at this point. You will also see - the amount up to which the BTC transaction will be executed instantly without waiting for - XMR confirmations (see the XMR.TO FAQ for more details). Please note, that XMR.TO does - not charge extra fees - how cool is that?

                                                                                  -

                                                                                  XMR.TO Order

                                                                                  -

                                                                                  On the \"Confirm\" screen, you will see the actual XMR.TO order. This order is valid for + rate is not guaranteed at this point.

                                                                                  +

                                                                                  SideShift.ai Order

                                                                                  +

                                                                                  On the \"Confirm\" screen, you will see the actual SideShift.ai order. This order is valid for a limited time - you may notice a countdown on the \"Spend\" button. The exchange rate may be different to the indicative one shown on previous screens.

                                                                                  -

                                                                                  XMR.TO Secret Key

                                                                                  -

                                                                                  Since Monerujo only handles the Monero part of your transaction your XMR.TO secret key - can be used to track the Bitcoin part of your order on the XMR.TO homepage.

                                                                                  -

                                                                                  Please note, that this secret key is only valid for 24 hours after the transaction is - started!

                                                                                  -

                                                                                  XMR.TO Countdown!

                                                                                  -

                                                                                  Once the countdown reaches zero, you need to get a new quote from XMR.TO by going back to the +

                                                                                  SideShift.ai Secret Key

                                                                                  +

                                                                                  Since Monerujo only handles the Monero part of your transaction your SideShift.ai secret key + can be used to track the Bitcoin part of your order on the SideShift.ai homepage.

                                                                                  +

                                                                                  SideShift.ai Countdown!

                                                                                  +

                                                                                  Once the countdown reaches zero, you need to get a new quote from SideShift.ai by going back to the previous step and then coming back to the \"Confirm\" screen.

                                                                                  ]]> Sending BTC -

                                                                                  XMR.TO

                                                                                  -

                                                                                  XMR.TO is a third party service which acts as an exchange from Monero to Bitcoin. - We use the XMR.TO API to integrate Bitcoin payments into Monerujo. Please check out - https://xmr.to and decide for yourself if this is something you want to use. The Monerujo - Team is not associated with XMR.TO and cannot help you with their service.

                                                                                  -

                                                                                  XMR.TO Exchange Rate

                                                                                  -

                                                                                  On the \"Amount\" screen you will be shown the current parameters of the XMR.TO service. These +

                                                                                  SideShift.ai

                                                                                  +

                                                                                  SideShift.ai is a third party service which acts as an exchange from Monero to Bitcoin. + We use the SideShift.ai API to integrate Bitcoin payments into Monerujo. Please check out + https://sideshift.ai and decide for yourself if this is something you want to use. The Monerujo + Team is not associated with SideShift.ai and cannot help you with their service.

                                                                                  +

                                                                                  SideShift.ai Exchange Rate

                                                                                  +

                                                                                  On the \"Amount\" screen you will be shown the current parameters of the SideShift.ai service. These include the current exchange rate as well as upper and lower BTC limits. Note that this - rate is not guaranteed at this point. You will also see - the amount up to which the BTC transaction will be executed instantly without waiting for - XMR confirmations (see the XMR.TO FAQ for more details). Please note, that XMR.TO does - not charge extra fees - how cool is that?

                                                                                  -

                                                                                  XMR.TO Order

                                                                                  -

                                                                                  On the \"Confirm\" screen, you will see the actual XMR.TO order. This order is valid for + rate is not guaranteed at this point.

                                                                                  +

                                                                                  SideShift.ai Order

                                                                                  +

                                                                                  On the \"Confirm\" screen, you will see the actual SideShift.ai order. This order is valid for a limited time - you may notice a countdown on the \"Spend\" button. The exchange rate may be different to the indicative one shown on previous screens.

                                                                                  -

                                                                                  XMR.TO Secret Key

                                                                                  -

                                                                                  Since Monerujo only handles the Monero part of your transaction your XMR.TO secret key - can be used to track the Bitcoin part of your order on the XMR.TO homepage.

                                                                                  -

                                                                                  Please note, that this secret key is only valid for 24 hours after the transaction is - started!

                                                                                  -

                                                                                  XMR.TO Countdown!

                                                                                  -

                                                                                  Once the countdown reaches zero, you need to get a new quote from XMR.TO by going back to the +

                                                                                  SideShift.ai Secret Key

                                                                                  +

                                                                                  Since Monerujo only handles the Monero part of your transaction your SideShift.ai secret key + can be used to track the Bitcoin part of your order on the SideShift.ai homepage.

                                                                                  +

                                                                                  SideShift.ai Countdown!

                                                                                  +

                                                                                  Once the countdown reaches zero, you need to get a new quote from SideShift.ai by going back to the previous step and then coming back to the \"Confirm\" screen.

                                                                                  ]]>
                                                                                  diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7f58bf4f..219f14d4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -37,22 +37,22 @@ You entered a Bitcoin address.
                                                                                  - You'll send XMR and the receiver will get BTC using the XMR.TO service. + You'll send XMR and the receiver will get BTC using the SideShift.ai service. ]]>
                                                                                  - XMR.TO Order + SideShift.ai Order %1$s BTC Confirmation Pending Payment Pending - XMR.TO Error (%1$s) + SideShift.ai Error (%1$s) BTC Sent! Querying … You can send %1$s — %2$s BTC.
                                                                                  - XMR.TO is giving you an exchange rate of %3$s BTC right now. + SideShift.ai is giving you an exchange rate of %3$s BTC right now. ]]>
                                                                                  Amounts up to %1$s BTC will be sent instantly! @@ -63,25 +63,25 @@ ✔ Payment ID integrated Preparing your transaction - Creating XMR.TO Order - Querying XMR.TO Order + Creating SideShift.ai Order + Querying SideShift.ai Order Preparing Monero Transaction - Querying XMR.TO parameters + Querying SideShift.ai parameters - XMR.TO ERROR + SideShift.ai ERROR Code: %1$d Touch to retry Now we\'re stuck here! - Uh-oh, XMR.TO does not seem be available right now! + Uh-oh, SideShift.ai does not seem be available right now! %1$s BTC = %2$s XMR (Rate: %1$s BTC/XMR) - Visit xmr.to for support & tracking - Secret Key\nXMR.TO - XMR.TO Secret Key + Visit SideShift.ai for support & tracking + Secret Key\nSideShift.ai + SideShift.ai Secret Key Destination BTC Address Amount @@ -156,9 +156,9 @@ View Key Public Address - XMR.TO Key + Key View Key copied to clipboard! - XMR.TO Key copied to clipboard! + Key copied to clipboard! Wallet Address copied to clipboard! Transaction ID copied to clipboard! Copy disabled for security reasons! @@ -401,17 +401,14 @@ Automatically bookmarked best %1$d nodes Test - Resolving Payment URI… - Could not resolve Payment URI - Resolved Payment URI ✔ Receiver - XMR.TO offline - try again later + SideShift.ai offline - try again later BTC amount out of bounds Invalid or outdated Payment URL Too many requests - XMR.TO Service Error + SideShift.ai Service Error EVERYTHING! @@ -438,7 +435,7 @@ Keep your seed safe The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj. Send Bitcoin - Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. + Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR. Nodes, your way Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own. Send with fingerprint @@ -459,4 +456,7 @@ Last Block: %1$d minutes ago Last Block: %1$d hours ago Last Block: %1$d days ago + + Cannot get quote + Check amount and try again diff --git a/app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiCreateOrderTest.java b/app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiCreateOrderTest.java new file mode 100644 index 00000000..de3a6e2f --- /dev/null +++ b/app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiCreateOrderTest.java @@ -0,0 +1,211 @@ +/* + * Copyright (c) 2017 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.m2049r.xmrwallet.service.shift.sideshift; + +import com.m2049r.xmrwallet.service.shift.ShiftException; +import com.m2049r.xmrwallet.service.shift.sideshift.api.CreateOrder; +import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi; +import com.m2049r.xmrwallet.service.shift.ShiftCallback; +import com.m2049r.xmrwallet.service.shift.sideshift.network.SideShiftApiImpl; + +import net.jodah.concurrentunit.Waiter; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import java.util.concurrent.TimeoutException; + +import okhttp3.OkHttpClient; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; + +import static org.junit.Assert.assertEquals; + +public class SideShiftApiCreateOrderTest { + + private MockWebServer mockWebServer; + + private SideShiftApi xmrToApi; + + private final OkHttpClient okHttpClient = new OkHttpClient(); + private Waiter waiter; + + @Mock + ShiftCallback mockOrderXmrToCallback; + + @Before + public void setUp() throws Exception { + mockWebServer = new MockWebServer(); + mockWebServer.start(); + + waiter = new Waiter(); + + MockitoAnnotations.initMocks(this); + + xmrToApi = new SideShiftApiImpl(okHttpClient, mockWebServer.url("/")); + } + + @After + public void tearDown() throws Exception { + mockWebServer.shutdown(); + } + + @Test + public void createOrder_shouldBePostMethod() + throws InterruptedException { + + xmrToApi.createOrder("01234567-89ab-cdef-0123-456789abcdef", "19y91nJyzXsLEuR7Nj9pc3o5SeHNc8A9RW", mockOrderXmrToCallback); + + RecordedRequest request = mockWebServer.takeRequest(); + assertEquals("POST", request.getMethod()); + } + + @Test + public void createOrder_shouldBeContentTypeJson() + throws InterruptedException { + + xmrToApi.createOrder("01234567-89ab-cdef-0123-456789abcdef", "19y91nJyzXsLEuR7Nj9pc3o5SeHNc8A9RW", mockOrderXmrToCallback); + + RecordedRequest request = mockWebServer.takeRequest(); + assertEquals("application/json; charset=utf-8", request.getHeader("Content-Type")); + } + + @Test + public void createOrder_shouldContainValidBody() + throws InterruptedException { + + final String validBody = "{\"settleAddress\":\"19y91nJyzXsLEuR7Nj9pc3o5SeHNc8A9RW\",\"type\":\"fixed\",\"quoteId\":\"01234567-89ab-cdef-0123-456789abcdef\"}"; + + xmrToApi.createOrder("01234567-89ab-cdef-0123-456789abcdef", "19y91nJyzXsLEuR7Nj9pc3o5SeHNc8A9RW", mockOrderXmrToCallback); + + RecordedRequest request = mockWebServer.takeRequest(); + String body = request.getBody().readUtf8(); + assertEquals(validBody, body); + } + + @Test + public void createOrder_wasSuccessfulShouldRespondWithOrder() + throws TimeoutException { + final double btcAmount = 1.23456789; + final String btcAddress = "19y91nJyzXsLEuR7Nj9pc3o5SeHNc8A9RW"; + final double xmrAmount = 0.6; + final String quoteId = "01234567-89ab-cdef-0123-456789abcdef"; + final String orderId = "09090909090909090911"; + MockResponse jsonMockResponse = new MockResponse().setBody( + createMockCreateOrderResponse(btcAmount,btcAddress, xmrAmount, quoteId, orderId)); + mockWebServer.enqueue(jsonMockResponse); + + xmrToApi.createOrder(quoteId, btcAddress, new ShiftCallback() { + @Override + public void onSuccess(final CreateOrder order) { + waiter.assertEquals(order.getBtcAmount(), btcAmount); + waiter.assertEquals(order.getBtcAddress(), btcAddress); + waiter.assertEquals(order.getQuoteId(), quoteId); + waiter.assertEquals(order.getOrderId(), orderId); + waiter.resume(); + } + + @Override + public void onError(final Exception e) { + waiter.fail(e); + waiter.resume(); + } + }); + waiter.await(); + } + + @Test + public void createOrder_wasNotSuccessfulShouldCallOnError() + throws TimeoutException { + mockWebServer.enqueue(new MockResponse().setResponseCode(500)); + xmrToApi.createOrder("01234567-89ab-cdef-0123-456789abcdef", "19y91nJyzXsLEuR7Nj9pc3o5SeHNc8A9RW", new ShiftCallback() { + @Override + public void onSuccess(final CreateOrder order) { + waiter.fail(); + waiter.resume(); + } + + @Override + public void onError(final Exception e) { + waiter.assertTrue(e instanceof ShiftException); + waiter.assertTrue(((ShiftException) e).getCode() == 500); + waiter.resume(); + } + + }); + waiter.await(); + } + + @Test + public void createOrder_malformedAddressShouldCallOnError() + throws TimeoutException { + mockWebServer.enqueue(new MockResponse(). + setResponseCode(500). + setBody("{\"error\":{\"message\":\"Invalid settleDestination\"}}")); + xmrToApi.createOrder("01234567-89ab-cdef-0123-456789abcdef", "xxx", new ShiftCallback() { + @Override + public void onSuccess(final CreateOrder order) { + waiter.fail(); + waiter.resume(); + } + + @Override + public void onError(final Exception e) { + waiter.assertTrue(e instanceof ShiftException); + ShiftException xmrEx = (ShiftException) e; + waiter.assertTrue(xmrEx.getCode() == 500); + waiter.assertNotNull(xmrEx.getError()); + waiter.assertEquals(xmrEx.getError().getErrorMsg(), "Invalid settleDestination"); + waiter.resume(); + } + + }); + waiter.await(); + } + + private String createMockCreateOrderResponse(final double btcAmount, final String btcAddress, + final double xmrAmount, + final String quoteId, final String orderId) { + + return "{\"createdAt\":\"1612705584613\"," + + "\"createdAtISO\":\"2021-02-07T13:46:24.613Z\"," + + "\"expiresAt\":\"1612706453080\"," + + "\"expiresAtISO\":\"2021-02-07T14:00:53.080Z\"," + + "\"depositAddress\":{" + + "\"address\":\"4Bh68jCUZGHbVu45zCVvtcMYesHuduwgajoQcdYRjUQcY6MNa8qd67vTfSNWdtrc33dDECzbPCJeQ8HbiopdeM7Ej8MBVLCYz6cVqy6utz\"," + + "\"paymentId\":\"dbe876f0374db1ff\"," + + "\"integratedAddress\":\"4Bh68jCUZGHbVu45zCVvtcMYesHuduwgajoQcdYRjUQcY6MNa8qd67vTfSNWdtrc33dDECzbPCJeQ8HbiopdeM7Ej8MBVLCYz6cVqy6utz\"" + + "}," + + "\"depositMethodId\":\"xmr\"," + + "\"id\":\"" + orderId + "\"," + + "\"orderId\":\"" + orderId + "\"," + + "\"settleAddress\":{" + + "\"address\":\"" + btcAddress + "\"" + + "}," + + "\"settleMethodId\":\"btc\"," + + "\"depositMax\":\"" + xmrAmount + "\"," + + "\"depositMin\":\"" + xmrAmount + "\"," + + "\"quoteId\":\"" + quoteId + "\"," + + "\"settleAmount\":\"" + btcAmount + "\"," + + "\"depositAmount\":\"" + xmrAmount + "\"," + + "\"deposits\":[]}"; + } +} \ No newline at end of file diff --git a/app/src/test/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiOrderParameterTest.java b/app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiOrderParameterTest.java similarity index 59% rename from app/src/test/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiOrderParameterTest.java rename to app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiOrderParameterTest.java index c4a9f98c..b085481a 100644 --- a/app/src/test/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiOrderParameterTest.java +++ b/app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiOrderParameterTest.java @@ -14,17 +14,16 @@ * limitations under the License. */ -package com.m2049r.xmrwallet.xmrto.network; +package com.m2049r.xmrwallet.service.shift.sideshift; -import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; -import com.m2049r.xmrwallet.xmrto.XmrToError; -import com.m2049r.xmrwallet.xmrto.XmrToException; -import com.m2049r.xmrwallet.xmrto.api.QueryOrderParameters; -import com.m2049r.xmrwallet.xmrto.api.XmrToApi; +import com.m2049r.xmrwallet.service.shift.ShiftException; +import com.m2049r.xmrwallet.service.shift.sideshift.api.QueryOrderParameters; +import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi; +import com.m2049r.xmrwallet.service.shift.ShiftCallback; +import com.m2049r.xmrwallet.service.shift.sideshift.network.SideShiftApiImpl; import net.jodah.concurrentunit.Waiter; -import org.json.JSONException; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -40,17 +39,17 @@ import okhttp3.mockwebserver.RecordedRequest; import static org.junit.Assert.assertEquals; -public class XmrToApiOrderParameterTest { +public class SideShiftApiOrderParameterTest { private MockWebServer mockWebServer; - private XmrToApi xmrToApi; + private SideShiftApi xmrToApi; - private OkHttpClient okHttpClient = new OkHttpClient(); + private final OkHttpClient okHttpClient = new OkHttpClient(); private Waiter waiter; @Mock - XmrToCallback mockParametersXmrToCallback; + ShiftCallback mockParametersXmrToCallback; @Before public void setUp() throws Exception { @@ -61,7 +60,7 @@ public class XmrToApiOrderParameterTest { MockitoAnnotations.initMocks(this); - xmrToApi = new XmrToApiImpl(okHttpClient, mockWebServer.url("/")); + xmrToApi = new SideShiftApiImpl(okHttpClient, mockWebServer.url("/")); } @After @@ -82,24 +81,20 @@ public class XmrToApiOrderParameterTest { @Test public void orderParameter_wasSuccessfulShouldRespondWithParameters() throws TimeoutException { - final boolean isZeroConfEnabled = true; - final double price = 0.015537; + final double rate = 0.015537; final double upperLimit = 20.0; final double lowerLimit = 0.001; - final double zeroConfMaxAmount = 0.1; MockResponse jsonMockResponse = new MockResponse().setBody( - createMockOrderParameterResponse(isZeroConfEnabled, price, upperLimit, lowerLimit, zeroConfMaxAmount)); + createMockOrderParameterResponse(rate, upperLimit, lowerLimit)); mockWebServer.enqueue(jsonMockResponse); - xmrToApi.queryOrderParameters(new XmrToCallback() { + xmrToApi.queryOrderParameters(new ShiftCallback() { @Override public void onSuccess(final QueryOrderParameters orderParameter) { waiter.assertEquals(orderParameter.getLowerLimit(), lowerLimit); waiter.assertEquals(orderParameter.getUpperLimit(), upperLimit); - waiter.assertEquals(orderParameter.getPrice(), price); - waiter.assertEquals(orderParameter.getZeroConfMaxAmount(), zeroConfMaxAmount); - waiter.assertEquals(orderParameter.isZeroConfEnabled(), isZeroConfEnabled); + waiter.assertEquals(orderParameter.getPrice(), rate); waiter.resume(); } @@ -116,7 +111,7 @@ public class XmrToApiOrderParameterTest { public void orderParameter_wasNotSuccessfulShouldCallOnError() throws TimeoutException { mockWebServer.enqueue(new MockResponse().setResponseCode(500)); - xmrToApi.queryOrderParameters(new XmrToCallback() { + xmrToApi.queryOrderParameters(new ShiftCallback() { @Override public void onSuccess(final QueryOrderParameters orderParameter) { waiter.fail(); @@ -125,8 +120,8 @@ public class XmrToApiOrderParameterTest { @Override public void onError(final Exception e) { - waiter.assertTrue(e instanceof XmrToException); - waiter.assertTrue(((XmrToException) e).getCode() == 500); + waiter.assertTrue(e instanceof ShiftException); + waiter.assertTrue(((ShiftException) e).getCode() == 500); waiter.resume(); } @@ -135,12 +130,12 @@ public class XmrToApiOrderParameterTest { } @Test - public void orderParameter_thirdPartyServiceNotAvailableShouldCallOnError() + public void orderParameter_SettleMethodInvalidShouldCallOnError() throws TimeoutException { mockWebServer.enqueue(new MockResponse(). - setResponseCode(503). - setBody("{\"error_msg\":\"third party service not available\",\"error\":\"XMRTO-ERROR-007\"}")); - xmrToApi.queryOrderParameters(new XmrToCallback() { + setResponseCode(500). + setBody("{\"error\":{\"message\":\"Settle method not found\"}}")); + xmrToApi.queryOrderParameters(new ShiftCallback() { @Override public void onSuccess(final QueryOrderParameters orderParameter) { waiter.fail(); @@ -149,12 +144,11 @@ public class XmrToApiOrderParameterTest { @Override public void onError(final Exception e) { - waiter.assertTrue(e instanceof XmrToException); - XmrToException xmrEx = (XmrToException) e; - waiter.assertTrue(xmrEx.getCode() == 503); + waiter.assertTrue(e instanceof ShiftException); + ShiftException xmrEx = (ShiftException) e; + waiter.assertTrue(xmrEx.getCode() == 500); waiter.assertNotNull(xmrEx.getError()); - waiter.assertEquals(xmrEx.getError().getErrorId(), XmrToError.Error.XMRTO_ERROR_007); - waiter.assertEquals(xmrEx.getError().getErrorMsg(), "third party service not available"); + waiter.assertEquals(xmrEx.getError().getErrorMsg(), "Settle method not found"); waiter.resume(); } @@ -163,17 +157,13 @@ public class XmrToApiOrderParameterTest { } private String createMockOrderParameterResponse( - final boolean isZeroConfEnabled, - final double price, + final double rate, final double upperLimit, - final double lowerLimit, - final double zeroConfMaxAmount) { - return "{\n" - + " \"zero_conf_enabled\": \"" + isZeroConfEnabled + "\",\n" - + " \"price\": \"" + price + "\",\n" - + " \"upper_limit\": \"" + upperLimit + "\",\n" - + " \"lower_limit\": \"" + lowerLimit + "\",\n" - + " \"zero_conf_max_amount\": \"" + zeroConfMaxAmount + "\"\n" - + "}"; + final double lowerLimit) { + return "{\n" + + " \"rate\": \"" + rate + "\",\n" + + " \"min\": \"" + lowerLimit + "\",\n" + + " \"max\": \"" + upperLimit + "\"\n" + + "}"; } } diff --git a/app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiQueryOrderStatusTest.java b/app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiQueryOrderStatusTest.java new file mode 100644 index 00000000..f4bd21f1 --- /dev/null +++ b/app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiQueryOrderStatusTest.java @@ -0,0 +1,192 @@ +/* + * Copyright (c) 2017 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.m2049r.xmrwallet.service.shift.sideshift; + +import com.m2049r.xmrwallet.service.shift.ShiftException; +import com.m2049r.xmrwallet.service.shift.sideshift.api.QueryOrderStatus; +import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi; +import com.m2049r.xmrwallet.service.shift.ShiftCallback; +import com.m2049r.xmrwallet.service.shift.sideshift.network.SideShiftApiImpl; + +import net.jodah.concurrentunit.Waiter; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import java.util.concurrent.TimeoutException; + +import okhttp3.OkHttpClient; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; + +import static org.junit.Assert.assertEquals; + +public class SideShiftApiQueryOrderStatusTest { + private MockWebServer mockWebServer; + + private SideShiftApi xmrToApi; + + private final OkHttpClient okHttpClient = new OkHttpClient(); + private Waiter waiter; + + @Mock + ShiftCallback mockQueryXmrToCallback; + + @Before + public void setUp() throws Exception { + mockWebServer = new MockWebServer(); + mockWebServer.start(); + + waiter = new Waiter(); + + MockitoAnnotations.initMocks(this); + + xmrToApi = new SideShiftApiImpl(okHttpClient, mockWebServer.url("/")); + } + + @After + public void tearDown() throws Exception { + mockWebServer.shutdown(); + } + + @Test + public void orderStatus_shouldBePostMethod() + throws InterruptedException { + + xmrToApi.queryOrderStatus("09090909090909090911", mockQueryXmrToCallback); + + RecordedRequest request = mockWebServer.takeRequest(); + assertEquals("GET", request.getMethod()); + } + + @Test + public void orderStatus_wasSuccessfulShouldRespondWithOrder() + throws TimeoutException { + + final String state = "settled"; + final String orderId = "09090909090909090911"; + + MockResponse jsonMockResponse = new MockResponse().setBody( + createMockQueryOrderResponse( + state, + orderId)); + mockWebServer.enqueue(jsonMockResponse); + + xmrToApi.queryOrderStatus(orderId, new ShiftCallback() { + @Override + public void onSuccess(final QueryOrderStatus orderStatus) { + waiter.assertEquals(orderStatus.getOrderId(), orderId); + waiter.assertEquals(orderStatus.getState(), QueryOrderStatus.State.SETTLED); + waiter.resume(); + } + + @Override + public void onError(final Exception e) { + waiter.fail(e); + waiter.resume(); + } + }); + waiter.await(); + } + + @Test + public void orderStatus_wasNotSuccessfulShouldCallOnError() + throws TimeoutException { + mockWebServer.enqueue(new MockResponse().setResponseCode(500)); + xmrToApi.queryOrderStatus("09090909090909090911", new ShiftCallback() { + @Override + public void onSuccess(final QueryOrderStatus orderStatus) { + waiter.fail(); + waiter.resume(); + } + + @Override + public void onError(final Exception e) { + waiter.assertTrue(e instanceof ShiftException); + waiter.assertTrue(((ShiftException) e).getCode() == 500); + waiter.resume(); + } + + }); + waiter.await(); + } + + @Test + public void orderStatus_orderNotFoundShouldCallOnError() + throws TimeoutException { + mockWebServer.enqueue(new MockResponse(). + setResponseCode(500). + setBody("{\"error\":{\"message\":\"Order not found\"}}")); + xmrToApi.queryOrderStatus("09090909090909090911", new ShiftCallback() { + @Override + public void onSuccess(final QueryOrderStatus orderStatus) { + waiter.fail(); + waiter.resume(); + } + + @Override + public void onError(final Exception e) { + waiter.assertTrue(e instanceof ShiftException); + ShiftException xmrEx = (ShiftException) e; + waiter.assertTrue(xmrEx.getCode() == 500); + waiter.assertNotNull(xmrEx.getError()); + waiter.assertEquals(xmrEx.getError().getErrorMsg(), "Order not found"); + waiter.resume(); + } + }); + waiter.await(); + } + + private String createMockQueryOrderResponse( + final String state, + final String orderId) { + return "{\"createdAt\":\"1612700947550\"," + + "\"createdAtISO\":\"2021-02-07T12:29:07.550Z\"," + + "\"expiresAt\":\"1612701817682\"," + + "\"expiresAtISO\":\"2021-02-07T12:43:37.682Z\"," + + "\"depositAddress\":" + + "{\"address\":\"4Bh68jCUZGHbVu45zCVvtcMYesHuduwgajoQcdYRjUQcY6MNa8qd67vTfSNWdtrc33dDECzbPCJeQ8HbiopdeM7Ej2DVsSohug9QxMJnN2\",\"paymentId\":\"3a151908242c6ed4\",\"integratedAddress\":\"4Bh68jCUZGHbVu45zCVvtcMYesHuduwgajoQcdYRjUQcY6MNa8qd67vTfSNWdtrc33dDECzbPCJeQ8HbiopdeM7Ej2DVsSohug9QxMJnN2\"}," + + "\"depositMethodId\":\"xmr\"," + + "\"id\":\"" + orderId + "\"," + + "\"orderId\":\"" + orderId + "\"," + + "\"settleAddress\":{\"address\":\"19y91nJyzXsLEuR7Nj9pc3o5SeHNc8A9RW\"}," + + "\"settleMethodId\":\"btc\"," + + "\"depositMax\":\"0.01\",\"depositMin\":\"0.01\"," + + "\"quoteId\":\"01234567-89ab-cdef-0123-456789abcdef\"," + + "\"settleAmount\":\"0.008108\"," + + "\"depositAmount\":\"0.01\"," + + "\"deposits\":[" + + "{\"createdAt\":\"1612701112634\",\"createdAtISO\":\"2021-02-07T12:31:52.634Z\"," + + "\"depositAmount\":\"0.01\"," + + "\"depositTx\":{\"type\":\"monero\",\"txHash\":\"a0b674f6033f5f5398dacea9dddedf8d12e35f46c29dfeaf5fac724d7c678fb7\",\"transferIndex\":0}," + + "\"depositId\":\"3e700e108fb31a4b1f7f\"," + + "\"id\":\"3e700e108fb31a4b1f7f\"," + + "\"status\":\"" + state + "\"," + + "\"refundAddress\":null,\"refundTx\":null," + + "\"settleAmount\":\"0.008108\"," + + "\"settleRate\":\"0.810756\"," + + "\"settleTx\":{\"type\":\"bitcoin\",\"txHash\":\"7bd5d0c3daac6a087ddf81411c8135fae55078334780debe47df775d596d4561\"}," + + "\"orderId\":\"" + orderId + "\"" + + "}" + // deposits[0] + "]" + // deposits + "}"; + } +} \ No newline at end of file diff --git a/app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiRequestQuoteTest.java b/app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiRequestQuoteTest.java new file mode 100644 index 00000000..0b4eae02 --- /dev/null +++ b/app/src/test/java/com/m2049r/xmrwallet/service/shift/sideshift/SideShiftApiRequestQuoteTest.java @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2017 m2049r et al. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.m2049r.xmrwallet.service.shift.sideshift; + +import com.m2049r.xmrwallet.service.shift.ShiftCallback; +import com.m2049r.xmrwallet.service.shift.ShiftError; +import com.m2049r.xmrwallet.service.shift.ShiftException; +import com.m2049r.xmrwallet.service.shift.sideshift.api.RequestQuote; +import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi; +import com.m2049r.xmrwallet.service.shift.sideshift.network.SideShiftApiImpl; + +import net.jodah.concurrentunit.Waiter; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import java.util.concurrent.TimeoutException; + +import okhttp3.OkHttpClient; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; + +import static org.junit.Assert.assertEquals; + +public class SideShiftApiRequestQuoteTest { + + private MockWebServer mockWebServer; + + private SideShiftApi xmrToApi; + + private final OkHttpClient okHttpClient = new OkHttpClient(); + private Waiter waiter; + + @Mock + ShiftCallback mockXmrToCallback; + + @Before + public void setUp() throws Exception { + mockWebServer = new MockWebServer(); + mockWebServer.start(); + + waiter = new Waiter(); + + MockitoAnnotations.initMocks(this); + + xmrToApi = new SideShiftApiImpl(okHttpClient, mockWebServer.url("/")); + } + + @After + public void tearDown() throws Exception { + mockWebServer.shutdown(); + } + + @Test + public void requestQuote_shouldBePostMethod() + throws InterruptedException { + + xmrToApi.requestQuote(1.01, mockXmrToCallback); + + RecordedRequest request = mockWebServer.takeRequest(); + assertEquals("POST", request.getMethod()); + } + + @Test + public void requestQuote_shouldBeContentTypeJson() + throws InterruptedException { + + xmrToApi.requestQuote(1.01, mockXmrToCallback); + + RecordedRequest request = mockWebServer.takeRequest(); + assertEquals("application/json; charset=utf-8", request.getHeader("Content-Type")); + } + + @Test + public void requestQuote_shouldContainValidBody() throws InterruptedException { + + final String validBody = "{\"depositAmount\":\"1.01\",\"settleMethod\":\"btc\",\"depositMethod\":\"xmr\"}"; + xmrToApi.requestQuote(1.01, mockXmrToCallback); + + RecordedRequest request = mockWebServer.takeRequest(); + String body = request.getBody().readUtf8(); + assertEquals(validBody, body); + } + + @Test + public void requestQuote_wasSuccessfulShouldRespondWithQuote() + throws TimeoutException { + final double xmrAmount = 1.01; + final double rate = 0.00397838; + final String uuid = "66fc0749-f320-4361-b0fb-7873576cba67"; + MockResponse jsonMockResponse = new MockResponse().setBody( + createMockRequestQuoteResponse(xmrAmount, rate, uuid)); + mockWebServer.enqueue(jsonMockResponse); + + xmrToApi.requestQuote(xmrAmount, new ShiftCallback() { + @Override + public void onSuccess(final RequestQuote quote) { + waiter.assertEquals(quote.getBtcAmount(), xmrAmount * rate); + waiter.assertEquals(quote.getXmrAmount(), xmrAmount); + waiter.assertEquals(quote.getId(), uuid); + waiter.resume(); + } + + @Override + public void onError(final Exception e) { + waiter.fail(e); + waiter.resume(); + } + }); + waiter.await(); + } + + @Test + public void requestQuote_wasNotSuccessfulShouldCallOnError() + throws TimeoutException { + mockWebServer.enqueue(new MockResponse().setResponseCode(500)); + xmrToApi.requestQuote(1.01, new ShiftCallback() { + @Override + public void onSuccess(final RequestQuote quote) { + waiter.fail(); + waiter.resume(); + } + + @Override + public void onError(final Exception e) { + waiter.assertTrue(e instanceof ShiftException); + waiter.assertTrue(((ShiftException) e).getCode() == 500); + waiter.resume(); + } + + }); + waiter.await(); + } + + @Test + public void requestQuote_AmountTooHighShouldCallOnError() + throws TimeoutException { + mockWebServer.enqueue(new MockResponse(). + setResponseCode(500). + setBody("{\"error\":{\"message\":\"Amount too high\"}}")); + xmrToApi.requestQuote(1000, new ShiftCallback() { + @Override + public void onSuccess(final RequestQuote quote) { + waiter.fail(); + waiter.resume(); + } + + @Override + public void onError(final Exception e) { + waiter.assertTrue(e instanceof ShiftException); + ShiftException xmrEx = (ShiftException) e; + waiter.assertTrue(xmrEx.getCode() == 500); + waiter.assertNotNull(xmrEx.getError()); + waiter.assertEquals(xmrEx.getError().getErrorType(), ShiftError.Error.SERVICE); + waiter.assertEquals(xmrEx.getError().getErrorMsg(), "Amount too high"); + waiter.resume(); + } + + }); + waiter.await(); + } + + private String createMockRequestQuoteResponse(final double xmrAmount, final double rate, + final String uuid) { + + return "{\n" + + "\"createdAt\":\"2021-02-04T13:09:14.484Z\",\n" + + "\"depositAmount\":\"" + xmrAmount + "\",\n" + + "\"depositMethod\":\"xmr\",\n" + + "\"expiresAt\":\"2021-02-04T13:24:14.484Z\",\n" + + "\"id\":\"" + uuid + "\",\n" + + "\"rate\":\"" + rate + "\",\n" + + "\"settleAmount\":\"" + (xmrAmount * rate) + "\",\n" + + "\"settleMethod\":\"btc\"\n" + + "}"; + } +} \ No newline at end of file diff --git a/app/src/test/java/com/m2049r/xmrwallet/util/HelperTest.java b/app/src/test/java/com/m2049r/xmrwallet/util/HelperTest.java index 05a9431c..d4c9ab77 100644 --- a/app/src/test/java/com/m2049r/xmrwallet/util/HelperTest.java +++ b/app/src/test/java/com/m2049r/xmrwallet/util/HelperTest.java @@ -1,7 +1,25 @@ +/* + * Copyright (c) 2017 m2049r + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.m2049r.xmrwallet.util; import org.junit.Test; +import java.math.BigDecimal; + import static org.junit.Assert.assertTrue; public class HelperTest { @@ -71,4 +89,11 @@ public class HelperTest { assertTrue(s.equals("1.00")); } + @Test + public void testGetDisplayAmount() { + assertTrue("0.000000051".equals(Helper.getDisplayAmount(0.000000051))); + assertTrue("1.000000051".equals(Helper.getDisplayAmount(1.000000051))); + assertTrue("1.0".equals(Helper.getDisplayAmount(1d))); + assertTrue("0.0".equals(Helper.getDisplayAmount(0d))); + } } diff --git a/app/src/test/java/com/m2049r/xmrwallet/util/UserNoteTest.java b/app/src/test/java/com/m2049r/xmrwallet/util/UserNoteTest.java index 28cd4db9..126968e0 100644 --- a/app/src/test/java/com/m2049r/xmrwallet/util/UserNoteTest.java +++ b/app/src/test/java/com/m2049r/xmrwallet/util/UserNoteTest.java @@ -29,7 +29,8 @@ public class UserNoteTest { @Test public void createFromTxNote_noNote() { UserNotes userNotes = new UserNotes("{xmrto-iyrpxU,0.009BTC,mjn127C5wRQCULksMYMFHLp9UTdQuCfbZ9}"); - assertTrue("xmrto-iyrpxU".equals(userNotes.xmrtoKey)); + assertTrue("xmrto".equals(userNotes.xmrtoTag)); + assertTrue("iyrpxU".equals(userNotes.xmrtoKey)); assertTrue("0.009".equals(userNotes.xmrtoAmount)); assertTrue("mjn127C5wRQCULksMYMFHLp9UTdQuCfbZ9".equals(userNotes.xmrtoDestination)); assertTrue(userNotes.note.isEmpty()); @@ -38,7 +39,8 @@ public class UserNoteTest { @Test public void createFromTxNote_withNote() { UserNotes userNotes = new UserNotes("{xmrto-iyrpxU,0.009BTC,mjn127C5wRQCULksMYMFHLp9UTdQuCfbZ9} aNote"); - assertTrue("xmrto-iyrpxU".equals(userNotes.xmrtoKey)); + assertTrue("xmrto".equals(userNotes.xmrtoTag)); + assertTrue("iyrpxU".equals(userNotes.xmrtoKey)); assertTrue("0.009".equals(userNotes.xmrtoAmount)); assertTrue("mjn127C5wRQCULksMYMFHLp9UTdQuCfbZ9".equals(userNotes.xmrtoDestination)); assertTrue("aNote".equals(userNotes.note)); @@ -47,22 +49,13 @@ public class UserNoteTest { @Test public void createFromTxNote_withNoteNoSpace() { UserNotes userNotes = new UserNotes("{xmrto-iyrpxU,0.009BTC,mjn127C5wRQCULksMYMFHLp9UTdQuCfbZ9}aNote"); - assertTrue("xmrto-iyrpxU".equals(userNotes.xmrtoKey)); + assertTrue("xmrto".equals(userNotes.xmrtoTag)); + assertTrue("iyrpxU".equals(userNotes.xmrtoKey)); assertTrue("0.009".equals(userNotes.xmrtoAmount)); assertTrue("mjn127C5wRQCULksMYMFHLp9UTdQuCfbZ9".equals(userNotes.xmrtoDestination)); assertTrue("aNote".equals(userNotes.note)); } - @Test - public void createFromTxNote_brokenA() { - String brokenNote = "{mrto-iyrpxU,0.009BTC,mjn127C5wRQCULksMYMFHLp9UTdQuCfbZ9}"; - UserNotes userNotes = new UserNotes(brokenNote); - assertNull(userNotes.xmrtoKey); - assertNull(userNotes.xmrtoAmount); - assertNull(userNotes.xmrtoDestination); - assertTrue(brokenNote.equals(userNotes.note)); - } - @Test public void createFromTxNote_brokenB() { String brokenNote = "{xmrto-iyrpxU,0.009BTC,mjn127C5wRQCULksMYMFHLp9UTdQuCfbZ9"; diff --git a/app/src/test/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiCreateOrderTest.java b/app/src/test/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiCreateOrderTest.java deleted file mode 100644 index 2ae21c9e..00000000 --- a/app/src/test/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiCreateOrderTest.java +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright (c) 2017 m2049r et al. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.m2049r.xmrwallet.xmrto.network; - -import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; -import com.m2049r.xmrwallet.xmrto.XmrToError; -import com.m2049r.xmrwallet.xmrto.XmrToException; -import com.m2049r.xmrwallet.xmrto.api.CreateOrder; -import com.m2049r.xmrwallet.xmrto.api.XmrToApi; - -import net.jodah.concurrentunit.Waiter; - -import org.json.JSONException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import java.util.concurrent.TimeoutException; - -import okhttp3.OkHttpClient; -import okhttp3.mockwebserver.MockResponse; -import okhttp3.mockwebserver.MockWebServer; -import okhttp3.mockwebserver.RecordedRequest; - -import static org.junit.Assert.assertEquals; - -public class XmrToApiCreateOrderTest { - - private MockWebServer mockWebServer; - - private XmrToApi xmrToApi; - - private OkHttpClient okHttpClient = new OkHttpClient(); - private Waiter waiter; - - @Mock - XmrToCallback mockOrderXmrToCallback; - - @Before - public void setUp() throws Exception { - mockWebServer = new MockWebServer(); - mockWebServer.start(); - - waiter = new Waiter(); - - MockitoAnnotations.initMocks(this); - - xmrToApi = new XmrToApiImpl(okHttpClient, mockWebServer.url("/")); - } - - @After - public void tearDown() throws Exception { - mockWebServer.shutdown(); - } - - @Test - public void createOrder_shouldBePostMethod() - throws InterruptedException { - - xmrToApi.createOrder(0.5, "btcsomething", mockOrderXmrToCallback); - - RecordedRequest request = mockWebServer.takeRequest(); - assertEquals("POST", request.getMethod()); - } - - @Test - public void createOrder_shouldBeContentTypeJson() - throws InterruptedException { - - xmrToApi.createOrder(0.5, "19y91nJyzXsLEuR7Nj9pc3o5SeHNc8A9RW", mockOrderXmrToCallback); - - RecordedRequest request = mockWebServer.takeRequest(); - assertEquals("application/json; charset=utf-8", request.getHeader("Content-Type")); - } - - @Test - public void createOrder_shouldContainValidBody() - throws InterruptedException { - - final String validBody = "{\"amount\":0.1,\"amount_currency\":\"BTC\",\"btc_dest_address\":\"19y91nJyzXsLEuR7Nj9pc3o5SeHNc8A9RW\"}"; - - xmrToApi.createOrder(0.1, "19y91nJyzXsLEuR7Nj9pc3o5SeHNc8A9RW", mockOrderXmrToCallback); - - RecordedRequest request = mockWebServer.takeRequest(); - String body = request.getBody().readUtf8(); - assertEquals(validBody, body); - } - - @Test - public void createOrder_wasSuccessfulShouldRespondWithOrder() - throws TimeoutException { - final double amount = 1.23456789; - final String address = "19y91nJyzXsLEuR7Nj9pc3o5SeHNc8A9RW"; - final String uuid = "xmrto-abcdef"; - final String state = "TO_BE_CREATED"; - MockResponse jsonMockResponse = new MockResponse().setBody( - createMockCreateOrderResponse(amount, address, uuid, state)); - mockWebServer.enqueue(jsonMockResponse); - - xmrToApi.createOrder(amount, address, new XmrToCallback() { - @Override - public void onSuccess(final CreateOrder order) { - waiter.assertEquals(order.getBtcAmount(), amount); - waiter.assertEquals(order.getBtcDestAddress(), address); - waiter.assertEquals(order.getState(), state); - waiter.assertEquals(order.getUuid(), uuid); - waiter.resume(); - } - - @Override - public void onError(final Exception e) { - waiter.fail(e); - waiter.resume(); - } - }); - waiter.await(); - } - - @Test - public void createOrder_wasNotSuccessfulShouldCallOnError() - throws TimeoutException { - mockWebServer.enqueue(new MockResponse().setResponseCode(500)); - xmrToApi.createOrder(0.5, "19y91nJyzXsLEuR7Nj9pc3o5SeHNc8A9RW", new XmrToCallback() { - @Override - public void onSuccess(final CreateOrder order) { - waiter.fail(); - waiter.resume(); - } - - @Override - public void onError(final Exception e) { - waiter.assertTrue(e instanceof XmrToException); - waiter.assertTrue(((XmrToException) e).getCode() == 500); - waiter.resume(); - } - - }); - waiter.await(); - } - - @Test - public void createOrder_malformedAddressShouldCallOnError() - throws TimeoutException { - mockWebServer.enqueue(new MockResponse(). - setResponseCode(400). - setBody("{\"error_msg\":\"malformed bitcoin address\",\"error\":\"XMRTO-ERROR-002\"}")); - xmrToApi.createOrder(0.5, "xxx", new XmrToCallback() { - @Override - public void onSuccess(final CreateOrder order) { - waiter.fail(); - waiter.resume(); - } - - @Override - public void onError(final Exception e) { - waiter.assertTrue(e instanceof XmrToException); - XmrToException xmrEx = (XmrToException) e; - waiter.assertTrue(xmrEx.getCode() == 400); - waiter.assertNotNull(xmrEx.getError()); - waiter.assertEquals(xmrEx.getError().getErrorId(), XmrToError.Error.XMRTO_ERROR_002); - waiter.assertEquals(xmrEx.getError().getErrorMsg(), "malformed bitcoin address"); - waiter.resume(); - } - - }); - waiter.await(); - } - - private String createMockCreateOrderResponse(final double amount, final String address, - final String uuid, final String state) { - return "{\n" - + " \"state\": \"" + state + "\",\n" - + " \"btc_amount\": \"" + amount + "\",\n" - + " \"btc_dest_address\": \"" + address + "\",\n" - + " \"uuid\": \"" + uuid + "\"\n" - + "}"; - } -} \ No newline at end of file diff --git a/app/src/test/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiQueryOrderTest.java b/app/src/test/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiQueryOrderTest.java deleted file mode 100644 index 28b7fbf2..00000000 --- a/app/src/test/java/com/m2049r/xmrwallet/xmrto/network/XmrToApiQueryOrderTest.java +++ /dev/null @@ -1,270 +0,0 @@ -/* - * Copyright (c) 2017 m2049r et al. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.m2049r.xmrwallet.xmrto.network; - -import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; -import com.m2049r.xmrwallet.xmrto.XmrToError; -import com.m2049r.xmrwallet.xmrto.XmrToException; -import com.m2049r.xmrwallet.xmrto.api.QueryOrderStatus; -import com.m2049r.xmrwallet.xmrto.api.XmrToApi; - -import net.jodah.concurrentunit.Waiter; - -import org.json.JSONException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.concurrent.TimeoutException; - -import okhttp3.OkHttpClient; -import okhttp3.mockwebserver.MockResponse; -import okhttp3.mockwebserver.MockWebServer; -import okhttp3.mockwebserver.RecordedRequest; - -import static org.junit.Assert.assertEquals; - -public class XmrToApiQueryOrderTest { - - static final SimpleDateFormat DATETIME_FORMATTER = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - - static Date ParseDate(String dateString) throws ParseException { - return DATETIME_FORMATTER.parse(dateString.replaceAll("Z$", "+0000")); - } - - - private MockWebServer mockWebServer; - - private XmrToApi xmrToApi; - - private OkHttpClient okHttpClient = new OkHttpClient(); - private Waiter waiter; - - @Mock - XmrToCallback mockQueryXmrToCallback; - - @Before - public void setUp() throws Exception { - mockWebServer = new MockWebServer(); - mockWebServer.start(); - - waiter = new Waiter(); - - MockitoAnnotations.initMocks(this); - - xmrToApi = new XmrToApiImpl(okHttpClient, mockWebServer.url("/")); - } - - @After - public void tearDown() throws Exception { - mockWebServer.shutdown(); - } - - @Test - public void orderStatus_shouldBePostMethod() - throws InterruptedException { - - xmrToApi.queryOrderStatus("xmrto - efMsiU", mockQueryXmrToCallback); - - RecordedRequest request = mockWebServer.takeRequest(); - assertEquals("POST", request.getMethod()); - } - - @Test - public void orderStatus_shouldBeContentTypeJson() - throws InterruptedException { - - xmrToApi.queryOrderStatus("xmrto - efMsiU", mockQueryXmrToCallback); - - RecordedRequest request = mockWebServer.takeRequest(); - assertEquals("application/json; charset=utf-8", request.getHeader("Content-Type")); - } - - @Test - public void orderStatus_shouldContainValidBody() - throws InterruptedException { - - final String validBody = "{\"uuid\":\"xmrto - efMsiU\"}"; - - xmrToApi.queryOrderStatus("xmrto - efMsiU", mockQueryXmrToCallback); - - RecordedRequest request = mockWebServer.takeRequest(); - String body = request.getBody().readUtf8(); - assertEquals(validBody, body); - } - - @Test - public void orderStatus_wasSuccessfulShouldRespondWithOrder() - throws TimeoutException { - -//TODO: state enum -// TODO dates are dates - final String state = "UNPAID"; - final double btcAmount = 0.1; - final String btcDestAddress = "1FhnVJi2V1k4MqXm2nHoEbY5LV7FPai7bb"; - final String uuid = "xmrto - efMsiU"; - final int btcNumConfirmationsBeforePurge = 144; - final String createdAt = "2017-11-17T12:20:02Z"; - final String expiresAt = "2017-11-17T12:35:02Z"; - final int secondsTillTimeout = 882; - final double xmrAmountTotal = 6.464; - final double xmrAmountRemaining = 6.464; - final int xmrNumConfirmationsRemaining = -1; - final double xmrPriceBtc = 0.0154703; - final String xmrReceivingSubaddress = "83BGzCTthheE2KxNTBPnPJjJUthYPfDfCf3ENSVQcpga8RYSxNz9qCz1qp9MLye9euMjckGi11cRdeVGqsVqTLgH8w5fJ1D"; - final int xmrRecommendedMixin = 5; - - MockResponse jsonMockResponse = new MockResponse().setBody( - createMockQueryOrderResponse( - state, - btcAmount, - btcDestAddress, - uuid, - btcNumConfirmationsBeforePurge, - createdAt, - expiresAt, - secondsTillTimeout, - xmrAmountTotal, - xmrAmountRemaining, - xmrNumConfirmationsRemaining, - xmrPriceBtc, - xmrReceivingSubaddress, - xmrRecommendedMixin)); - mockWebServer.enqueue(jsonMockResponse); - - xmrToApi.queryOrderStatus(uuid, new XmrToCallback() { - @Override - public void onSuccess(final QueryOrderStatus orderStatus) { - waiter.assertEquals(orderStatus.getState().toString(), state); - waiter.assertEquals(orderStatus.getBtcAmount(), btcAmount); - waiter.assertEquals(orderStatus.getBtcDestAddress(), btcDestAddress); - waiter.assertEquals(orderStatus.getUuid(), uuid); - waiter.assertEquals(orderStatus.getBtcNumConfirmationsThreshold(), btcNumConfirmationsBeforePurge); - try { - waiter.assertEquals(orderStatus.getCreatedAt(), ParseDate(createdAt)); - waiter.assertEquals(orderStatus.getExpiresAt(), ParseDate(expiresAt)); - } catch (ParseException ex) { - waiter.fail(ex); - } - waiter.assertEquals(orderStatus.getSecondsTillTimeout(), secondsTillTimeout); - waiter.assertEquals(orderStatus.getIncomingAmountTotal(), xmrAmountTotal); - waiter.assertEquals(orderStatus.getRemainingAmountIncoming(), xmrAmountRemaining); - waiter.assertEquals(orderStatus.getIncomingNumConfirmationsRemaining(), xmrNumConfirmationsRemaining); - waiter.assertEquals(orderStatus.getIncomingPriceBtc(), xmrPriceBtc); - waiter.assertEquals(orderStatus.getReceivingSubaddress(), xmrReceivingSubaddress); - waiter.assertEquals(orderStatus.getRecommendedMixin(), xmrRecommendedMixin); - waiter.resume(); - } - - @Override - public void onError(final Exception e) { - waiter.fail(e); - waiter.resume(); - } - }); - waiter.await(); - } - - @Test - public void orderStatus_wasNotSuccessfulShouldCallOnError() - throws TimeoutException { - mockWebServer.enqueue(new MockResponse().setResponseCode(500)); - xmrToApi.queryOrderStatus("xmrto - efMsiU", new XmrToCallback() { - @Override - public void onSuccess(final QueryOrderStatus orderStatus) { - waiter.fail(); - waiter.resume(); - } - - @Override - public void onError(final Exception e) { - waiter.assertTrue(e instanceof XmrToException); - waiter.assertTrue(((XmrToException) e).getCode() == 500); - waiter.resume(); - } - - }); - waiter.await(); - } - - @Test - public void orderStatus_orderNotFoundShouldCallOnError() - throws TimeoutException { - mockWebServer.enqueue(new MockResponse(). - setResponseCode(404). - setBody("{\"error_msg\":\"requested order not found\",\"error\":\"XMRTO-ERROR-006\"}")); - xmrToApi.queryOrderStatus("xmrto - efMsiU", new XmrToCallback() { - @Override - public void onSuccess(final QueryOrderStatus orderStatus) { - waiter.fail(); - waiter.resume(); - } - - @Override - public void onError(final Exception e) { - waiter.assertTrue(e instanceof XmrToException); - XmrToException xmrEx = (XmrToException) e; - waiter.assertTrue(xmrEx.getCode() == 404); - waiter.assertNotNull(xmrEx.getError()); - waiter.assertEquals(xmrEx.getError().getErrorId(), XmrToError.Error.XMRTO_ERROR_006); - waiter.assertEquals(xmrEx.getError().getErrorMsg(), "requested order not found"); - waiter.resume(); - } - - }); - waiter.await(); - } - - private String createMockQueryOrderResponse( - final String state, - final double btcAmount, - final String btcDestAddress, - final String uuid, - final int btcNumConfirmationsBeforePurge, - final String createdAt, - final String expiresAt, - final int secondsTillTimeout, - final double xmrAmountTotal, - final double xmrAmountRemaining, - final int xmrNumConfirmationsRemaining, - final double xmrPriceBtc, - final String xmrReceivingSubaddress, - final int xmrRecommendedMixin - ) { - return "{\n" + - " \"incoming_price_btc\": \"" + xmrPriceBtc + "\",\n" + - " \"uuid\":\"" + uuid + "\",\n" + - " \"state\":\"" + state + "\",\n" + - " \"btc_amount\":\"" + btcAmount + "\",\n" + - " \"btc_dest_address\":\"" + btcDestAddress + "\",\n" + - " \"receiving_subaddress\":\"" + xmrReceivingSubaddress + "\",\n" + - " \"created_at\":\"" + createdAt + "\",\n" + - " \"expires_at\":\"" + expiresAt + "\",\n" + - " \"seconds_till_timeout\":\"" + secondsTillTimeout + "\",\n" + - " \"incoming_amount_total\":\"" + xmrAmountTotal + "\",\n" + - " \"remaining_amount_incoming\":\"" + xmrAmountRemaining + "\",\n" + - " \"incoming_num_confirmations_remaining\":\"" + xmrNumConfirmationsRemaining + "\",\n" + - " \"recommended_mixin\":\"" + xmrRecommendedMixin + "\",\n" + - " \"btc_num_confirmations_threshold\":\"" + btcNumConfirmationsBeforePurge + "\",\n" - + "}"; - } -} \ No newline at end of file diff --git a/build.gradle b/build.gradle index dfd7a363..0de97164 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.1' + classpath 'com.android.tools.build:gradle:4.1.2' } } diff --git a/monerujo.id b/monerujo.id new file mode 100644 index 00000000..39e4f9fe --- /dev/null +++ b/monerujo.id @@ -0,0 +1 @@ +ID_A=