mirror of
https://github.com/m2049r/xmrwallet
synced 2024-12-03 13:27:37 +01:00
replace xmr.to with SideShift.ai (#710)
replace xmr.to with SideShift.ai random bugfixes upgrade gradle & dependencies
This commit is contained in:
parent
ab6069058b
commit
57ddddfce2
@ -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'
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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<QueryOrderParameters>() {
|
||||
getXmrToApi().queryOrderParameters(new ShiftCallback<QueryOrderParameters>() {
|
||||
@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());
|
||||
}
|
||||
}
|
||||
|
@ -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<CreateOrder> callback = new XmrToCallback<CreateOrder>() {
|
||||
ShiftCallback<RequestQuote> callback = new ShiftCallback<RequestQuote>() {
|
||||
@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<QueryOrderStatus>() {
|
||||
@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<CreateOrder>() {
|
||||
@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());
|
||||
}
|
||||
}
|
||||
|
@ -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<QueryOrderStatus>() {
|
||||
getXmrToApi().queryOrderStatus(btcData.getXmrtoOrderId(), new ShiftCallback<QueryOrderStatus>() {
|
||||
@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());
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -14,9 +14,9 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.m2049r.xmrwallet.xmrto.api;
|
||||
package com.m2049r.xmrwallet.service.shift;
|
||||
|
||||
public interface XmrToCallback<T> {
|
||||
public interface ShiftCallback<T> {
|
||||
|
||||
void onSuccess(T t);
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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
|
||||
|
||||
}
|
@ -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();
|
||||
|
||||
}
|
@ -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();
|
||||
}
|
@ -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
|
||||
}
|
@ -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<QueryOrderParameters> callback);
|
||||
|
||||
/**
|
||||
* Creates an order
|
||||
*
|
||||
* @param xmrAmount the desired XMR amount
|
||||
*/
|
||||
void requestQuote(final double xmrAmount, @NonNull final ShiftCallback<RequestQuote> 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<CreateOrder> 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<QueryOrderStatus> callback);
|
||||
|
||||
/*
|
||||
* Returns the URL for manually querying the order status
|
||||
*
|
||||
* @param orderId the order ID
|
||||
*/
|
||||
Uri getQueryOrderUri(String orderId);
|
||||
}
|
@ -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<CreateOrder> 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;
|
||||
}
|
||||
}
|
@ -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": <lower_order_limit_in_btc_as_float>,
|
||||
private double price; // "price": <price_of_1_btc_in_xmr_as_offered_by_service_as_float>,
|
||||
private double upperLimit; // "upper_limit": <upper_order_limit_in_btc_as_float>,
|
||||
private boolean isZeroConfEnabled; // "zero_conf_enabled": <true_if_zero_conf_is_enabled_as_boolean>,
|
||||
private double zeroConfMaxAmount; // "zero_conf_max_amount": <up_to_this_amount_zero_conf_is_possible_as_float>
|
||||
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<QueryOrderParameters> callback) {
|
||||
api.call("order_parameter_query", new NetworkCallback() {
|
||||
public static void call(@NonNull final ShiftApiCall api,
|
||||
@NonNull final ShiftCallback<QueryOrderParameters> 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}
|
||||
}
|
@ -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<QueryOrderStatus> 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);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -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<RequestQuote> 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("#.############");
|
||||
}
|
@ -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<CreateOrder> callback) {
|
||||
CreateOrderImpl.call(this, amount, address, callback);
|
||||
public void queryOrderParameters(@NonNull final ShiftCallback<QueryOrderParameters> callback) {
|
||||
QueryOrderParametersImpl.call(this, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createOrder(@NonNull final String url,
|
||||
@NonNull final XmrToCallback<CreateOrder> callback) {
|
||||
CreateOrderImpl.call(this, url, callback);
|
||||
public void requestQuote(final double xmrAmount, @NonNull final ShiftCallback<RequestQuote> callback) {
|
||||
RequestQuoteImpl.call(this, xmrAmount, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createOrder(final String quoteId, @NonNull final String btcAddress,
|
||||
@NonNull final ShiftCallback<CreateOrder> callback) {
|
||||
CreateOrderImpl.call(this, quoteId, btcAddress, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void queryOrderStatus(@NonNull final String uuid,
|
||||
@NonNull final XmrToCallback<QueryOrderStatus> callback) {
|
||||
@NonNull final ShiftCallback<QueryOrderStatus> callback) {
|
||||
QueryOrderStatusImpl.call(this, uuid, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void queryOrderParameters(@NonNull final XmrToCallback<QueryOrderParameters> 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);
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
29
app/src/main/java/com/m2049r/xmrwallet/util/DateHelper.java
Normal file
29
app/src/main/java/com/m2049r/xmrwallet/util/DateHelper.java
Normal file
@ -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"));
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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/");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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<CreateOrder>() {
|
||||
@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;
|
||||
}
|
||||
}
|
@ -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
|
||||
*/
|
||||
}
|
@ -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": <lower_order_limit_in_btc_as_float>,
|
||||
|
||||
double getPrice(); // "price": <price_of_1_btc_in_xmr_as_offered_by_service_as_float>,
|
||||
|
||||
double getUpperLimit(); // "upper_limit": <upper_order_limit_in_btc_as_float>,
|
||||
|
||||
boolean isZeroConfEnabled(); // "zero_conf_enabled": <true_if_zero_conf_is_enabled_as_boolean>,
|
||||
|
||||
double getZeroConfMaxAmount(); // "zero_conf_max_amount": <up_to_this_amount_zero_conf_is_possible_as_float>
|
||||
|
||||
}
|
@ -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<QueryOrderParameters> 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<CreateOrder> callback);
|
||||
|
||||
/**
|
||||
* Creates an order through BIP70 payment protocol like bitpay
|
||||
*
|
||||
* @param url the BIP70 URL
|
||||
*/
|
||||
void createOrder(@NonNull final String url, @NonNull final XmrToCallback<CreateOrder> 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<QueryOrderStatus> callback);
|
||||
|
||||
}
|
@ -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<CreateOrder> 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<CreateOrder> 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;
|
||||
}
|
||||
|
||||
}
|
@ -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": "<order_state_as_string>",
|
||||
private double btcAmount; // "btc_amount": <requested_amount_in_btc_as_float>,
|
||||
private String btcDestAddress; // "btc_dest_address": "<requested_destination_address_as_string>",
|
||||
private String uuid; // "uuid": "<unique_order_identifier_as_12_character_string>"
|
||||
// the following are only returned if the state is "after" TO_BE_CREATED
|
||||
//private int btcNumConfirmations; // "btc_num_confirmations": <btc_num_confirmations_as_integer>,
|
||||
private int btcNumConfirmationsThreshold; // "btc_num_confirmations_threshold": <btc_num_confirmations_threshold_as_integer>,
|
||||
private Date createdAt; // "created_at": "<timestamp_as_string>",
|
||||
private Date expiresAt; // "expires_at": "<timestamp_as_string>",
|
||||
private int secondsTillTimeout; // "seconds_till_timeout": <seconds_till_timeout_as_integer>,
|
||||
private double incomingAmountTotal; // "incoming_amount_total": <amount_in_incoming_currency_for_this_order_as_float>,
|
||||
private double remainingAmountIncoming; // "remaining_amount_incoming": <amount_in_incoming_currency_that_the_user_must_still_send_as_float>,
|
||||
private int incomingNumConfirmationsRemaining; // "incoming_num_confirmations_remaining": <num_incoming_currency_confirmations_remaining_before_bitcoins_will_be_sent_as_integer>,
|
||||
private double incomingPriceBtc; // "incoming_price_btc": <price_of_1_incoming_in_btc_currency_as_offered_by_service_as_float>,
|
||||
private String receivingSubaddress; // "receiving_subaddress": <xmr_subaddress_user_needs_to_send_funds_to_as_string>,
|
||||
private int recommendedMixin; // "recommended_mixin": <recommended_mixin_as_integer>,
|
||||
|
||||
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": "<order_state_as_string>",
|
||||
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": <requested_amount_in_btc_as_float>,
|
||||
btcDestAddress = jsonObject.getString("btc_dest_address"); // "btc_dest_address": "<requested_destination_address_as_string>",
|
||||
uuid = jsonObject.getString("uuid"); // "uuid": "<unique_order_identifier_as_12_character_string>"
|
||||
|
||||
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<QueryOrderStatus> 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;
|
||||
}
|
||||
}
|
10
app/src/main/res/drawable/ic_baseline_launch_24.xml
Normal file
10
app/src/main/res/drawable/ic_baseline_launch_24.xml
Normal file
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M19,19H5V5h7V3H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2v-7h-2v7zM14,3v2h3.59l-9.83,9.83 1.41,1.41L19,6.41V10h2V3h-7z"/>
|
||||
</vector>
|
48
app/src/main/res/drawable/ic_sideshift_white.xml
Normal file
48
app/src/main/res/drawable/ic_sideshift_white.xml
Normal file
@ -0,0 +1,48 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="648dp"
|
||||
android:height="80dp"
|
||||
android:viewportWidth="648"
|
||||
android:viewportHeight="80">
|
||||
<path
|
||||
android:pathData="M65.94,9.56A40,40 0,0 0,9.56 66Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M13.79,70.23a40,40 0,0 0,56.45 -56.5Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M144.75,28a9.12,9.12 0,0 0,-1 -4.48A8.81,8.81 0,0 0,141 20.29a14.14,14.14 0,0 0,-4 -1.95,15.61 15.61,0 0,0 -4.84,-0.68 15.34,15.34 0,0 0,-4.24 0.58,11.88 11.88,0 0,0 -3.55,1.66 7.15,7.15 0,0 0,-2.47 2.63,7.26 7.26,0 0,0 -0.88,3.61v0.49a7.11,7.11 0,0 0,0.88 3.7A6.91,6.91 0,0 0,124.53 33,19 19,0 0,0 129,34.82a58.17,58.17 0,0 0,6.31 1.27C140.9,37 145,38.52 147.61,41a12.31,12.31 0,0 1,3.94 9.66v0.87a16,16 0,0 1,-1.18 6.25,13.23 13.23,0 0,1 -3.55,4.87 17,17 0,0 1,-5.72 3.22,24.6 24.6,0 0,1 -8,1.17A26.21,26.21 0,0 1,124 65.54a18,18 0,0 1,-6.6 -4.1,18.51 18.51,0 0,1 -4.05,-6.14A21.41,21.41 0,0 1,112 47.59V45.35h6.41V47.2c0,4.68 1.28,8.1 3.85,10.44s6.11,3.51 10.75,3.51c4,0 7,-0.88 9,-2.63a8.82,8.82 0,0 0,3 -6.93V51.1a7.26,7.26 0,0 0,-3 -6.33q-3.12,-2.21 -10.06,-3.22a38.07,38.07 0,0 1,-7.3 -1.66,17.24 17.24,0 0,1 -5.53,-2.83 13.62,13.62 0,0 1,-3.55 -4.29,13.48 13.48,0 0,1 -1.18,-5.85V26a11.87,11.87 0,0 1,1.28 -5.65,13.37 13.37,0 0,1 3.65,-4.49A16.94,16.94 0,0 1,124.92 13a26.31,26.31 0,0 1,15.19 0.29,21.17 21.17,0 0,1 6,3.41 14.69,14.69 0,0 1,5 11.12V31h-6.41V28Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M161.91,12.68h33.93v5.85H182.13V59.59h13.71v5.85H161.91V59.59h13.71v-41H161.91Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M207.78,12.68h17.56q9.91,0 14.5,4.68c3,3.12 4.53,8.1 4.53,14.92L244.37,45.84c0,6.82 -1.48,11.8 -4.53,14.92s-7.89,4.68 -14.5,4.68L207.78,65.44L207.78,59.49h4.54L212.32,18.63h-4.54ZM224.45,59.68a22.74,22.74 0,0 0,6.11 -0.69,9.73 9.73,0 0,0 4.24,-2.34 9.43,9.43 0,0 0,2.47 -4.39,26.62 26.62,0 0,0 0.79,-6.82L238.06,32.77a26.2,26.2 0,0 0,-0.79 -6.83,10 10,0 0,0 -2.47,-4.38 9.73,9.73 0,0 0,-4.24 -2.34,22.26 22.26,0 0,0 -6.11,-0.69h-5.62L218.83,59.59h5.62Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M256.21,12.68h32.35v5.85H262.62V36.09h25.55v5.85H262.62V59.59h26.43v5.85H256.21Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M331.67,28a9.12,9.12 0,0 0,-1 -4.48,8.81 8.81,0 0,0 -2.76,-3.22 14.2,14.2 0,0 0,-4.05 -1.95,15.55 15.55,0 0,0 -4.83,-0.68 15.34,15.34 0,0 0,-4.24 0.58,11.77 11.77,0 0,0 -3.55,1.66 7.07,7.07 0,0 0,-2.47 2.63,7.26 7.26,0 0,0 -0.89,3.61v0.49a7.11,7.11 0,0 0,0.89 3.7A6.91,6.91 0,0 0,311.45 33a19,19 0,0 0,4.44 1.85,58.17 58.17,0 0,0 6.31,1.27c5.62,0.87 9.76,2.43 12.33,4.87a12.31,12.31 0,0 1,3.94 9.66v0.87a16,16 0,0 1,-1.18 6.25,13.23 13.23,0 0,1 -3.55,4.87A17,17 0,0 1,328 65.83,24.64 24.64,0 0,1 320,67 26.21,26.21 0,0 1,311 65.54a18.09,18.09 0,0 1,-6.61 -4.1,18.63 18.63,0 0,1 -4,-6.14 21.41,21.41 0,0 1,-1.38 -7.71V45.35h6.41V47.2c0,4.68 1.28,8.1 3.85,10.44s6.11,3.51 10.75,3.51c3.94,0 7,-0.88 9,-2.63A8.8,8.8 0,0 0,332 51.59V51.1a7.24,7.24 0,0 0,-3.06 -6.33q-3.11,-2.21 -10.06,-3.22a38,38 0,0 1,-7.29 -1.66A17.24,17.24 0,0 1,306 37.06a13.62,13.62 0,0 1,-3.55 -4.29,13.48 13.48,0 0,1 -1.18,-5.85V26a11.87,11.87 0,0 1,1.28 -5.65,13.37 13.37,0 0,1 3.65,-4.49A16.94,16.94 0,0 1,311.84 13a26.31,26.31 0,0 1,15.19 0.29,21.17 21.17,0 0,1 6,3.41 14.69,14.69 0,0 1,5 11.12V31h-6.41Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M348,12.68h6.41V36.09h22.79V12.68h6.41V65.54h-6.41V42H354.45V65.63H348Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M395.68,12.68h33.93v5.85H415.9V59.59h13.71v5.85H395.68V59.59h13.71v-41H395.68Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M443.23,12.68h32.84v5.85H449.64V36.09h25.94v5.85H449.64v23.6h-6.41V12.68Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M487.32,12.68H524.9v5.85H509.32v47H502.9V18.63H487.32V12.68Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M537.33,61.34a4.74,4.74 0,0 1,1.58 -3.7,5 5,0 0,1 3.74,-1.56A5.36,5.36 0,0 1,548 61.34a4.76,4.76 0,0 1,-1.58 3.71,5 5,0 0,1 -3.75,1.56 4.86,4.86 0,0 1,-3.74 -1.56A4.76,4.76 0,0 1,537.33 61.34Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M595.82,52.47H572.94l-3.85,13.16h-6.91l16.08,-52.95h12l16.17,52.86h-6.9ZM583.89,15.41l-9.28,31.11H594l-9.27,-31.11Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
<path
|
||||
android:pathData="M614.07,12.68H648v5.85H634.29V59.59H648v5.85H614.07V59.59h13.71v-41H614.07Z"
|
||||
android:fillColor="@color/monerujoPrimary"/>
|
||||
</vector>
|
51
app/src/main/res/drawable/ic_xmrto_logo.xml
Normal file
51
app/src/main/res/drawable/ic_xmrto_logo.xml
Normal file
@ -0,0 +1,51 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="404.08dp"
|
||||
android:height="115dp"
|
||||
android:viewportWidth="404.08"
|
||||
android:viewportHeight="115">
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M62.65,0c1.62,0.49 3.29,0.92 4.9,1.48q40,13.85 48,55.41c0.55,2.9 0.69,5.89 1,9 -0.77,0 -1.24,0.09 -1.72,0.09L63.76,65.98c-0.93,0 -1.73,0.13 -1.72,-1.32q0.06,-32.19 0,-64.39L62.04,0ZM84.65,56.41A14.19,14.19 0,1 0,70.54 42.26,14.24 14.24,0 0,0 84.69,56.42Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M0,64.28c0.45,-2.48 0.76,-5 1.36,-7.43A46.65,46.65 0,0 1,18.08 30.92c0.38,-0.3 0.8,-0.57 1.06,-0.75L54.82,65.85a8.61,8.61 0,0 1,-1 0.12H1c-0.32,0 -0.64,0 -0.95,-0.06Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M404.08,80c-0.3,1.32 -0.54,2.65 -0.92,3.94a18.5,18.5 0,0 1,-17.33 13.41c-5.26,0.28 -10.16,-0.78 -14.34,-4.19 -6.61,-5.39 -8.86,-15.45 -5.33,-23.85A17.89,17.89 0,0 1,377.91 58.7c9.55,-2.91 19.6,0.92 23.81,9.27 1.15,2.29 1.59,5 2.36,7.43ZM384.25,66.48a9.62,9.62 0,0 0,-9.1 5.91,13 13,0 0,0 -0.84,7.83 9.85,9.85 0,0 0,9.53 8.44c5.18,0.14 9.08,-2.76 10.2,-7.87a15.52,15.52 0,0 0,0.19 -5.35A10.18,10.18 0,0 0,384.25 66.48Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M0,70l21.15,0H41.61L12.15,99.4c-0.63,-0.73 -1.44,-1.63 -2.17,-2.56A46.27,46.27 0,0 1,0.24 72.38a7.28,7.28 0,0 0,-0.24 -1Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M46.1,115c-1.2,-0.1 -2.41,-0.23 -3.61,-0.32 -0.76,-0.06 -1.29,-0.25 -1.28,-1.19 0,-6.9 0,-13.81 0,-20.71a0.89,0.89 0,0 1,0.08 -0.32L60.55,111.7a14.44,14.44 0,0 1,-2.31 0.94c-3.1,0.76 -6.22,1.43 -9.33,2.13l-1.18,0.23Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M205,60.58V71.13c0,8 0,15.91 0,23.87 0,1.2 -0.29,1.66 -1.58,1.63q-4.87,-0.13 -9.76,0c-1.3,0 -1.69,-0.35 -1.69,-1.67 0.06,-8.85 0,-17.71 0,-26.57V42.08c0,-0.58 0,-1.16 0.08,-1.81a5.77,5.77 0,0 1,0.83 -0.15c4,0 8,0 12.07,0a2.61,2.61 0,0 1,1.66 1.09c4.79,6.5 9.53,13.06 14.29,19.6 0.29,0.39 0.6,0.78 1,1.28l2,-2.7q6.63,-9.09 13.22,-18.2a2.4,2.4 0,0 1,2.24 -1.14c3.61,0.06 7.23,0 10.84,0 1.07,0 1.51,0.21 1.51,1.4q0,26.85 0,53.69c0,1.16 -0.39,1.45 -1.48,1.43 -3.3,-0.06 -6.6,-0.08 -9.9,0 -1.27,0 -1.59,-0.39 -1.58,-1.61 0,-10.89 0,-21.78 0,-32.67V60.9l-0.27,-0.09c-0.32,0.41 -0.64,0.81 -0.95,1.23l-13,17.36c-1.7,2.27 -4.08,2.22 -5.78,-0.1L205.93,61.67C205.72,61.4 205.49,61.14 205,60.58Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M315.57,96.55h-1.32c-4.43,0 -8.86,0 -13.29,0a2.84,2.84 0,0 1,-2.44 -1.08c-4.51,-5.24 -9.09,-10.42 -13.59,-15.67a3.11,3.11 0,0 0,-2.79 -1.24,46.84 46.84,0 0,1 -4.74,0c-1,0 -1.32,0.31 -1.31,1.32 0,5 0,10 0,15 0,1.2 -0.27,1.66 -1.57,1.63 -3.34,-0.09 -6.68,-0.06 -10,0 -1,0 -1.45,-0.25 -1.45,-1.36q0,-27 0,-53.95c0,-1 0.32,-1.35 1.33,-1.35 9.35,0.08 18.71,0 28,0.25A18.39,18.39 0,0 1,310.34 55c1.46,7.37 0.05,14.08 -6.22,19a40.92,40.92 0,0 1,-5.46 3.12l17.06,19.11ZM276.11,66.42a3,3 0,0 0,0.65 0.19c4.79,0 9.59,0.17 14.37,-0.06A6.75,6.75 0,0 0,298 59.18c-0.18,-4.09 -3.06,-6.83 -7.37,-6.87s-8.76,0 -13.15,0c-1.11,0 -1.37,0.42 -1.35,1.44 0.06,2.12 0,4.24 0,6.37Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M157.7,77.48l-7,10.36c-1.78,2.61 -3.53,5.25 -5.36,7.83a2.1,2.1 0,0 1,-1.36 0.85c-4.43,0.06 -8.86,0 -13.29,0a3,3 0,0 1,-0.57 -0.15c0.27,-0.46 0.5,-0.87 0.77,-1.26 5.95,-8.63 11.88,-17.27 17.87,-25.86a1.9,1.9 0,0 0,0 -2.6q-8.7,-12.53 -17.32,-25.1c-0.27,-0.39 -0.52,-0.81 -0.9,-1.39 0.61,0 1,-0.12 1.36,-0.12 4,0 8,0 11.93,0a2.22,2.22 0,0 1,2.08 1.14q5.46,8.25 11,16.45c0.24,0.36 0.51,0.72 0.86,1.21 1.17,-1.72 2.26,-3.31 3.34,-4.92 2.85,-4.23 5.69,-8.46 8.51,-12.73A2.18,2.18 0,0 1,171.65 40c4,0.05 8,0 12.07,0 0.4,0 0.81,0 1.48,0.08 -0.36,0.59 -0.61,1 -0.9,1.44q-8.79,12.54 -17.61,25.07a1.86,1.86 0,0 0,0 2.59q9.17,12.95 18.23,26c0.26,0.36 0.49,0.74 0.82,1.26 -0.47,0 -0.75,0.1 -1,0.1 -4.2,0 -8.41,0 -12.61,0a2.31,2.31 0,0 1,-2.18 -1.21q-5.61,-8.31 -11.28,-16.59C158.38,78.41 158.11,78.06 157.7,77.48Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M23,27.23c2.89,-1.24 6,-2.79 9.25,-3.9A45.78,45.78 0,0 1,56.86 22c0.9,0.19 1.26,0.55 1.25,1.53q0,19.17 0,38.35a2,2 0,0 1,0 0.43Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M349.05,47.9v8.92c0,1.82 0,1.83 1.88,1.83 2.39,0 4.78,0 7.18,0 1,0 1.49,0.28 1.45,1.38 -0.07,1.85 -0.05,3.7 0,5.55 0,0.94 -0.34,1.27 -1.27,1.25 -2.72,0 -5.43,0 -8.14,0 -0.88,0 -1.2,0.31 -1.19,1.19 0,5.15 0,10.3 0.07,15.46 0.08,3.77 2.56,5.61 6.28,4.84 1,-0.21 2,-0.54 3.11,-0.87L361,95.32A19.21,19.21 0,0 1,351 97c-7.19,-0.66 -11.34,-5.28 -11.48,-12.76 -0.1,-5.29 -0.08,-10.58 0,-15.86 0,-1.29 -0.42,-1.62 -1.63,-1.56 -1.44,0.09 -2.88,0 -4.34,0 -0.78,0 -1.15,-0.23 -1.13,-1.09q0.06,-3 0,-6c0,-0.82 0.29,-1.14 1.1,-1.12 1.58,0 3.16,0 4.74,0 1,0 1.26,-0.34 1.24,-1.27 -0.06,-2.44 0,-4.88 0,-7.32 0,-0.42 0.39,-1.15 0.67,-1.18C343.06,48.51 345.93,48.23 349.05,47.9Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M60,91.89c1.61,-3.39 2.71,-6.55 -0.15,-9.51a4.78,4.78 0,0 0,-5.8 -0.95,6.59 6.59,0 0,1 0.86,0.27c3.52,1.87 3.21,6.48 0.24,8.7 -4.61,3.44 -12.18,0.51 -13.64,-5.32a12.17,12.17 0,0 1,10 -14.78c9.8,-1.74 21.6,3.82 23.87,16.11a28.87,28.87 0,0 1,0.4 4.45c0,0.34 -0.54,1 -0.84,1C70.08,91.91 65.17,91.89 60,91.89Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M15.46,102.57 L37,81v32.54C32.57,113.87 19.14,107 15.46,102.57Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M51.48,96.07h24c-1.07,2.1 -1.9,4 -3,5.79a23.32,23.32 0,0 1,-7.18 7.08,1.32 1.32,0 0,1 -1.24,0c-4.15,-4.07 -8.25,-8.22 -12.36,-12.34C51.61,96.52 51.59,96.37 51.48,96.07Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M322.92,91.56a5.19,5.19 0,0 1,5.6 -5.42,5.52 5.52,0 1,1 -0.17,11A5.24,5.24 0,0 1,322.92 91.56Z"/>
|
||||
<path
|
||||
android:fillColor="@color/monerujoPrimary"
|
||||
android:pathData="M84.91,31.38A10.91,10.91 0,1 1,73.79 42.27,10.9 10.9,0 0,1 84.91,31.38ZM86.45,36.3a3.57,3.57 0,0 0,-3.63 3.51v0.06a3.76,3.76 0,0 0,3.62 3.67,3.65 3.65,0 0,0 3.65,-3.66v-0.06A3.48,3.48 0,0 0,86.45 36.3Z"/>
|
||||
</vector>
|
@ -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" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/llStageA"
|
||||
@ -39,83 +40,6 @@
|
||||
android:orientation="vertical"
|
||||
android:visibility="invisible">
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroText.Confirm.Label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/label_send_btc_xmrto_key"
|
||||
card_view:drawableStartCompat="@drawable/ic_xmrto_32dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvTxXmrToKey"
|
||||
style="@style/MoneroText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/colorBackground"
|
||||
android:drawablePadding="16dp"
|
||||
android:paddingStart="24dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingEnd="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
card_view:drawableEndCompat="@drawable/ic_content_copy_24dp"
|
||||
tools:text="XMR.TO-d2KQ" />
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroText.Medium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/label_send_btc_xmrto_info" />
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroText.Confirm.Label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="@string/label_send_btc_address"
|
||||
android:textAlignment="textStart" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvTxBtcAddress"
|
||||
style="@style/MoneroText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="textStart"
|
||||
tools:text="mpQ84J43EURZHkCnXbyQ4PpNDLLBqdsMW2" />
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:background="@android:color/darker_gray" />
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.m2049r.xmrwallet.widget.SendProgressView
|
||||
android:id="@+id/evStageB"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/llStageB"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="invisible">
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroText.Confirm.Label"
|
||||
android:layout_width="wrap_content"
|
||||
@ -142,6 +66,84 @@
|
||||
tools:text="(Rate: 0.020804 BTC/XMR)" />
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:background="@android:color/darker_gray" />
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.m2049r.xmrwallet.widget.SendProgressView
|
||||
android:id="@+id/evStageB"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:visibility="visible" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/llStageB"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="invisible">
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroText.Confirm.Label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/label_send_btc_xmrto_key"
|
||||
card_view:drawableStartCompat="@drawable/ic_xmrto_32dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvTxXmrToKey"
|
||||
style="@style/MoneroText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/colorBackground"
|
||||
android:drawablePadding="16dp"
|
||||
android:paddingStart="24dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingEnd="8dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
card_view:drawableEndCompat="@drawable/ic_content_copy_24dp"
|
||||
tools:text="f173118220f1461841da" />
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroText.Medium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:gravity="center_vertical"
|
||||
android:text="@string/label_send_btc_xmrto_info" />
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroText.Confirm.Label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text="@string/label_send_btc_address"
|
||||
android:textAlignment="textStart" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvTxBtcAddress"
|
||||
style="@style/MoneroText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="textStart"
|
||||
tools:text="mpQ84J43EURZHkCnXbyQ4PpNDLLBqdsMW2" />
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
||||
@ -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" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/llStageC"
|
||||
|
@ -212,19 +212,20 @@
|
||||
android:paddingBottom="8dp"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
card_view:drawableEndCompat="@drawable/ic_content_copy_24dp"
|
||||
tools:text="XMR.TO-d2KQ" />
|
||||
tools:text="f173118220f1461841da" />
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroText"
|
||||
android:id="@+id/tvXmrToSupport"
|
||||
style="@style/MoneroText.Medium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="8dp"
|
||||
android:drawablePadding="4dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/label_send_btc_xmrto_info"
|
||||
android:textSize="12sp"
|
||||
card_view:drawableStartCompat="@drawable/ic_info_outline_gray_24dp" />
|
||||
card_view:drawableEndCompat="@drawable/ic_baseline_launch_24" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
@ -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">
|
||||
|
||||
<LinearLayout
|
||||
@ -72,15 +71,13 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
style="@style/MoneroText.Medium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/label_send_btc_xmrto_info"
|
||||
card_view:drawableStartCompat="@drawable/ic_xmrto_32dp" />
|
||||
<ImageView
|
||||
android:id="@+id/tvXmrToLogo"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="32dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:src="@drawable/ic_sideshift_white" />
|
||||
|
||||
<TableLayout
|
||||
android:layout_width="match_parent"
|
||||
@ -133,6 +130,7 @@
|
||||
<TableRow>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvXmrToKeyLabel"
|
||||
style="@style/MoneroLabel.Small"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@ -156,11 +154,24 @@
|
||||
android:paddingBottom="8dp"
|
||||
android:textColor="?attr/colorPrimary"
|
||||
card_view:drawableEndCompat="@drawable/ic_content_copy_24dp"
|
||||
tools:text="XMR.TO-d2KQ" />
|
||||
tools:text="f173118220f1461841da" />
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
|
||||
</TableLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvXmrToSupport"
|
||||
style="@style/MoneroText.Medium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:drawablePadding="8dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/label_send_btc_xmrto_info"
|
||||
card_view:drawableEndCompat="@drawable/ic_baseline_launch_24" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
@ -30,8 +30,8 @@
|
||||
<p>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</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<h2>Permisos de la App</h2>
|
||||
<ul>
|
||||
<li>INTERNET : Connectar a la xarxa Monero mitjançant un Node Daemon de Monero</li>
|
||||
|
@ -117,52 +117,41 @@
|
||||
<ul>
|
||||
<li>un OpenAlias per XMR o BTC</li>
|
||||
<li>una adreça BTC</li>
|
||||
<li>un bitcoin: URI (inclòs BIP70 com bitpay)</li>
|
||||
</u>
|
||||
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.</p>
|
||||
<h2>ID de Pagament</h2>
|
||||
<p>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.<p>
|
||||
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.</p>
|
||||
<h1>Enviant BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Tipus de Canvi XMR.TO<h2>
|
||||
<p>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?</p>
|
||||
<h2>Ordre de compra XMR.TO<h2>
|
||||
<p>A la pantalla \"Confirmar\", veureu l’ordre de compra XMR.TO real. Aquesta comanda és vàlida per a
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Tipus de Canvi SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Ordre de compra SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Clau Secreta XMR.TO<h2>
|
||||
<p>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.</p>
|
||||
<p>Tingueu en compte que aquesta clau secreta només és vàlida durant 24 hores després que la transacció
|
||||
ha començat!</p>
|
||||
<h2>Compte enrere XMR.TO!</h2>
|
||||
<p>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\".</p>
|
||||
<h2>Clau Secreta SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Compte enrere SideShift.ai!</h2>
|
||||
<p>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\".</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>Enviant BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Tipus de Canvi XMR.TO<h2>
|
||||
<p>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?</p>
|
||||
<h2>Ordre de compra XMR.TO<h2>
|
||||
<p>A la pantalla \"Confirmar\", veureu l’ordre de compra XMR.TO real. Aquesta comanda és vàlida per a
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Tipus de Canvi SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Ordre de compra SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Clau Secreta XMR.TO<h2>
|
||||
<p>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.</p>
|
||||
<p>Tingueu en compte que aquesta clau secreta només és vàlida durant 24 hores després que la transacció
|
||||
ha començat!</p>
|
||||
<h2>Compte enrere XMR.TO!</h2>
|
||||
<p>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\".</p>
|
||||
<h2>Clau Secreta SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Compte enrere SideShift.ai!</h2>
|
||||
<p>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\".</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_wallet"><![CDATA[
|
||||
|
@ -36,22 +36,22 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Heu introduït una adreça de Bitcoin.</b><br/>
|
||||
<i>Està a punt d\'enviar XMR i el destinatari rebrà BTC a través del servei <b>XMR.TO</b> service.</i>
|
||||
<i>Està a punt d\'enviar XMR i el destinatari rebrà BTC a través del servei <b>SideShift.ai</b> service.</i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">Ordre XMR.TO</string>
|
||||
<string name="info_send_xmrto_success_order_label">Ordre SideShift.ai</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
<string name="info_send_xmrto_paid">Confirmació Pendent</string>
|
||||
<string name="info_send_xmrto_unpaid">Pagament Pendent</string>
|
||||
<string name="info_send_xmrto_error">Error de XMR.TO (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">Error de SideShift.ai (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC Enviats!</string>
|
||||
<string name="info_send_xmrto_query">Consultant …</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>You can send %1$s — %2$s BTC</b>.<br/>
|
||||
<i><b>XMR.TO</b> està oferint una tasa de canvi de <b>%3$s BTC</b> <u>en aquest moment</u></i>.
|
||||
<i><b>SideShift.ai</b> està oferint una tasa de canvi de <b>%3$s BTC</b> <u>en aquest moment</u></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Quantitats fins a <b>%1$s BTC</b> seran enviats <u>a l\'instant</u>!</i>
|
||||
@ -62,25 +62,25 @@
|
||||
<string name="info_paymentid_integrated">✔ ID de pagment integrat</string>
|
||||
<string name="info_prepare_tx">Preparant la seva transacció</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">Creant ordre XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_query">Consultant ordre XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_create">Creant ordre SideShift.ai</string>
|
||||
<string name="label_send_progress_xmrto_query">Consultant ordre SideShift.ai</string>
|
||||
<string name="label_send_progress_create_tx">Preparant transacció Monero</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">Consultant paràmetres XMR.TO</string>
|
||||
<string name="label_send_progress_queryparms">Consultant paràmetres SideShift.ai</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">ERROR XMR.TO</string>
|
||||
<string name="label_generic_xmrto_error">ERROR SideShift.ai</string>
|
||||
<string name="text_generic_xmrto_error">Codi: %1$d</string>
|
||||
|
||||
<string name="text_retry">Premi aquí per tornar-ho a intentar</string>
|
||||
<string name="text_noretry_monero">Vatua l\'olla! Sembla ser que estem encallats!</string>
|
||||
<string name="text_noretry">Ups, sembla que XMR.TO no està disponible ara mateix!</string>
|
||||
<string name="text_noretry">Ups, sembla que SideShift.ai no està disponible ara mateix!</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Canvi: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Visita xmr.to per suport i seguiment</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Clau secreta\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">Clau secreta XMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_info">Visita SideShift.ai per suport i seguiment</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Clau secreta\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">Clau secreta SideShift.ai</string>
|
||||
<string name="label_send_btc_address">Adreça BTC de destí</string>
|
||||
<string name="label_send_btc_amount">Quantitat</string>
|
||||
|
||||
@ -153,9 +153,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">Clau de visualització</string>
|
||||
<string name="label_copy_address">Adreça Pública</string>
|
||||
<string name="label_copy_xmrtokey">Clau de XMR.TO</string>
|
||||
<string name="label_copy_xmrtokey">Clau</string>
|
||||
<string name="message_copy_viewkey">Clau de visualització copiada al porta-retalls!</string>
|
||||
<string name="message_copy_xmrtokey">Clau de XMR.TO copiada al porta-retalls!</string>
|
||||
<string name="message_copy_xmrtokey">Clau de SideShift.ai copiada al porta-retalls!</string>
|
||||
<string name="message_copy_address">Adreça del portamonedes copiada al porta-retalls!</string>
|
||||
<string name="message_copy_txid">ID de transacció copiada al porta-retalls!</string>
|
||||
<string name="message_nocopy">S\'ha inhabilitat la funció de copiar per raons de seguretat!</string>
|
||||
@ -352,12 +352,9 @@
|
||||
<string name="node_nobookmark">S\'han marcat de forma automàtica els millors %1$d nodes</string>
|
||||
<string name="label_test">Provar</string><!--note: as in "Test a network connection"-->
|
||||
|
||||
<string name="send_address_resolve_bip70">Resolució del Pagament URI…</string>
|
||||
<string name="send_address_not_bip70">No s\'ha pogut resoldre el pagament URI</string>
|
||||
<string name="send_address_bip70">S\'ha resolt el pagament URI ✔</string>
|
||||
<string name="send_address_hint">Receptor</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO fora de línia - intenti-ho més tard</string>
|
||||
<string name="xmrto_error_001">SideShift.ai fora de línia - intenti-ho més tard</string>
|
||||
<string name="xmrto_error_004">Quantitat de BTC fora dels límits</string>
|
||||
<string name="xmrto_error_010">URL de pagament no vàlida o obsoleta</string>
|
||||
<string name="xmrto_error_012">Massa peticions</string>
|
||||
@ -385,7 +382,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -406,4 +403,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -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.</p>
|
||||
<p>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/.
|
||||
<p>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.</p>
|
||||
<h2>App-Berechtigungen</h2>
|
||||
|
@ -148,62 +148,50 @@
|
||||
<ul>
|
||||
<li>einen OpenAlias für XMR oder BTC</li>
|
||||
<li>eine BTC-Adresse</li>
|
||||
<li>eine Bitcoin: URI (inklusive BIP70 – wie BitPay)</li>
|
||||
</u>
|
||||
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".</p>
|
||||
<h2>Zahlungs-ID</h2>
|
||||
<p>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.<p>
|
||||
<h1>BTC senden</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO-Wechselkurs<h2>
|
||||
<p>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?</p>
|
||||
<h2>XMR.TO-Auftrag<h2>
|
||||
<p>Auf dem \"Bestätigen\" Bildschirm siehst du das genaue XMR.TO-Angebot. Dieses Angebot gilt
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai-Wechselkurs<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai-Auftrag<h2>
|
||||
<p>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.</p>
|
||||
<h2>Geheimer XMR.TO-Schlüssel<h2>
|
||||
<p>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.</p>
|
||||
<p>Dieser geheime Schlüssel ist für 24h nach Start der Transaktion gültig!</p>
|
||||
<h2>XMR.TO-Countdown!</h2>
|
||||
<p>Wenn der Countdown 0 erreicht, musst du ein neues Angebot von XMR.TO anfordern, indem du zum vorherigen Schritt
|
||||
<h2>Geheimer SideShift.ai-Schlüssel<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai-Countdown!</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>BTC senden</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO-Wechselkurs<h2>
|
||||
<p>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?</p>
|
||||
<h2>XMR.TO-Auftrag<h2>
|
||||
<p>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.</p>
|
||||
<h2>Geheimer XMR.TO-Schlüssel<h2>
|
||||
<p>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.</p>
|
||||
<p>Bitte beachte, dass dieser geheime Schlüssel nur bis zu 24 Stunden nach Start der Transaktion gültig ist!</p>
|
||||
<h2>XMR.TO-Countdown!</h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai-Wechselkurs<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai-Auftrag<h2>
|
||||
<p>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.</p>
|
||||
<h2>Geheimer SideShift.ai-Schlüssel<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai-Countdown!</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_create_ledger"><![CDATA[
|
||||
|
@ -36,23 +36,23 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Du hast eine BTC-Adresse eingegeben.</b><br/>
|
||||
<i>Du wirst XMR versenden und der Empfänger durch den <b>XMR.TO</b> Service BTC erhalten.</i>
|
||||
<i>Du wirst XMR versenden und der Empfänger durch den <b>SideShift.ai</b> Service BTC erhalten.</i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">XMR.TO-Auftrag</string>
|
||||
<string name="info_send_xmrto_success_order_label">SideShift.ai-Auftrag</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
|
||||
<string name="info_send_xmrto_paid">Bestätigung ausstehend</string>
|
||||
<string name="info_send_xmrto_unpaid">Bezahlung ausstehend</string>
|
||||
<string name="info_send_xmrto_error">XMR.TO-Fehler (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">SideShift.ai-Fehler (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC gesendet!</string>
|
||||
<string name="info_send_xmrto_query">Frage ab …</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Du kannst %1$s — %2$s BTC senden</b>.<br/>
|
||||
<i><b>XMR.TO</b> gibt dir <u>aktuell</u> einen Wechselkurs von <b>%3$s BTC</b></i>.
|
||||
<i><b>SideShift.ai</b> gibt dir <u>aktuell</u> einen Wechselkurs von <b>%3$s BTC</b></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Beträge bis zu <b>%1$s BTC</b> werden <u>sofort</u> versendet!</i>
|
||||
@ -63,25 +63,25 @@
|
||||
<string name="info_paymentid_integrated">✔ Zahlungs-ID integriert</string>
|
||||
<string name="info_prepare_tx">Bereite deine Transaktion vor</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">Erstelle XMR.TO-Auftrag</string>
|
||||
<string name="label_send_progress_xmrto_query">Frage XMR.TO-Auftrag ab</string>
|
||||
<string name="label_send_progress_xmrto_create">Erstelle SideShift.ai-Auftrag</string>
|
||||
<string name="label_send_progress_xmrto_query">Frage SideShift.ai-Auftrag ab</string>
|
||||
<string name="label_send_progress_create_tx">Bereite Monero-Transaktion vor</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">Frage XMR.TO-Parameter ab</string>
|
||||
<string name="label_send_progress_queryparms">Frage SideShift.ai-Parameter ab</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">XMR.TO-FEHLER</string>
|
||||
<string name="label_generic_xmrto_error">SideShift.ai-FEHLER</string>
|
||||
<string name="text_generic_xmrto_error">Code: %1$d</string>
|
||||
|
||||
<string name="text_retry">Berühre zum Wiederholen</string>
|
||||
<string name="text_noretry_monero">Jetzt hängen wir hier fest!</string>
|
||||
<string name="text_noretry">Oh oh – XMR.TO scheint im Moment nicht verfügbar zu sein!</string>
|
||||
<string name="text_noretry">Oh oh – SideShift.ai scheint im Moment nicht verfügbar zu sein!</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Kurs: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Besuche XMR.TO für Support & Nachverfolgung</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Geheimer Schlüssel\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">XMR.TO – Geheimer Schlüssel</string>
|
||||
<string name="label_send_btc_xmrto_info">Besuche SideShift.ai für Support & Nachverfolgung</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Geheimer Schlüssel\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">SideShift.ai – Geheimer Schlüssel</string>
|
||||
<string name="label_send_btc_address">BTC-Zieladresse</string>
|
||||
<string name="label_send_btc_amount">Betrag</string>
|
||||
|
||||
@ -153,9 +153,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">View-Key</string>
|
||||
<string name="label_copy_address">Empfangsadresse</string>
|
||||
<string name="label_copy_xmrtokey">XMR.TO-Schlüssel</string>
|
||||
<string name="label_copy_xmrtokey">Schlüssel</string>
|
||||
<string name="message_copy_viewkey">View-Key in Zwischenablage kopiert!</string>
|
||||
<string name="message_copy_xmrtokey">XMR.TO-Schlüssel in Zwischenablage kopiert!</string>
|
||||
<string name="message_copy_xmrtokey">Schlüssel in Zwischenablage kopiert!</string>
|
||||
<string name="message_copy_address">Wallet-Adresse in Zwischenablage kopiert!</string>
|
||||
<string name="message_copy_txid">Transaktions-ID in Zwischenablage kopiert!</string>
|
||||
<string name="message_nocopy">Kopieren aus Sicherheitsgründen deaktiviert!</string>
|
||||
@ -355,12 +355,9 @@
|
||||
<string name="node_nobookmark">Beste %1$d Nodes automatisch vorgemerkt</string>
|
||||
<string name="label_test">Testen</string><!--note: as in "Test a network connection"-->
|
||||
|
||||
<string name="send_address_resolve_bip70">Löse Zahlungs-URI auf…</string>
|
||||
<string name="send_address_not_bip70">Konnte Zahlungs-URI nicht auflösen</string>
|
||||
<string name="send_address_bip70">Zahlungs-URI aufgelöst ✔</string>
|
||||
<string name="send_address_hint">Empfänger</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO nicht erreichbar – versuche es später nochmal</string>
|
||||
<string name="xmrto_error_001">SideShift.ai nicht erreichbar – versuche es später nochmal</string>
|
||||
<string name="xmrto_error_004">BTC-Betrag außerhalb des gültigen Bereiches</string>
|
||||
<string name="xmrto_error_010">Ungültige oder veraltete Zahlungs-URL</string>
|
||||
<string name="xmrto_error_012">Zu viele Anfragen</string>
|
||||
@ -388,7 +385,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -409,4 +406,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -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.</p>
|
||||
<p>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
|
||||
<p>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.</p>
|
||||
<h2>App Permissions</h2>
|
||||
<ul>
|
||||
|
@ -127,66 +127,51 @@
|
||||
<ul>
|
||||
<li>an OpenAlias for XMR or BTC</li>
|
||||
<li>a BTC address</li>
|
||||
<li>a bitcoin: URI (including BIP70 like bitpay)</li>
|
||||
</u>
|
||||
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.</p>
|
||||
<h2>ID Πληρωμής</h2>
|
||||
<p>Μπορείς να χρησιμοποιήσεις ένα ID Πληρωμής(Payment ID) για να προσδιορίσεις τον λόγο που στέλνεις Monero
|
||||
ανάμεσα σε δύο ενδιαφερόμενους αυτό είναι προεραιτικό και ιδωτικό. Για παράδειγμα μπορεί να επιτρέψει σε μια επιχείρηση
|
||||
να κανονίσει την συναλλαγή σου με ένα αντικείμενο που αγόρασες.<p>
|
||||
<h1>Αποστολή BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>Το XMR.TO είναι τρίτος πάροχος που δρα σαν ανταλλακτήριο από Monero σε Bitcoin.
|
||||
Χρησιμοποιούμε το API του XMR.TO για να ενσωματώσουμε πληρωμές Bitcoin στο Monerujo. Παρακαλώ δες το
|
||||
https://xmr.to και αποφάσισε για τον εαυτό σου εαν αυτό είναι κάτι που θες να χρησιμοποιήσεις. Η Ομάδα του
|
||||
Monerujo δεν συνδέεται με το XMR.TO και δεν μπορεί να σε βοηθήσει με την υπηρεσία.</p>
|
||||
<h2>Ισοτιμία συναλλάγματος XMR.TO<h2>
|
||||
<p>Στην οθόνη \"Ποσό\" θα σου δωθούν οι τρέχουσες παράμετροι της υπηρεσίας XMR.TO. Αυτές
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>Το SideShift.ai είναι τρίτος πάροχος που δρα σαν ανταλλακτήριο από Monero σε Bitcoin.
|
||||
Χρησιμοποιούμε το API του SideShift.ai για να ενσωματώσουμε πληρωμές Bitcoin στο Monerujo. Παρακαλώ δες το
|
||||
https://sideshift.ai και αποφάσισε για τον εαυτό σου εαν αυτό είναι κάτι που θες να χρησιμοποιήσεις. Η Ομάδα του
|
||||
Monerujo δεν συνδέεται με το SideShift.ai και δεν μπορεί να σε βοηθήσει με την υπηρεσία.</p>
|
||||
<h2>Ισοτιμία συναλλάγματος SideShift.ai<h2>
|
||||
<p>Στην οθόνη \"Ποσό\" θα σου δωθούν οι τρέχουσες παράμετροι της υπηρεσίας SideShift.ai. Αυτές
|
||||
περιλαμβάνουν την τρέχουσα ισοτιμία καθώς και τα μέγιστα και ελάχιστα όρια BTC. Σημειωτέον ότι αυτή η
|
||||
ισοτιμία δεν εξασφαλίζεται σε αυτό το σημείο. Θα δεις επίσης το ποσό για το οποιό
|
||||
η συναλλαγή BTC θα εκτελεσθέι άμεσα χωρίς αναμονή για επιβαιώσεις στο δίκτυο του
|
||||
XMR (δες το FAQ του XMR.TO για περισσότερες λεπτομέρειες). Σημειωτέο, ότι το XMR.TO
|
||||
δεν χρεώνει επιπλέον προμήθειες - πόσο πρώτο είναι αυτό;</p>
|
||||
<h2>Εντολή XMR.TO<h2>
|
||||
<p>Στην οθόνη \"Επιβεβαίωση\", θα δεις την πραγματική εντολή XMR.TO. Αυτή η εντολή ισχύει για
|
||||
ισοτιμία δεν εξασφαλίζεται σε αυτό το σημείο.</p>
|
||||
<h2>Εντολή SideShift.ai<h2>
|
||||
<p>Στην οθόνη \"Επιβεβαίωση\", θα δεις την πραγματική εντολή SideShift.ai. Αυτή η εντολή ισχύει για
|
||||
περιορισμένο χρόνο - μπορεί να προσέξεις μια αντίστροφη μέτρηση στο κουμπί \"Ξόδεψε\". Η ισοτιμία
|
||||
μπορεί να είναι διαφορετική από την ενδεικτική που φαινόταν σε προηγούμενες οθόνες.</p>
|
||||
<h2>Μυστικό Κλειδί XMR.TO<h2>
|
||||
<p>Μιας και το Monerujo διαχειρίζεται μόνο την πλευρά του Monero της συναλλαγής το μυστικό κλειδί XMR.TO
|
||||
μπορεί να χρησιμοποιηθεί για να εντοπίσει την συναλλαγή απο μεριάς Bitcoin στην XMR.TO εντολή σου στην αρχική τους σελίδα.</p>
|
||||
<p>Σημειωτέο ότι, αυτό το μυστικό κλειδί θα ισχύει για 24 ώρες από όταν ξεκίνησες
|
||||
την συναλλαγή!</p>
|
||||
<h2>Αντίστροφη μέτρηση XMR.TO!</h2>
|
||||
<p>Μόλις η αντίστροφη μέτρηση φθάσει στο μηδέν, χρειάζεται να ξεκινήσεις πάλι την συναλλαγή στο XMR.TO πηγαίνοντας
|
||||
<h2>Μυστικό Κλειδί SideShift.ai<h2>
|
||||
<p>Μιας και το Monerujo διαχειρίζεται μόνο την πλευρά του Monero της συναλλαγής το μυστικό κλειδί SideShift.ai
|
||||
μπορεί να χρησιμοποιηθεί για να εντοπίσει την συναλλαγή απο μεριάς Bitcoin στην SideShift.ai εντολή σου στην αρχική τους σελίδα.</p>
|
||||
<h2>Αντίστροφη μέτρηση SideShift.ai!</h2>
|
||||
<p>Μόλις η αντίστροφη μέτρηση φθάσει στο μηδέν, χρειάζεται να ξεκινήσεις πάλι την συναλλαγή στο SideShift.ai πηγαίνοντας
|
||||
πίσω στο προηγούμενο βήμα και μετά επιστρέφοντας στην οθόνη \"Επιβεβαίωση\".</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>Αποστολή BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>Το XMR.TO είναι τρίτος πάροχος που δρα σαν ανταλλακτήριο από Monero σε Bitcoin
|
||||
Χρησιμοποιούμε το API του XMR.TO για να ενσωματώσουμε πληρωμές Bitcoin στο Monerujo. Παρακαλώ δες το
|
||||
https://xmr.to και αποφάσισε για τον εαυτό σου εαν αυτό είναι κάτι που θες να χρησιμοποιήσεις. Η Ομάδα του
|
||||
Monerujo δεν συνδέεται με το XMR.TO και δεν μπορεί να σε βοηθήσει με την υπηρεσία.</p>
|
||||
<h2>Ισοτιμία συναλλάγματος XMR.TO<h2>
|
||||
<p>Στην οθόνη \"Ποσό\" θα σου δωθούν οι τρέχουσες παράμετροι της υπηρεσίας XMR.TO. Αυτές
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>Το SideShift.ai είναι τρίτος πάροχος που δρα σαν ανταλλακτήριο από Monero σε Bitcoin.
|
||||
Χρησιμοποιούμε το API του SideShift.ai για να ενσωματώσουμε πληρωμές Bitcoin στο Monerujo. Παρακαλώ δες το
|
||||
https://sideshift.ai και αποφάσισε για τον εαυτό σου εαν αυτό είναι κάτι που θες να χρησιμοποιήσεις. Η Ομάδα του
|
||||
Monerujo δεν συνδέεται με το SideShift.ai και δεν μπορεί να σε βοηθήσει με την υπηρεσία.</p>
|
||||
<h2>Ισοτιμία συναλλάγματος SideShift.ai<h2>
|
||||
<p>Στην οθόνη \"Ποσό\" θα σου δωθούν οι τρέχουσες παράμετροι της υπηρεσίας SideShift.ai. Αυτές
|
||||
περιλαμβάνουν την τρέχουσα ισοτιμία καθώς και τα μέγιστα και ελάχιστα όρια BTC. Σημειωτέον ότι αυτή η
|
||||
ισοτιμία δεν εξασφαλίζεται σε αυτό το σημείο. Θα δεις επίσης το ποσό για το οποιό
|
||||
η συναλλαγή BTC θα εκτελεσθέι άμεσα χωρίς αναμονή για επιβαιώσεις στο δίκτυο του
|
||||
XMR (δες το FAQ του XMR.TO για περισσότερες λεπτομέρειες). Σημειωτέο, ότι το XMR.TO
|
||||
δεν χρεώνει επιπλέον προμήθειες - πόσο πρώτο είναι αυτό;</p>
|
||||
<h2>Εντολή XMR.TO<h2>
|
||||
<p>Στην οθόνη \"Επιβεβαίωση\", θα δεις την πραγματική εντολή XMR.TO. Αυτή η εντολή ισχύει για
|
||||
ισοτιμία δεν εξασφαλίζεται σε αυτό το σημείο.</p>
|
||||
<h2>Εντολή SideShift.ai<h2>
|
||||
<p>Στην οθόνη \"Επιβεβαίωση\", θα δεις την πραγματική εντολή SideShift.ai. Αυτή η εντολή ισχύει για
|
||||
περιορισμένο χρόνο - μπορεί να προσέξεις μια αντίστροφη μέτρηση στο κουμπί \"Ξόδεψε\". Η ισοτιμία
|
||||
μπορεί να είναι διαφορετική από την ενδεικτική που φαινόταν σε προηγούμενες οθόνες.</p>
|
||||
<h2>Μυστικό Κλειδί XMR.TO<h2>
|
||||
<p>Μιας και το Monerujo διαχειρίζεται μόνο την πλευρά του Monero της συναλλαγής το μυστικό κλειδί XMR.TO
|
||||
μπορεί να χρησιμοποιηθεί για να εντοπίσει την συναλλαγή απο μεριάς Bitcoin στην XMR.TO εντολή σου στην αρχική τους σελίδα.</p>
|
||||
<p>Σημειωτέο ότι, αυτό το μυστικό κλειδί θα ισχύει για 24 ώρες από όταν ξεκίνησες
|
||||
την συναλλαγή!</p>
|
||||
<h2>Αντίστροφη μέτρηση XMR.TO!</h2>
|
||||
<p>Μόλις η αντίστροφη μέτρηση φθάσει στο μηδέν, χρειάζεται να ξεκινήσεις πάλι την συναλλαγή στο XMR.TO πηγαίνοντας
|
||||
<h2>Μυστικό Κλειδί SideShift.ai<h2>
|
||||
<p>Μιας και το Monerujo διαχειρίζεται μόνο την πλευρά του Monero της συναλλαγής το μυστικό κλειδί SideShift.ai
|
||||
μπορεί να χρησιμοποιηθεί για να εντοπίσει την συναλλαγή απο μεριάς Bitcoin στην SideShift.ai εντολή σου στην αρχική τους σελίδα.</p>
|
||||
<h2>Αντίστροφη μέτρηση SideShift.ai!</h2>
|
||||
<p>Μόλις η αντίστροφη μέτρηση φθάσει στο μηδέν, χρειάζεται να ξεκινήσεις πάλι την συναλλαγή στο SideShift.ai πηγαίνοντας
|
||||
πίσω στο προηγούμενο βήμα και μετά επιστρέφοντας στην οθόνη \"Επιβεβαίωση\".</p>
|
||||
]]></string>
|
||||
|
||||
|
@ -35,22 +35,22 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Έβαλες μια διεύθυνση bitcoin.</b><br/>
|
||||
<i>Θα στείλεις XMR και ο παραλήπτης θα πάρει BTC μέσο της υπηρεσίας <b>XMR.TO</b>.</i>
|
||||
<i>Θα στείλεις XMR και ο παραλήπτης θα πάρει BTC μέσο της υπηρεσίας <b>SideShift.ai</b>.</i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">Εντολή XMR.TO</string>
|
||||
<string name="info_send_xmrto_success_order_label">Εντολή SideShift.ai</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
<string name="info_send_xmrto_paid">Επιβεβαίωση Εκκρεμεί</string>
|
||||
<string name="info_send_xmrto_unpaid">Πληρωμή σε εκκρεμότητα</string>
|
||||
<string name="info_send_xmrto_error">XMR.TO Σφάλμα (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">SideShift.ai Σφάλμα (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC Αποστάλθηκαν!</string>
|
||||
<string name="info_send_xmrto_query">Αίτηση …</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Μπορείς να στείλεις %1$s — %2$s BTC</b>.<br/>
|
||||
<i>Το <b>XMR.TO</b> σου δίνει ισοτιμία ανταλλαγής <b>%3$s BTC</b> <u>αυτή τη στιγμή</u></i>.
|
||||
<i>Το <b>SideShift.ai</b> σου δίνει ισοτιμία ανταλλαγής <b>%3$s BTC</b> <u>αυτή τη στιγμή</u></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Ποσά μέχρι <b>%1$s BTC</b> θα σταλούν <u>άμεσα</u>!</i>
|
||||
@ -61,25 +61,25 @@
|
||||
<string name="info_paymentid_integrated">✔ ID πληρωμής ενσωματωμένο</string>
|
||||
<string name="info_prepare_tx">Προετοιμασία της συναλλαγής σου</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">Δημιουργία εντολής με XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_query">Αίτηση εντολής στο XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_create">Δημιουργία εντολής με SideShift.ai</string>
|
||||
<string name="label_send_progress_xmrto_query">Αίτηση εντολής στο SideShift.ai</string>
|
||||
<string name="label_send_progress_create_tx">Προετοιμασά συναλλαγής Monero</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">Αίτηση στο xmr.to για παραμέτρους</string>
|
||||
<string name="label_send_progress_queryparms">Αίτηση στο SideShift.ai για παραμέτρους</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">XMR.TO ΣΦΑΛΜΑ</string>
|
||||
<string name="label_generic_xmrto_error">SideShift.ai ΣΦΑΛΜΑ</string>
|
||||
<string name="text_generic_xmrto_error">Κωδικός σφάλματος: %1$d</string>
|
||||
|
||||
<string name="text_retry">Πάτησε για να προσπαθήσεις ξανά</string>
|
||||
<string name="text_noretry_monero">Τώρα έχουμε κολλήσει εδώ!</string>
|
||||
<string name="text_noretry">Ωχ,το XMR.TO φαίνεται να μην ειναι προσωρινά διαθέσιμο!</string>
|
||||
<string name="text_noretry">Ωχ,το SideShift.ai φαίνεται να μην ειναι προσωρινά διαθέσιμο!</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Rate: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Επίσκεψη στο xmr.to για υποστήριξη & με εντοπισμό συναλλαγής</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Μυστικό Κλειδί\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">XMR.TO Μυστικό Κλειδί</string>
|
||||
<string name="label_send_btc_xmrto_info">Επίσκεψη στο SideShift.ai για υποστήριξη & με εντοπισμό συναλλαγής</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Μυστικό Κλειδί\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">SideShift.ai Μυστικό Κλειδί</string>
|
||||
<string name="label_send_btc_address">BTC Διεύθυνση Παραλήπτη</string>
|
||||
<string name="label_send_btc_amount">Ποσό</string>
|
||||
|
||||
@ -142,9 +142,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">Κλειδί Προβολής(View Key)</string>
|
||||
<string name="label_copy_address">Δημόσια Διεύθυνση(Public Address)</string>
|
||||
<string name="label_copy_xmrtokey">Κλειδή XMR.TO</string>
|
||||
<string name="label_copy_xmrtokey">Κλειδή</string>
|
||||
<string name="message_copy_viewkey">Το Κλειδί Προβολής αντιγράφηκε στο πρόχειρο!</string>
|
||||
<string name="message_copy_xmrtokey">Το Κλειδή XMR.TO αντιγράφηκε στο πρόχειρο!</string>
|
||||
<string name="message_copy_xmrtokey">Το Κλειδή αντιγράφηκε στο πρόχειρο!</string>
|
||||
<string name="message_copy_address">Η διύθυνση πορτοφολιού αντιγράφηκε στο πρόχειρο!</string>
|
||||
<string name="message_copy_txid">Το ID συναλλαγής αντιγράφηκε στο πρόχειρο!</string>
|
||||
<string name="message_nocopy">Η αντιγραφή είναι απενεργοποιημένη για λόγους ασφαλείας!</string>
|
||||
@ -354,12 +354,9 @@
|
||||
<string name="node_nobookmark">Automatically bookmarked best %1$d nodes</string>
|
||||
<string name="label_test">Test</string><!--note: as in "Test a network connection"-->
|
||||
|
||||
<string name="send_address_resolve_bip70">Resolving Payment URI…</string>
|
||||
<string name="send_address_not_bip70">Could not resolve Payment URI</string>
|
||||
<string name="send_address_bip70">Resolved Payment URI ✔</string>
|
||||
<string name="send_address_hint">Receiver</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO offline - try again later</string>
|
||||
<string name="xmrto_error_001">SideShift.ai offline - try again later</string>
|
||||
<string name="xmrto_error_004">BTC amount out of bounds</string>
|
||||
<string name="xmrto_error_010">Invalid or outdated Payment URL</string>
|
||||
<string name="xmrto_error_012">Too many requests</string>
|
||||
@ -387,7 +384,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -408,4 +405,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -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.</p>
|
||||
<p>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
|
||||
<p>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.</p>
|
||||
<h2>Permesoj de la aplikaĵo</h2>
|
||||
<ul>
|
||||
|
@ -180,66 +180,58 @@
|
||||
<ul>
|
||||
<li>iun OpenAlias por XMR aŭ BTC</li>
|
||||
<li>bitmonan-adreson (BTC)<li>
|
||||
<li>bitmonan pag-URI (inkluzive BIP70 kiel bitpay)</li>
|
||||
</ul>
|
||||
<h2>Paga ID</h2>
|
||||
<p>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.</p>
|
||||
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.</p>
|
||||
|
||||
<h1>Sendi BTC</h1>
|
||||
|
||||
<h2>XMR.TO</h2>
|
||||
<p>XMR.TO estas ekstera liveranto kiu agas kiel ŝanĝisto de Monero al Bitmono. Ni uzas la
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>Kurzo de XMR.TO<h2>
|
||||
<p>Sur la \"Kvanto\"-ekrano montriĝos la nunaj parametroj de la XMR.TO-servo. Ili inkludas la
|
||||
<h2>Kurzo de SideShift.ai<h2>
|
||||
<p>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?</p>
|
||||
<h2>Mendo al XMR.TO<h2>
|
||||
<p>Sur la \"konfirmi\"-ekrano, vi vidos la efektivan XMR.TO-mendon. Tiu mendo validas nur dum
|
||||
noti ke tiu kurzo ĉiam ŝanĝiĝas.</p>
|
||||
<h2>Mendo al SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>Sekreta ŝlosilo de XMR.TO<h2>
|
||||
<h2>Sekreta ŝlosilo de SideShift.ai<h2>
|
||||
<p>Ĉ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.</p>
|
||||
<p>Bonvolu noti, ke tiu sekreta ŝlosilo validas nur 24 horoj post kiam via transakcio
|
||||
komenciĝis!</p>
|
||||
<h2>La retrokalkulo de XMR.TO!</h2>
|
||||
<p>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.</p>
|
||||
<h2>La retrokalkulo de SideShift.ai!</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>Elspezi Bitmonon</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Kurzo de XMR.TO<h2>
|
||||
<p>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?</p>
|
||||
<h2>Mendo al XMR.TO<h2>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>Sekreta ŝlosilo de XMR.TO<h2>
|
||||
<p>Ĉ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.</p>
|
||||
<p>Bonvolu noti, ke tiu sekreta ŝlosilo validas nur dum 24 horoj post kiam via transakcio
|
||||
komenciĝis!</p>
|
||||
<h2>La retrokalkulo de XMR.TO!</h2>
|
||||
<p>Kiam la retrokalkulo atingas nulon, vi devos akiri novan kurzproponon de XMR.TO, reirante al la
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>Kurzo de SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Mendo al SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
|
||||
<h2>Sekreta ŝlosilo de SideShift.ai<h2>
|
||||
<p>Ĉ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.</p>
|
||||
<h2>La retrokalkulo de SideShift.ai!</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
|
@ -36,22 +36,22 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Vi entajpis Bitmono-adreson.</b><br/>
|
||||
<i>Vi sendos XMR-on, kaj per la<b>XMR.to</b>-servo, la ricevanto havos BTC-on.</i>
|
||||
<i>Vi sendos XMR-on, kaj per la<b>SideShift.ai</b>-servo, la ricevanto havos BTC-on.</i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">mendo al XMR.TO</string>
|
||||
<string name="info_send_xmrto_success_order_label">mendo al SideShift.ai</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
<string name="info_send_xmrto_paid">Konfirmo okazonta</string>
|
||||
<string name="info_send_xmrto_unpaid">Pago okazonta</string>
|
||||
<string name="info_send_xmrto_error">XMR.TO eraro (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">SideShift.ai eraro (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC sendiĝis!</string>
|
||||
<string name="info_send_xmrto_query">Informpetante …</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Vi povas sendi %1$s — %2$s BTC</b>.<br/>
|
||||
<i><b>XMR.TO</b> proponas al vi tiun kurzon: <b>%3$s BTC</b> <u>nun</u></i>.
|
||||
<i><b>SideShift.ai</b> proponas al vi tiun kurzon: <b>%3$s BTC</b> <u>nun</u></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Kvantoj ĝis <b>%1$s BTC</b> sendiĝos <u>senatende</u>!</i>
|
||||
@ -62,25 +62,25 @@
|
||||
<string name="info_paymentid_integrated">✔ Paga-ID integriĝis</string>
|
||||
<string name="info_prepare_tx">Preparante vian transakcion</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">Kreante mendon al XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_query">Petante XMR.TO-mendon </string>
|
||||
<string name="label_send_progress_xmrto_create">Kreante mendon al SideShift.ai</string>
|
||||
<string name="label_send_progress_xmrto_query">Petante SideShift.ai-mendon </string>
|
||||
<string name="label_send_progress_create_tx">Preparante la Monero-transakcion</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">Petante la XMR.TO-parametrojn</string>
|
||||
<string name="label_send_progress_queryparms">Petante la SideShift.ai-parametrojn</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">ERARO JE XMR.TO</string>
|
||||
<string name="label_generic_xmrto_error">ERARO JE SideShift.ai</string>
|
||||
<string name="text_generic_xmrto_error">kodo: %1$d</string>
|
||||
|
||||
<string name="text_retry">Tuŝu por reprovi</string>
|
||||
<string name="text_noretry_monero">Ni blokiĝis ĉi tie!</string>
|
||||
<string name="text_noretry">Uh-oh, ŝajne XMR.TO ne disponas momente!</string>
|
||||
<string name="text_noretry">Uh-oh, ŝajne SideShift.ai ne disponas momente!</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(kurzo: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Vizitu xmr.to por helpo kaj sekvado</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Sekreta ŝlosilo\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">XMR.TO sekreta ŝlosilo</string>
|
||||
<string name="label_send_btc_xmrto_info">Vizitu SideShift.ai por helpo kaj sekvado</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Sekreta ŝlosilo\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">SideShift.ai sekreta ŝlosilo</string>
|
||||
<string name="label_send_btc_address">Ricevanta BTC-adreso</string>
|
||||
<string name="label_send_btc_amount">Kvanto</string>
|
||||
|
||||
@ -153,9 +153,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">Vida ŝlosilo</string>
|
||||
<string name="label_copy_address">Publika adreso</string>
|
||||
<string name="label_copy_xmrtokey">XMR.TO ŝlosilo</string>
|
||||
<string name="label_copy_xmrtokey">Ŝlosilo</string>
|
||||
<string name="message_copy_viewkey">Vida ŝlosilo kopiiĝis en la tondujon!</string>
|
||||
<string name="message_copy_xmrtokey">XMR.TO ŝlosilo kopiiĝis en la tondujon!</string>
|
||||
<string name="message_copy_xmrtokey">Ŝlosilo kopiiĝis en la tondujon!</string>
|
||||
<string name="message_copy_address">La monujadreso kopiiĝis en la tondujon!</string>
|
||||
<string name="message_copy_txid">La transakcia ID kopiiĝis en la tondujon!</string>
|
||||
<string name="message_nocopy">Por pli da sekureco, vi ne rajtas kopii tion!</string>
|
||||
@ -354,12 +354,9 @@
|
||||
<string name="node_nobookmark">Aŭtomate memoris la %1$d plej bonajn nodojn</string>
|
||||
<string name="label_test">Testo</string><!--note: as in "Test a network connection"-->
|
||||
|
||||
<string name="send_address_resolve_bip70">Solvante la pagan URI…</string>
|
||||
<string name="send_address_not_bip70">Ne sukcesis solvi la pagan URI</string>
|
||||
<string name="send_address_bip70">Sukcesis solvi la pagan URI✔</string>
|
||||
<string name="send_address_hint">Ricevanto</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO ne enretas - provu pli poste</string>
|
||||
<string name="xmrto_error_001">SideShift.ai ne enretas - provu pli poste</string>
|
||||
<string name="xmrto_error_004">BTC-kvanto tro grandas</string>
|
||||
<string name="xmrto_error_010">La paga URL malvalidas aŭ ne ĝisdatiĝis</string>
|
||||
<string name="xmrto_error_012">Tro da mendoj</string>
|
||||
@ -387,7 +384,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -408,4 +405,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -164,68 +164,53 @@
|
||||
<ul>
|
||||
<li>an OpenAlias for XMR or BTC</li>
|
||||
<li>a BTC address</li>
|
||||
<li>a bitcoin: URI (including BIP70 like bitpay)</li>
|
||||
</u>
|
||||
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.</p>
|
||||
<h2>ID de Pago</h2>
|
||||
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.</p>
|
||||
<h1>Enviar BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Tipo de cambio XMR.TO<h2>
|
||||
<p>En la pantalla de \"Monto\" se te mostrará las condiciones actuales del servicio XMR.TO.
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Tipo de cambio SideShift.ai<h2>
|
||||
<p>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?</p>
|
||||
<h2>Orden XMR.TO<h2>
|
||||
<p> 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.</p>
|
||||
<h2>Orden SideShift.ai<h2>
|
||||
<p> 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.</p>
|
||||
<h2>Clave secreta XMR.TO<h2>
|
||||
<h2>Clave secreta SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<p>Por favor ten en cuenta que esta clave secreta sólo es válida por 24 horas a partir de
|
||||
iniciada la transacción!</p>
|
||||
<h2>Cuenta atrás XMR.TO!</h2>
|
||||
clave secreta SideShift.ai para rastrear la parte en Bitcoin de tu orden en la página de SideShift.ai.</p>
|
||||
<h2>Cuenta atrás SideShift.ai!</h2>
|
||||
<p>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\".</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>Enviar BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Tipo de cambio XMR.TO<h2>
|
||||
<p>En la pantalla de \"Monto\" se te mostrará las condiciones actuales del servicio XMR.TO.
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Tipo de cambio SideShift.ai<h2>
|
||||
<p>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?</p>
|
||||
<h2>Orden XMR.TO<h2>
|
||||
<p> 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.</p>
|
||||
<h2>Orden SideShift.ai<h2>
|
||||
<p> 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.</p>
|
||||
<h2>Clave secreta XMR.TO<h2>
|
||||
<h2>Clave secreta SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<p>Por favor ten en cuenta que esta clave secreta sólo es válida por 24 horas a partir de
|
||||
iniciada la transacción!</p>
|
||||
<h2>Cuenta atrás XMR.TO!</h2>
|
||||
clave secreta SideShift.ai para rastrear la parte en Bitcoin de tu orden en la página de SideShift.ai.</p>
|
||||
<h2>Cuenta atrás SideShift.ai!</h2>
|
||||
<p>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\".</p>
|
||||
]]></string>
|
||||
|
||||
|
@ -219,41 +219,41 @@
|
||||
<string name="fab_restore_seed">Restaurar monedero con semilla de 25 palabras</string>
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Ingresaste una dirección Bitcoin</b><br/>
|
||||
<i>Vas a enviar XMR y el destinatario recibirá BTC usando el servicio <b>XMR.TO</b>.</i>
|
||||
<i>Vas a enviar XMR y el destinatario recibirá BTC usando el servicio <b>SideShift.ai</b>.</i>
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
<string name="info_send_xmrto_paid">Confirmación pendiente</string>
|
||||
<string name="info_send_xmrto_unpaid">Pago pendiente</string>
|
||||
<string name="info_send_xmrto_error">Error de XMR.TO (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">Error de SideShift.ai (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC Enviados!</string>
|
||||
<string name="info_send_xmrto_query">Consultando …</string>
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Puedes enviar %1$s — %2$s BTC</b>.<br/>
|
||||
<i><b>XMR.TO</b> está ofreciendo una tasa de cambio de <b>%3$s BTC</b> <u>en este momento</u></i>.
|
||||
<i><b>SideShift.ai</b> está ofreciendo una tasa de cambio de <b>%3$s BTC</b> <u>en este momento</u></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Montos hasta <b>%1$s BTC</b> serán enviados <u>en el momento</u>!</i>
|
||||
]]></string>
|
||||
<string name="send_available_btc">Saldo: %2$s BTC (%1$s XMR)</string>
|
||||
<string name="label_send_progress_xmrto_create">Creando orden XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_query">Consultando orden XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_create">Creando orden SideShift.ai</string>
|
||||
<string name="label_send_progress_xmrto_query">Consultando orden SideShift.ai</string>
|
||||
<string name="label_send_progress_create_tx">Preparando transacción Monero</string>
|
||||
<string name="label_send_progress_queryparms">Consultando parámetros XMR.TO</string>
|
||||
<string name="label_generic_xmrto_error">ERROR XMR.TO</string>
|
||||
<string name="label_send_progress_queryparms">Consultando parámetros SideShift.ai</string>
|
||||
<string name="label_generic_xmrto_error">ERROR SideShift.ai</string>
|
||||
<string name="text_generic_xmrto_error">Código: %1$d</string>
|
||||
<string name="text_retry">Toca para reintentar</string>
|
||||
<string name="text_noretry_monero">Parece que estamos atascados!</string>
|
||||
<string name="text_noretry">Oh-oh, parece que XMR.TO no está disponible ahora!</string>
|
||||
<string name="text_noretry">Oh-oh, parece que SideShift.ai no está disponible ahora!</string>
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Cambio: %1$s BTC/XMR)</string>
|
||||
<string name="label_send_btc_xmrto_info">Visita https://xmr.to para soporte y rastreo</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Clave secreta\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">Clave secreta XMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_info">Visita https://sideshift.ai para soporte y rastreo</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Clave secreta\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">Clave secreta SideShift.ai</string>
|
||||
<string name="label_send_btc_address">Dirección BTC destino</string>
|
||||
<string name="label_send_btc_amount">Monto</string>
|
||||
<string name="send_xmrto_timeout">Oye, esperaste demasiado!</string>
|
||||
<string name="label_copy_xmrtokey">Clave XMR.TO</string>
|
||||
<string name="message_copy_xmrtokey">¡Clave XMR.TO copiada al portapapeles!</string>
|
||||
<string name="label_copy_xmrtokey">Clave</string>
|
||||
<string name="message_copy_xmrtokey">¡Clave copiada al portapapeles!</string>
|
||||
<string name="send_send_label">Enviar mis preciados moneroj</string>
|
||||
<string name="send_send_timed_label">Gastar mis preciados moneroj (%1$s)</string>
|
||||
<string name="send_address_invalid">No es una dirección válida</string>
|
||||
@ -264,7 +264,7 @@
|
||||
<string name="tx_destination_btc">Destino\n(BTC)</string>
|
||||
<string name="tx_amount_btc">Monto\n(BTC)</string>
|
||||
<string name="about_whoami">Soy monerujo</string>
|
||||
<string name="info_send_xmrto_success_order_label">Orden XMR.TO</string>
|
||||
<string name="info_send_xmrto_success_order_label">Orden SideShift.ai</string>
|
||||
|
||||
<string name="info_xmrto_enabled">Pago en BTC activado, toca para más info.</string>
|
||||
<string name="info_ledger_enabled">Ledger activado, toca para más info.</string>
|
||||
@ -344,13 +344,10 @@
|
||||
<string name="node_nobookmark">Mejores %1$d nodos marcados automáticamente</string>
|
||||
<string name="label_test">Probar</string><!--note: as in "Test a network connection"-->
|
||||
|
||||
<string name="send_address_resolve_bip70">Resolving Payment URI…</string>
|
||||
<string name="send_address_not_bip70">Could not resolve Payment URI</string>
|
||||
<string name="send_address_bip70">Resolved Payment URI ✔</string>
|
||||
<!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
|
||||
<string name="send_address_hint">Receptor</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO offline - try again later</string>
|
||||
<string name="xmrto_error_001">SideShift.ai offline - try again later</string>
|
||||
<string name="xmrto_error_004">BTC amount out of bounds</string>
|
||||
<string name="xmrto_error_010">Invalid or outdated Payment URL</string>
|
||||
<string name="xmrto_error_012">Too many requests</string>
|
||||
@ -378,7 +375,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -399,4 +396,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -33,8 +33,8 @@
|
||||
https://coinmarketcap.com/privacy, et saada üksikasju, kuidas teie päringute kohta
|
||||
andmeid kogutakse.</p>
|
||||
<p>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.</p>
|
||||
<h2>Äpi õigused</h2>
|
||||
<ul>
|
||||
|
@ -159,78 +159,51 @@
|
||||
<ul>
|
||||
<li>an OpenAlias for XMR or BTC</li>
|
||||
<li>a BTC address</li>
|
||||
<li>a bitcoin: URI (including BIP70 like bitpay)</li>
|
||||
</u>
|
||||
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.</p>
|
||||
<h2>Makse ID</h2>
|
||||
<p>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.<p>
|
||||
<h2><em>Ring<em>\'i suurus</h2>
|
||||
<p>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.</p>
|
||||
<h2>Tähtsus</h2>
|
||||
<p>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\".</p>
|
||||
<h1>Bitcoini (BTC) saatmine</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO vahetuskurss<h2>
|
||||
<p>On the \"Amount\" screen you will be shown the current parameters of the XMR.TO service. These
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai vahetuskurss<h2>
|
||||
<p>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?</p>
|
||||
<h2>XMR.TO tellimus<h2>
|
||||
<p>On the \"Confirm\" screen, you will see the actual XMR.TO order. This order is valid for
|
||||
rate is not guaranteed at this point.</p>
|
||||
<h2>SideShift.ai tellimus<h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO privaatvõti<h2>
|
||||
<p>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.</p>
|
||||
<p>Please note, that this secret key is only valid for 24 hours after the transaction is
|
||||
started!</p>
|
||||
<h2>XMR.TO loendur</h2>
|
||||
<p>Once the countdown reaches zero, you need to get a new quote from XMR.TO by going back to the
|
||||
<h2>SideShift.ai privaatvõti<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai loendur</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>Bitcoini (BTC) saatmine</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO vahetuskurss<h2>
|
||||
<p>On the \"Amount\" screen you will be shown the current parameters of the XMR.TO service. These
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai vahetuskurss<h2>
|
||||
<p>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?</p>
|
||||
<h2>XMR.TO tellimus<h2>
|
||||
<p>On the \"Confirm\" screen, you will see the actual XMR.TO order. This order is valid for
|
||||
rate is not guaranteed at this point.</p>
|
||||
<h2>SideShift.ai tellimus<h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO privaatvõti<h2>
|
||||
<p>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.</p>
|
||||
<p>Please note, that this secret key is only valid for 24 hours after the transaction is
|
||||
started!</p>
|
||||
<h2>XMR.TO loendur</h2>
|
||||
<p>Once the countdown reaches zero, you need to get a new quote from XMR.TO by going back to the
|
||||
<h2>SideShift.ai privaatvõti<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai loendur</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
|
@ -36,22 +36,22 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Sa sisestasid Bitcoini aadressi.</b><br/>
|
||||
<i>See tähendab, et sa saadad Monerosid ning kohale jõuavad Bitcoinid kasutades XMR.TO teenust.</i>
|
||||
<i>See tähendab, et sa saadad Monerosid ning kohale jõuavad Bitcoinid kasutades SideShift.ai teenust.</i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">XMR.TO tellimus</string>
|
||||
<string name="info_send_xmrto_success_order_label">SideShift.ai tellimus</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
<string name="info_send_xmrto_paid">Ootan kinnitust</string>
|
||||
<string name="info_send_xmrto_unpaid">Ootan makset</string>
|
||||
<string name="info_send_xmrto_error">XMR.TO viga (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">SideShift.ai viga (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC saadetud!</string>
|
||||
<string name="info_send_xmrto_query">Küsin …</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Sa saad saata %1$s — %2$s BTC</b>.<br/>
|
||||
<i><b>XMR.TO</b> annab <u>hetkel</u> vahetuskursiks <b>%3$s BTC</b></i>.
|
||||
<i><b>SideShift.ai</b> annab <u>hetkel</u> vahetuskursiks <b>%3$s BTC</b></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Kuni <b>%1$s BTC</b> saadetakse <u>viivitamatult</u>!</i>
|
||||
@ -62,25 +62,25 @@
|
||||
<string name="info_paymentid_integrated">✔ Makse ID integreeritud</string>
|
||||
<string name="info_prepare_tx">Valmistan ülekannet ette</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">Loon XMR.TO tellimust</string>
|
||||
<string name="label_send_progress_xmrto_query">Küsin XMR.TO tellimust</string>
|
||||
<string name="label_send_progress_xmrto_create">Loon SideShift.ai tellimust</string>
|
||||
<string name="label_send_progress_xmrto_query">Küsin SideShift.ai tellimust</string>
|
||||
<string name="label_send_progress_create_tx">Valmistan ette Monero ülekannet</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">Küsin XMR.TO parameetreid</string>
|
||||
<string name="label_send_progress_queryparms">Küsin SideShift.ai parameetreid</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">XMR.TO viga</string>
|
||||
<string name="label_generic_xmrto_error">SideShift.ai viga</string>
|
||||
<string name="text_generic_xmrto_error">Kood: %1$d</string>
|
||||
|
||||
<string name="text_retry">Puuduta uuesti proovimiseks</string>
|
||||
<string name="text_noretry_monero">Nüüd jõudsime küll tupikusse!</string>
|
||||
<string name="text_noretry">Oh ei, XMR.TO ei ole hetkel saadaval!</string>
|
||||
<string name="text_noretry">Oh ei, SideShift.ai ei ole hetkel saadaval!</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Kurss: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Külasta xmr.to lisainfo saamiseks & jälgin</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Privaatvõti\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">XMR.TO privaatvõti</string>
|
||||
<string name="label_send_btc_xmrto_info">Külasta SideShift.ai lisainfo saamiseks & jälgin</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Privaatvõti\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">SideShift.ai privaatvõti</string>
|
||||
<string name="label_send_btc_address">Sihtkoha Bitcoini aadress</string>
|
||||
<string name="label_send_btc_amount">Kogus</string>
|
||||
|
||||
@ -151,9 +151,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">Vaatamise võti</string>
|
||||
<string name="label_copy_address">Avalik aadress</string>
|
||||
<string name="label_copy_xmrtokey">XMR.TO võti</string>
|
||||
<string name="label_copy_xmrtokey">Võti</string>
|
||||
<string name="message_copy_viewkey">Vaatamise võti on kopeeritud lõikepuhvrisse!</string>
|
||||
<string name="message_copy_xmrtokey">XMR.TO võti on kopeeritud lõikepuhvrisse!</string>
|
||||
<string name="message_copy_xmrtokey">Võti on kopeeritud lõikepuhvrisse!</string>
|
||||
<string name="message_copy_address">Rahakoti aadress on kopeeritud lõikepuhvrisse!</string>
|
||||
<string name="message_copy_txid">Ülekande ID on kopeeritud lõikepuhvrisse!</string>
|
||||
<string name="message_nocopy">Lõikepuhvrisse kopeerimine on turvakaalutlustel keelatud!</string>
|
||||
@ -351,13 +351,10 @@
|
||||
|
||||
<string name="backup_success">Tagavarakoopia õnnestus</string>
|
||||
|
||||
<string name="send_address_resolve_bip70">Resolving Payment URI…</string>
|
||||
<string name="send_address_not_bip70">Could not resolve Payment URI</string>
|
||||
<string name="send_address_bip70">Resolved Payment URI ✔</string>
|
||||
<!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
|
||||
<string name="send_address_hint">Saaja</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO offline - try again later</string>
|
||||
<string name="xmrto_error_001">SideShift.ai offline - try again later</string>
|
||||
<string name="xmrto_error_004">BTC amount out of bounds</string>
|
||||
<string name="xmrto_error_010">Invalid or outdated Payment URL</string>
|
||||
<string name="xmrto_error_012">Too many requests</string>
|
||||
@ -385,7 +382,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -406,4 +403,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -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.</p>
|
||||
<p>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.</p>
|
||||
<h2>Permissions de l’application</h2>
|
||||
|
@ -157,68 +157,54 @@
|
||||
<ul>
|
||||
<li>une adresse OpenAlias pour XMR ou BTC</li>
|
||||
<li>une adresse BTC</li>
|
||||
<li>une URI bitcoin: (incluant BIP70 comme bitpay)</li>
|
||||
</u>
|
||||
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.</p>
|
||||
<h2>ID de Paiement</h2>
|
||||
<p>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é.</p>
|
||||
<h1>Envoyer des BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Taux de change XMR.TO<h2>
|
||||
<p>Sur l’écran \"Montant\" vous seront indiqué les paramètres actuels du serive XMR.TO. Cela
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Taux de change SideShift.ai<h2>
|
||||
<p>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 ?</p>
|
||||
<h2>Ordre XMR.TO<h2>
|
||||
<p>Sur l’écran \"Confirmation\", vous verez l’ordre XMR.TO actuel. Cette ordre est valide pour
|
||||
n’est pas garantit à ce stade.</p>
|
||||
<h2>Ordre SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Clef Secrète XMR.TO<h2>
|
||||
<h2>Clef Secrète SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<p>Veuillez noter que cette clef secrète est seulement valable 24h après le lancement de la
|
||||
transaction !</p>
|
||||
<h2>Compte à Rebours XMR.TO !</h2>
|
||||
SideShift.ai peut être utilisée pour suivre le volet Bitcoin de votre ordre sur la page d’accueil
|
||||
de SideShift.ai.</p>
|
||||
<h2>Compte à Rebours SideShift.ai !</h2>
|
||||
<p>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\".</p>
|
||||
SideShift.ai en retournant à l’étape précédente puis en revenant à l’écran \"Confirmation\".</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>Envoyer des BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Taux de change XMR.TO<h2>
|
||||
<p>Sur l’écran \"Montant\" vous seront indiqué les paramètres actuels du serive XMR.TO. Cela
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Taux de change SideShift.ai<h2>
|
||||
<p>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 ?</p>
|
||||
<h2>Ordre XMR.TO<h2>
|
||||
<p>Sur l’écran \"Confirmation\", vous verez l’ordre XMR.TO actuel. Cette ordre est valide pour
|
||||
n’est pas garantit à ce stade.</p>
|
||||
<h2>Ordre SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Clef Secrète XMR.TO<h2>
|
||||
<h2>Clef Secrète SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<p>Veuillez noter que cette clef secrète est seulement valable 24h après le lancement de la
|
||||
transaction !</p>
|
||||
<h2>Compte à Rebours XMR.TO !</h2>
|
||||
SideShift.ai peut être utilisée pour suivre le volet Bitcoin de votre ordre sur la page d’accueil
|
||||
de SideShift.ai.</p>
|
||||
<h2>Compte à Rebours SideShift.ai !</h2>
|
||||
<p>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\".</p>
|
||||
SideShift.ai en retournant à l’étape précédente puis en revenant à l’écran \"Confirmation\".</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_create_ledger"><![CDATA[
|
||||
|
@ -36,23 +36,23 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Vous avez entré une adresse Bitcoin.</b><br/>
|
||||
<i>Vous envoyez des XMR et le destinataire recevra des BTC via le service <b>XMR.TO</b>.</i>
|
||||
<i>Vous envoyez des XMR et le destinataire recevra des BTC via le service <b>SideShift.ai</b>.</i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">Ordres XMR.TO</string>
|
||||
<string name="info_send_xmrto_success_order_label">Ordres SideShift.ai</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
|
||||
<string name="info_send_xmrto_paid">En Attente de Confirmation</string>
|
||||
<string name="info_send_xmrto_unpaid">En Attente de Paiement</string>
|
||||
<string name="info_send_xmrto_error">Erreur XMR.TO (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">Erreur SideShift.ai (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC Envoyé !</string>
|
||||
<string name="info_send_xmrto_query">Interrogation …</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Vous pouvez envoyer %1$s — %2$s BTC</b>.<br/>
|
||||
<i><b>XMR.TO</b> vous donne un taux de change de <b>%3$s BTC</b> <u>actuellement</u></i>.
|
||||
<i><b>SideShift.ai</b> vous donne un taux de change de <b>%3$s BTC</b> <u>actuellement</u></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Les montant n\'excédant pas <b>%1$s BTC</b> seront envoyés <u>immédiatement</u>!</i>
|
||||
@ -63,25 +63,25 @@
|
||||
<string name="info_paymentid_integrated">✔ ID de Paiement intégré</string>
|
||||
<string name="info_prepare_tx">Préparation de votre transaction</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">Création de l\'ordre XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_query">Interrogation de l\'ordre XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_create">Création de l\'ordre SideShift.ai</string>
|
||||
<string name="label_send_progress_xmrto_query">Interrogation de l\'ordre SideShift.ai</string>
|
||||
<string name="label_send_progress_create_tx">Préparation de la Transaction Monero</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">Interrogation des paramètres xmr.to</string>
|
||||
<string name="label_send_progress_queryparms">Interrogation des paramètres SideShift.ai</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">ERREUR XMR.TO</string>
|
||||
<string name="label_generic_xmrto_error">ERREUR SideShift.ai</string>
|
||||
<string name="text_generic_xmrto_error">Code : %1$d</string>
|
||||
|
||||
<string name="text_retry">Touchez pour réessayer</string>
|
||||
<string name="text_noretry_monero">Maintenant on est coincé ici !</string>
|
||||
<string name="text_noretry">Oh-oh, XMR.TO n\'a pas l\'air disponible pour le moment !</string>
|
||||
<string name="text_noretry">Oh-oh, SideShift.ai n\'a pas l\'air disponible pour le moment !</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Taux : %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Visitez xmr.to pour l\'assistance & le suivi</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Clef Secrète\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">Clef Secrète XMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_info">Visitez SideShift.ai pour l\'assistance & le suivi</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Clef Secrète\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">Clef Secrète SideShift.ai</string>
|
||||
<string name="label_send_btc_address">Adresse BTC Destination</string>
|
||||
<string name="label_send_btc_amount">Montant</string>
|
||||
|
||||
@ -153,9 +153,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">Clef d\'Audit</string>
|
||||
<string name="label_copy_address">Adresse Publique</string>
|
||||
<string name="label_copy_xmrtokey">Clef XMR.TO</string>
|
||||
<string name="label_copy_xmrtokey">Clef</string>
|
||||
<string name="message_copy_viewkey">Clef d\'audit copiée !</string>
|
||||
<string name="message_copy_xmrtokey">Clef XMR.TO copiée !</string>
|
||||
<string name="message_copy_xmrtokey">Clef copiée !</string>
|
||||
<string name="message_copy_address">Adresse du Portefeuille copiée !</string>
|
||||
<string name="message_copy_txid">ID de Transaction copié !</string>
|
||||
<string name="message_nocopy">Copie désactivée par sécurité !</string>
|
||||
@ -357,13 +357,10 @@
|
||||
<string name="node_nobookmark">%1$d meilleurs nœuds mis en favoris automatiquement</string>
|
||||
<string name="label_test">Tester</string><!--note: as in "Test a network connection"-->
|
||||
|
||||
<string name="send_address_resolve_bip70">Résolution de l\'URI de Paiement…</string>
|
||||
<string name="send_address_not_bip70">Résolution de l\'URI de Paiement impossible</string>
|
||||
<string name="send_address_bip70">URI de Paiement Résolue ✔</string>
|
||||
<!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
|
||||
<string name="send_address_hint">Destinataire</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO hors ligne - réessayer ultérieurement</string>
|
||||
<string name="xmrto_error_001">SideShift.ai hors ligne - réessayer ultérieurement</string>
|
||||
<string name="xmrto_error_004">Montant BTC hors limites</string>
|
||||
<string name="xmrto_error_010">URL de Paiement invalide ou périmée</string>
|
||||
<string name="xmrto_error_012">Trop de requêtes</string>
|
||||
@ -391,7 +388,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -412,4 +409,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -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.</p>
|
||||
<p>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.
|
||||
<p>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ő.</p>
|
||||
<h2>Applikációengedélyek</h2>
|
||||
|
@ -146,68 +146,53 @@
|
||||
<ul>
|
||||
<li>an OpenAlias for XMR or BTC</li>
|
||||
<li>a BTC address</li>
|
||||
<li>a bitcoin: URI (including BIP70 like bitpay)</li>
|
||||
</u>
|
||||
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.</p>
|
||||
<h2>Fizetési azonosító</h2>
|
||||
<p>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.<p>
|
||||
<h1>BTC-küldés</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO árfolyam<h2>
|
||||
<p>A Mennyiség oldalon kerülnek megjelenítésre az XMR.TO szolgáltatás paraméterei. Ez magában
|
||||
<h2>SideShift.ai árfolyam<h2>
|
||||
<p>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?</p>
|
||||
<h2>XMR.TO megrendelés<h2>
|
||||
hogy ez az árfolyam ekkor még nem garantált.</p>
|
||||
<h2>SideShift.ai megrendelés<h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO titkos kulcs<h2>
|
||||
<p>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.</p>
|
||||
<p>Kérjük vedd figyelembe, hogy ez a titkos kulcs csak a tranzakció kezdetétől számított
|
||||
24 óráig érvényes!</p>
|
||||
<h2>XMR.TO visszaszámlálás!</h2>
|
||||
<p>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
|
||||
<h2>SideShift.ai titkos kulcs<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai visszaszámlálás!</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>BTC-küldés</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO árfolyam<h2>
|
||||
<p>A Mennyiség oldalon kerülnek megjelenítésre az XMR.TO szolgáltatás paraméterei. Ez magában
|
||||
<h2>SideShift.ai árfolyam<h2>
|
||||
<p>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?</p>
|
||||
<h2>XMR.TO megrendelés<h2>
|
||||
hogy ez az árfolyam ekkor még nem garantált.</p>
|
||||
<h2>SideShift.ai megrendelés<h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO titkos kulcs<h2>
|
||||
<p>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.</p>
|
||||
<p>Kérjük vedd figyelembe, hogy ez a titkos kulcs csak a tranzakció kezdetétől számított
|
||||
24 óráig érvényes!</p>
|
||||
<h2>XMR.TO visszaszámlálás!</h2>
|
||||
<p>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
|
||||
<h2>SideShift.ai titkos kulcs<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai visszaszámlálás!</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
|
@ -36,22 +36,22 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Bitcoin-címet adtál meg.</b><br/>
|
||||
<i>XMR-t fogsz küldeni, a fogadó pedig BTC-t fog kapni az <b>XMR.TO</b> szolgáltatásán keresztül.</i>
|
||||
<i>XMR-t fogsz küldeni, a fogadó pedig BTC-t fog kapni az <b>SideShift.ai</b> szolgáltatásán keresztül.</i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">XMR.TO megrendelés</string>
|
||||
<string name="info_send_xmrto_success_order_label">SideShift.ai megrendelés</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
<string name="info_send_xmrto_paid">Megerősítés folyamatban</string>
|
||||
<string name="info_send_xmrto_unpaid">Kifizetés folyamatban</string>
|
||||
<string name="info_send_xmrto_error">XMR.TO-hiba (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">SideShift.ai-hiba (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC elküldve!</string>
|
||||
<string name="info_send_xmrto_query">Lekérdezés…</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Elküldhetsz: %1$s — %2$s BTC</b>.<br/>
|
||||
<i>Az <b>XMR.TO</b> <u>aktuális</u> árfolyama: <b>%3$s BTC</b></i>.
|
||||
<i>Az <b>SideShift.ai</b> <u>aktuális</u> árfolyama: <b>%3$s BTC</b></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>A legfeljebb <b>%1$s BTC</b> nagyságú összegek <u>azonnal</u> elküldésre kerülnek!</i>
|
||||
@ -62,25 +62,25 @@
|
||||
<string name="info_paymentid_integrated">✔ Fizetési azonosító integrálva</string>
|
||||
<string name="info_prepare_tx">Tranzakció előkészítése</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">XMR.TO megrendelés létrehozása</string>
|
||||
<string name="label_send_progress_xmrto_query">XMR.TO megrendelés lekérdezése</string>
|
||||
<string name="label_send_progress_xmrto_create">SideShift.ai megrendelés létrehozása</string>
|
||||
<string name="label_send_progress_xmrto_query">SideShift.ai megrendelés lekérdezése</string>
|
||||
<string name="label_send_progress_create_tx">Monero-tranzakció előkészítése</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">XMR.TO paraméterek lekérdezése</string>
|
||||
<string name="label_send_progress_queryparms">SideShift.ai paraméterek lekérdezése</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">XMR.TO HIBA</string>
|
||||
<string name="label_generic_xmrto_error">SideShift.ai HIBA</string>
|
||||
<string name="text_generic_xmrto_error">Kód: %1$d</string>
|
||||
|
||||
<string name="text_retry">Koppints az újrapróbálkozáshoz</string>
|
||||
<string name="text_noretry_monero">Itt most elakadtunk!</string>
|
||||
<string name="text_noretry">Ajjaj! Úgy néz ki, az XMR.TO most nem elérhető!</string>
|
||||
<string name="text_noretry">Ajjaj! Úgy néz ki, az SideShift.ai most nem elérhető!</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Arány: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Segítségért és nyomonkövetésért látogass el az XMR.TO weboldalra</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Titkos kulcs\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">XMR.TO titkos kulcs</string>
|
||||
<string name="label_send_btc_xmrto_info">Segítségért és nyomonkövetésért látogass el az SideShift.ai weboldalra</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Titkos kulcs\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">SideShift.ai titkos kulcs</string>
|
||||
<string name="label_send_btc_address">Kedvezményezett BTC-címe</string>
|
||||
<string name="label_send_btc_amount">Mennyiség</string>
|
||||
|
||||
@ -151,9 +151,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">Figyelőkulcs</string>
|
||||
<string name="label_copy_address">Nyilvános cím</string>
|
||||
<string name="label_copy_xmrtokey">XMR.TO kulcs</string>
|
||||
<string name="label_copy_xmrtokey">Kulcs</string>
|
||||
<string name="message_copy_viewkey">Figyelőkulcs vágólapra másolva!</string>
|
||||
<string name="message_copy_xmrtokey">XMR.TO kulcs vágólapra másolva!</string>
|
||||
<string name="message_copy_xmrtokey">Kulcs vágólapra másolva!</string>
|
||||
<string name="message_copy_address">Tárcacím vágólapra másolva!</string>
|
||||
<string name="message_copy_txid">Tranzakcióazonosító vágólapra másolva!</string>
|
||||
<string name="message_nocopy">A másolás biztonsági okokból tiltásra került!</string>
|
||||
@ -356,12 +356,9 @@
|
||||
|
||||
<string name="backup_success">Backup successful</string>
|
||||
|
||||
<string name="send_address_resolve_bip70">Resolving Payment URI…</string>
|
||||
<string name="send_address_not_bip70">Could not resolve Payment URI</string>
|
||||
<string name="send_address_bip70">Resolved Payment URI ✔</string>
|
||||
<string name="send_address_hint">Receiver</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO offline - try again later</string>
|
||||
<string name="xmrto_error_001">SideShift.ai offline - try again later</string>
|
||||
<string name="xmrto_error_004">BTC amount out of bounds</string>
|
||||
<string name="xmrto_error_010">Invalid or outdated Payment URL</string>
|
||||
<string name="xmrto_error_012">Too many requests</string>
|
||||
@ -389,7 +386,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -410,4 +407,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -27,8 +27,8 @@
|
||||
<p>Altri dati personali non sono raccolti dall\'app.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<h2>Permessi app</h2>
|
||||
<ul>
|
||||
<li>INTERNET : Connessione alla rete Monero attraverso un nodo </li>
|
||||
|
@ -152,61 +152,51 @@
|
||||
<ul>
|
||||
<li>an OpenAlias for XMR or BTC</li>
|
||||
<li>a BTC address</li>
|
||||
<li>a bitcoin: URI (including BIP70 like bitpay)</li>
|
||||
</u>
|
||||
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.</p>
|
||||
<h2>ID Pagamento</h2>
|
||||
<p>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.<p>
|
||||
<h1>Inviare BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Tasso di cambio XMR.TO<h2>
|
||||
<p>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.</p>
|
||||
<h2>Tasso di cambio SideShift.ai<h2>
|
||||
<p>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?</p>
|
||||
<h2>Ordine XMR.TO<h2>
|
||||
<p>Sulla schermata \"Conferma\", troverai il vero ordine XMR.TO. Questo ordine è valido per un tempo limitato - potresti
|
||||
non è ancora garantito in questa fase.</p>
|
||||
<h2>Ordine SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Chiave segreta XMR.TO<h2>
|
||||
<h2>Chiave segreta SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<p>Considera che questa chiave segreta è valida solamente per 24 ore dall'inizio della transazione!</p>
|
||||
<h2>Conto alla rovescia XMR.TO!</h2>
|
||||
<p>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.</p>
|
||||
<h2>Conto alla rovescia SideShift.ai!</h2>
|
||||
<p>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\".</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>Inviare BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Tasso di cambio XMR.TO<h2>
|
||||
<p>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?</p>
|
||||
<h2>XMR.TO Order<h2>
|
||||
<p>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.</p>
|
||||
<h2>Chiave segreta XMR.TO<h2>
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Tasso di cambio SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Ordine SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Chiave segreta SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<p>Considera che questa chiave segreta è valida solamente per 24 ore dall'inizio della transazione!</p>
|
||||
<h2>Conto alla rovescia XMR.TO!</h2>
|
||||
<p>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.</p>
|
||||
<h2>Conto alla rovescia SideShift.ai!</h2>
|
||||
<p>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\".</p>
|
||||
]]></string>
|
||||
|
||||
|
@ -36,23 +36,23 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Hai inserito un indirizzo Bitcoin.</b><br/>
|
||||
<i>Invierai XMR e il destinatario riceverà BTC tramite il servizio <b>XMR.TO</b>.</i>
|
||||
<i>Invierai XMR e il destinatario riceverà BTC tramite il servizio <b>SideShift.ai</b>.</i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">Ordine XMR.TO</string>
|
||||
<string name="info_send_xmrto_success_order_label">Ordine SideShift.ai</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
|
||||
<string name="info_send_xmrto_paid">In attesa di conferma</string>
|
||||
<string name="info_send_xmrto_unpaid">In attesa del pagamento</string>
|
||||
<string name="info_send_xmrto_error">Errore XMR.TO (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">Errore SideShift.ai (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC Inviati!</string>
|
||||
<string name="info_send_xmrto_query">Richiedendo …</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Puoi inviare %1$s — %2$s BTC</b>.<br/>
|
||||
<i><b>XMR.TO</b> ti sta <u>attualmente</u> concedendo un tasso di cambio di <b>%3$s BTC</b></i>.
|
||||
<i><b>SideShift.ai</b> ti sta <u>attualmente</u> concedendo un tasso di cambio di <b>%3$s BTC</b></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Ammontare fino a <b>%1$s BTC</b> inviati <u>istantaneamente</u>!</i>
|
||||
@ -63,25 +63,25 @@
|
||||
<string name="info_paymentid_integrated">✔ ID pagamento integrato</string>
|
||||
<string name="info_prepare_tx">Preparando la tua transazione</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">Creando l\'ordine XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_query">Richiedendo l\'ordine XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_create">Creando l\'ordine SideShift.ai</string>
|
||||
<string name="label_send_progress_xmrto_query">Richiedendo l\'ordine SideShift.ai</string>
|
||||
<string name="label_send_progress_create_tx">Preparando la transazione Monero</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">Richiedendo i parametri XMR.TO</string>
|
||||
<string name="label_send_progress_queryparms">Richiedendo i parametri SideShift.ai</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">ERRORE XMR.TO</string>
|
||||
<string name="label_generic_xmrto_error">ERRORE SideShift.ai</string>
|
||||
<string name="text_generic_xmrto_error">Codice: %1$d</string>
|
||||
|
||||
<string name="text_retry">Tocca per riprovare</string>
|
||||
<string name="text_noretry_monero">Ora siamo bloccati qui!!</string>
|
||||
<string name="text_noretry">Oh Oh, XMR.TO sembra non essere disponibile in questo momento!</string>
|
||||
<string name="text_noretry">Oh Oh, SideShift.ai sembra non essere disponibile in questo momento!</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Tasso: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Visita xmr.to per supporto e tracciamento</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Chiave segreta\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">Chiave segreta XMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_info">Visita SideShift.ai per supporto e tracciamento</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Chiave segreta\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">Chiave segreta SideShift.ai</string>
|
||||
<string name="label_send_btc_address">Indirizzo BTC di destinazione</string>
|
||||
<string name="label_send_btc_amount">Ammontare</string>
|
||||
|
||||
@ -153,9 +153,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">Chiave di visualizzazione</string>
|
||||
<string name="label_copy_address">Indirizzo pubblico</string>
|
||||
<string name="label_copy_xmrtokey">Chiave XMR.TO</string>
|
||||
<string name="label_copy_xmrtokey">Chiave</string>
|
||||
<string name="message_copy_viewkey">Chiave di visualizzazione copiata negli appunti!</string>
|
||||
<string name="message_copy_xmrtokey">Chiave XMR.TO copiata negli appunti!</string>
|
||||
<string name="message_copy_xmrtokey">Chiave copiata negli appunti!</string>
|
||||
<string name="message_copy_address">Indirizzo del portafoglio copiato negli appunti!</string>
|
||||
<string name="message_copy_txid">ID transazione copiato negli appunti!</string>
|
||||
<string name="message_nocopy">Copia disabilitata per ragioni di sicurezza!</string>
|
||||
@ -356,13 +356,10 @@
|
||||
<string name="node_nobookmark">Aggiunti automaticamente ai segnalibri i %1$d nodi migliori</string>
|
||||
<string name="label_test">Effettua Test</string><!--note: as in "Test a network connection"-->
|
||||
|
||||
<string name="send_address_resolve_bip70">Risolvendo URI pagamento…</string>
|
||||
<string name="send_address_not_bip70">Impossibile risolvere pagamento URI</string>
|
||||
<string name="send_address_bip70">Risolto URI pagamento✔</string>
|
||||
<!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
|
||||
<string name="send_address_hint">Ricevente</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO è offline - prova più tardi</string>
|
||||
<string name="xmrto_error_001">SideShift.ai è offline - prova più tardi</string>
|
||||
<string name="xmrto_error_004">Ammontare in BTC fuori dai limiti</string>
|
||||
<string name="xmrto_error_010">URL di pagamento obsoleto o invalido</string>
|
||||
<string name="xmrto_error_012">Troppe richieste</string>
|
||||
@ -390,7 +387,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -411,4 +408,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -36,9 +36,9 @@
|
||||
詳細については、coinmarketcap.com のプライバシーポリシーを
|
||||
https://coinmarketcap.com/privacy にて参照してください。</p>
|
||||
<p>もしあなたがこのアプリをビットコインアドレス宛に支払う場合、
|
||||
あなたは XMR.TO のサービスを使うことになります。
|
||||
https://xmr.to/ を参照して XMR.TO のプライバシーポリシーを
|
||||
ご覧ください。Monerujoは XMR.TO にビットコインの支払先アドレスと
|
||||
あなたは SideShift.ai のサービスを使うことになります。
|
||||
https://sideshift.ai/ を参照して SideShift.ai のプライバシーポリシーを
|
||||
ご覧ください。Monerujoは SideShift.ai にビットコインの支払先アドレスと
|
||||
数量を送信します。あなたのIPアドレスもまた収集されます。</p>
|
||||
<h2>アプリの権限</h2>
|
||||
<ul>
|
||||
|
@ -243,89 +243,70 @@
|
||||
<ul>
|
||||
<li>XMRやBTCのOpenAlias</li>
|
||||
<li>BTCアドレス</li>
|
||||
<li>bitcoin: URI (bitpayのようなBIP70もいい)</li>
|
||||
</u>
|
||||
BTCの送信はXMR.TOサービス(https://xmr.to)を介して処理されることに注意してください。
|
||||
BTCの送信はSideShift.aiサービス(https://sideshift.ai)を介して処理されることに注意してください。
|
||||
下記のBTCの送信に関するセクションを参照してください。</p>
|
||||
<h2>ペイメントID(Payment ID)</h2>
|
||||
<p>あなたは2者間でモネロを送金した理由を特定するために
|
||||
ペイメントIDを使うことができます。
|
||||
これはオプションの機能であり、内容は秘匿化されます。
|
||||
例えば、ペイメントIDを使うことで販売者が
|
||||
トランザクションと商品を紐付けることができます。</p>
|
||||
<h1>BTCの送金</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>XMR.TO はモネロからビットコインに換金する交換所として
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>SideShift.ai はモネロからビットコインに換金する交換所として
|
||||
機能するサードパーティ製のサービスです。私達は
|
||||
XMR.TO のAPIを使うことでビットコインの支払い機能を
|
||||
SideShift.ai のAPIを使うことでビットコインの支払い機能を
|
||||
Monerujoに組み込んでいます。
|
||||
https://xmr.to を確認して、これがあなたが使いたい
|
||||
https://sideshift.ai を確認して、これがあなたが使いたい
|
||||
機能であるかどうかをご自身で判断してください。
|
||||
Monerujoの開発チームは XMR.TO とは無関係であり、
|
||||
XMR.TOのサービスに関してあなたをサポートすることはできません。</p>
|
||||
<h2>XMR.TO の交換レート<h2>
|
||||
<p>「数量」(Amount)の画面では XMR.TO の現在の
|
||||
Monerujoの開発チームは SideShift.ai とは無関係であり、
|
||||
SideShift.aiのサービスに関してあなたをサポートすることはできません。</p>
|
||||
<h2>SideShift.ai の交換レート<h2>
|
||||
<p>「数量」(Amount)の画面では SideShift.ai の現在の
|
||||
パラメータが表示されます。これらは現在の交換レートに加えて
|
||||
送金可能なBTCの上限・下限を含みます。この交換レートは
|
||||
現時点では保証されたものではないことに注意してください。
|
||||
また、XMRの送金が承認されるのを待つことなく
|
||||
直ちにビットコインと交換できる数量も表示されるでしょう
|
||||
(詳細は XMR.TO のFAQをご覧ください)。また、XMR.TO は
|
||||
余分な手数料を取ることはしません。かっこいいと思いませんか?</p>
|
||||
<h2>XMR.TO の注文<h2>
|
||||
<p>「確認」(Confirm)の画面で、あなたは実際の XMR.TO
|
||||
現時点では保証されたものではないことに注意してください。</p>
|
||||
<h2>SideShift.ai の注文<h2>
|
||||
<p>「確認」(Confirm)の画面で、あなたは実際の SideShift.ai
|
||||
の注文を見ることになります。この注文は制限時間内でのみ有効です。
|
||||
あなたは送金(Spend)ボタンにカウントダウンが
|
||||
表示されていることに気づくかもしれません。
|
||||
交換レートは前の画面で表示されたものとは異なる可能性が有ります。</p>
|
||||
<h2>XMR.TO のシークレットキー<h2>
|
||||
<h2>SideShift.ai のシークレットキー<h2>
|
||||
<p>Monerujo はBTCとXMRのうち、XMRの方だけを取り扱います。
|
||||
XMR.TO のシークレットキーは、 XMR.TO のホームページにて
|
||||
SideShift.ai のシークレットキーは、 SideShift.ai のホームページにて
|
||||
BTCの方の注文を追跡するのに使用できます。</p>
|
||||
<p>このシークレットキーは取引が始まってから
|
||||
24時間のみ有効であることに注意してください!</p>
|
||||
<h2>XMR.TO カウントダウン!</h2>
|
||||
<h2>SideShift.ai カウントダウン!</h2>
|
||||
<p>一旦カウントダウンがゼロに到達すると、
|
||||
あなたは一度前のステップに戻って「確認」(Confirm)の画面に戻って、
|
||||
もう一度 XMR.TO から新しい見積もりを取得する必要があります。</p>
|
||||
もう一度 SideShift.ai から新しい見積もりを取得する必要があります。</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>BTCの送金</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>XMR.TO はモネロからビットコインに換金する交換所として
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>SideShift.ai はモネロからビットコインに換金する交換所として
|
||||
機能するサードパーティ製のサービスです。私達は
|
||||
XMR.TO のAPIを使うことでビットコインの支払い機能を
|
||||
SideShift.ai のAPIを使うことでビットコインの支払い機能を
|
||||
Monerujoに組み込んでいます。
|
||||
https://xmr.to を確認して、これがあなたが使いたい
|
||||
https://sideshift.ai を確認して、これがあなたが使いたい
|
||||
機能であるかどうかをご自身で判断してください。
|
||||
Monerujoの開発チームは XMR.TO とは無関係であり、
|
||||
XMR.TOのサービスに関してあなたをサポートすることはできません。</p>
|
||||
<h2>XMR.TO の交換レート<h2>
|
||||
<p>「数量」(Amount)の画面では XMR.TO の現在の
|
||||
Monerujoの開発チームは SideShift.ai とは無関係であり、
|
||||
SideShift.aiのサービスに関してあなたをサポートすることはできません。</p>
|
||||
<h2>SideShift.ai の交換レート<h2>
|
||||
<p>「数量」(Amount)の画面では SideShift.ai の現在の
|
||||
パラメータが表示されます。これらは現在の交換レートに加えて
|
||||
送金可能なBTCの上限・下限を含みます。この交換レートは
|
||||
現時点では保証されたものではないことに注意してください。
|
||||
また、XMRの送金が承認されるのを待つことなく
|
||||
直ちにビットコインと交換できる数量も表示されるでしょう
|
||||
(詳細は XMR.TO のFAQをご覧ください)。また、XMR.TO は
|
||||
余分な手数料を取ることはしません。かっこいいと思いませんか?</p>
|
||||
<h2>XMR.TO の注文<h2>
|
||||
<p>「確認」(Confirm)の画面で、あなたは実際の XMR.TO
|
||||
現時点では保証されたものではないことに注意してください。</p>
|
||||
<h2>SideShift.ai の注文<h2>
|
||||
<p>「確認」(Confirm)の画面で、あなたは実際の SideShift.ai
|
||||
の注文を見ることになります。この注文は制限時間内でのみ有効です。
|
||||
あなたは送金(Spend)ボタンにカウントダウンが
|
||||
表示されていることに気づくかもしれません。
|
||||
交換レートは前の画面で表示されたものとは異なる可能性が有ります。</p>
|
||||
<h2>XMR.TO のシークレットキー<h2>
|
||||
<h2>SideShift.ai のシークレットキー<h2>
|
||||
<p>Monerujo はBTCとXMRのうち、XMRの方だけを取り扱います。
|
||||
XMR.TO のシークレットキーは、 XMR.TO のホームページにて
|
||||
SideShift.ai のシークレットキーは、 SideShift.ai のホームページにて
|
||||
BTCの方の注文を追跡するのに使用できます。</p>
|
||||
<p>このシークレットキーは取引が始まってから
|
||||
24時間のみ有効であることに注意してください!</p>
|
||||
<h2>XMR.TO カウントダウン!</h2>
|
||||
<h2>SideShift.ai カウントダウン!</h2>
|
||||
<p>一旦カウントダウンがゼロに到達すると、
|
||||
あなたは一度前のステップに戻って「確認」(Confirm)の画面に戻って、
|
||||
もう一度 XMR.TO から新しい見積もりを取得する必要があります。</p>
|
||||
もう一度 SideShift.ai から新しい見積もりを取得する必要があります。</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_wallet"><![CDATA[
|
||||
|
@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name" translatable="false">monerujo</string>
|
||||
<string name="wallet_activity_name">ウォレット</string>
|
||||
|
||||
<string name="menu_about">Monerujoについて</string>
|
||||
@ -37,22 +36,22 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>あなたが入力したのはビットコインのアドレスです。</b><br/>
|
||||
<i>あなたはXMRを送金し、受け手は XMR.TO のサービスを利用してBTCを受取ります。</i>
|
||||
<i>あなたはXMRを送金し、受け手は SideShift.ai のサービスを利用してBTCを受取ります。</i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">XMR.TO の注文</string>
|
||||
<string name="info_send_xmrto_success_order_label">SideShift.ai の注文</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
<string name="info_send_xmrto_paid">承認を待っています</string>
|
||||
<string name="info_send_xmrto_unpaid">支払いを待っています</string>
|
||||
<string name="info_send_xmrto_error">XMR.TO のエラー (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">SideShift.ai のエラー (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTCが送金されました!</string>
|
||||
<string name="info_send_xmrto_query">問い合わせ中 …</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>%1$s から %2$s BTC を送金することができます。</b><br/>
|
||||
<i><b>XMR.TO</b> での交換レートは<u>現在</u><b>%3$s BTC</b>です。</i>
|
||||
<i><b>SideShift.ai</b> での交換レートは<u>現在</u><b>%3$s BTC</b>です。</i>
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i><b>%1$s BTC</b> までの数量は <u>即時に</u>送金可能です!</i>
|
||||
@ -63,25 +62,25 @@
|
||||
<string name="info_paymentid_integrated">✔ ペイメントID組み込み済み</string>
|
||||
<string name="info_prepare_tx">取引を準備しています</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">XMR.TO の注文を作成しています</string>
|
||||
<string name="label_send_progress_xmrto_query">XMR.TO の注文を問い合わせています</string>
|
||||
<string name="label_send_progress_xmrto_create">SideShift.ai の注文を作成しています</string>
|
||||
<string name="label_send_progress_xmrto_query">SideShift.ai の注文を問い合わせています</string>
|
||||
<string name="label_send_progress_create_tx">モネロの取引を準備しています</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">XMR.TO のパラメータを問い合わせています</string>
|
||||
<string name="label_send_progress_queryparms">SideShift.ai のパラメータを問い合わせています</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">XMR.TO のエラー</string>
|
||||
<string name="label_generic_xmrto_error">SideShift.ai のエラー</string>
|
||||
<string name="text_generic_xmrto_error">コード: %1$d</string>
|
||||
|
||||
<string name="text_retry">タッチして再試行</string>
|
||||
<string name="text_noretry_monero">私達はここで立ち往生のようです!</string>
|
||||
<string name="text_noretry">あーあ、 XMR.TO は現在利用不能のようです!</string>
|
||||
<string name="text_noretry">あーあ、 SideShift.ai は現在利用不能のようです!</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(レート: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">サポートと追跡については xmr.to をご覧ください</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">シークレットキー\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">XMR.TO のシークレットキー</string>
|
||||
<string name="label_send_btc_xmrto_info">サポートと追跡については SideShift.ai をご覧ください</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">シークレットキー\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">SideShift.ai のシークレットキー</string>
|
||||
<string name="label_send_btc_address">支払先の BTC アドレス</string>
|
||||
<string name="label_send_btc_amount">数量</string>
|
||||
|
||||
@ -155,9 +154,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">表示用キー</string>
|
||||
<string name="label_copy_address">公開アドレス</string>
|
||||
<string name="label_copy_xmrtokey">XMR.TO キー</string>
|
||||
<string name="label_copy_xmrtokey">キー</string>
|
||||
<string name="message_copy_viewkey">表示用キーがクリップボードにコピーされました!</string>
|
||||
<string name="message_copy_xmrtokey">XMR.TO キーがクリップボードにコピーされました!</string>
|
||||
<string name="message_copy_xmrtokey">キーがクリップボードにコピーされました!</string>
|
||||
<string name="message_copy_address">ウォレットアドレスがクリップボードにコピーされました!</string>
|
||||
<string name="message_copy_txid">取引IDがクリップボードにコピーされました!</string>
|
||||
<string name="message_nocopy">セキュリティ上の理由でコピーは無効化されています!</string>
|
||||
@ -288,9 +287,6 @@
|
||||
<string name="fab_restore_key">秘密鍵からウォレットを復元</string>
|
||||
<string name="fab_restore_seed">25単語のシードからウォレットを復元</string>
|
||||
|
||||
<string name="accounts_balance" translatable="false">%1$s XMR</string>
|
||||
<string name="tx_account_formatted" translatable="false">(%1$d, %2$d)</string>
|
||||
|
||||
<string name="accounts_drawer_new">アカウントを作成</string>
|
||||
<string name="accounts_new">新しいアカウントを追加 #%1$d</string>
|
||||
<string name="tx_account">アカウント #</string>
|
||||
@ -326,8 +322,6 @@
|
||||
<string name="nfc_tag_read_what">あなたが何をしたいのかわかりません!</string>
|
||||
<string name="nfc_tag_tap">NFCが利用可能です!</string>
|
||||
|
||||
<string name="unknown_amount" translatable="false">\?\?\?</string>
|
||||
|
||||
<string name="menu_info">シークレットを見せてください!</string>
|
||||
<string name="menu_streetmode">ストリートモード</string>
|
||||
|
||||
@ -362,13 +356,10 @@
|
||||
|
||||
<string name="backup_success">バックアップ成功</string>
|
||||
|
||||
<string name="send_address_resolve_bip70">ペイメントIDの名前解決中…</string>
|
||||
<string name="send_address_not_bip70">ペイメントIDの名前解決できませんでした</string>
|
||||
<string name="send_address_bip70">ペイメントIDの名前解決しました ✔</string>
|
||||
<!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
|
||||
<string name="send_address_hint">受け取り手</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TOはオフラインです。もう一度お試しください</string>
|
||||
<string name="xmrto_error_001">SideShift.aiはオフラインです。もう一度お試しください</string>
|
||||
<string name="xmrto_error_004">BTCの金額は範囲外</string>
|
||||
<string name="xmrto_error_010">ペイメントURLは不正古いです</string>
|
||||
<string name="xmrto_error_012">リクエストは多すぎます</string>
|
||||
@ -396,7 +387,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -417,4 +408,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -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.</p>
|
||||
<p>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
|
||||
<p>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.</p>
|
||||
<h2>App Permissions</h2>
|
||||
<ul>
|
||||
|
@ -147,66 +147,51 @@
|
||||
<ul>
|
||||
<li>an OpenAlias for XMR or BTC</li>
|
||||
<li>a BTC address</li>
|
||||
<li>a bitcoin: URI (including BIP70 like bitpay)</li>
|
||||
</u>
|
||||
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.</p>
|
||||
<h2>Betalings-ID</h2>
|
||||
<p>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.<p>
|
||||
<h1>Å sende BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO vekslingskurs<h2>
|
||||
<p>På \"Mengde\" skjermen vil du bli vist de nåværende parametrene til XMR.TO-tjenesten. Disse
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai vekslingskurs<h2>
|
||||
<p>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?</p>
|
||||
<h2>XMR.TO ordre<h2>
|
||||
<p>På \"Bekreft\" skjermen, vil du se den faktiske XMR.TO ordren. Denne ordren er gyldig for
|
||||
kursen ikke er garantert på dette punktet.</p>
|
||||
<h2>SideShift.ai ordre<h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO hemmelig nøkkel<h2>
|
||||
<p>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.</p>
|
||||
<p>Vær oppmerksom på at denne nøkkelen kun er tilgjengelig for 24-timer etter transaksjonen
|
||||
har blitt utført!</p>
|
||||
<h2>XMR.TO nedtelling!</h2>
|
||||
<p>Når nedtellinga når null, må du få en ny kvote fra XMR.TO ved å gå tilbake til
|
||||
<h2>SideShift.ai hemmelig nøkkel<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai nedtelling!</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>Å sende BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO vekslingskurs<h2>
|
||||
<p>På \"Mengde\" skjermen vil du bli vist de nåværende parametrene til XMR.TO-tjenesten. Disse
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai vekslingskurs<h2>
|
||||
<p>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?</p>
|
||||
<h2>XMR.TO ordre<h2>
|
||||
<p>På \"Bekreft\" skjermen, vil du se den faktiske XMR.TO ordren. Denne ordren er gyldig for
|
||||
kursen ikke er garantert på dette punktet.</p>
|
||||
<h2>SideShift.ai ordre<h2>
|
||||
<p>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.</p>
|
||||
<h2>XMR.TO hemmelig nøkkel<h2>
|
||||
<p>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.</p>
|
||||
<p>Vær oppmerksom på at denne nøkkelen kun er tilgjengelig for 24-timer etter transaksjonen
|
||||
har blitt utført!</p>
|
||||
<h2>XMR.TO nedtelling!</h2>
|
||||
<p>Når nedtellinga når null, må du få en ny kvote fra XMR.TO ved å gå tilbake til
|
||||
<h2>SideShift.ai hemmelig nøkkel<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai nedtelling!</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
|
@ -36,21 +36,21 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Du skrev inn en Bitcoin addresse.</b><br/>
|
||||
<i>Du vil sende XMR og mottakeren vil få BTC gjennom <b>XMR.TO</b> tjenesten.</i>
|
||||
<i>Du vil sende XMR og mottakeren vil få BTC gjennom <b>SideShift.ai</b> tjenesten.</i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">XMR.TO Ordre</string>
|
||||
<string name="info_send_xmrto_success_order_label">SideShift.ai Ordre</string>
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
<string name="info_send_xmrto_paid">Bekreftelse venter</string>
|
||||
<string name="info_send_xmrto_unpaid">Betaling venter</string>
|
||||
<string name="info_send_xmrto_error">XMR.TO error (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">SideShift.ai error (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC sendt!</string>
|
||||
<string name="info_send_xmrto_query">Spør …</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Du kan sende %1$s — %2$s BTC</b>.<br/>
|
||||
<i><b>XMR.TO</b> gir deg en vekslingskurs på <b>%3$s BTC</b> <u>akkurat nå</u></i>.
|
||||
<i><b>SideShift.ai</b> gir deg en vekslingskurs på <b>%3$s BTC</b> <u>akkurat nå</u></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Mengder opp til <b>%1$s BTC</b> vil bli sendt <u>umiddelbart</u>!</i>
|
||||
@ -61,25 +61,25 @@
|
||||
<string name="info_paymentid_integrated">✔ Betalings ID integrert</string>
|
||||
<string name="info_prepare_tx">Forbereder din transaksjon</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">Lager XMR.TO ordre</string>
|
||||
<string name="label_send_progress_xmrto_query">Spør etter XMR.TO ordre</string>
|
||||
<string name="label_send_progress_xmrto_create">Lager SideShift.ai ordre</string>
|
||||
<string name="label_send_progress_xmrto_query">Spør etter SideShift.ai ordre</string>
|
||||
<string name="label_send_progress_create_tx">Forbereder Monero transaksjon</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">Spør etter xmr.to parametre</string>
|
||||
<string name="label_send_progress_queryparms">Spør etter SideShift.ai parametre</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">XMR.TO ERROR</string>
|
||||
<string name="label_generic_xmrto_error">SideShift.ai ERROR</string>
|
||||
<string name="text_generic_xmrto_error">Kode: %1$d</string>
|
||||
|
||||
<string name="text_retry">Trykk for å prøve igjen</string>
|
||||
<string name="text_noretry_monero">Nå sitter vi fast her!</string>
|
||||
<string name="text_noretry">Ops, det ser ikke ut til at XMR.TO er tilgjengelig for øyeblikket!</string>
|
||||
<string name="text_noretry">Ops, det ser ikke ut til at SideShift.ai er tilgjengelig for øyeblikket!</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Rate: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Besøk xmr.to for støtte og sporing</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Hemmelig nøkkel\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">XMR.TO Hemmelig nøkkel</string>
|
||||
<string name="label_send_btc_xmrto_info">Besøk SideShift.ai for støtte og sporing</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Hemmelig nøkkel\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">SideShift.ai Hemmelig nøkkel</string>
|
||||
<string name="label_send_btc_address">BTC destinasjonsadresse</string>
|
||||
<string name="label_send_btc_amount">Mengde</string>
|
||||
|
||||
@ -151,9 +151,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">View-nøkkel</string>
|
||||
<string name="label_copy_address">Offentlig adresse</string>
|
||||
<string name="label_copy_xmrtokey">XMR.TO nøkkel</string>
|
||||
<string name="label_copy_xmrtokey">Nøkkel</string>
|
||||
<string name="message_copy_viewkey">View-nøkkel kopiert til utklippstavle!</string>
|
||||
<string name="message_copy_xmrtokey">XMR.TO-nøkkel kopiert til utklippstavle!</string>
|
||||
<string name="message_copy_xmrtokey">Nøkkel kopiert til utklippstavle!</string>
|
||||
<string name="message_copy_address">Lommebokadresse kopiert til utklippstavle!</string>
|
||||
<string name="message_copy_txid">Transaksjons-ID kopiert til utklippstavle!</string>
|
||||
<string name="message_nocopy">Kopiering skrudd av for sikkerhetsgrunner!</string>
|
||||
@ -354,12 +354,9 @@
|
||||
<string name="node_nobookmark">Automatically bookmarked best %1$d nodes</string>
|
||||
<string name="label_test">Test</string><!--note: as in "Test a network connection"-->
|
||||
|
||||
<string name="send_address_resolve_bip70">Resolving Payment URI…</string>
|
||||
<string name="send_address_not_bip70">Could not resolve Payment URI</string>
|
||||
<string name="send_address_bip70">Resolved Payment URI ✔</string>
|
||||
<string name="send_address_hint">Receiver</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO offline - try again later</string>
|
||||
<string name="xmrto_error_001">SideShift.ai offline - try again later</string>
|
||||
<string name="xmrto_error_004">BTC amount out of bounds</string>
|
||||
<string name="xmrto_error_010">Invalid or outdated Payment URL</string>
|
||||
<string name="xmrto_error_012">Too many requests</string>
|
||||
@ -387,7 +384,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -408,4 +405,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -27,8 +27,8 @@
|
||||
<p>Verder worden er geen persoonlijke gegevens verzameld door de app.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<p>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.</p>
|
||||
<h2>App-machtigingen</h2>
|
||||
<ul>
|
||||
<li>INTERNET: Verbinding maken met het Monero-netwerk via een Monero-node</li>
|
||||
|
@ -116,41 +116,36 @@
|
||||
<ul>
|
||||
<li>an OpenAlias for XMR or BTC</li>
|
||||
<li>a BTC address</li>
|
||||
<li>a bitcoin: URI (including BIP70 like bitpay)</li>
|
||||
</u>
|
||||
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.</p>
|
||||
<h2>Betalings-ID</h2>
|
||||
<p>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.<p>
|
||||
<h1>BTC verzenden</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Wisselkoers XMR.TO<h2>
|
||||
<p>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?</p>
|
||||
<h2>XMR.TO-opdracht<h2>
|
||||
<p>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.</p>
|
||||
<h2>Geheime sleutel XMR.TO<h2>
|
||||
<p>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.</p>
|
||||
<p>Houd er rekening mee dat deze geheime sleutel maar 24 uur geldig is nadat de transactie is gestart!</p>
|
||||
<h2>XMR.TO telt af!</h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Wisselkoers SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai-opdracht<h2>
|
||||
<p>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.</p>
|
||||
<h2>Geheime sleutel SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai telt af!</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>BTC verzenden</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Wisselkoers XMR.TO<h2>
|
||||
<p>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?</p>
|
||||
<h2>XMR.TO-opdracht<h2>
|
||||
<p>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.</p>
|
||||
<h2>Geheime sleutel XMR.TO<h2>
|
||||
<p>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.</p>
|
||||
<p>Houd er rekening mee dat deze geheime sleutel maar 24 uur geldig is nadat de transactie is gestart!</p>
|
||||
<h2>XMR.TO telt af!</h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Wisselkoers SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai-opdracht<h2>
|
||||
<p>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.</p>
|
||||
<h2>Geheime sleutel SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>SideShift.ai telt af!</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_wallet"><![CDATA[
|
||||
|
@ -36,22 +36,22 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Je hebt een Bitcoin-adres ingevoerd.</b><br/>
|
||||
<i>Je verzendt XMR en de ontvanger krijgt BTC via <b>XMR.TO</b>.</i>
|
||||
<i>Je verzendt XMR en de ontvanger krijgt BTC via <b>SideShift.ai</b>.</i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">XMR.TO-opdracht</string>
|
||||
<string name="info_send_xmrto_success_order_label">SideShift.ai-opdracht</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
<string name="info_send_xmrto_paid">Wacht op bevestiging</string>
|
||||
<string name="info_send_xmrto_unpaid">Wacht op betaling</string>
|
||||
<string name="info_send_xmrto_error">Fout bij XMR.TO (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">Fout bij SideShift.ai (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC verzonden!</string>
|
||||
<string name="info_send_xmrto_query">Aanvragen…</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Je kunt %1$s — %2$s BTC verzenden</b>.<br/>
|
||||
<i><b>XMR.TO</b> biedt <u>nu</u> een wisselkoers van <b>%3$s BTC</b> aan</i>.
|
||||
<i><b>SideShift.ai</b> biedt <u>nu</u> een wisselkoers van <b>%3$s BTC</b> aan</i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Bedragen tot <b>%1$s BTC</b> worden <u>meteen</u> verzonden!</i>
|
||||
@ -62,25 +62,25 @@
|
||||
<string name="info_paymentid_integrated">✔ Betalings-ID geïntegreerd</string>
|
||||
<string name="info_prepare_tx">Transactie wordt voorbereid</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">XMR.TO-opdracht maken</string>
|
||||
<string name="label_send_progress_xmrto_query">XMR.TO-opdracht aanvragen</string>
|
||||
<string name="label_send_progress_xmrto_create">SideShift.ai-opdracht maken</string>
|
||||
<string name="label_send_progress_xmrto_query">SideShift.ai-opdracht aanvragen</string>
|
||||
<string name="label_send_progress_create_tx">Monero-transactie voorbereiden</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">XMR.TO-parameters aanvragen</string>
|
||||
<string name="label_send_progress_queryparms">SideShift.ai-parameters aanvragen</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">FOUT BIJ XMR.TO</string>
|
||||
<string name="label_generic_xmrto_error">FOUT BIJ SideShift.ai</string>
|
||||
<string name="text_generic_xmrto_error">Code: %1$d</string>
|
||||
|
||||
<string name="text_retry">Opnieuw proberen</string>
|
||||
<string name="text_noretry_monero">Nu zitten we vast…</string>
|
||||
<string name="text_noretry">Oeps, XMR.TO is op dit moment niet beschikbaar.</string>
|
||||
<string name="text_noretry">Oeps, SideShift.ai is op dit moment niet beschikbaar.</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Koers: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Ga naar xmr.to voor hulp en traceren</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Geheime sleutel\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">Geheime sleutel XMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_info">Ga naar SideShift.ai voor hulp en traceren</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Geheime sleutel\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">Geheime sleutel SideShift.ai</string>
|
||||
<string name="label_send_btc_address">BTC-doeladres</string>
|
||||
<string name="label_send_btc_amount">Bedrag</string>
|
||||
|
||||
@ -151,9 +151,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">Alleen-lezen sleutel</string>
|
||||
<string name="label_copy_address">Openbaar adres</string>
|
||||
<string name="label_copy_xmrtokey">Sleutel XMR.TO</string>
|
||||
<string name="label_copy_xmrtokey">Sleutel</string>
|
||||
<string name="message_copy_viewkey">Alleen-lezen sleutel gekopieerd naar klembord!</string>
|
||||
<string name="message_copy_xmrtokey">Sleutel XMR.TO gekopieerd naar klembord!</string>
|
||||
<string name="message_copy_xmrtokey">Sleutel gekopieerd naar klembord!</string>
|
||||
<string name="message_copy_address">Portemonnee-adres gekopieerd naar klembord!</string>
|
||||
<string name="message_copy_txid">Transactie-ID gekopieerd naar klembord!</string>
|
||||
<string name="message_nocopy">Kopiëren uitgeschakeld voor de veiligheid!</string>
|
||||
@ -353,13 +353,10 @@
|
||||
|
||||
<string name="backup_success">Backup successful</string>
|
||||
|
||||
<string name="send_address_resolve_bip70">Resolving Payment URI…</string>
|
||||
<string name="send_address_not_bip70">Could not resolve Payment URI</string>
|
||||
<string name="send_address_bip70">Resolved Payment URI ✔</string>
|
||||
<!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
|
||||
<string name="send_address_hint">Ontvanger</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO offline - try again later</string>
|
||||
<string name="xmrto_error_001">SideShift.ai offline - try again later</string>
|
||||
<string name="xmrto_error_004">BTC amount out of bounds</string>
|
||||
<string name="xmrto_error_010">Invalid or outdated Payment URL</string>
|
||||
<string name="xmrto_error_012">Too many requests</string>
|
||||
@ -387,7 +384,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -408,4 +405,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -35,7 +35,7 @@
|
||||
detalhes de como as requisições são coletadas.
|
||||
</p>
|
||||
<p>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.
|
||||
<h2>Permissões do aplicativo</h2>
|
||||
|
@ -158,63 +158,52 @@
|
||||
<ul>
|
||||
<li>um OpenAlias para XMR ou BTC</li>
|
||||
<li>um endereço BTC</li>
|
||||
<li>um URI bitcoin: (incluindo o BIP70 usado em serviços como o bitpay)</li>
|
||||
</u>
|
||||
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.</p>
|
||||
<h2>ID do Pagamento</h2>
|
||||
<p>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.</p>
|
||||
<h1>Enviando BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Cotação XMR.TO<h2>
|
||||
<p>Na tela que exibe o valor da transação você poderá consultar os parâmetros do XMR.TO.
|
||||
<h2>Cotação SideShift.ai<h2>
|
||||
<p>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é?</p>
|
||||
<h2>Ordem XMR.TO<h2>
|
||||
<p>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.</p>
|
||||
<h2>Ordem SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Chave secreta do XMR.TO<h2>
|
||||
<h2>Chave secreta do SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<p>Lembre-se que essa chave secreta só é válida por 24 horas depois do início da transação!</p>
|
||||
<h2>Contagem regressiva do XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Contagem regressiva do SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>Enviando BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Cotação XMR.TO<h2>
|
||||
<p>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é?</p>
|
||||
<h2>Ordem XMR.TO<h2>
|
||||
<p>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.</p>
|
||||
<h2>Chave secreta do XMR.TO<h2>
|
||||
<p>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.</p>
|
||||
<p>Lembre-se que essa chave secreta só é válida por 24 horas depois do início da transação!</p>
|
||||
<h2>Contagem regressiva do XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h1>Enviando BTC</h1>
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Cotação SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Ordem SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Chave secreta do SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Contagem regressiva do SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_wallet"><![CDATA[
|
||||
|
@ -36,22 +36,22 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Você colocou um endereço Bitcoin.</b><br/>
|
||||
<i>Você enviará XMR e o destinatário receberá BTC via o serviço <b>XMR.TO</b></i>
|
||||
<i>Você enviará XMR e o destinatário receberá BTC via o serviço <b>SideShift.ai</b></i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">Ordem no XMR.TO</string>
|
||||
<string name="info_send_xmrto_success_order_label">Ordem no SideShift.ai</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
<string name="info_send_xmrto_paid">Confirmação Pendente</string>
|
||||
<string name="info_send_xmrto_unpaid">Pagamento Pendente</string>
|
||||
<string name="info_send_xmrto_error">Erro XMR.TO (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">Erro SideShift.ai (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC Enviado!</string>
|
||||
<string name="info_send_xmrto_query">Consultando …</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Você pode enviar %1$s — %2$s BTC</b>.<br/>
|
||||
<i><b>XMR.TO</b> enviou a cotação de <b>%3$s BTC</b> <u>neste momento</u></i>.
|
||||
<i><b>SideShift.ai</b> enviou a cotação de <b>%3$s BTC</b> <u>neste momento</u></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Quantias até <b>%1$s BTC</b> serão enviadas <u>instantaneamente</u>!</i>
|
||||
@ -62,25 +62,25 @@
|
||||
<string name="info_paymentid_integrated">✔ ID do pagamento integrado</string>
|
||||
<string name="info_prepare_tx">Preparando sua transação</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">Criando a ordem no XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_query">Atualizando a ordem no XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_create">Criando a ordem no SideShift.ai</string>
|
||||
<string name="label_send_progress_xmrto_query">Atualizando a ordem no SideShift.ai</string>
|
||||
<string name="label_send_progress_create_tx">Preparando a transação em Monero</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">Consultando os parâmetros no XMR.TO</string>
|
||||
<string name="label_send_progress_queryparms">Consultando os parâmetros no SideShift.ai</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">ERRO XMR.TO</string>
|
||||
<string name="label_generic_xmrto_error">ERRO SideShift.ai</string>
|
||||
<string name="text_generic_xmrto_error">Código: %1$d</string>
|
||||
|
||||
<string name="text_retry">Toque aqui para tentar novamente</string>
|
||||
<string name="text_noretry_monero">Opa, estamos travados aqui!</string>
|
||||
<string name="text_noretry">Hm, parece que o XMR.TO não está disponível no momento</string>
|
||||
<string name="text_noretry">Hm, parece que o SideShift.ai não está disponível no momento</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Cotação: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Visite o XMR.TO para suporte & rastreio da ordem</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Chave secreta\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">Chave secreta XMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_info">Visite o SideShift.ai para suporte & rastreio da ordem</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Chave secreta\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">Chave secreta SideShift.ai</string>
|
||||
<string name="label_send_btc_address">Endereço BTC de destino</string>
|
||||
<string name="label_send_btc_amount">Valor</string>
|
||||
|
||||
@ -152,9 +152,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">Chave de visualização</string>
|
||||
<string name="label_copy_address">Endereço público</string>
|
||||
<string name="label_copy_xmrtokey">Chave XMR.TO</string>
|
||||
<string name="label_copy_xmrtokey">Chave</string>
|
||||
<string name="message_copy_viewkey">Chave de visualização copiada para a área de transferência!</string>
|
||||
<string name="message_copy_xmrtokey">Chave XMR.TO copiada para a área de transferência!</string>
|
||||
<string name="message_copy_xmrtokey">Chave copiada para a área de transferência!</string>
|
||||
<string name="message_copy_address">Endereço da carteira copiado para a área de transferência!</string>
|
||||
<string name="message_copy_txid">ID da transação copiado para a área de transferência!</string>
|
||||
<string name="message_nocopy">Copiar está desativado por razões de segurança!</string>
|
||||
@ -346,12 +346,9 @@
|
||||
|
||||
<string name="backup_success">Backup feito com successo</string>
|
||||
|
||||
<string name="send_address_resolve_bip70">Resolvendo URI do Pagamento…</string>
|
||||
<string name="send_address_not_bip70">Não foi possível resolver o URI do pagamento</string>
|
||||
<string name="send_address_bip70">URI do Pagamento resolvido ✔</string>
|
||||
<string name="send_address_hint">Destinatário</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO offline - tente novamente mais tarde</string>
|
||||
<string name="xmrto_error_001">SideShift.ai offline - tente novamente mais tarde</string>
|
||||
<string name="xmrto_error_004">Valor BTC fora dos limites</string>
|
||||
<string name="xmrto_error_010">URL de pagamento inválido</string>
|
||||
<string name="xmrto_error_012">Solicitações em excesso</string>
|
||||
@ -379,7 +376,7 @@
|
||||
<string name="onboarding_seed_title">Mantenha sua semente em segurança</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Enviar Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">A Monerujo possui o XMR.to integrado. Basta colar ou escaner um endereço Bitcoin e você estará enviando BTC, mas gastando em XMR.</string>
|
||||
<string name="onboarding_xmrto_information">A Monerujo possui o SideShift.ai integrado. Basta colar ou escaner um endereço Bitcoin e você estará enviando BTC, mas gastando em XMR.</string>
|
||||
<string name="onboarding_nodes_title">"Nós", do seu jeito</string>
|
||||
<string name="onboarding_nodes_information">Os nós conectam você à rede Monero. Escolha entre nós públicos ou seja completamente "cypherpunk" e utilize seu próprio nó.</string>
|
||||
<string name="onboarding_fpsend_title">Enviar usando a digital</string>
|
||||
@ -400,4 +397,7 @@
|
||||
<string name="node_updated_mins">Último Bloco: %1$d minutos atrás</string>
|
||||
<string name="node_updated_hours">Último Bloco: %1$d horas atrás</string>
|
||||
<string name="node_updated_days">Último Bloco: %1$d dias atrás</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -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").</p>
|
||||
<p>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
|
||||
<p>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.</p>
|
||||
<h2>Permissões da app</h2>
|
||||
<ul>
|
||||
|
@ -145,70 +145,55 @@
|
||||
<ul>
|
||||
<li>Um OpenAlias para XMR ou BTC</li>
|
||||
<li>um endereço de BTC</li>
|
||||
<li>um enderço bitcoin: URI (incluindo BIP70 tipo bitpay)</li>
|
||||
</u>
|
||||
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.</p>
|
||||
<h2>ID do Pagamento</h2>
|
||||
<p>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.</p>
|
||||
<h1>Enviar BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Taxa de câmbio XMR.TO<h2>
|
||||
<p>No ecrã de \"Quantidade\" vais ver os parâmetros actuais do serviço XMR.TO. Estes
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Taxa de câmbio SideShift.ai<h2>
|
||||
<p>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?</p>
|
||||
<h2>Pedido XMR.TO<h2>
|
||||
<p>No ecrão de \"Confirmação\", vais ver o pedido actual XMR.TO. Este pedido é válido
|
||||
esta taxa ainda não é garantido.</p>
|
||||
<h2>Pedido SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Chave Secreta XMR.TO<h2>
|
||||
<p>Como o Monerujo só controla a parte Monero da transacção, a chave secreta XMR.TO
|
||||
<h2>Chave Secreta SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<p>Nota que esta chave secreta só é válida por 24 horas depois de a transacção ter
|
||||
iniciado!</p>
|
||||
<h2>Contagem decrescente XMR.TO!</h2>
|
||||
<p>Quando a contagem chega a zero, precisas de obter uma nova taxa de câmbio do XMR.TO
|
||||
SideShift.ai.</p>
|
||||
<h2>Contagem decrescente SideShift.ai!</h2>
|
||||
<p>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\".</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>Enviar BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Taxa de câmbio XMR.TO<h2>
|
||||
<p>No ecrã de \"Quantidade\" vais ver os parâmetros actuais do serviço XMR.TO. Estes
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Taxa de câmbio SideShift.ai<h2>
|
||||
<p>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?</p>
|
||||
<h2>Pedido XMR.TO<h2>
|
||||
<p>No ecrão de \"Confirmação\", vais ver o pedido actual XMR.TO. Este pedido é válido
|
||||
esta taxa ainda não é garantido.</p>
|
||||
<h2>Pedido SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Chave Secreta XMR.TO<h2>
|
||||
<p>Como o Monerujo só controla a parte Monero da transacção, a chave secreta XMR.TO
|
||||
<h2>Chave Secreta SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<p>Nota que esta chave secreta só é válida por 24 horas depois de a transacção ter
|
||||
iniciado!</p>
|
||||
<h2>Contagem decrescente XMR.TO!</h2>
|
||||
<p>Quando a contagem chega a zero, precisas de obter uma nova taxa de câmbio do XMR.TO
|
||||
SideShift.ai.</p>
|
||||
<h2>Contagem decrescente SideShift.ai!</h2>
|
||||
<p>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\".</p>
|
||||
]]></string>
|
||||
|
||||
|
@ -36,22 +36,22 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Introduziu um endereço Bitcoin.</b><br/>
|
||||
<i>Vai enviar em XMR e o destinatário vai receber BTC através do serviço <b>XMR.TO</b></i>
|
||||
<i>Vai enviar em XMR e o destinatário vai receber BTC através do serviço <b>SideShift.ai</b></i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">XMR.TO Order</string>
|
||||
<string name="info_send_xmrto_success_order_label">SideShift.ai Order</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
<string name="info_send_xmrto_paid">Confirmação Pendente</string>
|
||||
<string name="info_send_xmrto_unpaid">Pagamento Pendente</string>
|
||||
<string name="info_send_xmrto_error">Erro XMR.TO (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">Erro SideShift.ai (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC Enviadas!</string>
|
||||
<string name="info_send_xmrto_query">A comunicar …</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Pode enviar %1$s — %2$s BTC</b>.<br/>
|
||||
<i><b>XMR.TO</b> está com uma taxa de conversão de <b>%3$s BTC</b> <u>neste momento</u></i>.
|
||||
<i><b>SideShift.ai</b> está com uma taxa de conversão de <b>%3$s BTC</b> <u>neste momento</u></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Quantidades até <b>%1$s BTC</b> serão enviadas <u>instantaneament</u>!</i>
|
||||
@ -62,25 +62,25 @@
|
||||
<string name="info_paymentid_integrated">✔ ID do pagamento integrado</string>
|
||||
<string name="info_prepare_tx">A preparar a transacção</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">A criar um pedido XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_query">A actualizar o pedido XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_create">A criar um pedido SideShift.ai</string>
|
||||
<string name="label_send_progress_xmrto_query">A actualizar o pedido SideShift.ai</string>
|
||||
<string name="label_send_progress_create_tx">A preparar a transacção Monero</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">A obter os parâmetros xmr.to</string>
|
||||
<string name="label_send_progress_queryparms">A obter os parâmetros SideShift.ai</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">ERRO XMR.TO</string>
|
||||
<string name="label_generic_xmrto_error">ERRO SideShift.ai</string>
|
||||
<string name="text_generic_xmrto_error">Código: %1$d</string>
|
||||
|
||||
<string name="text_retry">Toca para voltar a tentar</string>
|
||||
<string name="text_noretry_monero">Agora estamos emperrados aqui!</string>
|
||||
<string name="text_noretry">Ups, XMR.TO não parece estar disponível neste momento!</string>
|
||||
<string name="text_noretry">Ups, SideShift.ai não parece estar disponível neste momento!</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Rácio: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Vai a xmr.to para suporte & seguimento</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Chave secreta\nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">XMR.TO Chave secreta</string>
|
||||
<string name="label_send_btc_xmrto_info">Vai a SideShift.ai para suporte & seguimento</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Chave secreta\nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">SideShift.ai Chave secreta</string>
|
||||
<string name="label_send_btc_address">Endereço BTC de destino</string>
|
||||
<string name="label_send_btc_amount">Quantidade</string>
|
||||
|
||||
@ -149,9 +149,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">Ver chave</string>
|
||||
<string name="label_copy_address">Endereço público</string>
|
||||
<string name="label_copy_xmrtokey">Chave XMR.TO</string>
|
||||
<string name="label_copy_xmrtokey">Chave</string>
|
||||
<string name="message_copy_viewkey">Chave de visualização copiada para a área de transferência</string>
|
||||
<string name="message_copy_xmrtokey">Chave XMR.TO copiada para a área de transferência!</string>
|
||||
<string name="message_copy_xmrtokey">Chave copiada para a área de transferência!</string>
|
||||
<string name="message_copy_address">Endereço da carteira copiado para a área de transferência!</string>
|
||||
<string name="message_copy_txid">ID da transacção copiado para a área de transferência!</string>
|
||||
<string name="message_nocopy">Copiar está desactivo por razões de segurança!</string>
|
||||
@ -358,12 +358,9 @@
|
||||
|
||||
<string name="backup_success">Backup bem sucedido</string>
|
||||
|
||||
<string name="send_address_resolve_bip70">A resolver URI… de pagamento</string>
|
||||
<string name="send_address_not_bip70">Não foi possivel resolver URI de pagamento</string>
|
||||
<string name="send_address_bip70">Pagemento URI ✔ resolvido</string>
|
||||
<string name="send_address_hint">Receptor</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO offline - tenta mais tarde</string>
|
||||
<string name="xmrto_error_001">SideShift.ai offline - tenta mais tarde</string>
|
||||
<string name="xmrto_error_004">Montante de BTC fora dos limites</string>
|
||||
<string name="xmrto_error_010">URL de pagamento invalido ou fora de prazo</string>
|
||||
<string name="xmrto_error_012">Demasiadas solicitações</string>
|
||||
@ -391,7 +388,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -412,4 +409,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -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").</p>
|
||||
<p>Î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ă.</p>
|
||||
<h2>Permisiunile aplicației</h2>
|
||||
<ul>
|
||||
|
@ -137,62 +137,51 @@
|
||||
<ul>
|
||||
<li>an OpenAlias for XMR or BTC</li>
|
||||
<li>a BTC address</li>
|
||||
<li>a bitcoin: URI (including BIP70 like bitpay)</li>
|
||||
</u>
|
||||
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.</p>
|
||||
<h2>Payment ID</h2>
|
||||
<p>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.<p>
|
||||
<h1>Transferul de BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Rata de schimb al XMR.TO<h2>
|
||||
<p>Pe ecranul cu \"Suma\" vor fi afișați parametrii ai serviciului XMR.TO. Aceștia includ cursul de
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Rata de schimb al SideShift.ai<h2>
|
||||
<p>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?</p>
|
||||
<h2>Dispoziție XMR.TO<h2>
|
||||
<p>Pe ecranul cu \"Confirm\", vei vedea comanda actuală a XMR.TO. Această comandă este valabilă pentru
|
||||
nu sunt garantate în acest moment.</p>
|
||||
<h2>Dispoziție SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Cheia secretă XMR.TO<h2>
|
||||
<p>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.</p>
|
||||
<p>Te rog notează, că această cheie secretă este validă doar pentru 24 ore din momentul începerii tranzacției!</p>
|
||||
<h2>Numerotarea inversă XMR.TO</h2>
|
||||
<p>În momentul în care numerotarea inversă ajunge la zero, va trebui să obți o noua cotație de la XMR.TO mergând
|
||||
<h2>Cheia secretă SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Numerotarea inversă SideShift.ai</h2>
|
||||
<p>Î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\".</p>
|
||||
]]></string>
|
||||
|
||||
<string name="help_xmrto"><![CDATA[
|
||||
<h1>Transferul de BTC</h1>
|
||||
<h2>XMR.TO</h2>
|
||||
<p>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.</p>
|
||||
<h2>Rata de schimb al XMR.TO<h2>
|
||||
<p>Pe ecranul cu \"Suma\" vor fi afișați parametrii ai serviciului XMR.TO. Aceștia includ cursul de
|
||||
<h2>SideShift.ai</h2>
|
||||
<p>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.</p>
|
||||
<h2>Rata de schimb al SideShift.ai<h2>
|
||||
<p>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?</p>
|
||||
<h2>Dispoziție XMR.TO<h2>
|
||||
<p>Pe ecranul cu \"Confirm\", vei vedea comanda actuală a XMR.TO. Această comandă este valabilă pentru
|
||||
nu sunt garantate în acest moment.</p>
|
||||
<h2>Dispoziție SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Cheia secretă XMR.TO<h2>
|
||||
<p>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.</p>
|
||||
<p>Te rog notează, că această cheie secretă este validă doar pentru 24 ore din momentul începerii tranzacției!</p>
|
||||
<h2>Numerotarea inversă XMR.TO</h2>
|
||||
<p>În momentul în care numerotarea inversă ajunge la zero, va trebui să obți o noua cotație de la XMR.TO mergând
|
||||
<h2>Cheia secretă SideShift.ai<h2>
|
||||
<p>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.</p>
|
||||
<h2>Numerotarea inversă SideShift.ai</h2>
|
||||
<p>Î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\".</p>
|
||||
]]></string>
|
||||
|
||||
|
@ -35,22 +35,22 @@
|
||||
|
||||
<string name="info_xmrto"><![CDATA[
|
||||
<b>Ai introdus o adresă de Bitcoin.</b><br/>
|
||||
<i>Vei trimite XMR și destinatarul va primi BTC folosind serviciul <b>XMR.TO</b>.</i>
|
||||
<i>Vei trimite XMR și destinatarul va primi BTC folosind serviciul <b>SideShift.ai</b>.</i>
|
||||
]]></string>
|
||||
|
||||
<string name="info_send_xmrto_success_order_label">Ordin XMR.TO</string>
|
||||
<string name="info_send_xmrto_success_order_label">Ordin SideShift.ai</string>
|
||||
|
||||
<string name="info_send_xmrto_success_btc">%1$s BTC</string>
|
||||
|
||||
<string name="info_send_xmrto_paid">Confirmare în așteptare</string>
|
||||
<string name="info_send_xmrto_unpaid">Plată în așteptare</string>
|
||||
<string name="info_send_xmrto_error">Eroare XMR.TO (%1$s)</string>
|
||||
<string name="info_send_xmrto_error">Eroare SideShift.ai (%1$s)</string>
|
||||
<string name="info_send_xmrto_sent">BTC trimis!</string>
|
||||
<string name="info_send_xmrto_query">Interogare …</string>
|
||||
|
||||
<string name="info_send_xmrto_parms"><![CDATA[
|
||||
<b>Poți trimite %1$s — %2$s BTC</b>.<br/>
|
||||
<i><b>XMR.TO</b> îți oferă un curs de <b>%3$s BTC</b> <u>în acest moment</u></i>.
|
||||
<i><b>SideShift.ai</b> îți oferă un curs de <b>%3$s BTC</b> <u>în acest moment</u></i>.
|
||||
]]></string>
|
||||
<string name="info_send_xmrto_zeroconf"><![CDATA[
|
||||
<i>Sume până la <b>%1$s BTC</b> vor fi trimise <u>instantaneu</u>!</i>
|
||||
@ -61,25 +61,25 @@
|
||||
<string name="info_paymentid_integrated">✔ Payment ID integrat</string>
|
||||
<string name="info_prepare_tx">Se pregătește tranzacția</string>
|
||||
|
||||
<string name="label_send_progress_xmrto_create">Creearea ordinului XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_query">Interogare ordin XMR.TO</string>
|
||||
<string name="label_send_progress_xmrto_create">Creearea ordinului SideShift.ai</string>
|
||||
<string name="label_send_progress_xmrto_query">Interogare ordin SideShift.ai</string>
|
||||
<string name="label_send_progress_create_tx">Pregătirea tranzacției Monero</string>
|
||||
|
||||
<string name="label_send_progress_queryparms">Interogare parametrii xmr.to</string>
|
||||
<string name="label_send_progress_queryparms">Interogare parametrii SideShift.ai</string>
|
||||
|
||||
<string name="label_generic_xmrto_error">EROARE XMR.TO</string>
|
||||
<string name="label_generic_xmrto_error">EROARE SideShift.ai</string>
|
||||
<string name="text_generic_xmrto_error">Cod: %1$d</string>
|
||||
|
||||
<string name="text_retry">Atinge pentru reîncercare</string>
|
||||
<string name="text_noretry_monero">Pff.. ne-am blocat cum!</string>
|
||||
<string name="text_noretry">Oh, serviciul XMR.TO este momentan indisponibil!</string>
|
||||
<string name="text_noretry">Oh, serviciul SideShift.ai este momentan indisponibil!</string>
|
||||
|
||||
<string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
|
||||
<string name="text_send_btc_rate">(Rată: %1$s BTC/XMR)</string>
|
||||
|
||||
<string name="label_send_btc_xmrto_info">Vizitează xmr.to pentru suport & interogare</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Cheia secretă \nXMR.TO</string>
|
||||
<string name="label_send_btc_xmrto_key">Cheia secretă XMR.TO </string>
|
||||
<string name="label_send_btc_xmrto_info">Vizitează SideShift.ai pentru suport & interogare</string>
|
||||
<string name="label_send_btc_xmrto_key_lb">Cheia secretă \nSideShift.ai</string>
|
||||
<string name="label_send_btc_xmrto_key">Cheia secretă SideShift.ai </string>
|
||||
<string name="label_send_btc_address">Destinație adresă BTC</string>
|
||||
<string name="label_send_btc_amount">Sumă</string>
|
||||
|
||||
@ -142,9 +142,9 @@
|
||||
|
||||
<string name="label_copy_viewkey">Cheie Vizualizare</string>
|
||||
<string name="label_copy_address">Adresă publică</string>
|
||||
<string name="label_copy_xmrtokey">Cheie XMR.TO</string>
|
||||
<string name="label_copy_xmrtokey">Cheie</string>
|
||||
<string name="message_copy_viewkey">Cheie vizualizre copiată la clipboard!</string>
|
||||
<string name="message_copy_xmrtokey">Cheie XMR.TO copiată la clipboard!</string>
|
||||
<string name="message_copy_xmrtokey">Cheie copiată la clipboard!</string>
|
||||
<string name="message_copy_address">Adresă portofel copiatp la clipboard!</string>
|
||||
<string name="message_copy_txid">ID tranzacție copiată la clipboard!</string>
|
||||
<string name="message_nocopy">Copierea dezactivată din motive de securitate!</string>
|
||||
@ -354,12 +354,9 @@
|
||||
<string name="node_nobookmark">Automatically bookmarked best %1$d nodes</string>
|
||||
<string name="label_test">Test</string><!--note: as in "Test a network connection"-->
|
||||
|
||||
<string name="send_address_resolve_bip70">Resolving Payment URI…</string>
|
||||
<string name="send_address_not_bip70">Could not resolve Payment URI</string>
|
||||
<string name="send_address_bip70">Resolved Payment URI ✔</string>
|
||||
<string name="send_address_hint">Receiver</string>
|
||||
|
||||
<string name="xmrto_error_001">XMR.TO offline - try again later</string>
|
||||
<string name="xmrto_error_001">SideShift.ai offline - try again later</string>
|
||||
<string name="xmrto_error_004">BTC amount out of bounds</string>
|
||||
<string name="xmrto_error_010">Invalid or outdated Payment URL</string>
|
||||
<string name="xmrto_error_012">Too many requests</string>
|
||||
@ -387,7 +384,7 @@
|
||||
<string name="onboarding_seed_title">Keep your seed safe</string>
|
||||
<string name="onboarding_seed_information">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.</string>
|
||||
<string name="onboarding_xmrto_title">Send Bitcoin</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has XMR.to support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
|
||||
<string name="onboarding_nodes_title">Nodes, your way</string>
|
||||
<string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
|
||||
<string name="onboarding_fpsend_title">Send with fingerprint</string>
|
||||
@ -408,4 +405,7 @@
|
||||
<string name="node_updated_mins">Last Block: %1$d minutes ago</string>
|
||||
<string name="node_updated_hours">Last Block: %1$d hours ago</string>
|
||||
<string name="node_updated_days">Last Block: %1$d days ago</string>
|
||||
|
||||
<string name="shift_noquote">Cannot get quote</string>
|
||||
<string name="shift_checkamount">Check amount and try again</string>
|
||||
</resources>
|
||||
|
@ -34,8 +34,8 @@
|
||||
Перейдите по адресу https://coinmarketcap.com/privacy для получения подробной
|
||||
информации о том, как собираются ваши персональные данные в запросах.</p>
|
||||
<p>Если вы используете приложение для оплаты по адресам BTC,
|
||||
вы будете использовать сервис XMR.TO. Их политика конфиденциальности подробно
|
||||
изложена на вебсайте https://xmr.to/. Monerujo отправляет им адрес
|
||||
вы будете использовать сервис SideShift.ai. Их политика конфиденциальности подробно
|
||||
изложена на вебсайте https://sideshift.ai/. Monerujo отправляет им адрес
|
||||
назначения BTC и сумму. Ваш IP также указывается.</p>
|
||||
<h2>Разрешения, необходимые приложению</h2>
|
||||
<ul>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user