Merge pull request #4869 from BlueWallet/del

DEL: LT
This commit is contained in:
GLaDOS 2022-07-13 00:11:02 +01:00 committed by GitHub
commit 03ff0d626d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
50 changed files with 8 additions and 4365 deletions

View file

@ -42,12 +42,6 @@ import ViewEditMultisigCosigners from './screen/wallets/viewEditMultisigCosigner
import WalletXpub from './screen/wallets/xpub';
import SignVerify from './screen/wallets/signVerify';
import WalletAddresses from './screen/wallets/addresses';
import BuyBitcoin from './screen/wallets/buyBitcoin';
import HodlHodl from './screen/wallets/hodlHodl';
import HodlHodlViewOffer from './screen/wallets/hodlHodlViewOffer';
import HodlHodlLogin from './screen/wallets/hodlHodlLogin';
import HodlHodlWebview from './screen/wallets/hodlHodlWebview';
import HodlHodlMyContracts from './screen/wallets/hodlHodlMyContracts';
import Marketplace from './screen/wallets/marketplace';
import ReorderWallets from './screen/wallets/reorderWallets';
import SelectWallet from './screen/wallets/selectWallet';
@ -106,8 +100,6 @@ const WalletsRoot = () => {
<WalletsStack.Screen name="LdkViewLogs" component={LdkViewLogs} options={LdkViewLogs.navigationOptions(theme)} />
<WalletsStack.Screen name="TransactionDetails" component={TransactionDetails} options={TransactionDetails.navigationOptions(theme)} />
<WalletsStack.Screen name="TransactionStatus" component={TransactionStatus} options={TransactionStatus.navigationOptions(theme)} />
<WalletsStack.Screen name="HodlHodl" component={HodlHodl} options={HodlHodl.navigationOptions(theme)} />
<WalletsStack.Screen name="HodlHodlViewOffer" component={HodlHodlViewOffer} options={HodlHodlViewOffer.navigationOptions(theme)} />
<WalletsStack.Screen name="CPFP" component={CPFP} options={CPFP.navigationOptions(theme)} />
<WalletsStack.Screen name="RBFBumpFee" component={RBFBumpFee} options={RBFBumpFee.navigationOptions(theme)} />
<WalletsStack.Screen name="RBFCancel" component={RBFCancel} options={RBFCancel.navigationOptions(theme)} />
@ -334,17 +326,6 @@ const UnlockWithScreenRoot = () => (
</UnlockWithScreenStack.Navigator>
);
const HodlHodlLoginStack = createNativeStackNavigator();
const HodlHodlLoginRoot = () => {
const theme = useTheme();
return (
<HodlHodlLoginStack.Navigator name="HodlHodlLoginRoot" screenOptions={{ headerHideShadow: true }}>
<HodlHodlLoginStack.Screen name="HodlHodlLogin" component={HodlHodlLogin} options={HodlHodlLogin.navigationOptions(theme)} />
</HodlHodlLoginStack.Navigator>
);
};
const ReorderWalletsStack = createNativeStackNavigator();
const ReorderWalletsStackRoot = () => {
const theme = useTheme();
@ -499,10 +480,6 @@ const Navigation = () => {
<RootStack.Screen name="LNDCreateInvoiceRoot" component={LNDCreateInvoiceRoot} options={NavigationDefaultOptions} />
<RootStack.Screen name="ScanLndInvoiceRoot" component={ScanLndInvoiceRoot} options={NavigationDefaultOptions} />
<RootStack.Screen name="AztecoRedeemRoot" component={AztecoRedeemRoot} options={NavigationDefaultOptions} />
<RootStack.Screen name="HodlHodlLoginRoot" component={HodlHodlLoginRoot} options={NavigationDefaultOptions} />
<RootStack.Screen name="HodlHodlMyContracts" component={HodlHodlMyContracts} options={HodlHodlMyContracts.navigationOptions(theme)} />
<RootStack.Screen name="HodlHodlWebview" component={HodlHodlWebview} options={HodlHodlWebview.navigationOptions(theme)} />
{/* screens */}
<RootStack.Screen name="WalletExportRoot" component={WalletExportStackRoot} options={NavigationDefaultOptions} />
<RootStack.Screen
@ -513,7 +490,6 @@ const Navigation = () => {
<RootStack.Screen name="ViewEditMultisigCosignersRoot" component={ViewEditMultisigCosignersRoot} options={NavigationDefaultOptions} />
<RootStack.Screen name="WalletXpubRoot" component={WalletXpubStackRoot} options={NavigationDefaultOptions} />
<RootStack.Screen name="SignVerifyRoot" component={SignVerifyStackRoot} options={NavigationDefaultOptions} />
<RootStack.Screen name="BuyBitcoin" component={BuyBitcoin} options={BuyBitcoin.navigationOptions(theme)} />
<RootStack.Screen name="Marketplace" component={Marketplace} options={Marketplace.navigationOptions(theme)} />
<RootStack.Screen name="SelectWallet" component={SelectWallet} />
<RootStack.Screen name="ReceiveDetailsRoot" component={ReceiveDetailsStackRoot} options={NavigationDefaultOptions} />

View file

@ -33,9 +33,6 @@ export class AppStorage {
static LNDHUB = 'lndhub';
static ADVANCED_MODE_ENABLED = 'advancedmodeenabled';
static DO_NOT_TRACK = 'donottrack';
static HODL_HODL_API_KEY = 'HODL_HODL_API_KEY';
static HODL_HODL_SIGNATURE_KEY = 'HODL_HODL_SIGNATURE_KEY';
static HODL_HODL_CONTRACTS = 'HODL_HODL_CONTRACTS';
static HANDOFF_STORAGE_KEY = 'HandOff';
static keys2migrate = [AppStorage.HANDOFF_STORAGE_KEY, AppStorage.DO_NOT_TRACK, AppStorage.ADVANCED_MODE_ENABLED];
@ -792,51 +789,6 @@ export class AppStorage {
return finalBalance;
};
getHodlHodlApiKey = async () => {
try {
return await this.getItem(AppStorage.HODL_HODL_API_KEY);
} catch (_) {}
return false;
};
getHodlHodlSignatureKey = async () => {
try {
return await this.getItem(AppStorage.HODL_HODL_SIGNATURE_KEY);
} catch (_) {}
return false;
};
/**
* Since we cant fetch list of contracts from hodlhodl api yet, we have to keep track of it ourselves
*
* @returns {Promise<string[]>} String ids of contracts in an array
*/
getHodlHodlContracts = async () => {
try {
const json = await this.getItem(AppStorage.HODL_HODL_CONTRACTS);
return JSON.parse(json);
} catch (_) {}
return [];
};
addHodlHodlContract = async id => {
let json;
try {
json = await this.getItem(AppStorage.HODL_HODL_CONTRACTS);
json = JSON.parse(json);
} catch (_) {
json = [];
}
json.push(id);
return this.setItem(AppStorage.HODL_HODL_CONTRACTS, JSON.stringify(json));
};
setHodlHodlApiKey = async (key, sigKey) => {
if (sigKey) await this.setItem(AppStorage.HODL_HODL_SIGNATURE_KEY, sigKey);
return this.setItem(AppStorage.HODL_HODL_API_KEY, key);
};
isAdancedModeEnabled = async () => {
try {
return !!(await AsyncStorage.getItem(AppStorage.ADVANCED_MODE_ENABLED));

View file

@ -1,273 +0,0 @@
import Frisbee from 'frisbee';
const CryptoJS = require('crypto-js');
export class HodlHodlApi {
static PAGINATION_LIMIT = 'limit'; // int
static PAGINATION_OFFSET = 'offset'; // int
static FILTERS_ASSET_CODE = 'asset_code';
static FILTERS_ASSET_CODE_VALUE_BTC = 'BTC';
static FILTERS_ASSET_CODE_VALUE_BTCLN = 'BTCLN';
static FILTERS_SIDE = 'side';
static FILTERS_SIDE_VALUE_BUY = 'buy';
static FILTERS_SIDE_VALUE_SELL = 'sell';
static FILTERS_INCLUDE_GLOBAL = 'include_global'; // bool
static FILTERS_ONLY_WORKING_NOW = 'only_working_now'; // bool
static FILTERS_COUNTRY = 'country'; // code or name (or "Global")
static FILTERS_COUNTRY_VALUE_GLOBAL = 'Global'; // code or name
static FILTERS_CURRENCY_CODE = 'currency_code';
static FILTERS_PAYMENT_METHOD_ID = 'payment_method_id';
static FILTERS_PAYMENT_METHOD_TYPE = 'payment_method_type';
static FILTERS_PAYMENT_METHOD_NAME = 'payment_method_name';
static FILTERS_VOLUME = 'volume';
static FILTERS_PAYMENT_WINDOW_MINUTES_MAX = 'payment_window_minutes_max'; // in minutes
static FILTERS_USER_AVERAGE_PAYMENT_TIME_MINUTES_MAX = 'user_average_payment_time_minutes_max'; // in minutes
static FILTERS_USER_AVERAGE_RELEASE_TIME_MINUTES_MAX = 'user_average_release_time_minutes_max'; // in minutes
static SORT_DIRECTION = 'direction';
static SORT_DIRECTION_VALUE_ASC = 'asc';
static SORT_DIRECTION_VALUE_DESC = 'desc';
static SORT_BY = 'by';
static SORT_BY_VALUE_PRICE = 'price';
static SORT_BY_VALUE_PAYMENT_WINDOW_MINUTES = 'payment_window_minutes';
static SORT_BY_VALUE_USER_AVERAGE_PAYMENT_TIME_MINUTES = 'user_average_payment_time_minutes';
static SORT_BY_VALUE_USER_AVERAGE_RELEASE_TIME_MINUTES = 'user_average_release_time_minutes';
static SORT_BY_VALUE_RATING = 'rating';
constructor(apiKey = false) {
this.baseURI = 'https://hodlhodl.com/';
this.apiKey = apiKey || 'cmO8iLFgx9wrxCe9R7zFtbWpqVqpGuDfXR3FJB0PSGCd7EAh3xgG51vBKgNTAF8fEEpS0loqZ9P1fDZt';
this.useragent = process.env.HODLHODL_USERAGENT || 'bluewallet';
this._api = new Frisbee({ baseURI: this.baseURI });
}
_getHeaders() {
return {
headers: {
'User-Agent': this.useragent,
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json',
Authorization: 'Bearer ' + this.apiKey,
},
};
}
_getHeadersWithoutAuthorization() {
return {
headers: {
'User-Agent': this.useragent,
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json',
},
};
}
async getCountries() {
const response = await this._api.get('/api/v1/countries', this._getHeaders());
const json = response.body;
if (!json || !json.countries || json.status === 'error') {
throw new Error('API failure: ' + JSON.stringify(response));
}
return (this._countries = json.countries);
}
async getPaymentMethods(country) {
const response = await this._api.get('/api/v1/payment_methods?filters[country]=' + country, this._getHeaders());
const json = response.body;
if (!json || !json.payment_methods || json.status === 'error') {
throw new Error('API failure: ' + JSON.stringify(response));
}
return (this._payment_methods = json.payment_methods.sort((a, b) => (a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1)));
}
async getCurrencies() {
const response = await this._api.get('/api/v1/currencies', this._getHeaders());
const json = response.body;
if (!json || !json.currencies || json.status === 'error') {
throw new Error('API failure: ' + JSON.stringify(response));
}
return (this._currencies = json.currencies.sort((a, b) => (a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1)));
}
async getOffer(id) {
const response = await this._api.get('/api/v1/offers/' + id, this._getHeadersWithoutAuthorization());
const json = response.body;
if (!json || !json.offer || json.status === 'error') {
throw new Error('API failure: ' + JSON.stringify(response));
}
return json.offer;
}
async getOffers(pagination = {}, filters = {}, sort = {}) {
const uri = [];
for (const key in sort) {
uri.push('sort[' + key + ']=' + sort[key]);
}
for (const key in filters) {
uri.push('filters[' + key + ']=' + filters[key]);
}
for (const key in pagination) {
uri.push('pagination[' + key + ']=' + pagination[key]);
}
const response = await this._api.get('/api/v1/offers?' + uri.join('&'), this._getHeadersWithoutAuthorization());
const json = response.body;
if (!json || !json.offers || json.status === 'error') {
throw new Error('API failure: ' + JSON.stringify(response));
}
return (this._offers = json.offers);
}
createSignature(apiKey, sigKey, nonce) {
const sourceMessageForSigning = apiKey + ':' + nonce; // <api_key>:<nonce>
return CryptoJS.HmacSHA256(sourceMessageForSigning, sigKey).toString(CryptoJS.enc.Hex);
}
/**
* @see https://gitlab.com/hodlhodl-public/public_docs/-/blob/master/autologin.md
*
* @param apiSigKey {string}
* @param nonce {integer|null} Optional unix timestamp (sec, not msec), or nothing
* @returns {Promise<string>} Token usable for autologin (works only once and only about 30 seconds)
*/
async requestAutologinToken(apiSigKey, nonce) {
nonce = nonce || Math.floor(+new Date() / 1000);
const signature = this.createSignature(this.apiKey, apiSigKey, nonce);
const response = await this._api.get('/api/v1/users/login_token?nonce=' + nonce + '&hmac=' + signature, this._getHeaders());
const json = response.body;
if (!json || !json.token || json.status === 'error') {
throw new Error('API failure: ' + JSON.stringify(response));
}
return json.token;
}
async getMyself() {
const response = await this._api.get('/api/v1/users/me', this._getHeaders());
const json = response.body;
if (!json || !json.user || json.status === 'error') {
throw new Error('API failure: ' + JSON.stringify(response));
}
return (this._user = json.user);
}
async acceptOffer(id, version, paymentMethodInstructionId, paymentMethodInstructionVersion, value) {
const response = await this._api.post(
'/api/v1/contracts',
Object.assign({}, this._getHeaders(), {
body: {
contract: {
offer_id: id,
offer_version: version,
payment_method_instruction_id: paymentMethodInstructionId,
payment_method_instruction_version: paymentMethodInstructionVersion,
comment: 'I accept your offer',
value,
},
},
}),
);
const json = response.body;
if (!json || !json.contract || json.status === 'error') {
if (json && json.validation_errors) throw new Error(this.validationErrorsToReadable(json.validation_errors));
throw new Error('API failure: ' + JSON.stringify(response));
}
return json.contract;
}
validationErrorsToReadable(errorz) {
const ret = [];
for (const er of Object.keys(errorz)) {
if (Array.isArray(errorz[er])) {
ret.push(errorz[er].join('; '));
} else {
ret.push(errorz[er]);
}
}
return ret.join('\n');
}
async getContract(id) {
const response = await this._api.get('/api/v1/contracts/' + id, this._getHeaders());
const json = response.body;
if (!json || !json.contract || json.status === 'error') {
throw new Error('API failure: ' + JSON.stringify(response));
}
return json.contract;
}
verifyEscrowAddress(encryptedSeed, encryptPassword, index, address, witnessScript) {
// TODO
// @see https://gitlab.com/hodlhodl-public/hodl-client-js
return true;
}
/**
* This method is used to confirm that client-side validation of escrow data was successful.
* This method should be called immediately after escrow address appeared in Getting contract response and this escrow address has been verified locally by the client.
*
* @param id
* @returns {Promise<{}>}
*/
async markContractAsConfirmed(id) {
const response = await this._api.post('/api/v1/contracts/' + id + '/confirm', this._getHeaders());
const json = response.body;
if (!json || !json.contract || json.status === 'error') {
throw new Error('API failure: ' + JSON.stringify(response));
}
return json.contract;
}
/**
* Buyer (and only buyer) should call this method when fiat payment was made.
* This method could be called only if contracts status is "in_progress".
*
* @param id
* @returns {Promise<{}>}
*/
async markContractAsPaid(id) {
const response = await this._api.post('/api/v1/contracts/' + id + '/mark_as_paid', this._getHeaders());
const json = response.body;
if (!json || !json.contract || json.status === 'error') {
throw new Error('API failure: ' + JSON.stringify(response));
}
return json.contract;
}
async cancelContract(id) {
const response = await this._api.post('/api/v1/contracts/' + id + '/cancel', this._getHeaders());
const json = response.body;
if (!json || !json.contract || json.status === 'error') {
if (json && json.validation_errors) throw new Error(this.validationErrorsToReadable(json.validation_errors));
throw new Error('API failure: ' + JSON.stringify(response));
}
return json.contract;
}
}

View file

@ -38,7 +38,4 @@ Watch-only wallets allow you to keep an eye on your cold storage without touchin
Lightning wallet with zero-configuration. Unfairly cheap and fast transactions with the best Bitcoin user experience.
• Buy Bitcoin
Enter in the open financial revolution with the ability to buy Bitcoin directly in your wallet.
• Local Trader
A p2p Bitcoin Trading platform, that allows you to buy and sell bitcoin directly to other users without 3rd parties.
Enter in the open financial revolution with the ability to buy Bitcoin directly in your wallet.

View file

@ -47,7 +47,4 @@ Lightning Netzwerk
Lightning Wallet ohne Konfiguration. Lightning Bezahlungen sind konkurrenzlos günstig und verblüffend schnell.
Bitcoin kaufen
Die Möglichkeit bitcoin direkt aus der Wallet zu kaufen. Bitcoin ist offen für Alle. Nimm Teil an der Finanzrevolution.
Local Trader
Eine P2P Handelsplattform, welche es Dir ohne Drittpartei erlaubt bitcoin sicher von Nutzern zu kaufen oder zu verkaufen.
Die Möglichkeit bitcoin direkt aus der Wallet zu kaufen. Bitcoin ist offen für Alle. Nimm Teil an der Finanzrevolution.

View file

@ -31,7 +31,7 @@ Connect to your hardware wallet and keep your coins in Cold storage
2 - Focused on your experience
Be in control
Private keys never leave your device.You control your private keys
Private keys never leave your device.You control your private keys
Flexible fees
Starting from 1 Satoshi. Defined by you, the user
@ -46,7 +46,4 @@ Lightning Network
Lightning wallet with zero-configuration. Unfairly cheap and fast transactions with the best Bitcoin user experience.
Buy Bitcoin
Enter in the open financial revolution with the ability to buy Bitcoin directly in your wallet.
Local Trader
A p2p Bitcoin Trading platform, that allows you to buy and sell bitcoin directly to other users without 3rd parties.
Enter in the open financial revolution with the ability to buy Bitcoin directly in your wallet.

View file

@ -47,7 +47,4 @@ Lightning Network
Wallet per Lightning Network con zero configurazioni necessarie. Per transazioni incredibilmente economiche e veloci con la miglior esperienza utente.
Acquista Bitcoin
Partecipa alla rivoluzione finanziaria con la possibilità di comprare Bitcoin direttamente dal tuo wallet.
Local Trader
Una piattaforma Bitcoin p2p, che ti permette di comprare e vendere bitcoin direttamente ad altri utenti senza il bisogno di 3º parti.
Partecipa alla rivoluzione finanziaria con la possibilità di comprare Bitcoin direttamente dal tuo wallet.

View file

@ -42,7 +42,4 @@ Lightning Network
Carteira Lightning sem configurações. Transacções baratas e ultra rápidas com a melhor experiência do Bitcoin.
Comprar Bitcoin
Agora já podes comprar Bitcoin directamente sem sair da tua carteira e com as tuas chaves privadas.
Local Trader
Plataforma p2p Bitcoin de trading, que permite comprar e vender bitcoin directamente para outros utilizadores sem terceiros.
Agora já podes comprar Bitcoin directamente sem sair da tua carteira e com as tuas chaves privadas.

View file

@ -49,58 +49,6 @@
"error": "خطأ",
"network": "خطأ في الشبكة"
},
"hodl": {
"are_you_sure_you_want_to_logout": "هل أنت متأكد أنك تريد تسجيل الخروج من HodlHodl؟",
"cont_address_escrow": "الضمان",
"cont_address_to": "إلى",
"cont_buying": "الشراء",
"cont_cancel": "إلغاء العقد",
"cont_cancel_q": "هل أنت متأكد أنك تريد إلغاء هذا العقد؟",
"cont_cancel_y": "نعم، إلغاء العقد",
"cont_chat": "فتح الدردشة مع الطرف المقابل",
"cont_how": "كيفية الدفع",
"cont_no": "ليس لديك أي عقود قيد التنفيذ",
"cont_paid": "وضع علامة على العقد كمدفوع",
"cont_paid_e": "لا تفعل ذلك إلا إذا أرسلت أموالًا إلى البائع عبر وسيلة الدفع المتفق عليها",
"cont_paid_q": "هل أنت متأكد أنك تريد وضع علامة على هذا العقد كمدفوع؟",
"cont_selling": "البيع",
"cont_st_completed": "تم بنجاح!",
"cont_st_in_progress_buyer": "العملات في الضمان، يُرجى الدفع للبائع",
"cont_st_paid_enought": "عملات Bitcoin في الضمان! يُرجى الدفع للبائع\nعبر وسيلة الدفع المتفق عليها",
"cont_st_paid_waiting": "في انتظار تحرير البائع للعملات من الضمان",
"cont_st_waiting": "في انتظار إيداع البائع لعملات Bitcoin في الضمان...",
"cont_title": "العقود الخاصة بي",
"filter_any": "أي عقد",
"filter_buying": "الشراء",
"filter_country_global": "العروض الشاملة",
"filter_currency": "العملة",
"filter_detail": "التفاصيل",
"filter_filters": "المرشحات",
"filter_iambuying": "أنا أشتري Bitcoin",
"filter_iamselling": "أنا أبيع Bitcoin",
"filter_method": "وسيلة الدفع",
"filter_search": "البحث",
"filter_selling": "البيع",
"item_minmax": "الحد الأدنى/الحد الأقصى",
"item_nooffers": "لا توجد عروض. جرِّب تغيير \"بالقرب مني\" إلى العروض الشاملة!",
"item_rating": "تداولات {rating}",
"item_rating_no": "لا يوجد تقييم",
"local_trader": "تداول محلي",
"local_trader_new": "جديد",
"login": "تسجيل الدخول",
"logout": "تسجيل الخروج",
"mycont": "عقودي",
"offer_accept": "قبول العرض",
"offer_account_finish": "يبدو أنك لم تنته من إعداد حساب على HodlHodl، هل ترغب في إنهاء الإعداد الآن؟",
"offer_choosemethod": "اختيار وسيلة الدفع",
"offer_confirmations": "التأكيدات",
"offer_minmax": "الحد الأدنى/الحد الأقصى",
"offer_minutes": "الحد الأدنى",
"offer_promt_fiat": "ما مقدار {currency} التي تريد شراءها؟",
"offer_promt_fiat_e": "100 على سبيل المثال",
"offer_window": "الإطار الزمني",
"p2p": "تبادل من نظير إلى نظير"
},
"lnd": {
"active":"نشط",
"inactive":"غير نشط",

View file

@ -47,55 +47,6 @@
"error": "Error",
"network": "Error de red"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Esteu segur que voleu sortir de HodlHodl?",
"cont_address_escrow": "Dipòsit en garantia",
"cont_address_to": "A",
"cont_buying": "Comprant",
"cont_cancel": "Cancel·lar contracte",
"cont_cancel_q": "Esteu segur que voleu cancel·lar aquest contracte?",
"cont_cancel_y": "Sí, cancel·leu el contracte",
"cont_chat": "Obre el xat amb l'altra part",
"cont_how": "Com pagar",
"cont_no": "No teniu cap contracte en curs.",
"cont_paid": "Marca el contracte com a pagat",
"cont_paid_e": "Feu-ho només si heu enviat fons al venedor mitjançant la forma de pagament acordada",
"cont_paid_q": "Esteu segur que voleu marcar aquest contracte com a pagat?",
"cont_selling": "Venent",
"cont_st_completed": "Tot fet!",
"cont_st_in_progress_buyer": "Les monedes estan en dipòsit de garantia. Si us plau paga al venedor.",
"cont_st_paid_enought": "Els bitcoins estan en el dipòsit de garantia. Pagueu al venedor \nmitjançant el mètode de pagament acordat.",
"cont_title": "Els meus contractes",
"filter_any": "cap",
"filter_buying": "Comprant",
"filter_country_global": "Ofertes globals",
"filter_currency": "Moneda",
"filter_detail": "Detalls",
"filter_filters": "Filtres",
"filter_iambuying": "Estic comprant bitcoins",
"filter_iamselling": "Estic venent bitcoins",
"filter_method": "Mètode de pagament",
"filter_search": "Buscar",
"filter_selling": "Venent",
"item_minmax": "Min/Max",
"item_nooffers": "Sense ofertes. Proveu de canviar \" A prop meu\" per ofertes globals",
"item_rating": "{rating} operacions",
"item_rating_no": "Sense qualificació",
"local_trader_new": "Nou",
"login": "Iniciar sessió",
"logout": "Sortir",
"mycont": "Els meus contractes",
"offer_accept": "Accepta l'oferta",
"offer_account_finish": "Sembla que no heu acabat de configurar el compte a HodlHodl. Voleu acabar de configurar-lo ara?",
"offer_choosemethod": "Trieu la forma de pagament",
"offer_confirmations": "confirmacions",
"offer_minmax": "Mín/Màx",
"offer_minutes": "Mín.",
"offer_promt_fiat": "Quants {moneda} voleu comprar?",
"offer_promt_fiat_e": "Per exemple, 100",
"offer_window": "finestra",
"p2p": "Un intercanvi p2p"
},
"lnd": {
"active": "Actiu",
"inactive": "Inactiu",

View file

@ -49,58 +49,6 @@
"error": "Chyba",
"network": "Chyba sítě"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Opravdu se chcete odhlásit z HodlHodl?",
"cont_address_escrow": "Úschova",
"cont_address_to": "Komu",
"cont_buying": "Nákup",
"cont_cancel": "Zrušit kontrakt",
"cont_cancel_q": "Opravdu chcete zrušit tento kontrakt?",
"cont_cancel_y": "Ano, zrušit kontrakt",
"cont_chat": "Otevřít chat s protistranou",
"cont_how": "Jak zaplatit",
"cont_no": "Nemáte žádné kontrakty",
"cont_paid": "Označit kontrakt jako zaplacený",
"cont_paid_e": "Udělejte to, pouze pokud jste prodávajícímu poslali prostředky prostřednictvím dohodnutého způsobu platby",
"cont_paid_q": "Opravdu chcete tento kontrakt označit jako zaplacený?",
"cont_selling": "prodej",
"cont_st_completed": "Vše hotovo!",
"cont_st_in_progress_buyer": "Mince jsou v úschově, zaplaťte prosím prodejci",
"cont_st_paid_enought": "Bitcoiny jsou v úschově! Zaplaťte prosím prodejci\ndohodnutým způsobem platby",
"cont_st_paid_waiting": "Čekání, až prodejce uvolní mince z úschovy",
"cont_st_waiting": "Čekání na prodejce až uloží bitcoiny do úschovy...",
"cont_title": "Moje kontrakty",
"filter_any": "Žádné",
"filter_buying": "Nákup",
"filter_country_global": "Globální nabídky",
"filter_currency": "Měna",
"filter_detail": "Detail",
"filter_filters": "Filtry",
"filter_iambuying": "Kupuji bitcoiny",
"filter_iamselling": "Prodávám bitcoiny",
"filter_method": "Způsob platby",
"filter_search": "Hledat",
"filter_selling": "Prodej",
"item_minmax": "Min/Max",
"item_nooffers": "Žádné nabídky. Zkuste změnit „Blízko mně“ na Globální nabídky!",
"item_rating": "{rating} obchody",
"item_rating_no": "Žádné hodnocení",
"local_trader": "Local Trader",
"local_trader_new": "Nový",
"login": "Přihlásit se",
"logout": "Odhlásit se",
"mycont": "Moje kontrakty",
"offer_accept": "Přijmout nabídku",
"offer_account_finish": "Vypadá to, že jste nedokončili nastavení účtu na HodlHodl, chtěli byste dokončit nastavení hned teď?",
"offer_choosemethod": "Vybrat způsob platby",
"offer_confirmations": "potvrzení",
"offer_minmax": "Min/Max",
"offer_minutes": "Min",
"offer_promt_fiat": "Kolik {currency} chcete koupit?",
"offer_promt_fiat_e": "Například 100",
"offer_window": "Okno",
"p2p": "Nakoupit bitcoiny na P2P burze"
},
"lnd": {
"active":"Aktivní",
"inactive":"Neaktivní",

View file

@ -31,52 +31,6 @@
"error": "Camgymeriad",
"network": "Camgymeriad rhwydwaith"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Wyt ti'n sicr am logio allan o Hodl Hodl?",
"cont_address_escrow": "Escrow",
"cont_address_to": "At",
"cont_buying": "Prynnu",
"cont_cancel": "Canslo cytundeb",
"cont_cancel_q": "Wyt ti'n sicr am ganslo'r cytundeb hwn?",
"cont_cancel_y": "Ie, canslo'r cytundeb",
"cont_chat": "Agor sgwrs efo'r aelod arall",
"cont_how": "Sut i dalu",
"cont_no": "Does gennyt ddim cytundebau yn agored.",
"cont_paid": "Marcio'r gytundeb wedi talu.",
"cont_paid_e": "Gwna hyn ddim ond os wyt wedi gyrru arian i'r gwerthwr drwy'r modd talu fel a gytunwyd",
"cont_paid_q": "Wyt ti'n sicr am farcio'r gytundeb yma wedi talu?",
"cont_selling": "Gwerthu",
"cont_st_completed": "Wedi cwblhau!",
"cont_st_in_progress_buyer": "Mae'r arian mewn escrow. Tala'r gwerthwr.",
"cont_st_paid_enought": "Mae'r Bitcoins mewn escrow. Tala'r gwerthwr drwy'r modd talu fel a gytunwyd.",
"cont_st_paid_waiting": "Aros am y gwerthwr i ryddhau'r arian o'r escrow",
"cont_st_waiting": "Aros am y gwerthwr i roi bitcoins mewn escrow",
"cont_title": "Fy Nghytundebau",
"filter_any": "Unriw",
"filter_buying": "Prynnu",
"filter_country_global": "Cynigion O'r Byd",
"filter_currency": "Arian",
"filter_iambuying": "Dwi'n prynnu bitcoin",
"filter_iamselling": "Dwi'n gwerthu bitcoin",
"filter_method": "Modd Talu",
"filter_search": "Chwilio",
"filter_selling": "Gwerthu",
"item_minmax": "Isafswm/Uchafswm",
"local_trader": "Masnachwr Lleol",
"local_trader_new": "Newydd",
"login": "Logio Fewn",
"logout": "Logio Allan",
"mycont": "Fy Nghytundebau",
"offer_accept": "Derbyn cynnig",
"offer_choosemethod": "Dewis Modd Talu",
"offer_confirmations": "cadarnhad",
"offer_minmax": "Isafswm/Uchafswm",
"offer_minutes": "Isafswm",
"offer_promt_fiat": "Faint o {currency} wyt ti eisiau prynnu?",
"offer_promt_fiat_e": "Er engraifft, 100",
"offer_window": "Ffenest",
"p2p": "Prynnu Bitcoin ar Gyfnewid Person-i-Berson"
},
"lnd": {
"errorInvoiceExpired": "Anfoneb wedi gorffen",
"exchange": "Cyfnewid",

View file

@ -49,58 +49,6 @@
"error": "Fehler",
"network": "Netzwerkfehler"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Aus HodlHodl ausloggen?",
"cont_address_escrow": "Treuhandkonto",
"cont_address_to": "an",
"cont_buying": "kaufen",
"cont_cancel": "Auftrag abbrechen",
"cont_cancel_q": "Diesen Auftrag wirklich abbrechen?",
"cont_cancel_y": "Ja, Auftrag abbrechen",
"cont_chat": "Öffne Chat mit Gegenpartei",
"cont_how": "Zahlungsart",
"cont_no": "Es sind keine Aufträge in Bearbeitung.",
"cont_paid": "Markiere als bezahlt",
"cont_paid_e": "Tue dies nur, wenn du das Geld an den Verkäufer mithilfe der vereinbarten Zahlungsart übermittelt hast.",
"cont_paid_q": "Diesen Vertrag als bezahlt kennzeichnen?",
"cont_selling": "verkaufen",
"cont_st_completed": "Alles erledigt!",
"cont_st_in_progress_buyer": "Die bitcoin sind im Treuhandkonto. Bezahle nun den Verkäufer.",
"cont_st_paid_enought": "Die bitcoin sind im Treuhandkonto! Bezahle sie \nmit dem vereinbarten Zahlungsmittel.",
"cont_st_paid_waiting": "Warte auf die Freigabe der Coins aus dem Treuhandkonto.",
"cont_st_waiting": "Warte auf die Einzahlung der Coins in das Treuhandkonto durch den Verkäufer.",
"cont_title": "Meine Verträge",
"filter_any": "Jegliche",
"filter_buying": "Kaufen",
"filter_country_global": "Weltweite Angebote",
"filter_currency": "Währung",
"filter_detail": "Details",
"filter_filters": "Filter",
"filter_iambuying": "Ich kaufe Bitcoin",
"filter_iamselling": "Ich verkaufe Bitcoin",
"filter_method": "Zahlungsart",
"filter_search": "Suche",
"filter_selling": "verkaufen",
"item_minmax": "Min/Max",
"item_nooffers": "Keine Angebote. Ggf. von \"in meiner Nähe\" zu \"Weltweite Angebote\" wechseln.",
"item_rating": "{rating} Transaktionen",
"item_rating_no": "Keine Bewertung",
"local_trader": "Local Trader",
"local_trader_new": "Neu",
"login": "Login",
"logout": "Abmelden",
"mycont": "Meine Verträge",
"offer_accept": "Angebot annehmen",
"offer_account_finish": "Deine HodlHodl Kontoeinrichtung ist unvollständig. Die Einrichtung jetzt abschließen?",
"offer_choosemethod": "Wähle Zahlungsmethode",
"offer_confirmations": "Bestätigungen",
"offer_minmax": "Minimum / Maximum",
"offer_minutes": "Minimum",
"offer_promt_fiat": "Wieviel {currency} möchtest du kaufen?",
"offer_promt_fiat_e": "Zum Beispiel 100",
"offer_window": "Bedingung",
"p2p": "Bitcoin via Peer2Peer Börse kaufen"
},
"lnd": {
"active": "Aktiv",
"inactive": "Inaktiv",

View file

@ -49,58 +49,6 @@
"error": "Error",
"network": "Network Error"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Are you sure you want to log out from Hodl Hodl?",
"cont_address_escrow": "Escrow",
"cont_address_to": "To",
"cont_buying": "Buying",
"cont_cancel": "Cancel contract",
"cont_cancel_q": "Are you sure you want to cancel this contract?",
"cont_cancel_y": "Yes, cancel contract",
"cont_chat": "Open chat with the counterparty",
"cont_how": "How to pay",
"cont_no": "You dont have any contracts in progress.",
"cont_paid": "Mark contract as paid",
"cont_paid_e": "Do this only if you sent funds to the seller via the agreed payment method",
"cont_paid_q": "Are you sure you want to mark this contract as paid?",
"cont_selling": "Selling",
"cont_st_completed": "All done!",
"cont_st_in_progress_buyer": "Coins are in escrow. Please pay the seller.",
"cont_st_paid_enought": "Bitcoins are in escrow. Please pay the seller\nvia the agreed payment method.",
"cont_st_paid_waiting": "Waiting for the seller to release the coins from escrow",
"cont_st_waiting": "Waiting for the seller to deposit bitcoins to escrow",
"cont_title": "My Contracts",
"filter_any": "Any",
"filter_buying": "Buying",
"filter_country_global": "Global Offers",
"filter_currency": "Currency",
"filter_detail": "Detail",
"filter_filters": "Filters",
"filter_iambuying": "Im buying bitcoin",
"filter_iamselling": "Im selling bitcoin",
"filter_method": "Payment Method",
"filter_search": "Search",
"filter_selling": "Selling",
"item_minmax": "Min/Max",
"item_nooffers": "No offers. Try to change “Near me” to “Global Offers.”",
"item_rating": "{rating} trades",
"item_rating_no": "No rating",
"local_trader": "Local Trader",
"local_trader_new": "New",
"login": "Login",
"logout": "Logout",
"mycont": "My Contracts",
"offer_accept": "Accept offer",
"offer_account_finish": "It looks like you didnt finish setting up an account on Hodl Hodl. Would you like to finish setup now?",
"offer_choosemethod": "Choose Payment Method",
"offer_confirmations": "confirmations",
"offer_minmax": "Min/Max",
"offer_minutes": "Min",
"offer_promt_fiat": "How much {currency} do you want to buy?",
"offer_promt_fiat_e": "For example, 100",
"offer_window": "Window",
"p2p": "Buy Bitcoin on a Peer-to-Peer Exchange"
},
"lnd": {
"active":"Active",
"inactive":"Inactive",

View file

@ -49,58 +49,6 @@
"error": "Error",
"network": "Error de red"
},
"hodl": {
"are_you_sure_you_want_to_logout": "¿Estás seguro de que quieres cerrar sesión en HodlHodl?",
"cont_address_escrow": "Depósito",
"cont_address_to": "Para",
"cont_buying": "Comprando",
"cont_cancel": "Cancelar contrato",
"cont_cancel_q": "¿Estás seguro de que quieres cancelar este contrato?",
"cont_cancel_y": "Sí, cancelar contrato",
"cont_chat": "Iniciar un conversación con la contraparte",
"cont_how": "Cómo pagar",
"cont_no": "No tienes ningún contrato en curso.",
"cont_paid": "Marcar contrato como pagado",
"cont_paid_e": "Haz esto solo si has enviado fondos al vendedor a través del método de pago acordado",
"cont_paid_q": "¿Estás seguro de que quieres marcar este contrato como pagado?",
"cont_selling": "Vendiendo",
"cont_st_completed": "¡Todo listo!",
"cont_st_in_progress_buyer": "Las monedas están en el depósito. Por favor, paga al vendedor.",
"cont_st_paid_enought": "Los bitcoins están en el depósito. Por favor, paga al vendedor\na través del método de pago acordado.",
"cont_st_paid_waiting": "Esperando a que el vendedor libere monedas del depósito en garantía",
"cont_st_waiting": "Esperando a que el vendedor deposite bitcoins en el depósito en garantía",
"cont_title": "Mis contratos",
"filter_any": "Cualquiera",
"filter_buying": "Comprando",
"filter_country_global": "Ofertas globales",
"filter_currency": "Divisa",
"filter_detail": "Detalle",
"filter_filters": "Filtros",
"filter_iambuying": "Quiero comprar bitcoin",
"filter_iamselling": "Quiero vender bitcoin",
"filter_method": "Método de pago",
"filter_search": "Buscar",
"filter_selling": "Vendiendo",
"item_minmax": "Mín/Máx",
"item_nooffers": "No hay ofertas. Prueba a cambiar \"Cerca de mí\" a \"Ofertas globales\".",
"item_rating": "{rating} operaciones",
"item_rating_no": "Sin valoraciones",
"local_trader": "Local Trader",
"local_trader_new": "Nuevo",
"login": "Login",
"logout": "Cerrar sesión",
"mycont": "Mis contratos",
"offer_accept": "Aceptar oferta",
"offer_account_finish": "Parece que no terminó de configurar la cuenta en HodlHodl. ¿Le gustaría finalizar la configuración ahora?",
"offer_choosemethod": "Elige el método de pago",
"offer_confirmations": "Confirmaciones",
"offer_minmax": "Mín/Máx",
"offer_minutes": "Mín",
"offer_promt_fiat": "¿Cuántos {currency} quieres comprar?",
"offer_promt_fiat_e": "Por ejemplo, 100",
"offer_window": "Ventana",
"p2p": "Compra Bitcoin en un Exchange Peer-to-Peer "
},
"lnd": {
"active": "Activo",
"inactive": "Inactivo",

View file

@ -49,58 +49,6 @@
"error": "Error",
"network": "Error de red"
},
"hodl": {
"are_you_sure_you_want_to_logout": "¿Estás seguro de que quieres cerrar sesión en Hodl Hodl?",
"cont_address_escrow": "Depósito",
"cont_address_to": "Para",
"cont_buying": "Comprando",
"cont_cancel": "Cancelar contrato",
"cont_cancel_q": "¿Estás seguro de que deseas cancelar este contrato?",
"cont_cancel_y": "Sí, cancelar contrato",
"cont_chat": "Abrir chat con contraparte",
"cont_how": "Cómo pagar",
"cont_no": "No tienes ningún contrato en curso",
"cont_paid": "Marcar contrato como pagado",
"cont_paid_e": "Haz esto solo si enviaste fondos al vendedor a través del método de pago acordado",
"cont_paid_q": "¿Estás seguro de que quieres marcar este contrato como pagado?",
"cont_selling": "Venta",
"cont_st_completed": "¡Todo listo!",
"cont_st_in_progress_buyer": "Las monedas están en depósito. Por favor pagale al vendedor.",
"cont_st_paid_enought": "Los bitcoins están en depósito. Pagale al vendedor\na través del método de pago acordado.",
"cont_st_paid_waiting": "Esperando a que el vendedor libere las monedas en depósito en garantía",
"cont_st_waiting": "Esperando a que el vendedor deposite bitcoins en el depósito en garantía",
"cont_title": "Mis contratos",
"filter_any": "Algo",
"filter_buying": "Comprando",
"filter_country_global": "Ofertas Globales",
"filter_currency": "Divisa",
"filter_detail": "Detalle",
"filter_filters": "Filtros",
"filter_iambuying": "Estoy comprando bitcoin",
"filter_iamselling": "Estoy vendiendo bitcoin",
"filter_method": "Método de pago",
"filter_search": "Buscar",
"filter_selling": "Venta",
"item_minmax": "Mín/Máx",
"item_nooffers": "No hay ofertas. Intenta cambiar \"Cerca de mí\" a \"Ofertas Globales.\"",
"item_rating": "{rating} operaciones",
"item_rating_no": "Sin evaluar",
"local_trader": "Comerciante Local",
"local_trader_new": "Nuevo",
"login": "Iniciar sesión",
"logout": "Cerrar sesión",
"mycont": "Mis contratos",
"offer_accept": "Aceptar oferta",
"offer_account_finish": "Parece que no terminaste de configurar la cuenta en Hodl Hodl, ¿Te gustaría finalizar la configuración ahora?",
"offer_choosemethod": "Elige el método de pago",
"offer_confirmations": "confirmaciones",
"offer_minmax": "Mín/Máx",
"offer_minutes": "Mín",
"offer_promt_fiat": "¿Cuánto {currency} quieres comprar?",
"offer_promt_fiat_e": "Por ejemplo, 100",
"offer_window": "Ventana",
"p2p": "Compra Bitcoin en una casa de cambio P2P"
},
"lnd": {
"active":"Activo",
"inactive":"Inactivo",

View file

@ -49,58 +49,6 @@
"error": "خطا",
"network": "خطای شبکه"
},
"hodl": {
"are_you_sure_you_want_to_logout": "آیا از خروج از Hodl Hodl اطمینان دارید؟",
"cont_address_escrow": "اسکرو",
"cont_address_to": "به",
"cont_buying": "خرید",
"cont_cancel": "لغو قرارداد",
"cont_cancel_q": "آیا از لغو این قرارداد اطمینان دارید؟",
"cont_cancel_y": "بله، قرارداد را لغو کن",
"cont_chat": "شروع گفتگو با طرف قرارداد",
"cont_how": "نحوهٔ پرداخت",
"cont_no": "هیچ قرارداد دردست‌انجامی ندارید.",
"cont_paid": "قرارداد را به‌عنوان پرداخت‌شده علامت‌گذاری کن",
"cont_paid_e": "این کار را تنها درصورتی‌که وجه را از طریق روش پرداخت توافق‌شده برای فروشنده ارسال کرده‌اید انجام بده",
"cont_paid_q": "آیا مطمئن هستید که می‌خواهید این قرارداد را به‌عنوان پرداخت‌شده علامت‌گذاری کنید؟",
"cont_selling": "فروش",
"cont_st_completed": "تمام!",
"cont_st_in_progress_buyer": "کوین‌ها گرو هستند. لطفاً به فروشنده پول بپردازید.",
"cont_st_paid_enought": "بیت‌کوین‌ها گرو هستند. لطفاً از طریق روش\nپرداخت توافق‌شده به فروشنده پول بپردازید.",
"cont_st_paid_waiting": "درانتظار فروشنده برای آزادکردن کوین‌ها از گرو",
"cont_st_waiting": "درانتظار فروشنده برای گروگذاری بیت‌کوین‌ها",
"cont_title": "قراردادهای من",
"filter_any": "همه",
"filter_buying": "خرید",
"filter_country_global": "پیشنهادهای جهانی",
"filter_currency": "واحد پول",
"filter_detail": "جزئیات",
"filter_filters": "فیلترها",
"filter_iambuying": "بیت‌کوین می‌خرم",
"filter_iamselling": "بیت‌کوین می‌فروشم",
"filter_method": "روش پرداخت",
"filter_search": "جستجو",
"filter_selling": "فروش",
"item_minmax": "حداقل/حداکثر",
"item_nooffers": "پیشنهادی یافت نشد. پیشنهادها را از «نزدیک من» به «پیشنهادهای جهانی» تغییر دهید.",
"item_rating": "{rating} معامله",
"item_rating_no": "بدون رتبه‌بندی",
"local_trader": "خرید و فروش محلی",
"local_trader_new": "جدید",
"login": "ورود",
"logout": "خروج",
"mycont": "قراردادهای من",
"offer_accept": "قبول پیشنهاد",
"offer_account_finish": "به‌نظر می‌رسد شما ثبت‌نام را در Hodl Hodl تکمیل نکرده‌اید. آیا می‌خواهید اکنون ساخت حساب را به‌پایان برسانید؟",
"offer_choosemethod": "انتخاب روش پرداخت",
"offer_confirmations": "تأییدها",
"offer_minmax": "حداقل/حداکثر",
"offer_minutes": "حداقل",
"offer_promt_fiat": "چه مقدار {currency} می‌خواهید بخرید؟",
"offer_promt_fiat_e": "به‌عنوان مثال، ۱۰۰",
"offer_window": "بازه",
"p2p": "خرید بیت‌کوین از صرافی همتابه‌همتا"
},
"lnd": {
"active":"فعال",
"inactive":"غیرفعال",
@ -469,7 +417,6 @@
"details_derivation_path": "مسیر اشتقاق",
"details_display": "نمایش در لیست کیف پول‌ها",
"details_export_backup": "صادرکردن/نسخهٔ پشتیبان",
"details_marketplace": "بازار خرید و فروش",
"details_master_fingerprint": "اثر انگشت اصلی",
"details_ms_l": "{m} از {n} Legacy (قالب P2SH)",
"details_ms_ns": "{m} از {n} Native SegWit (قالب P2WSH)",
@ -523,7 +470,6 @@
"list_long_choose": "انتخاب عکس",
"list_long_clipboard": "کپی از کلیپ‌بورد",
"list_long_scan": "اسکن کد QR",
"list_marketplace": "بازار خرید و فروش",
"list_tap_here_to_buy": "خرید بیت‌کوین",
"list_title": "کیف پول‌ها",
"list_tryagain": "دوباره امتحان کنید",

View file

@ -49,58 +49,6 @@
"error": "Virhe",
"network": "Verkkovirhe"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Haluatko varmasti kirjautua ulos HodlHodl-palvelusta?",
"cont_address_escrow": "Escrow",
"cont_address_to": "Vastaanottaja",
"cont_buying": "ostaminen",
"cont_cancel": "Peruuta sopimus",
"cont_cancel_q": "Haluatko varmasti peruuttaa tämän sopimuksen?",
"cont_cancel_y": "Kyllä, peruuta sopimus",
"cont_chat": "Avaa keskustelu vastapuolen kanssa",
"cont_how": "Kuinka maksaa",
"cont_no": "Sinulla ei ole meneillään sopimuksia",
"cont_paid": "Merkitse sopimus Maksettu",
"cont_paid_e": "Tee tämä vain, jos lähetit varoja myyjälle sovitulla maksutavalla",
"cont_paid_q": "Haluatko varmasti merkitä tämän sopimuksen maksetuksi?",
"cont_selling": "myynti",
"cont_st_completed": "Valmista!",
"cont_st_in_progress_buyer": "Kolikot ovat escrow:ssa, ole hyvä ja maksa myyjälle",
"cont_st_paid_enought": "Bitcoinit ovat escrow:ssa! Ole hyvä ja maksa myyjälle\nsovitun maksutavan kautta",
"cont_st_paid_waiting": "Odotetaan myyjän vapauttavan kolikot escrow:sta",
"cont_st_waiting": "Odotetaan myyjän tallettavan bitcoineja escrow:iin...",
"cont_title": "Sopimukseni",
"filter_any": "Mikä tahansa",
"filter_buying": "Ostaminen",
"filter_country_global": "Globaalit tarjoukset",
"filter_currency": "Valuutta",
"filter_detail": "Tiedot",
"filter_filters": "Suodattimet",
"filter_iambuying": "Ostan bitcoinia",
"filter_iamselling": "Myyn bitcoinia",
"filter_method": "Maksutapa",
"filter_search": "Etsi",
"filter_selling": "Myynti",
"item_minmax": "Minimi/Maximi",
"item_nooffers": "Ei tarjouksia. Yritä muuttaa \"Lähellä minua\" kansainvälisiksi tarjouksiksi!",
"item_rating": "{rating} vaihdot",
"item_rating_no": "Ei luokitusta",
"local_trader": "Osta välittäjältä",
"local_trader_new": "Uusi",
"login": "Kirjaudu sisään",
"logout": "kirjaudu ulos",
"mycont": "Sopimukseni",
"offer_accept": "Hyväksy tarjous",
"offer_account_finish": "Näyttää siltä, että et vienyt loppuun tilin luomista HodlHodl-palvelussa, haluatko päättää asennuksen nyt?",
"offer_choosemethod": "Valitse maksutapa",
"offer_confirmations": "vahvistukset",
"offer_minmax": "min / max",
"offer_minutes": "min",
"offer_promt_fiat": "Kuinka paljon {currency} haluat ostaa?",
"offer_promt_fiat_e": "Esimerkiksi 100",
"offer_window": "ikkuna",
"p2p": "Osta Bitcoinia p2p-pörssistä "
},
"lnd": {
"active":"Aktiivinen",
"inactive":"Passiivinen",

View file

@ -49,58 +49,6 @@
"error": "Erreur",
"network": "Erreur réseau"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Voulez-vraiment vous déconnecter de HodlHodl ?",
"cont_address_escrow": "Séquestre",
"cont_address_to": "À",
"cont_buying": "Achat",
"cont_cancel": "Annuler le contrat",
"cont_cancel_q": "Etes-vous sûr de vouloir annuler ce contrat ?",
"cont_cancel_y": "Oui, annuler le contrat",
"cont_chat": "Ouvrir la discussion avec la contrepartie",
"cont_how": "Comment payer",
"cont_no": "Vous n'avez aucun contrat en cours",
"cont_paid": "Marquer le contrat comme payé",
"cont_paid_e": "Ne le faites que si vous avez envoyé les fonds au vendeur par la méthode de paiement convenue",
"cont_paid_q": "Etes-vous sur de vouloir marquer ce contrat comme payé ?",
"cont_selling": "Vente",
"cont_st_completed": "C'est tout bon !",
"cont_st_in_progress_buyer": "Les bitcoins sont sous séquestre, veuillez payer le vendeur",
"cont_st_paid_enought": "Les bitcoins sont sous séquestre ! Veuillez payer le vendeur\navec la méthode de paiement convenue",
"cont_st_paid_waiting": "En attente de libération des bitcoins par le vendeur",
"cont_st_waiting": "En attente de mise sous séquestre des bitcoins par le vendeur",
"cont_title": "Mes contrats",
"filter_any": "Tous",
"filter_buying": "Acheteur",
"filter_country_global": "Offres internationales",
"filter_currency": "Devise",
"filter_detail": "Détails",
"filter_filters": "Filtres",
"filter_iambuying": "J'achète du bitcoin",
"filter_iamselling": "Je vends du bitcoin",
"filter_method": "Méthode de paiement",
"filter_search": "Recherche",
"filter_selling": "Vendeur",
"item_minmax": "Min/Max",
"item_nooffers": "Aucune offre. Essayez de changer \"Près de moi\" par \"Offres internationales\" !",
"item_rating": "Echanges {rating}",
"item_rating_no": "Pas de note",
"local_trader": "Trader local",
"local_trader_new": "Nouveau",
"login": "Connexion",
"logout": "Déconnexion",
"mycont": "Mes contrats",
"offer_accept": "Accepter l'offre",
"offer_account_finish": "Il semblerait que vous n'avez pas terminé la configuration de votre compte sur HodlHodl. Voulez-vous la terminer maintenant ?",
"offer_choosemethod": "Choisissez une méthode de paiement",
"offer_confirmations": "confirmations",
"offer_minmax": "min / max",
"offer_minutes": "min",
"offer_promt_fiat": "Combien de {currency} désirez-vous acheter ?",
"offer_promt_fiat_e": "Par exemple 100",
"offer_window": "fenêtre",
"p2p": "Acheter du Bitcoin sur un échange pair à pair"
},
"lnd": {
"active":"Actif",
"inactive":"Inactif",

View file

@ -48,58 +48,6 @@
"error": "שגיאה",
"network": "שגיאת רשת"
},
"hodl": {
"are_you_sure_you_want_to_logout": "האם אתם בטוחים שאתם רוצים להתנתק מ- HodlHodl?",
"cont_address_escrow": "פקדון",
"cont_address_to": "עבור",
"cont_buying": "קנייה",
"cont_cancel": "ביטול חוזה",
"cont_cancel_q": "האם אתם בטוחים שאתם רוצים לבטל חוזה זה?",
"cont_cancel_y": "כן, בטל חוזה.",
"cont_chat": "פתחו שיחה עם הצד השני",
"cont_how": "איך לשלם",
"cont_no": "אין לך שום חוזה פעיל.",
"cont_paid": "סימון חוזה כשולם",
"cont_paid_e": "עשו זאת רק אם שילמתם למוכר עם אמצעי התשלום המוסכם",
"cont_paid_q": "האם אתם בטוחים שאתם רוצים לסמן חוזה זה כשולם?",
"cont_selling": "מכירה",
"cont_st_completed": "הכל בוצע!",
"cont_st_in_progress_buyer": "המטבעות נעולים בפיקדון. אנא שלמו למוכר/ת.",
"cont_st_paid_enought": "הביטקוין נעול בפיקדון! אנא שלמו למוכר/ת\nבאמצעי התשלום המוסכם.",
"cont_st_paid_waiting": "מחכה לשחרור המטבעות מהפיקדון על-ידי המוכר/ת ",
"cont_st_waiting": "מחכה להפקדת המטבעות בפיקדון על-ידי המוכר/ת ...",
"cont_title": "החוזים שלי",
"filter_any": "הכל",
"filter_buying": "קנייה",
"filter_country_global": "הצעות גלובליות",
"filter_currency": "מטבע",
"filter_detail": "פרטים",
"filter_filters": "מסננים",
"filter_iambuying": "אני רוצה לקנות ביטקוין",
"filter_iamselling": "אני רוצה למכור ביטקוין",
"filter_method": "אמצעי תשלום",
"filter_search": "חיפוש",
"filter_selling": "מכירה",
"item_minmax": "מינ'/מקס'",
"item_nooffers": "אין הצעות. נסו לשנות \"לידי\" ל\"הצעות גלובליות.\"",
"item_rating": "{rating} החלפות",
"item_rating_no": "אין דירוג",
"local_trader": "מסחר מקומי",
"local_trader_new": "חדש",
"login": "התחברות",
"logout": "התנתקות",
"mycont": "החוזים שלי",
"offer_accept": "קבלו הצעה",
"offer_account_finish": "זה נראה שלא סיימתם לפתוח חשבון ב- HodlHodl, האם תהיו מעוניינים לסיים את התהליך עכשיו?",
"offer_choosemethod": "בחרו אמצעי תשלום",
"offer_confirmations": "אישורים",
"offer_minmax": "מינימום / מקסימום",
"offer_minutes": "מינימום",
"offer_promt_fiat": "כמה {currency} תרצו לקנות?",
"offer_promt_fiat_e": "למשל 100",
"offer_window": "חלון",
"p2p": "בורסת עמית לעמית"
},
"lnd": {
"active": "פעיל",
"inactive": "לא פעיל",

View file

@ -49,58 +49,6 @@
"error": "Hiba",
"network": "Hálózati hiba"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Biztosan ki akarsz lépni a HodlHodl-ből?",
"cont_address_escrow": "Letét",
"cont_address_to": "Címzett",
"cont_buying": "vásárlás",
"cont_cancel": "Szerződés törlése",
"cont_cancel_q": "Biztosan törölni akarod a szerződést?",
"cont_cancel_y": "Igen, töröld a szerződést",
"cont_chat": "Csevegés az üzletféllel",
"cont_how": "Fizetési mód",
"cont_no": "Nincs folyamatban lévő szerződésed",
"cont_paid": "Jelöld a szerződést: kifizetve",
"cont_paid_e": "Csak akkor használd ezt, ha pénzt küldesz az eladónak egy megállapodott fizetési mód szerint.",
"cont_paid_q": "Biztosan kifizetettnek akarod jelölni ezt az ügyletet?",
"cont_selling": "eladás",
"cont_st_completed": "Kész!",
"cont_st_in_progress_buyer": "Érmék letétben, fizess az eladónak",
"cont_st_paid_enought": "Bitcoin letétben! Fizess az eladónak\na megállapodás szerinti fizetési módon.",
"cont_st_paid_waiting": "Várj az eladóra, hogy feloldja a letétet az érmékről.",
"cont_st_waiting": "Várj az eladóra, hogy letétbe helyezze a Bitcoint.",
"cont_title": "Ügyleteim",
"filter_any": "Bármennyi",
"filter_buying": "Vásárlás",
"filter_country_global": "Ajánlatok világszerte",
"filter_currency": "Pénznem",
"filter_detail": "Részletek",
"filter_filters": "Szűrők",
"filter_iambuying": "Bitcoint veszek",
"filter_iamselling": "Bitcoint adok el",
"filter_method": "Fizetési mód",
"filter_search": "Keresés",
"filter_selling": "Eladás",
"item_minmax": "Min/Max",
"item_nooffers": "Nincs ajánlat. Változtasd az ajánlatokat \"Ajánlatok világszerte\"-re.",
"item_rating": "{rating} ügyletek",
"item_rating_no": "Nincs értékelés",
"local_trader": "Helyi Kereskedő",
"local_trader_new": "Új",
"login": "Belépés",
"logout": "Kilépés",
"mycont": "Ügyleteim",
"offer_accept": "Ajánlat elfogadása",
"offer_account_finish": "Nem fejezted be a HodlHodl fiókod megnyitását, szeretnéd most befejezni?",
"offer_choosemethod": "Válassz fizetési módot",
"offer_confirmations": "megerősítések",
"offer_minmax": "min / max",
"offer_minutes": "minimum",
"offer_promt_fiat": "Mennyit {currency} akarsz venni?",
"offer_promt_fiat_e": "Például 100",
"offer_window": "ablak",
"p2p": "p2p átváltás"
},
"lnd": {
"active":"Aktív",
"inactive":"Inaktív",

View file

@ -39,58 +39,6 @@
"error": "Kesalahan",
"network": "Kesalahan Jaringan"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Apakah anda yakin untuk keluar dari HodlHodl ?",
"cont_address_escrow": "Layanan Escrow",
"cont_address_to": "Untuk",
"cont_buying": "Membeli",
"cont_cancel": "Batalkan kontrak",
"cont_cancel_q": "Apakah anda yakin untuk membatalkan kontrak ?",
"cont_cancel_y": "Ya, Batalkan kontrak",
"cont_chat": "Buka obrolan dengan rekanan",
"cont_how": "Cara membayar",
"cont_no": "Anda tidak memiliki kontak yang sedang berjalan",
"cont_paid": "Tandai kontrak sebagai Dibayar",
"cont_paid_e": "Lakukan ini hanya jika anda mengirim dana ke penjual dengan sesuai persetujuan opsi pembayaran",
"cont_paid_q": "Apakah anda yakin untuk menandai kontrak sebagai Dibayar",
"cont_selling": "Menjual",
"cont_st_completed": "Semua selesai!",
"cont_st_in_progress_buyer": "Koin sedang di escrow, mohon membayar penjual",
"cont_st_paid_enought": "Bitcoin sedang di escrow! Mohon membayar penjual\nsesuai dengan persetujuan opsi pembayaran",
"cont_st_paid_waiting": "Menunggu untuk penjual melepaskan koin dari escrow",
"cont_st_waiting": "Menunggu untuk penjual untuk menyetorkan bitcoin ke escrow...",
"cont_title": "Kontrak saya",
"filter_any": "Apapun",
"filter_buying": "Membeli",
"filter_country_global": "Penawaran global",
"filter_currency": "Mata uang",
"filter_detail": "Perincian",
"filter_filters": "Menyaring",
"filter_iambuying": "Saya membeli Bitcoin",
"filter_iamselling": "Saya menjual Bitcoin",
"filter_method": "Opsi pembayaran",
"filter_search": "Cari",
"filter_selling": "Menjual",
"item_minmax": "Min/Maks",
"item_nooffers": "Tidak ada penawaran. Coba untuk mengganti \"Dekat saya\" ke Penawaran global!",
"item_rating": "{rating} perdagangan",
"item_rating_no": "Tidak ada peringkat",
"local_trader": "Trader Lokal",
"local_trader_new": "Baru",
"login": "Masuk",
"logout": "Keluar",
"mycont": "Kontrak saya",
"offer_accept": "Terima penawaran",
"offer_account_finish": "Terlihat anda belum menyelesaikan akun di HodlHodl, apakah anda ingin menyelesaikannya sekarang ?",
"offer_choosemethod": "Pilih metode pembayaran",
"offer_confirmations": "konfirmasi",
"offer_minmax": "min / maks",
"offer_minutes": "min",
"offer_promt_fiat": "Berapa jumlah {currency} yang ingin anda beli?",
"offer_promt_fiat_e": "Contohnya 100",
"offer_window": "jendela",
"p2p": "Pertukaran p2p"
},
"lnd": {
"errorInvoiceExpired": "Faktur kadarluasa",
"exchange": "Pertukaran",

View file

@ -48,58 +48,6 @@
"error": "Errore",
"network": "Errore di rete"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Confermi di volerti scollegare da Hodl Hodl?",
"cont_address_escrow": "Garanzia",
"cont_address_to": "A",
"cont_buying": "Comprando",
"cont_cancel": "Cancella contratto",
"cont_cancel_q": "Sei sicuro di voler cancellare questo contratto?",
"cont_cancel_y": "Sì, cancella il contratto",
"cont_chat": "Inizia una chat con la controparte",
"cont_how": "Come pagare",
"cont_no": "Non hai avviato nessun contratto.",
"cont_paid": "Segna questo contratto come pagato",
"cont_paid_e": "Esegui questa azione solo se hai inviato fondi al venditore attraverso il metodo di pagamento concordato",
"cont_paid_q": "Desideri veramente segnare questo contratto come pagato?",
"cont_selling": "Vendendo",
"cont_st_completed": "Fatto!",
"cont_st_in_progress_buyer": "Le monete sono in un deposito cauzionale. Si prega di pagare il venditore.",
"cont_st_paid_enought": "Le monete sono in un deposito cauzionale. Si prega di pagare il venditore\ntramite il metodo di pagamento concordato.",
"cont_st_paid_waiting": "Aspetta che il venditore rilasci le monete dal deposito di garanzia",
"cont_st_waiting": "Aspetta che il venditore depositi le monete nel deposito di garanzia",
"cont_title": "I miei contratti",
"filter_any": "Qualsiasi",
"filter_buying": "Comprando",
"filter_country_global": "Offerte globali",
"filter_currency": "Valuta",
"filter_detail": "Dettaglio",
"filter_filters": "Filtri",
"filter_iambuying": "Sto comprando bitcoin",
"filter_iamselling": "Sto vendendo bitcoin",
"filter_method": "Metodo di pagamento",
"filter_search": "Cerca",
"filter_selling": "Vendendo",
"item_minmax": "Min/Max",
"item_nooffers": "Nessuna offerta. Prova a cambiare \"Vicino a me\" in \"Offerte globali.\"",
"item_rating": "Trade {rating}",
"item_rating_no": "Nessuna recensione",
"local_trader": "Trader locale",
"local_trader_new": "Nuovo",
"login": "Login",
"logout": "Esci",
"mycont": "I miei contratti",
"offer_accept": "Accetta l'offerta",
"offer_account_finish": "Sembra che tu non abbia terminato la creazione del tuo account Hodl Hodl. Desideri farlo ora?",
"offer_choosemethod": "Scegli il metodo di pagamento",
"offer_confirmations": "Conferme",
"offer_minmax": "Min/Max",
"offer_minutes": "Min",
"offer_promt_fiat": "Quanti {currency} desideri comperare?",
"offer_promt_fiat_e": "Ad esempio, 100",
"offer_window": "Finestra",
"p2p": "Acquista Bitcoin attraverso un Exchange Peer-to-Peer"
},
"lnd": {
"active": "Attivo",
"inactive": "Inattivo",

View file

@ -39,58 +39,6 @@
"error": "エラー",
"network": "ネットワークエラー"
},
"hodl": {
"are_you_sure_you_want_to_logout": "本当にHodlHodlからログアウトしますか",
"cont_address_escrow": "エスクロー",
"cont_address_to": "宛先",
"cont_buying": "買う",
"cont_cancel": "コントラクトをキャンセル",
"cont_cancel_q": "本当にこのコントラクトをキャンセルしますか?",
"cont_cancel_y": "はい。コントラクトをキャンセルします。",
"cont_chat": "カウンターパーティとのチャットを開く",
"cont_how": "支払方法",
"cont_no": "進行中のコントラクトはありません",
"cont_paid": "コントラクトを支払済としてマーク",
"cont_paid_e": "あなたが合意した支払い方法によって販売者に送金した場合にのみ、これを行ってください。",
"cont_paid_q": "本当にこのコントラクトを支払済にしますか?",
"cont_selling": "売る",
"cont_st_completed": "全て完了!",
"cont_st_in_progress_buyer": "コインはエスクロー内にあります。販売者に支払いをして下さい。",
"cont_st_paid_enought": "ビットコインはエスクロー内になります。合意した支払い方法で販売者に支払いをして下さい。",
"cont_st_paid_waiting": "販売者がエスクローからコインをリリースするのを待っています。",
"cont_st_waiting": "販売者がエスクローにビットコインを預けるのを待っています。",
"cont_title": "マイコントラクト",
"filter_any": "すべて",
"filter_buying": "買う",
"filter_country_global": "グローバル・オファー",
"filter_currency": "通貨",
"filter_detail": "詳細",
"filter_filters": "フィルター",
"filter_iambuying": "ビットコインを買う",
"filter_iamselling": "ビットコインを売る",
"filter_method": "支払方法",
"filter_search": "検索",
"filter_selling": "売る",
"item_minmax": "最小/最大",
"item_nooffers": "オファーがありません。\"近くで探す\"に変更してグローバルオファーを試して下さい。",
"item_rating": "{rating} トレード",
"item_rating_no": "レーティングなし",
"local_trader": "ローカルトレーダー",
"local_trader_new": "New",
"login": "ログイン",
"logout": "ログアウト",
"mycont": "マイコントラクト",
"offer_accept": "オファーを受ける",
"offer_account_finish": "HodlHodlでのアカウント設定が未完了のようです。今、完了させますか",
"offer_choosemethod": "支払方法を選択",
"offer_confirmations": "承認",
"offer_minmax": "最小 / 最大",
"offer_minutes": "分",
"offer_promt_fiat": "いくら {currency} を購入しますか?",
"offer_promt_fiat_e": "例 100",
"offer_window": "ウィンドウ",
"p2p": "P2P エクスチェンジ"
},
"lnd": {
"errorInvoiceExpired": "インボイス失効",
"exchange": "エクスチェンジ",

View file

@ -49,58 +49,6 @@
"error": "오류",
"network": "네크워크 오류"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Hodl Hodl에서 로그 아웃 하시겠습니까?",
"cont_address_escrow": "에스크로",
"cont_address_to": "대상",
"cont_buying": "구매",
"cont_cancel": "구매 취소",
"cont_cancel_q": "정말 구매를 취소 하시겠습니까?",
"cont_cancel_y": "예. 구매를 취소합니다.",
"cont_chat": "상대방과 채팅",
"cont_how": "지불 방법",
"cont_no": "진행 중인 거래가 없습니다.",
"cont_paid": "지불된 계약으로 표시",
"cont_paid_e": "결제 금액을 합의된 결제 수단을 통해 보냈을 때 이것을 진행하십시오. ",
"cont_paid_q": "정말 이 계약을 지불완료된 것으로 표시하기 원하십니까?",
"cont_selling": "판매",
"cont_st_completed": "모두 끝났습니다.",
"cont_st_in_progress_buyer": "코인이 에스크로에 있습니다. 판매자에게 지불하세요.",
"cont_st_paid_enought": "비트코인이 에스크로에 있습니다. \n판매자에게 합의된 결제수단을 통해 지불하세요.",
"cont_st_paid_waiting": "판매자가 에스크로에서 코인을 넘겨주기를 기다리세요.",
"cont_st_waiting": "판매자가 비트코인을 에스크로에 담기를 기다리세요.",
"cont_title": "내 거래들",
"filter_any": "모든",
"filter_buying": "구매",
"filter_country_global": "글로벌 오퍼",
"filter_currency": "통화",
"filter_detail": "세부사항<br>",
"filter_filters": "필터<br>",
"filter_iambuying": "비트코인 매수",
"filter_iamselling": "비트코인 매도",
"filter_method": "결제 방법",
"filter_search": "검색<br>",
"filter_selling": "판매",
"item_minmax": "최소/최대",
"item_nooffers": "오퍼가 없습니다. “Near me”를 “글로벌 오퍼”로 바꿔보세요.",
"item_rating": "{rating} 트레이드",
"item_rating_no": "등급 없음",
"local_trader": "지역 거래인",
"local_trader_new": "New",
"login": "로그인",
"logout": "로그아웃<br>",
"mycont": "내 계약/거래들",
"offer_accept": "오퍼를 받아들입니다.",
"offer_account_finish": "Houdl Houdl에 계정 생성을 끝마치지 않으셨습니다. 지금 마무리하시겠습니까? ",
"offer_choosemethod": "결제 수단을 선택하세요.",
"offer_confirmations": "확인",
"offer_minmax": "최소/최대<br>",
"offer_minutes": "최소",
"offer_promt_fiat": "얼마넣지 {화폐}를 구매하기 원하십니까?",
"offer_promt_fiat_e": "예시, 100",
"offer_window": "창",
"p2p": "비트코인을 P2P(peer-to-peer)교환으로 구매하기"
},
"lnd": {
"active":"활성",
"inactive":"비활성",

View file

@ -46,58 +46,6 @@
"error": "Ralat",
"network": "Ralat Rangkaian"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Andakah anda pasti anda mahu log keluar dari Hodl Hodl?",
"cont_address_escrow": "Eskrow",
"cont_address_to": "Kepada",
"cont_buying": "Membeli",
"cont_cancel": "Batalkan kontrak",
"cont_cancel_q": "Adakah anda pasti anda mahu batalkan kontrak ini?",
"cont_cancel_y": "Ya, batalkan kontrak.",
"cont_chat": "Mulakan perbualan dengan rakan sejawat",
"cont_how": "Cara membayar",
"cont_no": "Anda tidak mempunyai apa-apa kontrak yang sedang berjalan.",
"cont_paid": "Tandakan kontrak sebagai sudah dibayar",
"cont_paid_e": "Lakukan ini hanya jika anda sudah menghantar wang kepada penjual melalui cara bayaran yang dipersetujui.",
"cont_paid_q": "Adakah anda pasti anda mahu menanda kontrak ini sebagai sudah dibayar?",
"cont_selling": "Menjual",
"cont_st_completed": "Siap!",
"cont_st_in_progress_buyer": "Wang di dalam eskrow. Sila bayar kepada penjual.",
"cont_st_paid_enought": "Bitcoin di dalam eskrow. Sila bayar kepada penjual\nmelalui cara pembayaran yang dipersetujui.",
"cont_st_paid_waiting": "Menunggu penjual untuk menyerahkan wang dari eskrow.",
"cont_st_waiting": "Menunggu penjual untuk memasukkan Bitcoin ke dalam eskrow.",
"cont_title": "Kontrak Saya",
"filter_any": "Mana-mana",
"filter_buying": "Membeli",
"filter_country_global": "Tawaran Global",
"filter_currency": "Matawang",
"filter_detail": "Perincian",
"filter_filters": "Penapis",
"filter_iambuying": "Saya membeli bitcoin",
"filter_iamselling": "Saya menjual bitcoin",
"filter_method": "Cara Pembayaran",
"filter_search": "Cari",
"filter_selling": "Menjual",
"item_minmax": "Min/Maks",
"item_nooffers": "Tiada tawaran. Cuba ubah \"Berdekatan saya\" kepada \"Tawaran Global\".",
"item_rating": "{rating} perdagangan.",
"item_rating_no": "Tiada penilaian",
"local_trader": "Pedagang Tempatan",
"local_trader_new": "Baharu",
"login": "Log masuk",
"logout": "Log Keluar",
"mycont": "Kontrak Saya",
"offer_accept": "Terima tawaran",
"offer_account_finish": "Nampaknya anda belum selesai menetapkan akaun Hodl Hodl. Adakah anda ingin selesaikan penetapan sekarang?",
"offer_choosemethod": "Pilih Cara Pembayaran",
"offer_confirmations": "perakuan",
"offer_minmax": "Min/maks",
"offer_minutes": "Min",
"offer_promt_fiat": "Berapa banyak {currency} anda mahu beli?",
"offer_promt_fiat_e": "Contohnya, 100",
"offer_window": "Tingkap",
"p2p": "Beli Bitcoin di Pertukaran Perangkai Padan"
},
"lnd": {
"active": "Giat",
"inactive": "Tidak Giat",

View file

@ -49,58 +49,6 @@
"error": "एर्रोर",
"network": "नेटवर्क एर्रोर"
},
"hodl": {
"are_you_sure_you_want_to_logout": "के तपाइँ Hodl Hodl बाट लग आउट गर्न निश्चित हुनुहुन्छ?",
"cont_address_escrow": "एस्क्रो",
"cont_address_to": "तिर",
"cont_buying": "किन्दै",
"cont_cancel": "सम्झौता रद्द गर्नुहोस्",
"cont_cancel_q": "के तपाइँ यो सम्झौता रद्द गर्न निश्चित हुनुहुन्छ?",
"cont_cancel_y": "हो, सम्झौता रद्द गर्नुहोस्",
"cont_chat": "काउन्टरपार्टीसँग कुराकानी खोल्नुहोस्",
"cont_how": "कसरी तिर्ने",
"cont_no": "तपाईंसँग कुनै पनि सम्झौता प्रगतिमा छैन।",
"cont_paid": "भुक्तानीको रूपमा सम्झौता चिन्ह लगाउनुहोस्",
"cont_paid_e": "यदि तपाईंले सहमत भुक्तानी विधि मार्फत विक्रेतालाई रकम पठाउनुभएको थियो भने मात्र यो गर्नुहोस्",
"cont_paid_q": "के तपाइँ यो सम्झौतालाई भुक्तान गरिएको रूपमा चिन्ह लगाउन निश्चित हुनुहुन्छ?",
"cont_selling": "बेच्दै",
"cont_st_completed": "सबै सकियो!",
"cont_st_in_progress_buyer": "कोइनहरू एस्क्रोमा छन्। कृपया विक्रेतालाई भुक्तान गर्नुहोस्।",
"cont_st_paid_enought": "बिटकोइन एस्क्रो मा छन्। कृपया विक्रेतालाई सहमत विधि मार्फत भुक्तान गर्नुहोस् ।",
"cont_st_paid_waiting": "एस्क्रोबाट कोइन जारी गर्न विक्रेताको लागि पर्खँदै",
"cont_st_waiting": "एस्क्रोमा बिटकोइनहरू जम्मा गर्न विक्रेताको लागि पर्खँदै",
"cont_title": "मेरो सम्झौताहरू",
"filter_any": "कुनै पनि",
"filter_buying": "किन्दै",
"filter_country_global": "ग्लोबल अफरहरू",
"filter_currency": "मुद्रा",
"filter_detail": "विस्तार",
"filter_filters": "फिल्टरहरू",
"filter_iambuying": "म बिटकोइन किन्दै छु",
"filter_iamselling": "म बिटकोइन बेच्दै छु",
"filter_method": "भुक्तानी विधि",
"filter_search": "खोज्नुहोस्",
"filter_selling": "बेच्दै",
"item_minmax": "न्यूनतम / अधिकतम",
"item_nooffers": "कुनै प्रस्ताव छैन। \"मेरो नजिक\" लाई \"ग्लोबल अफरहरू\" मा परिवर्तन गर्ने प्रयास गर्नुहोस्।",
"item_rating": "{rating} ट्रेडहरू",
"item_rating_no": "कुनै मूल्याङ्कन छैन",
"local_trader": "स्थानीय व्यापारी",
"local_trader_new": "नयाँ",
"login": "लग इन",
"logout": "लगआउट",
"mycont": "मेरो सम्झौताहरू",
"offer_accept": "प्रस्ताव स्वीकार गर्नुहोस्",
"offer_account_finish": "तपाईंले Hodl Hodl मा खाता सेटअप पूरा गर्नुभएन जस्तो देखिन्छ। के तपाइँ अहिले सेटअप गर्न चाहनुहुन्छ?",
"offer_choosemethod": "भुक्तानी विधि छनौट गर्नुहोस्",
"offer_confirmations": "पुष्टिकरणहरू",
"offer_minmax": "न्यूनतम / अधिकतम",
"offer_minutes": "न्यूनतम",
"offer_promt_fiat": "तपाईं कति {currency} किन्न चाहनुहुन्छ?",
"offer_promt_fiat_e": "उदाहरणका लागि, 100",
"offer_window": "विन्डो ",
"p2p": "पियर-टू-पियर एक्सचेन्जमा बिटकोइन किन्नुहोस्"
},
"lnd": {
"active": "सक्रिय",
"inactive": "निष्क्रिय",

View file

@ -49,58 +49,6 @@
"error": "Fout",
"network": "Netwerkfout"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Weet u zeker dat u wilt uitloggen van Hodl Hodl?",
"cont_address_escrow": "Escrow",
"cont_address_to": "Naar",
"cont_buying": "kopen",
"cont_cancel": "Annuleer contract",
"cont_cancel_q": "Weet u zeker dat u dit contract wil annuleren?",
"cont_cancel_y": "Ja, annuleer dit contract",
"cont_chat": "Open chat met tegenpartij",
"cont_how": "Hoe te betalen",
"cont_no": "U heeft geen lopende contracten",
"cont_paid": "Markeer contract als betaald",
"cont_paid_e": "Doe dit alleen als u tegoeden naar de verkoper heeft gestuurd via de overeengekomen betalingsmethode",
"cont_paid_q": "Weet u zeker dat u dit contract als betaald wilt markeren?",
"cont_selling": "verkopen",
"cont_st_completed": "Klaar!",
"cont_st_in_progress_buyer": "Coins zijn in escrow, contacteer de verkoper",
"cont_st_paid_enought": "Bitcoin zijn in escrow! Contacteer de verkoper\nvia overeengekomen betalingsmethode",
"cont_st_paid_waiting": "Wachten op verkoper om coins vrij te geven uit escrow",
"cont_st_waiting": "Wachten op verkoper om coins te storten in escrow..",
"cont_title": "Mijn contracten",
"filter_any": "ieder",
"filter_buying": "Kopen",
"filter_country_global": "Wereldwijd aanbod",
"filter_currency": "Valuta",
"filter_detail": "Detail",
"filter_filters": "Filters",
"filter_iambuying": "Ik koop bitcoin",
"filter_iamselling": "Ik verkoop bitcoin",
"filter_method": "Betalingsmethode",
"filter_search": "Zoeken",
"filter_selling": "Verkopen",
"item_minmax": "Min/Max",
"item_nooffers": "Geen aanbod. Probeer \"Dicht bij mij\" te veranderen naar wereldwijd aanbod!",
"item_rating": "{rating} transacties",
"item_rating_no": "Geen beoordeling",
"local_trader": "Lokaal Handelen",
"local_trader_new": "Nieuw",
"login": "Inloggen",
"logout": "Uitloggen",
"mycont": "Mijn contracten",
"offer_accept": "Bod accepteren",
"offer_account_finish": "Het lijkt er op dat u nog niet klaar bent met uw account op HodlHodl, wilt u hiermee verder gaan?",
"offer_choosemethod": "Kies betalingsmethode",
"offer_confirmations": "bevestigingen",
"offer_minmax": "min / max",
"offer_minutes": "min",
"offer_promt_fiat": "Hoeveel {currency} wilt u kopen?",
"offer_promt_fiat_e": "Bijvoorbeeld 100",
"offer_window": "raam",
"p2p": "Een p2p exchange"
},
"lnd": {
"active":"Actief",
"inactive":"Inactief",

View file

@ -49,58 +49,6 @@
"error": "Błąd",
"network": "Błąd sieciowy"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Czy na pewno chcesz się wylogować z HodlHodl? ",
"cont_address_escrow": "Escrow",
"cont_address_to": "Do",
"cont_buying": "Kupno",
"cont_cancel": "Anuluj kontrakt",
"cont_cancel_q": "Czy jesteś pewien, że chcesz anulować ten kontrakt? ",
"cont_cancel_y": "Tak, anuluj kontrakt",
"cont_chat": "Otwórz czat ze stroną przeciwną",
"cont_how": "Jak zapłacić",
"cont_no": "Nie masz żadnych uruchomionych kontraktów",
"cont_paid": "Zaznacz kontrakt jako opłacony",
"cont_paid_e": "Zrób to tylko gdy wysyłasz fundusze sprzedającemu w uzgodniony z nim sposób",
"cont_paid_q": "Czy jesteś pewien że chcesz oznaczyć ten kontrakt jako opłacony?",
"cont_selling": "Sprzedaż",
"cont_st_completed": "Wszystko zrobione!",
"cont_st_in_progress_buyer": "Środki są w escrow, zapłać sprzedającemu",
"cont_st_paid_enought": "Środki są w escrow, zapłać sprzedającemu w uzgodniony z nim sposób",
"cont_st_paid_waiting": "Oczkiwanie aż sprzedawca uwolni Bitcoiny z systemu escrow",
"cont_st_waiting": "Oczekiwanie aż sprzedawca zdeponuje Bitcoiny do systemu escrow",
"cont_title": "Moje kontrakty",
"filter_any": "Każdy",
"filter_buying": "Kupno",
"filter_country_global": "Oferty globalne",
"filter_currency": "Waluta",
"filter_detail": "Szczegóły",
"filter_filters": "Filtry",
"filter_iambuying": "Kupuję bitcoiny",
"filter_iamselling": "Sprzedaję bitcoiny",
"filter_method": "Metoda płatności",
"filter_search": "Szukaj",
"filter_selling": "Sprzedaż",
"item_minmax": "Min/Maks",
"item_nooffers": "Brak ofert. Spróbój zmienić \"w mojej okolicy\" na Oferty Globalne",
"item_rating": "{transakcje} Ocena",
"item_rating_no": "Brak oceny",
"local_trader": "Lokalny handel",
"local_trader_new": "Nowy",
"login": "Login",
"logout": "Wyloguj",
"mycont": "Moje kontrakty",
"offer_accept": "Akceptuj ofertę",
"offer_account_finish": "Wygląda na to że nie ukończyłeś zakładania konta HodlHodl, czy dokończyć teraz?",
"offer_choosemethod": "Wybierz metodę płatności",
"offer_confirmations": "potwierdzenia",
"offer_minmax": "min/maks",
"offer_minutes": "minuty",
"offer_promt_fiat": "Ile {waluta} chcesz kupić? ",
"offer_promt_fiat_e": "Na przykład: 100",
"offer_window": "Okno",
"p2p": "Giełda p2p"
},
"lnd": {
"active": "Aktywny",
"inactive": "Nieaktywny",

View file

@ -49,58 +49,6 @@
"error": "Erro",
"network": "Error na rede"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Você tem certeza que deseja sair da HodlHodl?",
"cont_address_escrow": "Depósito",
"cont_address_to": "para",
"cont_buying": "Comprando",
"cont_cancel": "Cancelar contrato",
"cont_cancel_q": "Você tem certeza que deseja cancelar este contrato?",
"cont_cancel_y": "Sim, cancele o contrato",
"cont_chat": "Abrir chat com p2p",
"cont_how": "Como pagar",
"cont_no": "Você não tem qualquer contrato em progresso",
"cont_paid": "Marcar contrato como Pago",
"cont_paid_e": "Faça isso apenas se você enviou fundos ao vendedor por meio do método de pagamento acordado",
"cont_paid_q": "Tem certeza de que deseja marcar este contrato como pago?",
"cont_selling": "Vendendo",
"cont_st_completed": "Tudo feito!",
"cont_st_in_progress_buyer": "As moedas estão em depósito. Pague ao vendedor.",
"cont_st_paid_enought": "Os bitcoins estão em depósito! Por favor pague ao vendedor\natravés da forma de pagamento acordada.",
"cont_st_paid_waiting": "Aguardando o vendedor liberar as moedas do depósito",
"cont_st_waiting": "Aguardando o vendedor depositar as moedas no depósito",
"cont_title": "Meus contratos",
"filter_any": "Qualquer",
"filter_buying": "Compra",
"filter_country_global": "Ofertas globais",
"filter_currency": "Moeda",
"filter_detail": "Detalhe",
"filter_filters": "Filtrar",
"filter_iambuying": "Estou comprando bitcoin",
"filter_iamselling": "Estou vendendo bitcoin",
"filter_method": "Método de pagamento",
"filter_search": "Buscar",
"filter_selling": "Venda",
"item_minmax": "Mín. / Máx.",
"item_nooffers": "Sem ofertas. Tente mudar \"Perto de mim\" para ofertas globais.",
"item_rating": "{rating} negócios",
"item_rating_no": "Sem negócios",
"local_trader": "Local Trader",
"local_trader_new": "Nova",
"login": "Entrar",
"logout": "Desconectar",
"mycont": "Meus contratos",
"offer_accept": "Aceitar oferta",
"offer_account_finish": "Parece que você não concluiu a configuração da conta no HodlHodl. Quer terminar a configuração agora?",
"offer_choosemethod": "Escolha a forma de pagamento",
"offer_confirmations": "confirmações",
"offer_minmax": "Mín. / Máx.",
"offer_minutes": "Mín.",
"offer_promt_fiat": "Quantos {currency} você deseja comprar?",
"offer_promt_fiat_e": "Por exemplo 100",
"offer_window": "Tempo",
"p2p": "Comprar Bitcoin P2P"
},
"lnd": {
"active": "Ativo",
"inactive": "Inativo",

View file

@ -37,57 +37,6 @@
"error": "Erro",
"network": "Erro da rede"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Tem a certeza de que deseja fazer logout do HodlHodl?",
"cont_address_escrow": "Garantia",
"cont_address_to": "Para",
"cont_buying": "comprar",
"cont_cancel": "Cancelar contracto",
"cont_cancel_q": "Tem a certeza que deseja cancelar o contrato?",
"cont_cancel_y": "Sim, cancelar contracto",
"cont_chat": "Abrir chat com a contra-parte",
"cont_how": "Como pagar",
"cont_no": "Não tem nenhum contrato em progresso",
"cont_paid": "Marcar contracto como pago",
"cont_paid_e": "Faça isto apenas se enviou fundos ao vendedor por meio do método de pagamento acordado",
"cont_paid_q": "Tem a certeza de que deseja marcar este contracto como pago?",
"cont_selling": "venda",
"cont_st_completed": "Feito!",
"cont_st_in_progress_buyer": "As moedas estão em depósito, pode pagar ao vendedor",
"cont_st_paid_enought": "Os bitcoins estão em depósito! Por favor pague ao vendedor\natravés do método de pagamento acordado",
"cont_st_paid_waiting": "A aguardar que o vendedor liberte os bitcoin do depósito",
"cont_st_waiting": "A aguardar que o vendedor deposite bitcoin para o depósito...",
"cont_title": "Meus contractos",
"filter_any": "Qualquer",
"filter_buying": "Compra",
"filter_country_global": "Ofertas globais",
"filter_currency": "Moeda",
"filter_detail": "Detalhe",
"filter_filters": "Filtrar",
"filter_iambuying": "Comprar bitcoin",
"filter_iamselling": "Vender bitcoin",
"filter_method": "Método de pagamento",
"filter_search": "Pesquisa",
"filter_selling": "Venda",
"item_minmax": "Min/Max",
"item_nooffers": "Sem ofertas. Tente mudar \"Perto de mim\" para ofertas globais!",
"item_rating": "{rating} negócios",
"item_rating_no": "Sem negócios",
"local_trader": "Local Trader",
"local_trader_new": "Nova",
"login": "Login",
"mycont": "Meus contractos",
"offer_accept": "Aceitar oferta",
"offer_account_finish": "Parece que não concluiu a configuração da conta no HodlHodl. Quer terminar a configuração agora?",
"offer_choosemethod": "Escolher método de pagamento",
"offer_confirmations": "confirmações",
"offer_minmax": "min / max",
"offer_minutes": "min",
"offer_promt_fiat": "Qual a quantidade de {currency} que deseja comprar?",
"offer_promt_fiat_e": "Por exemplo 100",
"offer_window": "tempo",
"p2p": "Uma exchange p2p"
},
"lnd": {
"errorInvoiceExpired": "Factura expirada",
"exchange": "Exchange",

View file

@ -39,58 +39,6 @@
"error": "Eroare",
"network": "Eroare de rețea"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Sigur vrei să te deloghezi din Hodl Hodl?",
"cont_address_escrow": "Escrow",
"cont_address_to": "Către",
"cont_buying": "Cumpărare",
"cont_cancel": "Anulează contract",
"cont_cancel_q": "Sigur vrei să anulezi acest contract?",
"cont_cancel_y": "Da, anulează contract",
"cont_chat": "Deschide chat cu contrapartida",
"cont_how": "Cum să plătești",
"cont_no": "Nu ai niciun contract în desfășurare.",
"cont_paid": "Marchează contractul ca plătit",
"cont_paid_e": "Fă asta doar dacă ai trimis fonduri vînzătorului prin metoda de plată agreată.",
"cont_paid_q": "Sigur vrei să marchezi acest contract ca plătit?",
"cont_selling": "Vînzare",
"cont_st_completed": "Totul este gata!",
"cont_st_in_progress_buyer": "Monedele sunt în escrow. Plătește vînzătorul.",
"cont_st_paid_enought": "Bitcoinii sunt în escrow. Plătește vînzătorul prin metoda de plată agreată.",
"cont_st_paid_waiting": "Se așteaptă ca vînzătorul să elibereze monedele din escrow",
"cont_st_waiting": "Se așteaptă ca vînzătorul să depună bitcoinii în escrow",
"cont_title": "Contractele mele",
"filter_any": "Oricare",
"filter_buying": "Cumpărare",
"filter_country_global": "Oferte globale",
"filter_currency": "Monedă",
"filter_detail": "Detaliu",
"filter_filters": "Filtre",
"filter_iambuying": "Cumpăr bitcoin",
"filter_iamselling": "Vînd bitcoin",
"filter_method": "Metodă de plată",
"filter_search": "Caută",
"filter_selling": "Vînzare",
"item_minmax": "Min/Max",
"item_nooffers": "Nicio ofertă. Încearcă să schimbi \"În apropiere\" în \"Oferte Globale\"",
"item_rating": "{rating} schimburi",
"item_rating_no": "Niciun schimb",
"local_trader": "Comerciant Local",
"local_trader_new": "Nou",
"login": "Logare",
"logout": "Delogare",
"mycont": "Contractele mele",
"offer_accept": "Acceptă oferta",
"offer_account_finish": "Se pare că nu ai terminat de configurat cont pe Hodl Hodl. Ai vrea să termini configuratul acum?",
"offer_choosemethod": "Alege Metoda de Plată",
"offer_confirmations": "confirmări",
"offer_minmax": "Min/Max",
"offer_minutes": "Min",
"offer_promt_fiat": "Cîtă {currency} vrei să cumperi?",
"offer_promt_fiat_e": "De exemplu, 100",
"offer_window": "Fereastră",
"p2p": "Cumpără bitcoin pe un exchange peer-to-peer"
},
"lnd": {
"errorInvoiceExpired": "Factură expirată",
"exchange": "Schimbă",

View file

@ -49,58 +49,6 @@
"error": "Ошибка",
"network": "Ошибка сети"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Вы уверены, что хотите выйти из HodlHodl?",
"cont_address_escrow": "Эскроу",
"cont_address_to": "На",
"cont_buying": "покупка",
"cont_cancel": "Отменить контракт",
"cont_cancel_q": "Вы уверены, что хотите отменить этот контракт?",
"cont_cancel_y": "Да, отменить контракт",
"cont_chat": "Открыть чат с",
"cont_how": "Как платить",
"cont_no": "У вас нет активных контрактов",
"cont_paid": "Отметить контракт как оплаченный",
"cont_paid_e": "Делайте это только в том случае, если вы отправили средства продавцу через выбранный способ оплаты",
"cont_paid_q": "Вы уверены, что хотите пометить этот контракт как оплаченный??",
"cont_selling": "продажа",
"cont_st_completed": "Готово!",
"cont_st_in_progress_buyer": "Монеты в Эскроу, пожалуйста, заплатите продавцу",
"cont_st_paid_enought": "Биткоины на Эксроу! Пожалуйста, оплатите продавцу \nчерез выбранный способ оплаты",
"cont_st_paid_waiting": "Ждём когда продавец отпустит монеты с Эскроу",
"cont_st_waiting": "Ждём когда продавец отправит биткойны на Эскроу...",
"cont_title": "Мои контракты",
"filter_any": "Все",
"filter_buying": "Покупаю",
"filter_country_global": "Глобальные",
"filter_currency": "Валюта",
"filter_detail": "Все",
"filter_filters": "Фильтры",
"filter_iambuying": "Я покупаю bitcoin",
"filter_iamselling": "Я продаю bitcoin",
"filter_method": "Платежный метод",
"filter_search": "Искать",
"filter_selling": "Продаю",
"item_minmax": "Мин/Макс",
"item_nooffers": "Нет предложений. Попробуйте поменять \"Рядом со мной\" на Глобальные предложения!",
"item_rating": "{rating} сделок",
"item_rating_no": "Нет рейтинга",
"local_trader": "Local Trader",
"local_trader_new": "New",
"login": "Войти",
"logout": "выйти",
"mycont": "Мои контракты",
"offer_accept": "Принять оффер",
"offer_account_finish": "Похоже вы не завершили настройку аккаунта в HodlHodl, вы хотите закончить сейчас?",
"offer_choosemethod": "Выберите способ оплаты",
"offer_confirmations": "подтверждений",
"offer_minmax": "мин / макс",
"offer_minutes": "мин",
"offer_promt_fiat": "Сколько {currency} вы хотите купить?",
"offer_promt_fiat_e": "К примеру 100",
"offer_window": "временное окно",
"p2p": "p2p обмен"
},
"lnd": {
"active": "Активный",
"inactive": "Не активный",

View file

@ -49,58 +49,6 @@
"error": "දෝෂයකි",
"network": "ජාලකරණ දෝෂයකි"
},
"hodl": {
"are_you_sure_you_want_to_logout": "ඔබට Hodl Hodl වෙතින් ඉවත් වීමට අවශ්‍ය බව විශ්වාසද?",
"cont_address_escrow": "එස්ක්‍රෝ",
"cont_address_to": "වෙතට",
"cont_buying": "මිලදී ගැනීම",
"cont_cancel": "කොන්ත්‍රාත්තුව අවලංගු කරන්න",
"cont_cancel_q": "ඔබට මෙම කොන්ත්‍රාත්තුව අවලංගු කිරීමට අවශ්‍ය බව විශ්වාසද?",
"cont_cancel_y": "ඔව් කොන්ත්‍රාත්තුව අවලංගු කරන්න",
"cont_chat": "සගයා සමග පිළිසඳරක් විවෘත කරන්න",
"cont_how": "ගෙවන්නේ කෙසේද?",
"cont_no": "ඔබ සතුව කිසිදු කොන්ත්‍රාත්තුවක් නොමැත.",
"cont_paid": "කොන්ත්‍රාත්තුව ගෙවූ බවට ලකුණු කරන්න ",
"cont_paid_e": "ඔබ ගෙවීමට එකඟ වූ ගෙවීම් ක්‍රමය හරහා පමණක් අරමුදල් ගෙව්වේ නම් මෙය කරන්න",
"cont_paid_q": "ඔබට මෙම කොන්ත්‍රාත්තුව ගෙවූ බවට ලකුණු කිරීමට අවශ්‍ය බව විශ්වාසද?",
"cont_selling": "විකිණීම",
"cont_st_completed": "සියල්ල සිදු කර ඇත!",
"cont_st_in_progress_buyer": "කාසි එස්ක්‍රෝ තුළ ඇත. කරුණාකර විකුණුම්කරුට මුදල් ගෙවන්න.",
"cont_st_paid_enought": "බිට් කොයින් එස්ක්‍රෝව තුළ ඇත. කරුණාකර ගිවිසගත් ගෙවීම් මාධ්‍ය ඔස්සේ විකුණුම්කරුට ගෙවීම සිදු කරන්න.",
"cont_st_paid_waiting": "විකුණුම්කරු එස්ක්‍රෝව තුළින් කාසි මුදාහරින තුරු බලා සිටී",
"cont_st_waiting": "විකුණුම්කරු එස්ක්‍රෝවට බිට්කොයින් තැන්පත් කරන තුරු රැඳී සිටී",
"cont_title": "මගේ කොන්ත්‍රාත්තු",
"filter_any": "ඕනෑම",
"filter_buying": "මිලදී ගැනීම",
"filter_country_global": "ගෝලීය දීමනා",
"filter_currency": "මුදල්",
"filter_detail": "විස්තර",
"filter_filters": "පෙරීම්",
"filter_iambuying": "මම බිට්කොයින් මිලදී ගන්නවා",
"filter_iamselling": "මම බිට්කොයින් විකුණනවා",
"filter_method": "ගෙවීම් ක්‍රමය",
"filter_search": "සෙවීම",
"filter_selling": "විකිණීම",
"item_minmax": "අවම/උපරිම",
"item_nooffers": "දීමනා නැත. \"මා අසල\" යන්න \"ගෝලීය දීමනා\" ලෙස වෙනස් කිරීමට උත්සාහ කරන්න.",
"item_rating": "{rating} වෙළඳාම්",
"item_rating_no": "ඇගයීම් නැත",
"local_trader": "දේශීය වෙළෙන්දා",
"local_trader_new": "නව",
"login": "ඇතුල් වන්න",
"logout": "ඉවත් වන්න",
"mycont": "මගේ කොන්ත්‍රාත්තු",
"offer_accept": "දීමනාව පිළිගන්න",
"offer_account_finish": "ඔබ Hodl Hodl හි ගිණුමක් පිහිටුවීම අවසන් නොකළ බව පෙනේ. ඔබ දැන් සැකසීම අවසන් කිරීමට කැමතිද?",
"offer_choosemethod": "ගෙවීම් ක්‍රමය තෝරන්න",
"offer_confirmations": "තහවුරු කිරීම්",
"offer_minmax": "අවම/උපරිම",
"offer_minutes": "අවමය",
"offer_promt_fiat": "ඔබට {currency} කොපමණ ප්‍රමාණයක් මිලදී ගැනීමට අවශ්‍යද?",
"offer_promt_fiat_e": "උදාහරණයක් ලෙස, 100",
"offer_window": "කවුළුව",
"p2p": "සම සම හුවමාරු යටතේ බිට් කොයින් මිලදී ගන්න"
},
"lnd": {
"active": "ක්‍රියාකාරී",
"inactive": "අක්‍රීය",

View file

@ -41,42 +41,6 @@
"error": "Chyba",
"network": "Sieťová chyba"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Naozaj sa chcete odhlásiť z HodlHodl?",
"cont_address_to": "Cieľ",
"cont_cancel": "Zrušiť kontrakt",
"cont_cancel_q": "Naozaj chcete zrušiť tento kontrakt?",
"cont_cancel_y": "Áno, zrušiť kontrakt",
"cont_chat": "Otvoriť chat s druhou stranou",
"cont_how": "Ako zaplatiť",
"cont_no": "Nemáte žiadne prebiehajúce kontrakty",
"cont_paid": "Označiť kontrakt ako zaplatený",
"cont_paid_e": "Spravte to len, ak ste už odoslali úhradu pomocou dohodnutej platobnej metódy",
"cont_paid_q": "Naozaj chcete označiť tento kontrakt ako zaplatený?",
"cont_st_completed": "Hotovo!",
"cont_title": "Moje kontrakty",
"filter_currency": "Mena",
"filter_detail": "Detail",
"filter_filters": "Filtre",
"filter_iambuying": "Chcem kúpiť bitcoin",
"filter_iamselling": "Chcem predať bitcoin",
"filter_method": "Platobná metóda",
"filter_search": "Hľadať",
"item_minmax": "Min/Max",
"local_trader_new": "Nový",
"login": "Prihlásiť sa",
"mycont": "Moje kontrakty",
"offer_accept": "Akceptovať ponuku",
"offer_account_finish": "Vyzerá, že ste nedokončili vytvorenie účtu na HodlHodl, chcete ho dokončiť teraz?",
"offer_choosemethod": "Vyberte platobnú metódu",
"offer_confirmations": "potvrdenia",
"offer_minmax": "min / max",
"offer_minutes": "min",
"offer_promt_fiat": "Koľko {currency} chcete kúpiť?",
"offer_promt_fiat_e": "Napríklad 100",
"offer_window": "okno",
"p2p": "P2p burza"
},
"lnd": {
"active": "Aktívne",
"inactive": "Neaktívne",

View file

@ -48,59 +48,7 @@
"broadcast": "Objava v omrežje neuspešna",
"error": "Napaka",
"network": "Omrežna napaka"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Ali ste prepričani, da se želite odjaviti iz HodlHodl?",
"cont_address_escrow": "Escrow hramba",
"cont_address_to": "Za",
"cont_buying": "Kupujem",
"cont_cancel": "Preklic pogodbe",
"cont_cancel_q": "Ali ste prepričani, da želite preklicati to pogodbo?",
"cont_cancel_y": "Da, prekliči pogodbo",
"cont_chat": "Odpri klepet",
"cont_how": "Kako plačati",
"cont_no": "Nimate aktivnih pogodb.",
"cont_paid": "Označi pogodbo kot plačano",
"cont_paid_e": "Naredite to le, če ste prodajalcu poslali sredstva preko dogovorjene plačilne metode",
"cont_paid_q": "Ali ste prepričani, da želite označiti to pogodbo kot plačano?",
"cont_selling": "Prodajam",
"cont_st_completed": "Končano!",
"cont_st_in_progress_buyer": "Kovanci so v escrow hrambi. Prosim plačajte prodajalcu.",
"cont_st_paid_enought": "Bitcoini so v escrow hrambi! Prosim plačajte prodajalcu\npreko dogovorjene plačilne metode.",
"cont_st_paid_waiting": "Počakajte, da prodajalec sprosti kovance iz escrow hrambe",
"cont_st_waiting": "Počakajte, da prodajalec izvede polog bitcoinov v escrow hrambo",
"cont_title": "Moje pogodbe",
"filter_any": "Vse",
"filter_buying": "Kupujem",
"filter_country_global": "Globalne ponudbe",
"filter_currency": "Valuta",
"filter_detail": "Podrobno",
"filter_filters": "Filtriraj",
"filter_iambuying": "Kupujem bitcoin",
"filter_iamselling": "Prodajam bitcoin",
"filter_method": "Plačilna metoda",
"filter_search": "Išči",
"filter_selling": "Prodajam",
"item_minmax": "Min/Max",
"item_nooffers": "Ni ponudb. Poskusite spremeniti \"Blizu mene\" v \"Globalne ponudbe\".",
"item_rating": "{rating} poslov",
"item_rating_no": "Brez ocene",
"local_trader": "Lokalno trgovanje",
"local_trader_new": "Novo",
"login": "Prijava",
"logout": "Odjava",
"mycont": "Moje pogodbe",
"offer_accept": "Sprejmi ponudbo",
"offer_account_finish": "Videti je, da še niste končali registracije računa na HodlHodl, ali želite končati registracijo zdaj?",
"offer_choosemethod": "Izberite plačilno metodo",
"offer_confirmations": "potrditev",
"offer_minmax": "Min/Max",
"offer_minutes": "Min",
"offer_promt_fiat": "Koliko {currency} želite kupiti?",
"offer_promt_fiat_e": "Na primer 100",
"offer_window": "okno",
"p2p": "Kupite Bitcoin na P2P menjalnici"
},
},
"lnd": {
"active": "Aktivno",
"inactive": "Neaktivno",

View file

@ -37,51 +37,6 @@
"error": "Fel",
"network": "Nätverks fel"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Är du säker på att du vill logga ut från HodlHodl?",
"cont_address_escrow": "Säkerhet",
"cont_address_to": "Till",
"cont_buying": "Köp",
"cont_cancel": "Avbryt kontrakt",
"cont_cancel_q": "Är du säker på att du vill avbryta detta kontraktet?",
"cont_cancel_y": "Ja, avbryt kontrakt",
"cont_chat": "Öppna chatt med motpart",
"cont_how": "Hur du betalar",
"cont_paid": "Markera kontrakt som betalad",
"cont_paid_q": "Är du säker att du vill markera detta kontrakt som betalt?",
"cont_selling": "Säljer",
"cont_st_completed": "Klart!",
"cont_st_paid_enought": "Bitcoin hålls som säkerhet! Betala säljaren\nvia överenskommen betalmetod.",
"cont_title": "Mina kontrakt",
"filter_any": "Valfri",
"filter_buying": "Köper",
"filter_country_global": "Globala erbjudanden",
"filter_currency": "Valuta",
"filter_detail": "Detaljer",
"filter_filters": "Filtrera",
"filter_iambuying": "Jag köper bitcoin",
"filter_iamselling": "Jag säljer bitcoin",
"filter_method": "Betalnings metod",
"filter_search": "Sök",
"filter_selling": "Säljer",
"item_minmax": "Min/Max",
"item_rating": "{rating} köp",
"item_rating_no": "Inga betyg",
"local_trader": "Lokal säljare",
"local_trader_new": "Ny",
"login": "Logga in",
"mycont": "Mina kontrakt",
"offer_accept": "Acceptera bud",
"offer_account_finish": "Det verkar som om du inte är klar med att skapa ett HodlHodl konto. Vill du fortsätta med att skapa ditt konto nu?",
"offer_choosemethod": "Välj betalnings metod",
"offer_confirmations": "Bekräftelser",
"offer_minmax": "min / max",
"offer_minutes": "minimum",
"offer_promt_fiat": "Hur mycket {valuta} vill du köpa?",
"offer_promt_fiat_e": "till exempel 100",
"offer_window": "Fönster",
"p2p": "En p2p börs"
},
"lnd": {
"errorInvoiceExpired": "Fakturan har förfallit",
"exchange": "Börs",

View file

@ -35,54 +35,6 @@
"error": "ผิดพลาด",
"network": "เน็ตเวิร์คผิดพลาด"
},
"hodl": {
"are_you_sure_you_want_to_logout": "ท่านต้องการออกจาก HodlHodl ใช่หรือไม่?",
"cont_address_escrow": "เอสโครว์",
"cont_address_to": "ถึง",
"cont_buying": "กำลังซื้อ",
"cont_cancel": "ยกเลิกสัญญา",
"cont_cancel_q": "ท่านต้องการยกเลิกสัญญานี้ใช่หรือไม่?",
"cont_cancel_y": "ใช่ ยกเลิกสัญญา",
"cont_chat": "เปิดแช็ทกับคู่สัญญา",
"cont_how": "วิธีการจ่าย",
"cont_no": "ท่าไม่มีสัญญาที่กำลังดำเนินการ",
"cont_paid": "มาร์คสัญญาว่า จ่ายแล้ว",
"cont_paid_e": "ทำอันนี้ก็ต่อเมื่อท่านได้จ่ายเงินด้วยวิธีที่ตกลงไว้แล้ว",
"cont_paid_q": "ท่านแน่ใจหรือไม่ว่า ต้องการมาร์คสัญญานี้ว่าจ่ายแล้ว?",
"cont_selling": "กำลังขาย",
"cont_st_completed": "สำเร็จทั้งหมด!",
"cont_st_in_progress_buyer": "เหรียญอยู่ในบัญชีเอสโครว์ กรุณาจ่ายผู้ขาย",
"cont_st_paid_enought": "บิตคอยน์อยู่ในบัญชีเอสโครว์! กรุณาจ่ายผู้ขาย\nโดยวิธีการจ่ายที่ได้ตกลงไว้",
"cont_title": "สัญญาของฉัน",
"filter_any": "ใดๆ",
"filter_buying": "กำลังซื้อ",
"filter_country_global": "Global offers",
"filter_currency": "สกุลเงิน",
"filter_detail": "รายละเอียด",
"filter_filters": "ตัวกรอง",
"filter_iambuying": "ท่านกำลังซื้อ",
"filter_iamselling": "ท่านกำลังขาย",
"filter_method": "วิธีการจ่าย",
"filter_search": "ค้นหา",
"filter_selling": "กำลังขาย",
"item_minmax": "น้อยสุด/มากสุด",
"item_nooffers": "ไม่มีข้อเสนอ ท่านสามารถใช้ Global offer ได้",
"item_rating": "{rating} เทรด",
"item_rating_no": "ไม่มีการจัดอันดับ",
"local_trader": "เทรดเดอร์ท้องถิ่น",
"local_trader_new": "ใหม่",
"login": "เข้าระบบ",
"mycont": "สัญญาของฉัน",
"offer_accept": "ยอมรับข้อเสนอ",
"offer_choosemethod": "เลือกวิธีการจ่าย",
"offer_confirmations": "ยืนยัน",
"offer_minmax": "น้อยสุด / มากสุด",
"offer_minutes": "น้อยสุด",
"offer_promt_fiat": "ท่านต้องการซื้อ {currency} จำนวนเท่าไหร่?",
"offer_promt_fiat_e": "ยกตัวอย่าง 100",
"offer_window": "หน้าต่าง",
"p2p": "แลกเปลี่ยน p2p"
},
"lnd": {
"errorInvoiceExpired": "ใบวางบิลหมดอายุแล้ว",
"exchange": "แลกเปลี่ยน",

View file

@ -44,22 +44,6 @@
"error": "Hata",
"network": "Ağ Hatası"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Hodl Hodl'dan çıkış yapmak istediğinize emin misiniz?",
"cont_address_escrow": "Escrow",
"cont_address_to": "Kime",
"cont_buying": "Satın al",
"cont_cancel": "Anlaşmayı iptal et",
"cont_cancel_q": "Anlaşmadan vazgeçmek istediğinize emin misiniz ?",
"cont_cancel_y": "Evet, anlaşmayı boz.",
"cont_chat": "Karşı taraf ile chat ekranı aç",
"cont_how": "Nasıl ödenir?",
"cont_paid": "Kontratı ödenmiş olarak işaretle",
"filter_buying": "Satın al",
"filter_currency": "Para birimi",
"filter_detail": "Ayrıntılar",
"filter_filters": "Filtreler"
},
"lnd": {
"expired": "Süresi doldu",
"expiredLow": "Süresi doldu",

View file

@ -46,40 +46,6 @@
"error": "Помилка",
"network": "Помилка Мережі"
},
"hodl": {
"are_you_sure_you_want_to_logout": "Ви впевнені, що хочете вийти з Hodl Hodl?",
"cont_address_to": "Куди",
"cont_cancel": "Відмінити контракт",
"cont_cancel_y": "Так, відмінити контракт",
"cont_how": "Як оплачувати",
"cont_paid": "Позначити контракт як оплачений",
"cont_selling": "Продаж",
"cont_st_completed": "Готово!",
"cont_title": "Мої Контракти",
"filter_any": "Будь-які",
"filter_currency": "Валюта",
"filter_detail": "Деталі",
"filter_filters": "Фільтри",
"filter_iambuying": "Я купляю біткоїни",
"filter_iamselling": "Я продаю біткоїни",
"filter_method": "Методи Оплати",
"filter_search": "Пошук",
"filter_selling": "Продаж",
"item_minmax": "Мін/Макс",
"item_rating_no": "Без рейтингу",
"local_trader": "Місцевий Продавець",
"local_trader_new": "Новий",
"login": "Увійти",
"logout": "Вийти",
"mycont": "Мої Контракти",
"offer_accept": "Підтвердити пропозицію",
"offer_choosemethod": "Виберіть Метод Оплати",
"offer_confirmations": "підтвердження",
"offer_minmax": "Мін/Макс",
"offer_minutes": "Хв",
"offer_promt_fiat_e": "Наприклад, 100",
"offer_window": "Вікно"
},
"lnd": {
"active": "Активний",
"inactive": "Неактивний",

View file

@ -44,58 +44,6 @@
"error": "错误",
"network": "网络错误"
},
"hodl": {
"are_you_sure_you_want_to_logout": "您确定要登出Hodl Hodl吗",
"cont_address_escrow": "第三方托管",
"cont_address_to": "至",
"cont_buying": "买",
"cont_cancel": "取消合约",
"cont_cancel_q": "您确定要取消此合约吗?",
"cont_cancel_y": "是的,取消合约",
"cont_chat": "与交易对手开始聊天",
"cont_how": "如何支付",
"cont_no": "您没有任何合约在进行中。",
"cont_paid": "将合约标记为已付款",
"cont_paid_e": "如果您向卖方透过已商定的支付方式匯款的话,才这样做",
"cont_paid_q": "您确定要将此合约标记为已付款吗?",
"cont_selling": "卖",
"cont_st_completed": "全部完成!",
"cont_st_in_progress_buyer": "您的币处于托管状态,请向卖家付款。",
"cont_st_paid_enought": "您的比特币处于托管状态。 请向卖家付款\n透过商定的支付方式。",
"cont_st_paid_waiting": "等待卖方从托管状态释放币",
"cont_st_waiting": "等待卖方将比特币存入托管",
"cont_title": "我的联系人",
"filter_any": "任何",
"filter_buying": "买",
"filter_country_global": "全球报价",
"filter_currency": "币种",
"filter_detail": "详细信息",
"filter_filters": "过滤器",
"filter_iambuying": "我要买比特币",
"filter_iamselling": "我要卖比特币",
"filter_method": "支付方法",
"filter_search": "搜索",
"filter_selling": "卖",
"item_minmax": "最小/最大",
"item_nooffers": "没有报价。 尝试将”在我附近“更改为”全球报价“。",
"item_rating": "{rating} 交易",
"item_rating_no": "无评分",
"local_trader": "当地交易员",
"local_trader_new": "新",
"login": "登录",
"logout": "登出",
"mycont": "我的合约",
"offer_accept": "接受报价",
"offer_account_finish": "您似乎尚未完成设置Hodl Hodl帐户。 您想现在完成设置吗?",
"offer_choosemethod": "选择付款方法",
"offer_confirmations": "确认",
"offer_minmax": "最小 / 最大",
"offer_minutes": "最小",
"offer_promt_fiat": "您要购买多少{currency}",
"offer_promt_fiat_e": "例如100",
"offer_window": "窗口",
"p2p": "在点对点交易所购买比特币"
},
"lnd": {
"errorInvoiceExpired": "账单已过期",
"exchange": "交易所",

View file

@ -41,58 +41,6 @@
"error": "錯誤",
"network": "網路錯誤"
},
"hodl": {
"are_you_sure_you_want_to_logout": "您確定要登出Hodl Hodl嗎",
"cont_address_escrow": "第三方托管",
"cont_address_to": "至",
"cont_buying": "買",
"cont_cancel": "取消合約",
"cont_cancel_q": "你確定你要取消這個合約嗎?",
"cont_cancel_y": "是的。取消合約",
"cont_chat": "與交易對手開啟對話",
"cont_how": "如何支付",
"cont_no": "您沒有任何合約在進行中。",
"cont_paid": "將合約標記爲已付款",
"cont_paid_e": "如果您向賣方透過已商定的付款方式匯款的話,才這樣做",
"cont_paid_q": "您確定要將此合約標記爲已付款嗎?",
"cont_selling": "賣",
"cont_st_completed": "全部完成!",
"cont_st_in_progress_buyer": "您的幣處于托管狀態,請向賣家付款。",
"cont_st_paid_enought": "您的比特幣處于托管狀態。 請向賣家付款\n透過商定的付款方式。",
"cont_st_paid_waiting": "等待賣方從托管狀態釋放幣",
"cont_st_waiting": "等待賣方將比特幣存入托管",
"cont_title": "我的合約",
"filter_any": "任何",
"filter_buying": "買",
"filter_country_global": "全球報價",
"filter_currency": "貨幣",
"filter_detail": "細節",
"filter_filters": "過濾器",
"filter_iambuying": "我正要買比特幣",
"filter_iamselling": "我正要賣比特幣",
"filter_method": "付款方法",
"filter_search": "搜尋",
"filter_selling": "賣",
"item_minmax": "最小/最大",
"item_nooffers": "沒有報價。 嘗試將”在我附近“更改爲”全球報價“。",
"item_rating": "{rating} 交易",
"item_rating_no": "無評分",
"local_trader": "當地交易員",
"local_trader_new": "新",
"login": "登入",
"logout": "登出",
"mycont": "我的合約",
"offer_accept": "接受報價",
"offer_account_finish": "您似乎尚未完成設定Hodl Hodl帳戶。 您想現在完成設定嗎?",
"offer_choosemethod": "選擇付款方法",
"offer_confirmations": "確認",
"offer_minmax": "最小 / 最大",
"offer_minutes": "最小",
"offer_promt_fiat": "您要購買多少{currency}",
"offer_promt_fiat_e": "例如100",
"offer_window": "窗口",
"p2p": "在點對點交易所購買比特幣"
},
"lnd": {
"errorInvoiceExpired": "賬單已過期",
"exchange": "交易所",

View file

@ -17,16 +17,11 @@ const NetworkSettings = () => {
navigate('Broadcast');
};
const navigateToLocalTrader = () => {
navigate('HodlHodl', { screen: 'HodlHodl' });
};
return (
<SafeBlueArea>
<ScrollView>
<BlueListItem title={loc.is_it_my_address.title} onPress={navigateToIsItMyAddress} testID="IsItMyAddress" chevron />
<BlueListItem title={loc.settings.network_broadcast} onPress={navigateToBroadcast} testID="Broadcast" chevron />
<BlueListItem title={loc.hodl.local_trader} onPress={navigateToLocalTrader} testID="LocalTrader" chevron />
</ScrollView>
</SafeBlueArea>
);

File diff suppressed because it is too large Load diff

View file

@ -1,64 +0,0 @@
import React, { useRef } from 'react';
import { WebView } from 'react-native-webview';
import { useRoute, useNavigation } from '@react-navigation/native';
import { SafeBlueArea } from '../../BlueComponents';
import navigationStyle from '../../components/navigationStyle';
import loc from '../../loc';
const url = 'https://accounts.hodlhodl.com/accounts/request_access?attributes=api_key,api_signature_key';
let lastTimeIvebeenHere = 0;
const INJECTED_JAVASCRIPT = `(function() {
window.postMessage = function (data) {
window.ReactNativeWebView && window.ReactNativeWebView.postMessage(data);
}
})();`;
const HodlHodlLogin = () => {
const webView = useRef();
const { cb } = useRoute().params;
const navigation = useNavigation();
return (
<SafeBlueArea>
<WebView
incognito
injectedJavaScript={INJECTED_JAVASCRIPT}
ref={webView}
source={{ uri: url }}
onMessage={e => {
// this is a handler which receives messages sent from within the browser
if (lastTimeIvebeenHere && +new Date() - lastTimeIvebeenHere < 5000) return;
lastTimeIvebeenHere = +new Date();
// page can post messages several times, and that can confuse our react navigation, so we have protection
// against that
let json = false;
try {
json = JSON.parse(e.nativeEvent.data);
} catch (_) {}
if (json && json.allowed && json.data && json.data.api_key) {
cb(json.data.api_key, json.data.api_signature_key);
navigation.dangerouslyGetParent().pop();
}
}}
/>
</SafeBlueArea>
);
};
HodlHodlLogin.navigationOptions = navigationStyle(
{
closeButton: true,
headerHideBackButton: true,
},
opts => ({ ...opts, title: loc.hodl.login }),
);
export default HodlHodlLogin;

View file

@ -1,468 +0,0 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import {
Alert,
FlatList,
Keyboard,
KeyboardAvoidingView,
Linking,
Platform,
StyleSheet,
Text,
TouchableHighlight,
TouchableOpacity,
View,
} from 'react-native';
import { BlueButton, BlueCopyTextToClipboard, BlueLoading, BlueSpacing10, BlueSpacing20, BlueText } from '../../BlueComponents';
import navigationStyle from '../../components/navigationStyle';
import { HodlHodlApi } from '../../class/hodl-hodl-api';
import * as NavigationService from '../../NavigationService';
import { BlueCurrentTheme } from '../../components/themes';
import BottomModal from '../../components/BottomModal';
import loc from '../../loc';
import { BlueStorageContext } from '../../blue_modules/storage-context';
import alert from '../../components/Alert';
export default class HodlHodlMyContracts extends Component {
static contextType = BlueStorageContext;
constructor(props) {
super(props);
props.navigation.setParams({ handleLogout: this.handleLogout });
this.state = {
contracts: [],
isLoading: true,
};
}
componentWillUnmount() {
clearInterval(this.state.inverval);
}
handleLogout = () => {
this.context.setHodlHodlApiKey('', '<empty>');
this.props.navigation.navigate('WalletsList');
};
async componentDidMount() {
const hodlApiKey = await this.context.getHodlHodlApiKey();
const hodlApi = new HodlHodlApi(hodlApiKey);
this.setState({ hodlApi: hodlApi, contracts: [] });
const inverval = setInterval(async () => {
await this.refetchContracts();
}, 60 * 1000);
this.setState({ inverval });
await this.refetchContracts();
}
render() {
if (this.state.isLoading) return <BlueLoading />;
return (
<View style={styles.root}>
<FlatList
scrollEnabled={false}
keyExtractor={(item, index) => {
return item.id;
}}
ListEmptyComponent={() => <Text style={styles.emptyComponentText}>{loc.hodl.cont_no}</Text>}
style={styles.flatList}
ItemSeparatorComponent={() => <View style={styles.itemSeparatorComponent} />}
data={this.state.contracts}
renderItem={({ item: contract, index, separators }) => (
<TouchableHighlight
onShowUnderlay={separators.highlight}
onHideUnderlay={separators.unhighlight}
onPress={() => this._onContractPress(contract)}
>
<View style={styles.flexDirectionRow}>
<View style={['paid', 'completed'].includes(contract.status) ? styles.statusGreenWrapper : styles.statusGrayWrapper}>
<Text style={['paid', 'completed'].includes(contract.status) ? styles.statusGreenText : styles.statusGrayText}>
{contract.status}
</Text>
</View>
<View style={styles.flexDirectionColumn}>
<View style={styles.flexDirectionRow}>
<Text style={styles.volumeBreakdownText}>
{contract.volume_breakdown.goes_to_buyer} {contract.asset_code}
</Text>
<Text style={styles.roleText}>{contract.your_role === 'buyer' ? loc.hodl.cont_buying : loc.hodl.cont_selling}</Text>
</View>
<View>
<Text style={styles.contractStatusText}>{contract.statusText}</Text>
</View>
</View>
</View>
</TouchableHighlight>
)}
/>
{this.renderContract()}
</View>
);
}
async refetchContracts() {
this.setState({
isLoading: true,
});
const hodlApi = this.state.hodlApi;
let contracts = [];
let contractToDisplay = this.state.contractToDisplay;
const contractIds = await this.context.getHodlHodlContracts();
/*
* Initiator sends Getting contract request once every 1-3 minutes until contract.escrow.address is not null (thus, waiting for offers creator to confirm his payment password in case he uses the website)
* Each party verifies the escrow address locally
* Each party sends Confirming contracts escrow validity request to the server
*/
for (const id of contractIds) {
let contract;
try {
contract = await hodlApi.getContract(id);
} catch (_) {
continue;
}
if (contract.status === 'canceled') continue;
if (contract.escrow && contract.escrow.address && hodlApi.verifyEscrowAddress()) {
await hodlApi.markContractAsConfirmed(id);
contract.isDepositedEnought =
contract.escrow.confirmations >= contract.confirmations && +contract.escrow.amount_deposited >= +contract.volume;
// technically, we could fetch balance of escrow address ourselved and verify, but we are relying on api here
contract.statusText = loc.hodl.cont_st_waiting;
if (contract.isDepositedEnought && contract.status !== 'paid') contract.statusText = loc.hodl.cont_st_paid_enought;
if (contract.status === 'paid') contract.statusText = loc.hodl.cont_st_paid_waiting;
if (contract.status === 'in_progress' && contract.your_role === 'buyer') contract.statusText = loc.hodl.cont_st_in_progress_buyer;
if (contract.status === 'completed') contract.statusText = loc.hodl.cont_st_completed;
}
contracts.push(contract);
if (contractToDisplay && contract.id === this.state.contractToDisplay.id) {
// refreshing contract that is currently being displayed
contractToDisplay = contract;
}
}
contracts = contracts.sort((a, b) => (a.created_at >= b.created_at ? -1 : 1)); // new contracts on top
this.setState({ hodlApi: hodlApi, contracts, contractToDisplay, isLoading: false });
}
_onContractPress(contract) {
this.setState({
contractToDisplay: contract,
isRenderContractVisible: true,
});
}
hideContractModal = () => {
Keyboard.dismiss();
this.setState({ isRenderContractVisible: false });
};
renderContract = () => {
if (!this.state.contractToDisplay) return;
return (
<BottomModal isVisible={this.state.isRenderContractVisible} onClose={this.hideContractModal}>
<KeyboardAvoidingView enabled={!Platform.isPad} behavior={Platform.OS === 'ios' ? 'position' : null}>
<View style={styles.modalContent}>
<View style={styles.modalContentCentered}>
<Text style={styles.btcText}>
{this.state.contractToDisplay.volume_breakdown.goes_to_buyer} {this.state.contractToDisplay.asset_code}
</Text>
<View style={styles.statusGreenWrapper}>
<Text style={styles.statusGreenText}>
{this.state.contractToDisplay.price} {this.state.contractToDisplay.currency_code}
</Text>
</View>
</View>
<Text style={styles.subheaderText}>{loc.hodl.cont_address_to}</Text>
<View style={styles.modalContentCentered}>
<View style={styles.statusGrayWrapper2}>
<Text
style={styles.statusGrayText2}
onPress={() => Linking.openURL(`https://blockstream.info/address/${this.state.contractToDisplay.release_address}`)}
>
{this.state.contractToDisplay.release_address}
</Text>
</View>
</View>
<BlueSpacing10 />
<Text style={styles.subheaderText}>{loc.hodl.cont_address_escrow}</Text>
<View style={styles.modalContentCentered}>
<View style={styles.statusGrayWrapper2}>
<Text
style={styles.statusGrayText2}
onPress={() => Linking.openURL(`https://blockstream.info/address/${this.state.contractToDisplay.escrow.address}`)}
>
{this.state.contractToDisplay.escrow.address}
</Text>
</View>
</View>
<BlueSpacing20 />
{this.isAllowedToMarkContractAsPaid() ? (
<View>
<Text style={styles.subheaderText}>{loc.hodl.cont_how}</Text>
<View style={styles.modalContentCentered}>
<View style={styles.statusGrayWrapper2}>
<BlueCopyTextToClipboard text={this.state.contractToDisplay.payment_method_instruction.details} />
</View>
</View>
</View>
) : (
<View />
)}
<BlueSpacing20 />
{this.isAllowedToMarkContractAsPaid() ? (
<View>
<BlueButton title={loc.hodl.cont_paid} onPress={() => this._onMarkContractAsPaid()} />
<BlueSpacing20 />
</View>
) : (
<View />
)}
<BlueSpacing20 />
{this.state.contractToDisplay.can_be_canceled && (
<Text onPress={() => this._onCancelContract()} style={styles.cancelContractText}>
{loc.hodl.cont_cancel}
</Text>
)}
<Text onPress={() => this._onOpenContractOnWebsite()} style={styles.openChatText}>
{loc.hodl.cont_chat}
</Text>
</View>
</KeyboardAvoidingView>
</BottomModal>
);
};
/**
* If you are the buyer, DO NOT SEND PAYMENT UNTIL CONTRACT STATUS IS "in_progress".
*/
_onMarkContractAsPaid() {
if (!this.state.contractToDisplay) return;
Alert.alert(
loc.hodl.cont_paid_q,
loc.hodl.cont_paid_e,
[
{
text: loc._.yes,
onPress: async () => {
const hodlApi = this.state.hodlApi;
try {
await hodlApi.markContractAsPaid(this.state.contractToDisplay.id);
this.setState({ isRenderContractVisible: false });
await this.refetchContracts();
} catch (Error) {
alert(Error);
}
},
style: 'default',
},
{
text: loc._.cancel,
onPress: () => {},
style: 'cancel',
},
],
{ cancelable: true },
);
}
async _onOpenContractOnWebsite() {
if (!this.state.contractToDisplay) return;
const hodlApi = this.state.hodlApi;
const sigKey = await this.context.getHodlHodlSignatureKey();
if (!sigKey) {
alert('Error: signature key not set'); // should never happen
return;
}
const autologinKey = await hodlApi.requestAutologinToken(sigKey);
const uri = 'https://hodlhodl.com/contracts/' + this.state.contractToDisplay.id + '?sign_in_token=' + autologinKey;
this.setState({ isRenderContractVisible: false }, () => {
NavigationService.navigate('HodlHodlWebview', { uri });
});
}
_onCancelContract() {
if (!this.state.contractToDisplay) return;
Alert.alert(
loc.hodl.cont_cancel_q,
'',
[
{
text: loc.hodl.cont_cancel_y,
onPress: async () => {
const hodlApi = this.state.hodlApi;
try {
await hodlApi.cancelContract(this.state.contractToDisplay.id);
this.setState({ isRenderContractVisible: false });
await this.refetchContracts();
} catch (Error) {
alert(Error);
}
},
style: 'default',
},
{
text: loc._.cancel,
onPress: () => {},
style: 'cancel',
},
],
{ cancelable: true },
);
}
isAllowedToMarkContractAsPaid() {
return this.state.contractToDisplay.status === 'in_progress' && this.state.contractToDisplay.your_role === 'buyer';
}
}
const styles = StyleSheet.create({
root: {
flex: 1,
backgroundColor: BlueCurrentTheme.colors.elevated,
},
modalContent: {
backgroundColor: BlueCurrentTheme.colors.modal,
padding: 22,
borderTopLeftRadius: 16,
borderTopRightRadius: 16,
borderColor: 'rgba(0, 0, 0, 0.1)',
minHeight: 425,
},
modalContentCentered: {
justifyContent: 'center',
alignItems: 'center',
},
statusGreenWrapper: {
backgroundColor: BlueCurrentTheme.colors.feeLabel,
borderRadius: 20,
height: 28,
justifyContent: 'center',
alignItems: 'center',
margin: 15,
paddingLeft: 15,
paddingRight: 15,
},
statusGreenText: {
fontSize: 12,
color: BlueCurrentTheme.colors.feeValue,
},
statusGrayWrapper: {
backgroundColor: BlueCurrentTheme.colors.lightBorder,
borderRadius: 20,
height: 28,
justifyContent: 'center',
alignItems: 'center',
margin: 15,
paddingLeft: 15,
paddingRight: 15,
},
statusGrayText: {
fontSize: 12,
color: '#9AA0AA',
},
statusGrayWrapper2: {
backgroundColor: BlueCurrentTheme.colors.inputBackgroundColor,
borderRadius: 5,
minHeight: 28,
maxHeight: 56,
justifyContent: 'center',
alignItems: 'center',
paddingLeft: 15,
paddingRight: 15,
},
statusGrayText2: {
fontSize: 12,
color: '#9AA0AA',
},
btcText: {
fontWeight: 'bold',
fontSize: 18,
color: BlueCurrentTheme.colors.foregroundColor,
},
subheaderText: {
fontSize: 12,
fontWeight: 'bold',
color: BlueCurrentTheme.colors.feeText,
},
emptyComponentText: { textAlign: 'center', color: '#9AA0AA', paddingHorizontal: 16, backgroundColor: BlueCurrentTheme.colors.elevated },
itemSeparatorComponent: { height: 0.5, width: '100%', backgroundColor: '#C8C8C8' },
flexDirectionRow: { flexDirection: 'row' },
flexDirectionColumn: { flexDirection: 'column' },
volumeBreakdownText: { fontSize: 18, color: BlueCurrentTheme.colors.foregroundColor },
contractStatusText: { fontSize: 13, color: 'gray', fontWeight: 'normal' },
cancelContractText: { color: '#d0021b', fontSize: 15, paddingTop: 20, fontWeight: '500', textAlign: 'center' },
openChatText: { color: BlueCurrentTheme.colors.foregroundColor, fontSize: 15, paddingTop: 20, fontWeight: '500', textAlign: 'center' },
flatList: { paddingTop: 30, backgroundColor: BlueCurrentTheme.colors.elevated },
roleText: { fontSize: 14, color: 'gray', padding: 5 },
marginRight: {
marginRight: 20,
},
});
HodlHodlMyContracts.propTypes = {
navigation: PropTypes.shape({
navigate: PropTypes.func,
setParams: PropTypes.func,
}),
};
HodlHodlMyContracts.navigationOptions = navigationStyle(
{
closeButton: true,
stackPresentation: 'modal',
},
(options, { theme, navigation, route }) => ({
...options,
title: loc.hodl.cont_title,
headerStyle: {
backgroundColor: theme.colors.elevated,
},
headerRight: () => (
<TouchableOpacity
accessibilityRole="button"
style={styles.marginRight}
onPress={() => {
Alert.alert(
loc.hodl.are_you_sure_you_want_to_logout,
'',
[
{
text: loc._.ok,
onPress: route.params.handleLogout,
style: 'default',
},
{ text: loc._.cancel, onPress: () => {}, style: 'cancel' },
],
{ cancelable: false },
);
}}
>
<BlueText>{loc.hodl.logout}</BlueText>
</TouchableOpacity>
),
}),
);

View file

@ -1,396 +0,0 @@
import React, { Component } from 'react';
import { Alert, FlatList, Image, KeyboardAvoidingView, Platform, ScrollView, StyleSheet, Text, View } from 'react-native';
import PropTypes from 'prop-types';
import { Icon } from 'react-native-elements';
import navigationStyle from '../../components/navigationStyle';
import { BlueButton, BlueLoading, BlueSpacing10, SafeBlueArea } from '../../BlueComponents';
import { HodlHodlApi } from '../../class/hodl-hodl-api';
import * as NavigationService from '../../NavigationService';
import { BlueCurrentTheme } from '../../components/themes';
import loc from '../../loc';
import { BlueStorageContext } from '../../blue_modules/storage-context';
import alert from '../../components/Alert';
const prompt = require('../../blue_modules/prompt');
export default class HodlHodlViewOffer extends Component {
static contextType = BlueStorageContext;
constructor(props) {
super(props);
const offerToDisplay = props.route.params.offerToDisplay;
const horizontalScrollData = [];
horizontalScrollData.push({
id: 'window',
header: loc.hodl.offer_window,
body: offerToDisplay.payment_window_minutes + ' ' + loc.hodl.offer_minutes,
});
horizontalScrollData.push({
id: 'minmax',
header: loc.hodl.offer_minmax,
body:
offerToDisplay.min_amount.replace('.00', '') +
' - ' +
offerToDisplay.max_amount.replace('.00', '') +
' ' +
offerToDisplay.currency_code,
});
offerToDisplay.first_trade_limit &&
horizontalScrollData.push({
id: '1st trade',
body: offerToDisplay.first_trade_limit.replace('.00', '') + ' ' + offerToDisplay.currency_code,
});
for (const paymentInstruction of offerToDisplay.payment_method_instructions || []) {
horizontalScrollData.push({
id: paymentInstruction.id + paymentInstruction.version,
header: paymentInstruction.payment_method_type,
body: paymentInstruction.payment_method_name,
});
}
horizontalScrollData.push({ id: 'confirmations', header: loc.hodl.offer_confirmations, body: offerToDisplay.confirmations });
this.state = {
hodlApi: false,
isLoading: true,
horizontalScrollData,
offerToDisplay,
};
}
async componentDidMount() {
console.log('wallets/hodlHodlViewOffer - componentDidMount');
const hodlApiKey = await this.context.getHodlHodlApiKey();
const hodlApi = new HodlHodlApi(hodlApiKey);
this.setState({ hodlApi, hodlApiKey });
this.setState({
isLoading: false,
});
}
doLogin = () => {
const handleLoginCallback = (hodlApiKey, hodlHodlSignatureKey) => {
this.context.setHodlHodlApiKey(hodlApiKey, hodlHodlSignatureKey);
const HodlApi = new HodlHodlApi(hodlApiKey);
this.setState({ HodlApi, hodlApiKey });
};
NavigationService.navigate('HodlHodl', { params: { cb: handleLoginCallback }, screen: 'HodlHodlLogin' });
};
async _onAcceptOfferPress(offer) {
if (!this.state.hodlApiKey) {
alert('Please login to HodlHodl to accept offers');
this.doLogin();
return;
}
const myself = await this.state.hodlApi.getMyself();
if (!myself.encrypted_seed || myself.encrypted_seed.length < 10) {
const buttons = [
{
text: loc._.yes,
onPress: async a => {
const sigKey = await this.context.getHodlHodlSignatureKey();
if (!sigKey) {
alert('Error: signature key not set'); // should never happen
return;
}
const autologinKey = await this.state.hodlApi.requestAutologinToken(sigKey);
const uri = 'https://hodlhodl.com/dashboards/settings?sign_in_token=' + autologinKey;
NavigationService.navigate('HodlHodlWebview', { uri });
},
},
{
text: loc._.cancel,
onPress: async a => {},
},
];
Alert.alert('HodlHodl', loc.hodl.offer_account_finish, buttons, {
cancelable: true,
});
return;
}
// lets refetch offer to avoid errors 'version mismatch'
const newOffer = await this.state.hodlApi.getOffer(offer.id);
if (newOffer.id && newOffer.version && offer.version !== newOffer.version) {
offer = newOffer;
this.setState({ offerToDisplay: newOffer });
}
let fiatValue;
try {
fiatValue = await prompt(
loc.formatString(loc.hodl.offer_promt_fiat, { currency: offer.currency_code }),
loc.hodl.offer_promt_fiat_e,
true,
'numeric',
);
} catch (_) {
return;
}
if (!fiatValue) return;
const buttons = [];
for (const paym of offer.payment_method_instructions) {
buttons.push({
text: paym.payment_method_name + ' (' + paym.payment_method_type + ')',
onPress: async a => {
let noError = true;
this.setState({ isLoading: true });
let contract;
try {
contract = await this.state.hodlApi.acceptOffer(offer.id, offer.version, paym.id, paym.version, fiatValue);
} catch (Error) {
noError = false;
alert(Error);
}
this.setState({ isLoading: false });
if (noError && contract.id) {
await this.context.addHodlHodlContract(contract.id);
NavigationService.navigate('HodlHodlMyContracts');
}
},
});
}
Alert.alert(loc.hodl.offer_choosemethod, ``, buttons, { cancelable: true });
}
_renderHorizontalScrollItem(item) {
return (
<View style={styles.horizontalScrollWrapper}>
<Text style={styles.horizontalScrollIemHeader}>{item.item.header || item.item.id}</Text>
<Text style={styles.horizontalScrollItemBody}>{item.item.body}</Text>
</View>
);
}
render() {
return this.state.isLoading ? (
<BlueLoading />
) : (
<SafeBlueArea>
<ScrollView>
<KeyboardAvoidingView enabled={!Platform.isPad} behavior={Platform.OS === 'ios' ? 'position' : null}>
<View style={styles.modalContent}>
<Text style={styles.Title}>{this.state.offerToDisplay.title}</Text>
{/* horizontal panel with bubbles */}
<View style={styles.flexDirRow}>
<View style={styles.grayTextContainerContainer}>
<View style={styles.grayTextContainer}>
<Icon name="place" type="material" size={16} color="#9BA0A9" containerStyle={styles.iconWithPadding} />
<Text style={styles.locationText}>{this.state.offerToDisplay.country}</Text>
</View>
</View>
<View style={styles.greenTextContainerContainer}>
<Text style={styles.priceText}>
{this.state.offerToDisplay.price} {this.state.offerToDisplay.currency_code}
</Text>
</View>
</View>
{/* end */}
<Text style={styles.descriptionText}>{this.state.offerToDisplay.description}</Text>
<View style={styles._hr} />
<FlatList horizontal data={this.state.horizontalScrollData} renderItem={this._renderHorizontalScrollItem} />
<View style={styles._hr} />
{/* avatar and rating */}
<View style={styles.avatarWrapper}>
<View>
<Image
style={styles.avatarImg}
source={
this.state.offerToDisplay.trader.avatar_url.endsWith('.svg')
? require('../../img/hodlhodl-default-avatar.png')
: {
uri: this.state.offerToDisplay.trader.avatar_url,
}
}
/>
{this.state.offerToDisplay.trader.online_status === 'online' && (
<View style={styles.circleWhite}>
<View style={styles.circleGreen} />
</View>
)}
</View>
<View style={styles.traderWrapper}>
<View style={styles.flexDirRow}>
{this.state.offerToDisplay.trader.strong_hodler && (
<Icon name="verified-user" type="material" size={14} color="#0071fc" containerStyle={styles.verifiedIcon} />
)}
<Text style={styles.nicknameText}>{this.state.offerToDisplay.trader.login}</Text>
</View>
<Text style={styles.traderRatingText}>
{this.state.offerToDisplay.trader.trades_count > 0
? loc.formatString(loc.hodl.item_rating, {
rating:
Math.round(this.state.offerToDisplay.trader.rating * 100) +
'% / ' +
this.state.offerToDisplay.trader.trades_count,
})
: loc.hodl.item_rating_no}
</Text>
</View>
</View>
{/* end */}
{this.state.offerToDisplay.side === 'sell' ? (
<View style={styles.acceptOfferButtonWrapperWrapper}>
<View style={styles.acceptOfferButtonWrapper}>
<BlueSpacing10 />
<BlueButton
title={loc.hodl.offer_accept}
onPress={async () => {
await this._onAcceptOfferPress(this.state.offerToDisplay);
}}
/>
</View>
</View>
) : (
<View />
)}
</View>
</KeyboardAvoidingView>
</ScrollView>
</SafeBlueArea>
);
}
}
HodlHodlViewOffer.propTypes = {
route: PropTypes.shape({
params: PropTypes.shape({
offerToDisplay: PropTypes.object,
}),
}),
};
const styles = StyleSheet.create({
modalContent: {
backgroundColor: BlueCurrentTheme.colors.background,
padding: 22,
},
Title: {
fontWeight: '600',
fontSize: 24,
color: BlueCurrentTheme.colors.foregroundColor,
},
circleWhite: {
position: 'absolute',
bottom: 0,
right: 3,
backgroundColor: BlueCurrentTheme.colors.background,
width: 13,
height: 13,
borderRadius: 6,
},
circleGreen: {
position: 'absolute',
bottom: 1,
right: 1,
backgroundColor: '#00d327',
width: 10,
height: 10,
borderRadius: 5,
},
grayTextContainerContainer: {
backgroundColor: BlueCurrentTheme.colors.lightButton,
borderRadius: 20,
height: 30,
justifyContent: 'center',
alignItems: 'center',
marginTop: 15,
marginRight: 10,
paddingRight: 20,
},
greenTextContainerContainer: {
backgroundColor: BlueCurrentTheme.colors.feeLabel,
borderRadius: 20,
height: 30,
justifyContent: 'center',
alignItems: 'center',
marginTop: 15,
paddingLeft: 15,
paddingRight: 15,
},
grayTextContainer: {
width: '100%',
alignItems: 'center',
flex: 1,
flexDirection: 'row',
},
priceText: {
top: 0,
color: BlueCurrentTheme.colors.feeValue,
fontSize: 14,
fontWeight: '500',
},
descriptionText: {
top: 0,
color: '#818893',
fontSize: 14,
paddingTop: 20,
paddingBottom: 20,
fontWeight: '500',
minHeight: 150,
lineHeight: 23,
},
nicknameText: {
color: BlueCurrentTheme.colors.foregroundColor,
fontSize: 16,
fontWeight: 'bold',
},
traderRatingText: {
color: '#9AA0AA',
fontSize: 12,
},
locationText: {
color: '#9BA0A9',
},
horizontalScrollIemHeader: { color: BlueCurrentTheme.colors.feeText },
horizontalScrollItemBody: { fontSize: 14, fontWeight: 'bold', color: BlueCurrentTheme.colors.foregroundColor },
horizontalScrollWrapper: { flexDirection: 'column', paddingTop: 20, paddingBottom: 20, paddingRight: 40 },
flexDirRow: { flexDirection: 'row' },
iconWithPadding: { paddingLeft: 16 },
_hr: {
borderWidth: 0,
borderBottomWidth: 1,
borderColor: BlueCurrentTheme.colors.lightBorder,
},
avatarImg: { width: 60, height: 60, borderRadius: 60 },
avatarWrapper: {
backgroundColor: BlueCurrentTheme.colors.background,
flex: 1,
flexDirection: 'column',
alignItems: 'center',
marginTop: 32,
},
verifiedIcon: { marginTop: 3, marginRight: 5 },
traderWrapper: { alignItems: 'center', marginTop: 8 },
acceptOfferButtonWrapper: { width: '70%', alignItems: 'center' },
acceptOfferButtonWrapperWrapper: { marginTop: 24, alignItems: 'center' },
});
HodlHodlViewOffer.navigationOptions = navigationStyle(
{
title: '',
},
(options, { theme }) => ({
...options,
headerStyle: {
...options.headerStyle,
backgroundColor: theme.colors.customHeader,
},
}),
);

View file

@ -1,24 +0,0 @@
import React from 'react';
import { WebView } from 'react-native-webview';
import { useRoute } from '@react-navigation/native';
import { SafeBlueArea } from '../../BlueComponents';
import navigationStyle from '../../components/navigationStyle';
const HodlHodlWebview = () => {
const { uri } = useRoute().params;
return (
<SafeBlueArea>
<WebView source={{ uri }} incognito />
</SafeBlueArea>
);
};
HodlHodlWebview.navigationOptions = navigationStyle({
closeButton: true,
title: '',
headerHideBackButton: true,
});
export default HodlHodlWebview;

View file

@ -64,18 +64,12 @@ const WalletTransactions = () => {
listHeaderText: {
color: colors.foregroundColor,
},
marketplaceButton1: {
backgroundColor: colors.lightButton,
},
marketplaceButton2: {
backgroundColor: colors.lightButton,
},
marketpalceText1: {
color: colors.cta2,
},
marketpalceText2: {
color: colors.cta2,
},
list: {
backgroundColor: colors.background,
},
@ -260,8 +254,7 @@ const WalletTransactions = () => {
wallet.chain !== Chain.OFFCHAIN &&
wallet.type !== LightningLdkWallet.type &&
renderSellFiat()}
{wallet.chain === Chain.OFFCHAIN && renderMarketplaceButton()}
{wallet.chain === Chain.OFFCHAIN && Platform.OS === 'ios' && renderLappBrowserButton()}
{wallet.chain === Chain.OFFCHAIN && renderLappBrowserButton()}
</View>
{wallet.type === LightningLdkWallet.type && (lnNodeInfo.canSend > 0 || lnNodeInfo.canReceive > 0) && (
<View style={[styles.marginHorizontal18, styles.marginBottom18]}>
@ -288,45 +281,6 @@ const WalletTransactions = () => {
BuyBitcoin.navigate(wallet);
};
const renderMarketplaceButton = () => {
return (
wallet.chain === Chain.OFFCHAIN &&
Platform.select({
android: (
<TouchableOpacity
accessibilityRole="button"
onPress={() => {
if (wallet.chain === Chain.OFFCHAIN) {
navigate('LappBrowserRoot', {
screen: 'LappBrowser',
params: { walletID },
});
} else {
navigate('Marketplace', { walletID });
}
}}
style={[styles.marketplaceButton1, stylesHook.marketplaceButton1]}
>
<Text style={[styles.marketpalceText1, stylesHook.marketpalceText1]}>{loc.wallets.list_marketplace}</Text>
</TouchableOpacity>
),
ios:
wallet.getBalance() > 0 ? (
<TouchableOpacity
accessibilityRole="button"
onPress={async () => {
Linking.openURL('https://bluewallet.io/marketplace/');
}}
style={[styles.marketplaceButton1, stylesHook.marketplaceButton1]}
>
<Icon name="external-link" size={18} type="font-awesome" color="#9aa0aa" />
<Text style={[styles.marketpalceText2, stylesHook.marketpalceText2]}>{loc.wallets.list_marketplace}</Text>
</TouchableOpacity>
) : null,
})
);
};
const renderLappBrowserButton = () => {
return (
<TouchableOpacity
@ -748,17 +702,6 @@ const styles = StyleSheet.create({
fontWeight: 'bold',
fontSize: 24,
},
marketplaceButton1: {
borderRadius: 9,
minHeight: 49,
paddingHorizontal: 8,
justifyContent: 'center',
alignItems: 'center',
flexDirection: 'row',
alignSelf: 'auto',
flexGrow: 1,
marginHorizontal: 4,
},
marketplaceButton2: {
borderRadius: 9,
minHeight: 49,
@ -773,10 +716,6 @@ const styles = StyleSheet.create({
marketpalceText1: {
fontSize: 18,
},
marketpalceText2: {
fontSize: 18,
marginHorizontal: 8,
},
list: {
flex: 1,
},

View file

@ -1,243 +0,0 @@
import assert from 'assert';
import * as bitcoin from 'bitcoinjs-lib';
import { LegacyWallet, SegwitBech32Wallet, SegwitP2SHWallet } from '../../class';
import { HodlHodlApi } from '../../class/hodl-hodl-api';
import { ECPairFactory } from 'ecpair';
const ecc = require('tiny-secp256k1');
const ECPair = ECPairFactory(ecc);
jest.setTimeout(200 * 1000);
it.skip('can verify escrow address', () => {
const encryptedSeed =
'ES1:b2dc8bd89782f70ef11ff1d1c6bf6adde0bea78fb959391de48f49acbf7f9766ca128b89c1a9a013d158b6c4dabee77997f8a15764d1b083f213b1d6aa9fb3a14a1edb406930a25423a1df3be72306f120b08972cea669dba1284bd8:bf5af8737529b419cc20935a1c05c742:pbkdf2:10000';
const encryptPassword = 'Qwert12345';
const address = '34n3rBtPA16BQYWycphnhK7C9DoucWb527';
const index = 10298;
const witnessScript =
'522103dc0edfea797214be15a69148bfb1dffa1c8295c05300b7632143a77d918b4a0821031fec42b60942633616aff7e245796b5caae6bf59ef5ba688b0a59f33f08b2896210351fd6e52d38a37b9834909e3f8345c471346e1f5990ec00dafcc53e238d3c7c553ae';
const Hodl = new HodlHodlApi();
assert.ok(Hodl.verifyEscrowAddress(encryptedSeed, encryptPassword, index, address, witnessScript));
assert.ok(!Hodl.verifyEscrowAddress(encryptedSeed, encryptPassword, index, '3QDf45WU88t2kEBJTHcTPvtrXZx88SkmKC', witnessScript));
});
it('can create escrow address', () => {
const keyPairServer = ECPair.fromPrivateKey(Buffer.from('9a8cfd0e33a37c90a46d358c84ca3d8dd089ed35409a6eb1973148c0df492288', 'hex'));
const keyPairSeller = ECPair.fromPrivateKey(Buffer.from('ab4163f517bfac01d7acd3a1e398bfb28b53ebd162cb1dd767cc63ae8069ef37', 'hex'));
const keyPairBuyer = ECPair.fromPrivateKey(Buffer.from('b4ab9ed098b6d4b308deaefce5079f4203c43cfb51b699dd35dcc0f1ae5906fd', 'hex'));
const pubkeys = [
keyPairServer.publicKey, // '03141024b18929bfec5b567c12b1693d4ae02783873e2e3aa444f0d6950cb97dee', // server
keyPairSeller.publicKey, // '0208137b6cb23cef02c0529948a2ed12fbeed0813cce555de073319f56e215ee1b', // seller
keyPairBuyer.publicKey, // '035ed5825258d4f1685df804f21296b9957cd319cf5949ace92fa5767eb7a946f2', // buyer
].map(hex => Buffer.from(hex, 'hex'));
const p2shP2wshP2ms = bitcoin.payments.p2sh({
redeem: bitcoin.payments.p2wsh({
redeem: bitcoin.payments.p2ms({ m: 2, pubkeys }),
}),
});
const address = p2shP2wshP2ms.address;
// console.warn(p2sh_p2wsh_p2ms);
assert.strictEqual(address, '391ygT71qeF7vbYjxsUZPzH6oDc7Rv4vTs');
const signedByServerReleaseTransaction =
'01000000000101356493a6b93bf17e66d7ec12f1a54e279da17f669f41bf11405a6f2617e1022501000000232200208ec72df31adaa132e40a5f5033589c0e18b67a64cdc65e9c75027fe1efd10f4cffffffff02227e010000000000160014b1c61a73a529c315a1f2b87df12c7948d86ba10c26020000000000001976a914d0b77eb1502c81c4093da9aa6eccfdf560cdd6b288ac040047304402205a447563db8e74177a1fbcdcfe7b7b22556c39d68c17ffe0a4a02609d78c83130220772fbf3261b6031a915eca7e441092df3fe6e4c7d4f389c4921c1f18661c20f401460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069522103141024b18929bfec5b567c12b1693d4ae02783873e2e3aa444f0d6950cb97dee210208137b6cb23cef02c0529948a2ed12fbeed0813cce555de073319f56e215ee1b21035ed5825258d4f1685df804f21296b9957cd319cf5949ace92fa5767eb7a946f253ae00000000';
const txDecoded = bitcoin.Transaction.fromHex(signedByServerReleaseTransaction);
// console.warn(txDecoded.ins[0].witness);
// we always expect only one input:
const psbt = new bitcoin.Psbt().addInput({
hash: txDecoded.ins[0].hash,
index: txDecoded.ins[0].index,
witnessUtxo: {
script: p2shP2wshP2ms.redeem.output,
value: 100000,
},
// redeemScript,
witnessScript: p2shP2wshP2ms.redeem.redeem.output,
});
for (const out of txDecoded.outs) {
const scripthex = out.script.toString('hex');
const address =
LegacyWallet.scriptPubKeyToAddress(scripthex) ||
SegwitP2SHWallet.scriptPubKeyToAddress(scripthex) ||
SegwitBech32Wallet.scriptPubKeyToAddress(scripthex);
psbt.addOutput({
address,
value: out.value,
});
}
// psbt.signInput(0, keyPairServer);
psbt.signInput(0, keyPairSeller);
// console.warn('signature = ', psbt.data.inputs[0].partialSig[0].signature.toString('hex'));
// let tx = psbt.finalizeAllInputs().extractTransaction();
// console.log(tx.toHex());
});
/**
* Use only for development.
* Run via `NODE_OPTIONS=--insecure-http-parser=true ./node_modules/.bin/jest tests/integration/hodlhodl.test.js`
* Also, process.env.HODLHODL_USERAGENT might be needed.
* All those a part of HodlHodl DDOS protection.
*/
describe.skip('HodlHodl API', function () {
it('can fetch countries & and own country code', async () => {
if (process.env.GITHUB_ACTIONS) {
// dont run here as it always fails
return;
}
const Hodl = new HodlHodlApi();
const countries = await Hodl.getCountries();
assert.ok(countries[0]);
assert.ok(countries[0].code);
assert.ok(countries[0].name);
assert.ok(countries[0].native_name);
assert.ok(countries[0].currency_code);
assert.ok(countries[0].currency_name);
});
it('can get offers', async () => {
if (process.env.GITHUB_ACTIONS) {
// dont run here as it always fails
return;
}
const Hodl = new HodlHodlApi();
const offers = await Hodl.getOffers(
{
[HodlHodlApi.PAGINATION_LIMIT]: 10,
},
{
[HodlHodlApi.FILTERS_COUNTRY]: HodlHodlApi.FILTERS_COUNTRY_VALUE_GLOBAL,
[HodlHodlApi.FILTERS_SIDE]: HodlHodlApi.FILTERS_SIDE_VALUE_SELL,
[HodlHodlApi.FILTERS_ASSET_CODE]: HodlHodlApi.FILTERS_ASSET_CODE_VALUE_BTC,
[HodlHodlApi.FILTERS_INCLUDE_GLOBAL]: true,
},
{
[HodlHodlApi.SORT_BY]: HodlHodlApi.SORT_BY_VALUE_PRICE,
[HodlHodlApi.SORT_DIRECTION]: HodlHodlApi.SORT_DIRECTION_VALUE_ASC,
},
);
assert.ok(offers[0]);
assert.ok(offers[0].asset_code === 'BTC');
assert.ok(offers[0].country_code);
assert.ok(offers[0].side === HodlHodlApi.FILTERS_SIDE_VALUE_SELL);
assert.ok(typeof offers[0].title !== 'undefined', JSON.stringify(offers[0], null, 2));
assert.ok(typeof offers[0].description !== 'undefined', JSON.stringify(offers[0], null, 2));
assert.ok(offers[0].price);
assert.ok(offers[0].payment_method_instructions);
assert.ok(offers[0].trader);
});
it('can get offer', async () => {
if (process.env.GITHUB_ACTIONS) {
// dont run here as it always fails
return;
}
if (!process.env.HODLHODL_OFFER_ID) return;
const Hodl = new HodlHodlApi();
const offer = await Hodl.getOffer(process.env.HODLHODL_OFFER_ID);
assert.ok(offer.id);
assert.ok(offer.version);
});
it('can accept offer', async () => {
if (process.env.GITHUB_ACTIONS) {
// dont run here as it always fails
return;
}
if (!process.env.HODLHODL_OFFER_ID) return;
const Hodl = new HodlHodlApi();
const offer = await Hodl.getOffer(process.env.HODLHODL_OFFER_ID);
assert.strictEqual(offer.side, 'sell');
const paymentMethodInstructionId = offer.payment_method_instructions[0].id;
const paymentMethodInstructionVersion = offer.payment_method_instructions[0].version;
const fiatValue = 100;
const contract = await Hodl.acceptOffer(
offer.id,
offer.version,
paymentMethodInstructionId,
paymentMethodInstructionVersion,
fiatValue,
);
console.warn({ contract });
});
it('can get contract', async () => {
if (process.env.GITHUB_ACTIONS) {
// dont run here as it always fails
return;
}
if (!process.env.HODLHODL_CONTRACT_ID) return;
const Hodl = new HodlHodlApi();
const contract = await Hodl.getContract(process.env.HODLHODL_CONTRACT_ID);
assert.ok(contract.your_role);
assert.ok(contract.volume);
assert.ok(contract.escrow);
});
it('can mark contract as confirmed', async () => {
if (process.env.GITHUB_ACTIONS) {
// dont run here as it always fails
return;
}
if (!process.env.HODLHODL_CONTRACT_ID) return;
const Hodl = new HodlHodlApi();
const result = await Hodl.markContractAsConfirmed(process.env.HODLHODL_CONTRACT_ID);
console.warn(result);
});
it('can get payment methods', async () => {
if (process.env.GITHUB_ACTIONS) {
// dont run here as it always fails
return;
}
const Hodl = new HodlHodlApi();
const methods = await Hodl.getPaymentMethods(HodlHodlApi.FILTERS_COUNTRY_VALUE_GLOBAL);
assert.ok(methods[0]);
assert.ok(methods[0].id);
assert.ok(methods[0].type);
assert.ok(methods[0].name);
});
it('cat get currencies', async () => {
if (process.env.GITHUB_ACTIONS) {
// dont run here as it always fails
return;
}
const Hodl = new HodlHodlApi();
const currencies = await Hodl.getCurrencies();
assert.ok(currencies[0]);
assert.ok(currencies[0].code);
assert.ok(currencies[0].name);
assert.ok(currencies[0].type);
});
it('cat get myself', async () => {
if (process.env.GITHUB_ACTIONS) {
// dont run here as it always fails
return;
}
const Hodl = new HodlHodlApi();
const myself = await Hodl.getMyself();
assert.ok(myself.encrypted_seed);
});
it('can create signature for autologin', async () => {
const Hodl = new HodlHodlApi('');
const sig = Hodl.createSignature(
'iqZC7uUmx4sVeIwFQN2YqGT5SyrXNLhxVX7QMGUeJK1CDdy87OcrOt3QvPE5LFC56Lgu7WLlg12U55Vy',
'cce14197a08ebab7cfbb41cfce9fe91e0f31d572d3f48571ca3c30bfd516f769',
1589980224,
);
assert.strictEqual(sig, '1d2a51ca2c54ff9107a3460b22f01bc877e527a9a719d81b32038741332159fc');
});
});