Mweb enhancements (#1715)

* node peer enhancement, delay mweb address generation, increase logging

* prevent unnecessary sync status changes if we can't connect to the ltc node

* handle potential errors

* set nodeUri to null for testing

* [skip ci] redo good changes

* [skip ci] draft

* [skip ci] minor

* [skip ci] cleanup

* [skip ci] minor

* [skip ci] minor

* [skip ci] localization

* [skip ci] save

* [skip ci] wip

* use proxy layer

* ui

* minor changes
Add ToDos for later

* fixes

* [skip ci] minor

* [skip ci] minor

* [skip ci] ui

* handle case where there are no addresses with txcount > 0

* comment out pegin button

---------

Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
This commit is contained in:
Matthew Fosse 2024-10-04 17:30:52 -07:00 committed by GitHub
parent 382a0ff35d
commit 37b822b7f5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
46 changed files with 853 additions and 421 deletions

View file

@ -100,10 +100,12 @@ abstract class ElectrumWalletAddressesBase extends WalletAddresses with Store {
static const gap = 20; static const gap = 20;
final ObservableList<BitcoinAddressRecord> _addresses; final ObservableList<BitcoinAddressRecord> _addresses;
late ObservableList<BaseBitcoinAddressRecord> addressesByReceiveType; final ObservableList<BaseBitcoinAddressRecord> addressesByReceiveType;
final ObservableList<BitcoinAddressRecord> receiveAddresses; final ObservableList<BitcoinAddressRecord> receiveAddresses;
final ObservableList<BitcoinAddressRecord> changeAddresses; final ObservableList<BitcoinAddressRecord> changeAddresses;
// TODO: add this variable in `bitcoin_wallet_addresses` and just add a cast in cw_bitcoin to use it
final ObservableList<BitcoinSilentPaymentAddressRecord> silentAddresses; final ObservableList<BitcoinSilentPaymentAddressRecord> silentAddresses;
// TODO: add this variable in `litecoin_wallet_addresses` and just add a cast in cw_bitcoin to use it
final ObservableList<BitcoinAddressRecord> mwebAddresses; final ObservableList<BitcoinAddressRecord> mwebAddresses;
final BasedUtxoNetwork network; final BasedUtxoNetwork network;
final Bip32Slip10Secp256k1 mainHd; final Bip32Slip10Secp256k1 mainHd;

View file

@ -236,16 +236,18 @@ abstract class LitecoinWalletBase extends ElectrumWallet with Store {
Future<void> waitForMwebAddresses() async { Future<void> waitForMwebAddresses() async {
// ensure that we have the full 1000 mweb addresses generated before continuing: // ensure that we have the full 1000 mweb addresses generated before continuing:
// should no longer be needed, but leaving here just in case // should no longer be needed, but leaving here just in case
final mwebAddrs = (walletAddresses as LitecoinWalletAddresses).mwebAddrs; // final mwebAddrs = (walletAddresses as LitecoinWalletAddresses).mwebAddrs;
while (mwebAddrs.length < 1000) { // while (mwebAddrs.length < 1000) {
print("waiting for mweb addresses to finish generating..."); // print("waiting for mweb addresses to finish generating...");
await Future.delayed(const Duration(milliseconds: 1000)); // await Future.delayed(const Duration(milliseconds: 1000));
} // }
await (walletAddresses as LitecoinWalletAddresses).ensureMwebAddressUpToIndexExists(1020);
} }
@action @action
@override @override
Future<void> startSync() async { Future<void> startSync() async {
print("startSync() called!");
if (syncStatus is SyncronizingSyncStatus) { if (syncStatus is SyncronizingSyncStatus) {
return; return;
} }
@ -289,46 +291,59 @@ abstract class LitecoinWalletBase extends ElectrumWallet with Store {
_syncTimer = Timer.periodic(const Duration(milliseconds: 1500), (timer) async { _syncTimer = Timer.periodic(const Duration(milliseconds: 1500), (timer) async {
if (syncStatus is FailedSyncStatus) return; if (syncStatus is FailedSyncStatus) return;
print("SYNCING....");
final nodeHeight = final nodeHeight =
await electrumClient.getCurrentBlockChainTip() ?? 0; // current block height of our node await electrumClient.getCurrentBlockChainTip() ?? 0; // current block height of our node
final resp = await CwMweb.status(StatusRequest());
print("resp.mwebUtxosHeight: ${resp.mwebUtxosHeight}");
print("resp.mwebHeaderHeight: ${resp.mwebHeaderHeight}");
print("resp.blockHeaderHeight: ${resp.blockHeaderHeight}");
if (resp.blockHeaderHeight < nodeHeight) { if (nodeHeight == 0) {
int h = resp.blockHeaderHeight; // we aren't connected to the ltc node yet
syncStatus = SyncingSyncStatus(nodeHeight - h, h / nodeHeight); if (syncStatus is! NotConnectedSyncStatus) {
} else if (resp.mwebHeaderHeight < nodeHeight) { syncStatus = FailedSyncStatus(error: "Failed to connect to Litecoin node");
int h = resp.mwebHeaderHeight;
syncStatus = SyncingSyncStatus(nodeHeight - h, h / nodeHeight);
} else if (resp.mwebUtxosHeight < nodeHeight) {
syncStatus = SyncingSyncStatus(1, 0.999);
} else {
if (resp.mwebUtxosHeight > walletInfo.restoreHeight) {
await walletInfo.updateRestoreHeight(resp.mwebUtxosHeight);
await checkMwebUtxosSpent();
// update the confirmations for each transaction:
for (final transaction in transactionHistory.transactions.values) {
if (transaction.isPending) continue;
int txHeight = transaction.height ?? resp.mwebUtxosHeight;
final confirmations = (resp.mwebUtxosHeight - txHeight) + 1;
if (transaction.confirmations == confirmations) continue;
transaction.confirmations = confirmations;
transactionHistory.addOne(transaction);
}
await transactionHistory.save();
}
// prevent unnecessary reaction triggers:
if (syncStatus is! SyncedSyncStatus) {
// mwebd is synced, but we could still be processing incoming utxos:
if (!processingUtxos) {
syncStatus = SyncedSyncStatus();
}
} }
return; return;
} }
final resp = await CwMweb.status(StatusRequest());
try {
if (resp.blockHeaderHeight < nodeHeight) {
int h = resp.blockHeaderHeight;
syncStatus = SyncingSyncStatus(nodeHeight - h, h / nodeHeight);
} else if (resp.mwebHeaderHeight < nodeHeight) {
int h = resp.mwebHeaderHeight;
syncStatus = SyncingSyncStatus(nodeHeight - h, h / nodeHeight);
} else if (resp.mwebUtxosHeight < nodeHeight) {
syncStatus = SyncingSyncStatus(1, 0.999);
} else {
if (resp.mwebUtxosHeight > walletInfo.restoreHeight) {
await walletInfo.updateRestoreHeight(resp.mwebUtxosHeight);
await checkMwebUtxosSpent();
// update the confirmations for each transaction:
for (final transaction in transactionHistory.transactions.values) {
if (transaction.isPending) continue;
int txHeight = transaction.height ?? resp.mwebUtxosHeight;
final confirmations = (resp.mwebUtxosHeight - txHeight) + 1;
if (transaction.confirmations == confirmations) continue;
transaction.confirmations = confirmations;
transactionHistory.addOne(transaction);
}
await transactionHistory.save();
}
// prevent unnecessary reaction triggers:
if (syncStatus is! SyncedSyncStatus) {
// mwebd is synced, but we could still be processing incoming utxos:
if (!processingUtxos) {
syncStatus = SyncedSyncStatus();
}
}
return;
}
} catch (e) {
print("error syncing: $e");
syncStatus = FailedSyncStatus(error: e.toString());
}
}); });
} }
@ -411,6 +426,7 @@ abstract class LitecoinWalletBase extends ElectrumWallet with Store {
} }
Future<void> handleIncoming(MwebUtxo utxo, RpcClient stub) async { Future<void> handleIncoming(MwebUtxo utxo, RpcClient stub) async {
print("handleIncoming() called!");
final status = await stub.status(StatusRequest()); final status = await stub.status(StatusRequest());
var date = DateTime.now(); var date = DateTime.now();
var confirmations = 0; var confirmations = 0;

View file

@ -70,13 +70,9 @@ abstract class LitecoinWalletAddressesBase extends ElectrumWalletAddresses with
await Future.delayed(Duration(milliseconds: 100)); await Future.delayed(Duration(milliseconds: 100));
} }
} }
}
Future<void> initMwebAddresses() async { // ensure mweb addresses are up to date:
if (mwebAddrs.length < 1000) { if (mwebAddresses.length < mwebAddrs.length) {
print("Generating MWEB addresses...");
await ensureMwebAddressUpToIndexExists(1020);
print("done generating MWEB addresses");
List<BitcoinAddressRecord> addressRecords = mwebAddrs List<BitcoinAddressRecord> addressRecords = mwebAddrs
.asMap() .asMap()
.entries .entries
@ -88,7 +84,27 @@ abstract class LitecoinWalletAddressesBase extends ElectrumWalletAddresses with
)) ))
.toList(); .toList();
addMwebAddresses(addressRecords); addMwebAddresses(addressRecords);
print("added ${addressRecords.length} mweb addresses"); print("set ${addressRecords.length} mweb addresses");
}
}
Future<void> initMwebAddresses() async {
if (mwebAddrs.length < 1000) {
print("Generating MWEB addresses...");
await ensureMwebAddressUpToIndexExists(20);
print("done generating MWEB addresses");
// List<BitcoinAddressRecord> addressRecords = mwebAddrs
// .asMap()
// .entries
// .map((e) => BitcoinAddressRecord(
// e.value,
// index: e.key,
// type: SegwitAddresType.mweb,
// network: network,
// ))
// .toList();
// addMwebAddresses(addressRecords);
// print("added ${addressRecords.length} mweb addresses");
return; return;
} }
} }

View file

@ -67,7 +67,13 @@ class AttemptingScanSyncStatus extends SyncStatus {
double progress() => 0.0; double progress() => 0.0;
} }
class FailedSyncStatus extends NotConnectedSyncStatus {} class FailedSyncStatus extends NotConnectedSyncStatus {
String? error;
FailedSyncStatus({this.error});
@override
String toString() => error ?? super.toString();
}
class ConnectingSyncStatus extends SyncStatus { class ConnectingSyncStatus extends SyncStatus {
@override @override
@ -89,4 +95,4 @@ class TimedOutSyncStatus extends NotConnectedSyncStatus {
class LostConnectionSyncStatus extends NotConnectedSyncStatus { class LostConnectionSyncStatus extends NotConnectedSyncStatus {
@override @override
String toString() => 'Reconnecting'; String toString() => 'Reconnecting';
} }

View file

@ -30,7 +30,8 @@ class CwMwebPlugin: FlutterPlugin, MethodCallHandler {
if (call.method == "start") { if (call.method == "start") {
server?.stop() server?.stop()
val dataDir = call.argument("dataDir") ?: "" val dataDir = call.argument("dataDir") ?: ""
server = server ?: Mwebd.newServer("", dataDir, "") val nodeUri = call.argument("nodeUri") ?: ""
server = server ?: Mwebd.newServer("", dataDir, nodeUri)
port = server?.start(0) port = server?.start(0)
result.success(port) result.success(port)
} else if (call.method == "stop") { } else if (call.method == "stop") {

View file

@ -12,6 +12,7 @@ public static func register(with registrar: FlutterPluginRegistrar) {
private static var server: MwebdServer? private static var server: MwebdServer?
private static var port: Int = 0 private static var port: Int = 0
private static var dataDir: String? private static var dataDir: String?
private static var nodeUri: String?
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
switch call.method { switch call.method {
@ -22,7 +23,9 @@ public static func register(with registrar: FlutterPluginRegistrar) {
stopServer() stopServer()
let args = call.arguments as? [String: String] let args = call.arguments as? [String: String]
let dataDir = args?["dataDir"] let dataDir = args?["dataDir"]
let nodeUri = args?["nodeUri"]
CwMwebPlugin.dataDir = dataDir CwMwebPlugin.dataDir = dataDir
CwMwebPlugin.nodeUri = nodeUri
startServer(result: result) startServer(result: result)
break break
case "stop": case "stop":
@ -48,7 +51,7 @@ public static func register(with registrar: FlutterPluginRegistrar) {
private func startServer(result: @escaping FlutterResult) { private func startServer(result: @escaping FlutterResult) {
if CwMwebPlugin.server == nil { if CwMwebPlugin.server == nil {
var error: NSError? var error: NSError?
CwMwebPlugin.server = MwebdNewServer("", CwMwebPlugin.dataDir, "", &error) CwMwebPlugin.server = MwebdNewServer("", CwMwebPlugin.dataDir, CwMwebPlugin.nodeUri, &error)
if let server = CwMwebPlugin.server { if let server = CwMwebPlugin.server {
do { do {

View file

@ -17,7 +17,8 @@ class CwMweb {
await Future.delayed(const Duration(seconds: 5)); await Future.delayed(const Duration(seconds: 5));
final appDir = await getApplicationSupportDirectory(); final appDir = await getApplicationSupportDirectory();
_port = await CwMwebPlatform.instance.start(appDir.path); const ltcNodeUri = "45.79.13.180:9333";
_port = await CwMwebPlatform.instance.start(appDir.path, ltcNodeUri);
if (_port == null || _port == 0) { if (_port == null || _port == 0) {
throw Exception("Failed to start server"); throw Exception("Failed to start server");
} }

View file

@ -10,8 +10,9 @@ class MethodChannelCwMweb extends CwMwebPlatform {
final methodChannel = const MethodChannel('cw_mweb'); final methodChannel = const MethodChannel('cw_mweb');
@override @override
Future<int?> start(String dataDir) async { Future<int?> start(String dataDir, String nodeUri) async {
final result = await methodChannel.invokeMethod<int>('start', {'dataDir': dataDir}); final result =
await methodChannel.invokeMethod<int>('start', {'dataDir': dataDir, 'nodeUri': nodeUri});
return result; return result;
} }

View file

@ -25,7 +25,7 @@ abstract class CwMwebPlatform extends PlatformInterface {
_instance = instance; _instance = instance;
} }
Future<int?> start(String dataDir) { Future<int?> start(String dataDir, String nodeUri) {
throw UnimplementedError('start() has not been implemented.'); throw UnimplementedError('start() has not been implemented.');
} }

View file

@ -654,4 +654,15 @@ class CWBitcoin extends Bitcoin {
// TODO: this could be improved: // TODO: this could be improved:
return inputAddressesContainMweb || outputAddressesContainMweb; return inputAddressesContainMweb || outputAddressesContainMweb;
} }
String? getUnusedMwebAddress(Object wallet) {
try {
final electrumWallet = wallet as ElectrumWallet;
final walletAddresses = electrumWallet.walletAddresses as ElectrumWalletAddresses;
final mwebAddress = walletAddresses.mwebAddresses.firstWhere((element) => !element.isUsed);
return mwebAddress.address;
} catch (_) {
return null;
}
}
} }

View file

@ -16,6 +16,13 @@ String syncStatusTitle(SyncStatus syncStatus) {
return S.current.sync_status_syncronized; return S.current.sync_status_syncronized;
} }
if (syncStatus is FailedSyncStatus) {
if (syncStatus.error != null) {
return syncStatus.error!;
}
return S.current.sync_status_failed_connect;
}
if (syncStatus is NotConnectedSyncStatus) { if (syncStatus is NotConnectedSyncStatus) {
return S.current.sync_status_not_connected; return S.current.sync_status_not_connected;
} }
@ -24,10 +31,6 @@ String syncStatusTitle(SyncStatus syncStatus) {
return S.current.sync_status_attempting_sync; return S.current.sync_status_attempting_sync;
} }
if (syncStatus is FailedSyncStatus) {
return S.current.sync_status_failed_connect;
}
if (syncStatus is ConnectingSyncStatus) { if (syncStatus is ConnectingSyncStatus) {
return S.current.sync_status_connecting; return S.current.sync_status_connecting;
} }

View file

@ -6,6 +6,7 @@ import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/reactions/wallet_connect.dart'; import 'package:cake_wallet/reactions/wallet_connect.dart';
import 'package:cake_wallet/routes.dart'; import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/src/screens/dashboard/pages/nft_listing_page.dart'; import 'package:cake_wallet/src/screens/dashboard/pages/nft_listing_page.dart';
import 'package:cake_wallet/src/screens/dashboard/widgets/action_button.dart';
import 'package:cake_wallet/src/screens/dashboard/widgets/home_screen_account_widget.dart'; import 'package:cake_wallet/src/screens/dashboard/widgets/home_screen_account_widget.dart';
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart'; import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
@ -19,14 +20,14 @@ import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart'; import 'package:cake_wallet/themes/extensions/dashboard_page_theme.dart';
import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart'; import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
import 'package:cake_wallet/utils/feature_flag.dart'; import 'package:cake_wallet/utils/feature_flag.dart';
import 'package:cake_wallet/utils/payment_request.dart';
import 'package:cake_wallet/utils/show_pop_up.dart'; import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart'; import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
import 'package:cake_wallet/view_model/dashboard/nft_view_model.dart'; import 'package:cake_wallet/view_model/dashboard/nft_view_model.dart';
import 'package:cw_bitcoin/bitcoin_receive_page_option.dart';
import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/crypto_currency.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:mobx/mobx.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
class BalancePage extends StatelessWidget { class BalancePage extends StatelessWidget {
@ -238,8 +239,8 @@ class CryptoBalanceWidget extends StatelessWidget {
return Padding( return Padding(
padding: const EdgeInsets.fromLTRB(16, 0, 16, 8), padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
child: DashBoardRoundedCardWidget( child: DashBoardRoundedCardWidget(
title: S.current.rep_warning, title: S.of(context).rep_warning,
subTitle: S.current.rep_warning_sub, subTitle: S.of(context).rep_warning_sub,
onTap: () => Navigator.of(context).pushNamed(Routes.changeRep), onTap: () => Navigator.of(context).pushNamed(Routes.changeRep),
onClose: () { onClose: () {
dashboardViewModel.settingsStore.shouldShowRepWarning = false; dashboardViewModel.settingsStore.shouldShowRepWarning = false;
@ -259,6 +260,7 @@ class CryptoBalanceWidget extends StatelessWidget {
dashboardViewModel.balanceViewModel.formattedBalances.elementAt(index); dashboardViewModel.balanceViewModel.formattedBalances.elementAt(index);
return Observer(builder: (_) { return Observer(builder: (_) {
return BalanceRowWidget( return BalanceRowWidget(
dashboardViewModel: dashboardViewModel,
availableBalanceLabel: availableBalanceLabel:
'${dashboardViewModel.balanceViewModel.availableBalanceLabel}', '${dashboardViewModel.balanceViewModel.availableBalanceLabel}',
availableBalance: balance.availableBalance, availableBalance: balance.availableBalance,
@ -379,57 +381,68 @@ class CryptoBalanceWidget extends StatelessWidget {
padding: const EdgeInsets.fromLTRB(16, 0, 16, 8), padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
child: DashBoardRoundedCardWidget( child: DashBoardRoundedCardWidget(
customBorder: 30, customBorder: 30,
title: S.current.litecoin_mweb, title: S.of(context).litecoin_mweb,
subTitle: S.current.litecoin_enable_mweb_sync, subTitle: '',
hint: Column( hint: Column(
children: [ children: [
Row( Text(
mainAxisAlignment: MainAxisAlignment.spaceBetween, S.of(context).litecoin_mweb_description,
children: [ style: TextStyle(
GestureDetector( color: Colors.white,
behavior: HitTestBehavior.opaque, fontSize: 14,
onTap: () => launchUrl( ),
Uri.parse( textAlign: TextAlign.center,
"https://guides.cakewallet.com/docs/cryptos/litecoin/#mweb"), ),
mode: LaunchMode.externalApplication, SizedBox(height: 8),
GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () => launchUrl(
Uri.parse(
"https://guides.cakewallet.com/docs/cryptos/litecoin/#mweb"),
mode: LaunchMode.externalApplication,
),
child: Center(
child: Text(
S.of(context).learn_more,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context)
.extension<BalancePageTheme>()!
.labelTextColor,
height: 1,
), ),
child: Row( softWrap: true,
children: [ ),
Text( ),
S.current.litecoin_what_is_mweb, ),
style: TextStyle( SizedBox(height: 24),
fontSize: 12, Row(
fontFamily: 'Lato', mainAxisAlignment: MainAxisAlignment.spaceEvenly,
fontWeight: FontWeight.w400, children: [
color: Theme.of(context) ElevatedButton(
.extension<BalancePageTheme>()! onPressed: () => _dismissMweb(context),
.labelTextColor, style: ElevatedButton.styleFrom(
height: 1, backgroundColor: Theme.of(context).primaryColor,
), shape: RoundedRectangleBorder(
softWrap: true, borderRadius: BorderRadius.circular(50),
), ),
Padding( ),
padding: const EdgeInsets.symmetric(horizontal: 4), child: Text(
child: Icon(Icons.help_outline, S.of(context).litecoin_mweb_dismiss,
size: 16, style: TextStyle(color: Colors.white),
color: Theme.of(context)
.extension<BalancePageTheme>()!
.labelTextColor),
)
],
), ),
), ),
Observer( ElevatedButton(
builder: (_) => StandardSwitch( onPressed: () => _enableMweb(context),
value: dashboardViewModel.mwebScanningActive, child: Text(S.of(context).litecoin_enable_mweb_sync),
onTaped: () => _toggleMweb(context), ),
),
)
], ],
), ),
], ],
), ),
onTap: () => _toggleMweb(context), onTap: () => {},
icon: ImageIcon( icon: ImageIcon(
AssetImage('assets/images/mweb_logo.png'), AssetImage('assets/images/mweb_logo.png'),
color: color:
@ -479,20 +492,34 @@ class CryptoBalanceWidget extends StatelessWidget {
return dashboardViewModel.setSilentPaymentsScanning(newValue); return dashboardViewModel.setSilentPaymentsScanning(newValue);
} }
Future<void> _toggleMweb(BuildContext context) async { Future<void> _enableMweb(BuildContext context) async {
if (!dashboardViewModel.hasEnabledMwebBefore) { if (!dashboardViewModel.hasEnabledMwebBefore) {
await showPopUp<void>( await showPopUp<void>(
context: context, context: context,
builder: (BuildContext context) => AlertWithOneAction( builder: (BuildContext context) => AlertWithOneAction(
alertTitle: S.of(context).warning, alertTitle: S.of(context).alert_notice,
alertContent: S.current.litecoin_mweb_warning, alertContent: S.of(context).litecoin_mweb_warning,
buttonText: S.of(context).ok, buttonText: S.of(context).understand,
buttonAction: () { buttonAction: () {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
)); ));
} }
dashboardViewModel.setMwebScanningActive(!dashboardViewModel.mwebScanningActive); dashboardViewModel.setMwebScanningActive();
}
Future<void> _dismissMweb(BuildContext context) async {
await showPopUp<void>(
context: context,
builder: (BuildContext context) => AlertWithOneAction(
alertTitle: S.of(context).alert_notice,
alertContent: S.of(context).litecoin_mweb_enable_later,
buttonText: S.of(context).understand,
buttonAction: () {
Navigator.of(context).pop();
},
));
dashboardViewModel.dismissMweb();
} }
} }
@ -517,6 +544,7 @@ class BalanceRowWidget extends StatelessWidget {
required this.hasSecondAvailableBalance, required this.hasSecondAvailableBalance,
required this.hasSecondAdditionalBalance, required this.hasSecondAdditionalBalance,
required this.isTestnet, required this.isTestnet,
required this.dashboardViewModel,
super.key, super.key,
}); });
@ -539,187 +567,238 @@ class BalanceRowWidget extends StatelessWidget {
final bool hasSecondAvailableBalance; final bool hasSecondAvailableBalance;
final bool hasSecondAdditionalBalance; final bool hasSecondAdditionalBalance;
final bool isTestnet; final bool isTestnet;
final DashboardViewModel dashboardViewModel;
// void _showBalanceDescription(BuildContext context) { // void _showBalanceDescription(BuildContext context) {
// showPopUp<void>( // showPopUp<void>(
// context: context, // context: context,
// builder: (_) => // builder: (_) =>
// InformationPage(information: S.current.available_balance_description), // InformationPage(information: S.of(context).available_balance_description),
// ); // );
// } // }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Column(children: [
margin: const EdgeInsets.only(left: 16, right: 16), Container(
decoration: BoxDecoration( margin: const EdgeInsets.only(left: 16, right: 16),
borderRadius: BorderRadius.circular(30.0), decoration: BoxDecoration(
border: Border.all( borderRadius: BorderRadius.circular(30.0),
color: Theme.of(context).extension<BalancePageTheme>()!.cardBorderColor, border: Border.all(
width: 1, color: Theme.of(context).extension<BalancePageTheme>()!.cardBorderColor,
width: 1,
),
color: Theme.of(context).extension<SyncIndicatorTheme>()!.syncedBackgroundColor,
), ),
color: Theme.of(context).extension<SyncIndicatorTheme>()!.syncedBackgroundColor, child: Container(
), margin: const EdgeInsets.only(top: 16, left: 24, right: 8, bottom: 16),
child: Container( child: Column(
margin: const EdgeInsets.only(top: 16, left: 24, right: 8, bottom: 16), crossAxisAlignment: CrossAxisAlignment.start,
child: Column( children: [
crossAxisAlignment: CrossAxisAlignment.start, Row(
children: [ mainAxisAlignment: MainAxisAlignment.spaceBetween,
Row( crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
crossAxisAlignment: CrossAxisAlignment.center, GestureDetector(
children: [ behavior: HitTestBehavior.opaque,
onTap: hasAdditionalBalance
? () => _showBalanceDescription(
context, S.of(context).available_balance_description)
: null,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Semantics(
hint: 'Double tap to see more information',
container: true,
child: Text('${availableBalanceLabel}',
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context)
.extension<BalancePageTheme>()!
.labelTextColor,
height: 1)),
),
if (hasAdditionalBalance)
Padding(
padding: const EdgeInsets.symmetric(horizontal: 4),
child: Icon(Icons.help_outline,
size: 16,
color: Theme.of(context)
.extension<BalancePageTheme>()!
.labelTextColor),
),
],
),
SizedBox(height: 6),
AutoSizeText(availableBalance,
style: TextStyle(
fontSize: 24,
fontFamily: 'Lato',
fontWeight: FontWeight.w900,
color: Theme.of(context)
.extension<BalancePageTheme>()!
.balanceAmountColor,
height: 1),
maxLines: 1,
textAlign: TextAlign.start),
SizedBox(height: 6),
if (isTestnet)
Text(S.of(context).testnet_coins_no_value,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 14,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.textColor,
height: 1)),
if (!isTestnet)
Text('${availableFiatBalance}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 16,
fontFamily: 'Lato',
fontWeight: FontWeight.w500,
color: Theme.of(context).extension<BalancePageTheme>()!.textColor,
height: 1)),
],
),
),
SizedBox(
width: min(MediaQuery.of(context).size.width * 0.2, 100),
child: Center(
child: Column(
children: [
CakeImageWidget(
imageUrl: currency.iconPath,
height: 40,
width: 40,
displayOnError: Container(
height: 30.0,
width: 30.0,
child: Center(
child: Text(
currency.title.substring(0, min(currency.title.length, 2)),
style: TextStyle(fontSize: 11),
),
),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.grey.shade400,
),
),
),
const SizedBox(height: 10),
Text(
currency.title,
style: TextStyle(
fontSize: 15,
fontFamily: 'Lato',
fontWeight: FontWeight.w800,
color:
Theme.of(context).extension<BalancePageTheme>()!.assetTitleColor,
height: 1,
),
),
],
),
),
),
],
),
if (frozenBalance.isNotEmpty)
GestureDetector( GestureDetector(
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
onTap: hasAdditionalBalance onTap: hasAdditionalBalance
? () => ? () => _showBalanceDescription(
_showBalanceDescription(context, S.current.available_balance_description) context, S.of(context).unavailable_balance_description)
: null, : null,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
SizedBox(height: 26),
Row( Row(
children: [ children: [
Semantics( Text(
hint: 'Double tap to see more information', S.of(context).unavailable_balance,
container: true, textAlign: TextAlign.center,
child: Text('${availableBalanceLabel}', style: TextStyle(
style: TextStyle( fontSize: 12,
fontSize: 12, fontFamily: 'Lato',
fontFamily: 'Lato', fontWeight: FontWeight.w400,
fontWeight: FontWeight.w400, color:
color: Theme.of(context) Theme.of(context).extension<BalancePageTheme>()!.labelTextColor,
.extension<BalancePageTheme>()! height: 1,
.labelTextColor,
height: 1)),
),
if (hasAdditionalBalance)
Padding(
padding: const EdgeInsets.symmetric(horizontal: 4),
child: Icon(Icons.help_outline,
size: 16,
color: Theme.of(context)
.extension<BalancePageTheme>()!
.labelTextColor),
), ),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 4),
child: Icon(Icons.help_outline,
size: 16,
color: Theme.of(context)
.extension<BalancePageTheme>()!
.labelTextColor),
),
], ],
), ),
SizedBox(height: 6), SizedBox(height: 8),
AutoSizeText(availableBalance, AutoSizeText(
style: TextStyle( frozenBalance,
fontSize: 24, style: TextStyle(
fontFamily: 'Lato', fontSize: 20,
fontWeight: FontWeight.w900, fontFamily: 'Lato',
color: Theme.of(context) fontWeight: FontWeight.w400,
.extension<BalancePageTheme>()! color:
.balanceAmountColor, Theme.of(context).extension<BalancePageTheme>()!.balanceAmountColor,
height: 1), height: 1,
maxLines: 1, ),
textAlign: TextAlign.start), maxLines: 1,
SizedBox(height: 6), textAlign: TextAlign.center,
if (isTestnet) ),
Text(S.current.testnet_coins_no_value, SizedBox(height: 4),
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 14,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.textColor,
height: 1)),
if (!isTestnet) if (!isTestnet)
Text('${availableFiatBalance}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 16,
fontFamily: 'Lato',
fontWeight: FontWeight.w500,
color: Theme.of(context).extension<BalancePageTheme>()!.textColor,
height: 1)),
],
),
),
SizedBox(
width: min(MediaQuery.of(context).size.width * 0.2, 100),
child: Center(
child: Column(
children: [
CakeImageWidget(
imageUrl: currency.iconPath,
height: 40,
width: 40,
displayOnError: Container(
height: 30.0,
width: 30.0,
child: Center(
child: Text(
currency.title.substring(0, min(currency.title.length, 2)),
style: TextStyle(fontSize: 11),
),
),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.grey.shade400,
),
),
),
const SizedBox(height: 10),
Text( Text(
currency.title, frozenFiatBalance,
style: TextStyle(
fontSize: 15,
fontFamily: 'Lato',
fontWeight: FontWeight.w800,
color: Theme.of(context).extension<BalancePageTheme>()!.assetTitleColor,
height: 1,
),
),
],
),
),
),
],
),
if (frozenBalance.isNotEmpty)
GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: hasAdditionalBalance
? () =>
_showBalanceDescription(context, S.current.unavailable_balance_description)
: null,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 26),
Row(
children: [
Text(
S.current.unavailable_balance,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontSize: 12, fontSize: 12,
fontFamily: 'Lato', fontFamily: 'Lato',
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.labelTextColor, color: Theme.of(context).extension<BalancePageTheme>()!.textColor,
height: 1, height: 1,
), ),
), ),
Padding( ],
padding: const EdgeInsets.symmetric(horizontal: 4), ),
child: Icon(Icons.help_outline, ),
size: 16, if (hasAdditionalBalance)
color: Column(
Theme.of(context).extension<BalancePageTheme>()!.labelTextColor), crossAxisAlignment: CrossAxisAlignment.start,
), children: [
], SizedBox(height: 24),
Text(
'${additionalBalanceLabel}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.labelTextColor,
height: 1,
),
), ),
SizedBox(height: 8), SizedBox(height: 8),
AutoSizeText( AutoSizeText(
frozenBalance, additionalBalance,
style: TextStyle( style: TextStyle(
fontSize: 20, fontSize: 20,
fontFamily: 'Lato', fontFamily: 'Lato',
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.balanceAmountColor, color: Theme.of(context).extension<BalancePageTheme>()!.assetTitleColor,
height: 1, height: 1,
), ),
maxLines: 1, maxLines: 1,
@ -728,7 +807,7 @@ class BalanceRowWidget extends StatelessWidget {
SizedBox(height: 4), SizedBox(height: 4),
if (!isTestnet) if (!isTestnet)
Text( Text(
frozenFiatBalance, '${additionalFiatBalance}',
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontSize: 12, fontSize: 12,
@ -740,143 +819,247 @@ class BalanceRowWidget extends StatelessWidget {
), ),
], ],
), ),
), ],
if (hasAdditionalBalance) ),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 24),
Text(
'${additionalBalanceLabel}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.labelTextColor,
height: 1,
),
),
SizedBox(height: 8),
AutoSizeText(
additionalBalance,
style: TextStyle(
fontSize: 20,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.assetTitleColor,
height: 1,
),
maxLines: 1,
textAlign: TextAlign.center,
),
SizedBox(height: 4),
if (!isTestnet)
Text(
'${additionalFiatBalance}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.textColor,
height: 1,
),
),
],
),
if (hasSecondAvailableBalance)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 24),
Text(
'${secondAvailableBalanceLabel}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.labelTextColor,
height: 1,
),
),
SizedBox(height: 8),
AutoSizeText(
secondAvailableBalance,
style: TextStyle(
fontSize: 20,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.assetTitleColor,
height: 1,
),
maxLines: 1,
textAlign: TextAlign.center,
),
SizedBox(height: 4),
if (!isTestnet)
Text(
'${secondAvailableFiatBalance}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.textColor,
height: 1,
),
),
],
),
if (hasSecondAdditionalBalance)
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 24),
Text(
'${secondAdditionalBalanceLabel}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.labelTextColor,
height: 1,
),
),
SizedBox(height: 8),
AutoSizeText(
secondAdditionalBalance,
style: TextStyle(
fontSize: 20,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.assetTitleColor,
height: 1,
),
maxLines: 1,
textAlign: TextAlign.center,
),
SizedBox(height: 4),
if (!isTestnet)
Text(
'${secondAdditionalFiatBalance}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context).extension<BalancePageTheme>()!.textColor,
height: 1,
),
),
],
),
],
), ),
), ),
); if (hasSecondAdditionalBalance || hasSecondAvailableBalance) ...[
SizedBox(height: 16),
Container(
margin: const EdgeInsets.only(left: 16, right: 16),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(30.0),
border: Border.all(
color: Theme.of(context).extension<BalancePageTheme>()!.cardBorderColor,
width: 1,
),
color: Theme.of(context).extension<SyncIndicatorTheme>()!.syncedBackgroundColor,
),
child: Container(
margin: const EdgeInsets.only(top: 0, left: 24, right: 8, bottom: 16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Stack(
children: [
if (currency == CryptoCurrency.ltc)
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Container(
padding: EdgeInsets.only(right: 16, top: 16),
child: Column(
children: [
CakeImageWidget(
imageUrl: 'assets/images/mweb_logo.png',
height: 40,
width: 40,
displayOnError: Container(
height: 30.0,
width: 30.0,
child: Center(
child: Text(
currency.title.substring(0, min(currency.title.length, 2)),
style: TextStyle(fontSize: 11),
),
),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.grey.shade400,
),
),
),
const SizedBox(height: 10),
Text(
'MWEB',
style: TextStyle(
fontSize: 15,
fontFamily: 'Lato',
fontWeight: FontWeight.w800,
color: Theme.of(context)
.extension<BalancePageTheme>()!
.assetTitleColor,
height: 1,
),
),
],
),
),
],
),
if (hasSecondAvailableBalance)
Row(
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 24),
Text(
'${secondAvailableBalanceLabel}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context)
.extension<BalancePageTheme>()!
.labelTextColor,
height: 1,
),
),
SizedBox(height: 8),
AutoSizeText(
secondAvailableBalance,
style: TextStyle(
fontSize: 20,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context)
.extension<BalancePageTheme>()!
.assetTitleColor,
height: 1,
),
maxLines: 1,
textAlign: TextAlign.center,
),
SizedBox(height: 4),
if (!isTestnet)
Text(
'${secondAvailableFiatBalance}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color:
Theme.of(context).extension<BalancePageTheme>()!.textColor,
height: 1,
),
),
],
),
],
),
],
),
Stack(
children: [
if (hasSecondAdditionalBalance)
Row(
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 24),
Text(
'${secondAdditionalBalanceLabel}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context)
.extension<BalancePageTheme>()!
.labelTextColor,
height: 1,
),
),
SizedBox(height: 8),
AutoSizeText(
secondAdditionalBalance,
style: TextStyle(
fontSize: 20,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color: Theme.of(context)
.extension<BalancePageTheme>()!
.assetTitleColor,
height: 1,
),
maxLines: 1,
textAlign: TextAlign.center,
),
SizedBox(height: 4),
if (!isTestnet)
Text(
'${secondAdditionalFiatBalance}',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12,
fontFamily: 'Lato',
fontWeight: FontWeight.w400,
color:
Theme.of(context).extension<BalancePageTheme>()!.textColor,
height: 1,
),
),
],
),
],
),
// TODO: smarter peg in / out buttons
// if (currency == CryptoCurrency.ltc)
// Row(
// mainAxisAlignment: MainAxisAlignment.end,
// children: [
// Container(
// margin: EdgeInsets.only(top: 24, right: 8),
// child: ElevatedButton(
// style: ElevatedButton.styleFrom(
// backgroundColor: Theme.of(context).highlightColor,
// ),
// onPressed: () {
// final mwebAddress =
// bitcoin!.getUnusedMwebAddress(dashboardViewModel.wallet);
// if (mwebAddress == null) return;
// final paymentRequest =
// PaymentRequest.fromUri(Uri.parse("litecoin:${mwebAddress}"));
// Navigator.of(context)
// .pushNamed(Routes.send, arguments: paymentRequest);
// },
// child: Container(
// color: Colors.transparent,
// margin: EdgeInsets.all(4),
// child: Column(
// mainAxisSize: MainAxisSize.max,
// crossAxisAlignment: CrossAxisAlignment.center,
// children: <Widget>[
// Container(
// alignment: Alignment.center,
// decoration: BoxDecoration(shape: BoxShape.circle),
// child: Image.asset(
// 'assets/images/received.png',
// color: Theme.of(context)
// .extension<BalancePageTheme>()!
// .balanceAmountColor,
// width: 64,
// height: 32,
// ),
// ),
// SizedBox(height: 4),
// Text(
// S.of(context).litecoin_mweb_pegin,
// style: TextStyle(
// fontSize: 10,
// color: Theme.of(context)
// .extension<DashboardPageTheme>()!
// .cardTextColor),
// )
// ],
// ),
// ),
// ),
// ),
// ],
// ),
],
),
],
),
),
),
],
]);
} }
void _showBalanceDescription(BuildContext context, String content) { void _showBalanceDescription(BuildContext context, String content) {

View file

@ -192,7 +192,7 @@ class MenuWidgetState extends State<MenuWidget> {
final item = items[index]; final item = items[index];
if (!widget.dashboardViewModel.hasMweb && if (!widget.dashboardViewModel.hasMweb &&
item.name(context) == S.current.litecoin_mweb_settings) { item.name(context) == S.of(context).litecoin_mweb_settings) {
return const SizedBox(); return const SizedBox();
} }

View file

@ -49,7 +49,7 @@ class SettingActions {
); );
static SettingActions litecoinMwebSettingAction = SettingActions._( static SettingActions litecoinMwebSettingAction = SettingActions._(
name: (context) => S.current.litecoin_mweb_settings, name: (context) => S.of(context).litecoin_mweb_settings,
image: 'assets/images/bitcoin_menu.png', image: 'assets/images/bitcoin_menu.png',
onTap: (BuildContext context) { onTap: (BuildContext context) {
Navigator.pop(context); Navigator.pop(context);

View file

@ -358,14 +358,15 @@ abstract class BalanceViewModelBase with Store {
} }
bool _hasSecondAdditionalBalanceForWalletType(WalletType type) { bool _hasSecondAdditionalBalanceForWalletType(WalletType type) {
if (wallet.type == WalletType.litecoin && settingsStore.mwebEnabled) { if (wallet.type == WalletType.litecoin && settingsStore.mwebAlwaysScan) {
// if ((wallet.balance[CryptoCurrency.ltc]?.secondAdditional ?? 0) > 0)
return true; return true;
} }
return false; return false;
} }
bool _hasSecondAvailableBalanceForWalletType(WalletType type) { bool _hasSecondAvailableBalanceForWalletType(WalletType type) {
if (wallet.type == WalletType.litecoin && settingsStore.mwebEnabled) { if (wallet.type == WalletType.litecoin && settingsStore.mwebAlwaysScan) {
return true; return true;
} }
return false; return false;

View file

@ -262,6 +262,8 @@ abstract class DashboardViewModelBase with Store {
reaction((_) => settingsStore.mwebAlwaysScan, (bool alwaysScan) { reaction((_) => settingsStore.mwebAlwaysScan, (bool alwaysScan) {
if (alwaysScan) { if (alwaysScan) {
mwebScanningActive = true; mwebScanningActive = true;
} else {
mwebScanningActive = false;
} }
}); });
} }
@ -431,7 +433,7 @@ abstract class DashboardViewModelBase with Store {
bool get hasMweb => wallet.type == WalletType.litecoin; bool get hasMweb => wallet.type == WalletType.litecoin;
@computed @computed
bool get showMwebCard => hasMweb && settingsStore.mwebCardDisplay; bool get showMwebCard => hasMweb && settingsStore.mwebCardDisplay && !mwebScanningActive;
@observable @observable
bool mwebScanningActive = false; bool mwebScanningActive = false;
@ -440,18 +442,23 @@ abstract class DashboardViewModelBase with Store {
bool get hasEnabledMwebBefore => settingsStore.hasEnabledMwebBefore; bool get hasEnabledMwebBefore => settingsStore.hasEnabledMwebBefore;
@action @action
void setMwebScanningActive(bool active) { void setMwebScanningActive() {
if (!hasMweb) { if (!hasMweb) {
return; return;
} }
if (active) { settingsStore.hasEnabledMwebBefore = true;
settingsStore.hasEnabledMwebBefore = true; mwebScanningActive = true;
} bitcoin!.setMwebEnabled(wallet, true);
settingsStore.mwebAlwaysScan = true;
}
settingsStore.mwebEnabled = active; @action
mwebScanningActive = active; void dismissMweb() {
bitcoin!.setMwebEnabled(wallet, active); settingsStore.mwebCardDisplay = false;
settingsStore.mwebAlwaysScan = false;
mwebScanningActive = false;
bitcoin!.setMwebEnabled(wallet, false);
} }
BalanceViewModel balanceViewModel; BalanceViewModel balanceViewModel;

View file

@ -326,13 +326,13 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
final isPrimary = subaddress == primaryAddress; final isPrimary = subaddress == primaryAddress;
return WalletAddressListItem( return WalletAddressListItem(
id: subaddress.id, id: subaddress.id,
isPrimary: isPrimary, isPrimary: isPrimary,
name: subaddress.label, name: subaddress.label,
address: subaddress.address, address: subaddress.address,
balance: subaddress.received, balance: subaddress.received,
txCount: subaddress.txCount, txCount: subaddress.txCount,
); );
}); });
addressList.addAll(addressItems); addressList.addAll(addressItems);
} }
@ -418,8 +418,10 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
if (wallet.type == WalletType.litecoin && addressItems.length >= 1000) { if (wallet.type == WalletType.litecoin && addressItems.length >= 1000) {
// find the index of the last item with a txCount > 0 // find the index of the last item with a txCount > 0
final addressItemsList = addressItems.toList(); final addressItemsList = addressItems.toList();
final lastItemWithTxCount = addressItemsList.lastWhere((item) => (item.txCount ?? 0) > 0); int index = addressItemsList.lastIndexWhere((item) => (item.txCount ?? 0) > 0);
final index = addressItemsList.indexOf(lastItemWithTxCount); if (index == -1) {
index = 0;
}
// show only up to that index + 20: // show only up to that index + 20:
addressItems = addressItemsList.sublist(0, index + 20); addressItems = addressItemsList.sublist(0, index + 20);
} }
@ -461,14 +463,16 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
for (var i = 0; i < addressList.length; i++) { for (var i = 0; i < addressList.length; i++) {
if (!(addressList[i] is WalletAddressListItem)) continue; if (!(addressList[i] is WalletAddressListItem)) continue;
(addressList[i] as WalletAddressListItem).isHidden = wallet.walletAddresses.hiddenAddresses.contains((addressList[i] as WalletAddressListItem).address); (addressList[i] as WalletAddressListItem).isHidden = wallet.walletAddresses.hiddenAddresses
.contains((addressList[i] as WalletAddressListItem).address);
} }
for (var i = 0; i < addressList.length; i++) { for (var i = 0; i < addressList.length; i++) {
if (!(addressList[i] is WalletAddressListItem)) continue; if (!(addressList[i] is WalletAddressListItem)) continue;
(addressList[i] as WalletAddressListItem).isManual = wallet.walletAddresses.manualAddresses.contains((addressList[i] as WalletAddressListItem).address); (addressList[i] as WalletAddressListItem).isManual = wallet.walletAddresses.manualAddresses
.contains((addressList[i] as WalletAddressListItem).address);
} }
if (searchText.isNotEmpty) { if (searchText.isNotEmpty) {
return ObservableList.of(addressList.where((item) { return ObservableList.of(addressList.where((item) {
if (item is WalletAddressListItem) { if (item is WalletAddressListItem) {
@ -480,6 +484,7 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
return addressList; return addressList;
} }
Future<void> toggleHideAddress(WalletAddressListItem item) async { Future<void> toggleHideAddress(WalletAddressListItem item) async {
if (item.isHidden) { if (item.isHidden) {
wallet.walletAddresses.hiddenAddresses.removeWhere((element) => element == item.address); wallet.walletAddresses.hiddenAddresses.removeWhere((element) => element == item.address);
@ -488,13 +493,20 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
} }
await wallet.walletAddresses.saveAddressesInBox(); await wallet.walletAddresses.saveAddressesInBox();
if (wallet.type == WalletType.monero) { if (wallet.type == WalletType.monero) {
monero!.getSubaddressList(wallet).update(wallet, accountIndex: monero!.getCurrentAccount(wallet).id); monero!
.getSubaddressList(wallet)
.update(wallet, accountIndex: monero!.getCurrentAccount(wallet).id);
} else if (wallet.type == WalletType.wownero) { } else if (wallet.type == WalletType.wownero) {
wownero!.getSubaddressList(wallet).update(wallet, accountIndex: wownero!.getCurrentAccount(wallet).id); wownero!
.getSubaddressList(wallet)
.update(wallet, accountIndex: wownero!.getCurrentAccount(wallet).id);
} else if (wallet.type == WalletType.haven) { } else if (wallet.type == WalletType.haven) {
haven!.getSubaddressList(wallet).update(wallet, accountIndex: haven!.getCurrentAccount(wallet).id); haven!
.getSubaddressList(wallet)
.update(wallet, accountIndex: haven!.getCurrentAccount(wallet).id);
} }
} }
@observable @observable
bool hasAccounts; bool hasAccounts;
@ -535,8 +547,7 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
@computed @computed
bool get isReceivedAvailable => bool get isReceivedAvailable =>
wallet.type == WalletType.monero || wallet.type == WalletType.monero || wallet.type == WalletType.wownero;
wallet.type == WalletType.wownero;
@computed @computed
bool get isSilentPayments => bool get isSilentPayments =>
@ -549,9 +560,9 @@ abstract class WalletAddressListViewModelBase extends WalletChangeListenerViewMo
@computed @computed
bool get showAddManualAddresses => bool get showAddManualAddresses =>
!isAutoGenerateSubaddressEnabled || !isAutoGenerateSubaddressEnabled ||
wallet.type == WalletType.monero || wallet.type == WalletType.monero ||
wallet.type == WalletType.wownero; wallet.type == WalletType.wownero;
List<ListItem> _baseItems; List<ListItem> _baseItems;

View file

@ -36,6 +36,7 @@
"agree": "موافق", "agree": "موافق",
"agree_and_continue": "الموافقة ومتابعة", "agree_and_continue": "الموافقة ومتابعة",
"agree_to": "من خلال إنشاء حساب فإنك توافق على", "agree_to": "من خلال إنشاء حساب فإنك توافق على",
"alert_notice": "يلاحظ",
"all": "الكل", "all": "الكل",
"all_trades": "جميع عمليات التداول", "all_trades": "جميع عمليات التداول",
"all_transactions": "كل التحركات المالية", "all_transactions": "كل التحركات المالية",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "تمكين MWEB المسح الضوئي", "litecoin_enable_mweb_sync": "تمكين MWEB المسح الضوئي",
"litecoin_mweb": "mweb", "litecoin_mweb": "mweb",
"litecoin_mweb_always_scan": "اضبط MWEB دائمًا على المسح الضوئي", "litecoin_mweb_always_scan": "اضبط MWEB دائمًا على المسح الضوئي",
"litecoin_mweb_description": "MWEB هو بروتوكول جديد يجلب معاملات أسرع وأرخص وأكثر خصوصية إلى Litecoin",
"litecoin_mweb_dismiss": "رفض",
"litecoin_mweb_display_card": "عرض بطاقة mweb", "litecoin_mweb_display_card": "عرض بطاقة mweb",
"litecoin_mweb_enable_later": "يمكنك اختيار تمكين MWEB مرة أخرى ضمن إعدادات العرض.",
"litecoin_mweb_pegin": "ربط في",
"litecoin_mweb_pegout": "ربط",
"litecoin_mweb_scanning": "MWEB المسح الضوئي", "litecoin_mweb_scanning": "MWEB المسح الضوئي",
"litecoin_mweb_settings": "إعدادات MWEB", "litecoin_mweb_settings": "إعدادات MWEB",
"litecoin_mweb_warning": "سيقوم استخدام MWEB في البداية بتنزيل ~ 600 ميجابايت من البيانات ، وقد يستغرق ما يصل إلى 30 دقيقة حسب سرعة الشبكة. سيتم تنزيل هذه البيانات الأولية مرة واحدة فقط وستكون متاحة لجميع محافظ Litecoin", "litecoin_mweb_warning": "سيقوم استخدام MWEB في البداية بتنزيل ~ 600 ميجابايت من البيانات ، وقد يستغرق ما يصل إلى 30 دقيقة حسب سرعة الشبكة. سيتم تنزيل هذه البيانات الأولية مرة واحدة فقط وستكون متاحة لجميع محافظ Litecoin",

View file

@ -36,6 +36,7 @@
"agree": "Съгласен/а съм", "agree": "Съгласен/а съм",
"agree_and_continue": "Съгласяване и продължаване", "agree_and_continue": "Съгласяване и продължаване",
"agree_to": "Чрез създаването на акаунт вие се съгласявате с ", "agree_to": "Чрез създаването на акаунт вие се съгласявате с ",
"alert_notice": "Забележете",
"all": "ALL", "all": "ALL",
"all_trades": "Всички сделкки", "all_trades": "Всички сделкки",
"all_transactions": "Всички транзакции", "all_transactions": "Всички транзакции",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Активирайте сканирането на MWeb", "litecoin_enable_mweb_sync": "Активирайте сканирането на MWeb",
"litecoin_mweb": "Mweb", "litecoin_mweb": "Mweb",
"litecoin_mweb_always_scan": "Задайте MWeb винаги сканиране", "litecoin_mweb_always_scan": "Задайте MWeb винаги сканиране",
"litecoin_mweb_description": "MWeb е нов протокол, който носи по -бърз, по -евтин и повече частни транзакции на Litecoin",
"litecoin_mweb_dismiss": "Уволнение",
"litecoin_mweb_display_card": "Показване на MWEB карта", "litecoin_mweb_display_card": "Показване на MWEB карта",
"litecoin_mweb_enable_later": "Можете да изберете да активирате MWEB отново под настройките на дисплея.",
"litecoin_mweb_pegin": "PEG в",
"litecoin_mweb_pegout": "PEG OUT",
"litecoin_mweb_scanning": "Сканиране на MWEB", "litecoin_mweb_scanning": "Сканиране на MWEB",
"litecoin_mweb_settings": "Настройки на MWEB", "litecoin_mweb_settings": "Настройки на MWEB",
"litecoin_mweb_warning": "Използването на MWEB първоначално ще изтегли ~ 600MB данни и може да отнеме до 30 минути в зависимост от скоростта на мрежата. Тези първоначални данни ще изтеглят само веднъж и ще бъдат достъпни за всички портфейли Litecoin", "litecoin_mweb_warning": "Използването на MWEB първоначално ще изтегли ~ 600MB данни и може да отнеме до 30 минути в зависимост от скоростта на мрежата. Тези първоначални данни ще изтеглят само веднъж и ще бъдат достъпни за всички портфейли Litecoin",

View file

@ -36,6 +36,7 @@
"agree": "Souhlasím", "agree": "Souhlasím",
"agree_and_continue": "Souhlasím & pokračovat", "agree_and_continue": "Souhlasím & pokračovat",
"agree_to": "Vytvořením účtu souhlasíte s ", "agree_to": "Vytvořením účtu souhlasíte s ",
"alert_notice": "Oznámení",
"all": "VŠE", "all": "VŠE",
"all_trades": "Všechny obchody", "all_trades": "Všechny obchody",
"all_transactions": "Všechny transakce", "all_transactions": "Všechny transakce",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Povolit skenování MWeb", "litecoin_enable_mweb_sync": "Povolit skenování MWeb",
"litecoin_mweb": "MWeb", "litecoin_mweb": "MWeb",
"litecoin_mweb_always_scan": "Nastavit MWeb vždy skenování", "litecoin_mweb_always_scan": "Nastavit MWeb vždy skenování",
"litecoin_mweb_description": "MWEB je nový protokol, který do Litecoin přináší rychlejší, levnější a více soukromých transakcí",
"litecoin_mweb_dismiss": "Propustit",
"litecoin_mweb_display_card": "Zobrazit kartu MWeb", "litecoin_mweb_display_card": "Zobrazit kartu MWeb",
"litecoin_mweb_enable_later": "V nastavení zobrazení můžete vybrat znovu povolit MWeb.",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Zkrachovat",
"litecoin_mweb_scanning": "Skenování mWeb", "litecoin_mweb_scanning": "Skenování mWeb",
"litecoin_mweb_settings": "Nastavení mWeb", "litecoin_mweb_settings": "Nastavení mWeb",
"litecoin_mweb_warning": "Pomocí MWeb zpočátku stahuje ~ 600 MB dat a může trvat až 30 minut v závislosti na rychlosti sítě. Tato počáteční data si stáhnou pouze jednou a budou k dispozici pro všechny litecoinové peněženky", "litecoin_mweb_warning": "Pomocí MWeb zpočátku stahuje ~ 600 MB dat a může trvat až 30 minut v závislosti na rychlosti sítě. Tato počáteční data si stáhnou pouze jednou a budou k dispozici pro všechny litecoinové peněženky",

View file

@ -36,6 +36,7 @@
"agree": "stimme zu", "agree": "stimme zu",
"agree_and_continue": "Zustimmen & fortfahren", "agree_and_continue": "Zustimmen & fortfahren",
"agree_to": "Indem Sie ein Konto erstellen, stimmen Sie den ", "agree_to": "Indem Sie ein Konto erstellen, stimmen Sie den ",
"alert_notice": "Beachten",
"all": "ALLES", "all": "ALLES",
"all_trades": "Alle Trades", "all_trades": "Alle Trades",
"all_transactions": "Alle Transaktionen", "all_transactions": "Alle Transaktionen",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Aktivieren Sie das MWEB -Scannen", "litecoin_enable_mweb_sync": "Aktivieren Sie das MWEB -Scannen",
"litecoin_mweb": "MWeb", "litecoin_mweb": "MWeb",
"litecoin_mweb_always_scan": "Setzen Sie MWeb immer scannen", "litecoin_mweb_always_scan": "Setzen Sie MWeb immer scannen",
"litecoin_mweb_description": "MWEB ist ein neues Protokoll, das schnellere, billigere und privatere Transaktionen zu Litecoin bringt",
"litecoin_mweb_dismiss": "Zurückweisen",
"litecoin_mweb_display_card": "MWEB -Karte anzeigen", "litecoin_mweb_display_card": "MWEB -Karte anzeigen",
"litecoin_mweb_enable_later": "Sie können MWEB unter Anzeigeeinstellungen erneut aktivieren.",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Abstecken",
"litecoin_mweb_scanning": "MWEB Scanning", "litecoin_mweb_scanning": "MWEB Scanning",
"litecoin_mweb_settings": "MWEB -Einstellungen", "litecoin_mweb_settings": "MWEB -Einstellungen",
"litecoin_mweb_warning": "Durch die Verwendung von MWEB wird zunächst ~ 600 MB Daten heruntergeladen und kann je nach Netzwerkgeschwindigkeit bis zu 30 Minuten dauern. Diese ersten Daten werden nur einmal heruntergeladen und für alle Litecoin -Brieftaschen verfügbar", "litecoin_mweb_warning": "Durch die Verwendung von MWEB wird zunächst ~ 600 MB Daten heruntergeladen und kann je nach Netzwerkgeschwindigkeit bis zu 30 Minuten dauern. Diese ersten Daten werden nur einmal heruntergeladen und für alle Litecoin -Brieftaschen verfügbar",

View file

@ -36,6 +36,7 @@
"agree": "Agree", "agree": "Agree",
"agree_and_continue": "Agree & Continue", "agree_and_continue": "Agree & Continue",
"agree_to": "By creating account you agree to the ", "agree_to": "By creating account you agree to the ",
"alert_notice": "Notice",
"all": "ALL", "all": "ALL",
"all_trades": "All trades", "all_trades": "All trades",
"all_transactions": "All transactions", "all_transactions": "All transactions",
@ -333,9 +334,9 @@
"haven_app": "Haven by Cake Wallet", "haven_app": "Haven by Cake Wallet",
"haven_app_wallet_text": "Awesome wallet for Haven", "haven_app_wallet_text": "Awesome wallet for Haven",
"help": "help", "help": "help",
"hide": "Hide",
"hidden_addresses": "Hidden Addresses", "hidden_addresses": "Hidden Addresses",
"hidden_balance": "Hidden Balance", "hidden_balance": "Hidden Balance",
"hide": "Hide",
"hide_details": "Hide Details", "hide_details": "Hide Details",
"high_contrast_theme": "High Contrast Theme", "high_contrast_theme": "High Contrast Theme",
"home_screen_settings": "Home screen settings", "home_screen_settings": "Home screen settings",
@ -368,7 +369,12 @@
"litecoin_enable_mweb_sync": "Enable MWEB scanning", "litecoin_enable_mweb_sync": "Enable MWEB scanning",
"litecoin_mweb": "MWEB", "litecoin_mweb": "MWEB",
"litecoin_mweb_always_scan": "Set MWEB always scanning", "litecoin_mweb_always_scan": "Set MWEB always scanning",
"litecoin_mweb_description": "MWEB is a new protocol that brings faster, cheaper, and more private transactions to Litecoin",
"litecoin_mweb_dismiss": "Dismiss",
"litecoin_mweb_display_card": "Show MWEB card", "litecoin_mweb_display_card": "Show MWEB card",
"litecoin_mweb_enable_later": "You can choose to enable MWEB again under Display Settings.",
"litecoin_mweb_pegin": "Peg In",
"litecoin_mweb_pegout": "Peg Out",
"litecoin_mweb_scanning": "MWEB Scanning", "litecoin_mweb_scanning": "MWEB Scanning",
"litecoin_mweb_settings": "MWEB settings", "litecoin_mweb_settings": "MWEB settings",
"litecoin_mweb_warning": "Using MWEB will initially download ~600MB of data, and may take up to 30 minutes depending on network speed. This initial data will only download once and be available for all Litecoin wallets", "litecoin_mweb_warning": "Using MWEB will initially download ~600MB of data, and may take up to 30 minutes depending on network speed. This initial data will only download once and be available for all Litecoin wallets",
@ -685,8 +691,8 @@
"setup_your_debit_card": "Set up your debit card", "setup_your_debit_card": "Set up your debit card",
"share": "Share", "share": "Share",
"share_address": "Share address", "share_address": "Share address",
"show": "Show",
"shared_seed_wallet_groups": "Shared Seed Wallet Groups", "shared_seed_wallet_groups": "Shared Seed Wallet Groups",
"show": "Show",
"show_details": "Show Details", "show_details": "Show Details",
"show_keys": "Show seed/keys", "show_keys": "Show seed/keys",
"show_market_place": "Show Marketplace", "show_market_place": "Show Marketplace",

View file

@ -36,6 +36,7 @@
"agree": "De acuerdo", "agree": "De acuerdo",
"agree_and_continue": "Aceptar y continuar", "agree_and_continue": "Aceptar y continuar",
"agree_to": "Al crear una cuenta, aceptas ", "agree_to": "Al crear una cuenta, aceptas ",
"alert_notice": "Aviso",
"all": "TODOS", "all": "TODOS",
"all_trades": "Todos los oficios", "all_trades": "Todos los oficios",
"all_transactions": "Todas las transacciones", "all_transactions": "Todas las transacciones",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Habilitar el escaneo mweb", "litecoin_enable_mweb_sync": "Habilitar el escaneo mweb",
"litecoin_mweb": "Mweb", "litecoin_mweb": "Mweb",
"litecoin_mweb_always_scan": "Establecer mweb siempre escaneo", "litecoin_mweb_always_scan": "Establecer mweb siempre escaneo",
"litecoin_mweb_description": "Mweb es un nuevo protocolo que trae transacciones más rápidas, más baratas y más privadas a Litecoin",
"litecoin_mweb_dismiss": "Despedir",
"litecoin_mweb_display_card": "Mostrar tarjeta MWEB", "litecoin_mweb_display_card": "Mostrar tarjeta MWEB",
"litecoin_mweb_enable_later": "Puede elegir habilitar MWEB nuevamente en la configuración de visualización.",
"litecoin_mweb_pegin": "Meter",
"litecoin_mweb_pegout": "Estirar la pata",
"litecoin_mweb_scanning": "Escaneo mweb", "litecoin_mweb_scanning": "Escaneo mweb",
"litecoin_mweb_settings": "Configuración de MWEB", "litecoin_mweb_settings": "Configuración de MWEB",
"litecoin_mweb_warning": "El uso de MWEB inicialmente descargará ~ 600 MB de datos, y puede tomar hasta 30 minutos según la velocidad de la red. Estos datos iniciales solo se descargarán una vez y estarán disponibles para todas las billeteras de Litecoin", "litecoin_mweb_warning": "El uso de MWEB inicialmente descargará ~ 600 MB de datos, y puede tomar hasta 30 minutos según la velocidad de la red. Estos datos iniciales solo se descargarán una vez y estarán disponibles para todas las billeteras de Litecoin",

View file

@ -36,6 +36,7 @@
"agree": "d'accord", "agree": "d'accord",
"agree_and_continue": "Accepter et continuer", "agree_and_continue": "Accepter et continuer",
"agree_to": "En créant un compte, vous acceptez les ", "agree_to": "En créant un compte, vous acceptez les ",
"alert_notice": "Avis",
"all": "TOUT", "all": "TOUT",
"all_trades": "Tous échanges", "all_trades": "Tous échanges",
"all_transactions": "Toutes transactions", "all_transactions": "Toutes transactions",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Activer la numérisation MWEB", "litecoin_enable_mweb_sync": "Activer la numérisation MWEB",
"litecoin_mweb": "Mweb", "litecoin_mweb": "Mweb",
"litecoin_mweb_always_scan": "Définir MWEB Score Scanning", "litecoin_mweb_always_scan": "Définir MWEB Score Scanning",
"litecoin_mweb_description": "MWEB est un nouveau protocole qui apporte des transactions plus rapides, moins chères et plus privées à Litecoin",
"litecoin_mweb_dismiss": "Rejeter",
"litecoin_mweb_display_card": "Afficher la carte MWeb", "litecoin_mweb_display_card": "Afficher la carte MWeb",
"litecoin_mweb_enable_later": "Vous pouvez choisir d'activer à nouveau MWEB sous Paramètres d'affichage.",
"litecoin_mweb_pegin": "Entraver",
"litecoin_mweb_pegout": "Crever",
"litecoin_mweb_scanning": "Scann mweb", "litecoin_mweb_scanning": "Scann mweb",
"litecoin_mweb_settings": "Paramètres MWEB", "litecoin_mweb_settings": "Paramètres MWEB",
"litecoin_mweb_warning": "L'utilisation de MWEB téléchargera initialement ~ 600 Mo de données et peut prendre jusqu'à 30 minutes en fonction de la vitesse du réseau. Ces données initiales ne téléchargeront qu'une seule fois et seront disponibles pour tous les portefeuilles litecoin", "litecoin_mweb_warning": "L'utilisation de MWEB téléchargera initialement ~ 600 Mo de données et peut prendre jusqu'à 30 minutes en fonction de la vitesse du réseau. Ces données initiales ne téléchargeront qu'une seule fois et seront disponibles pour tous les portefeuilles litecoin",

View file

@ -36,6 +36,7 @@
"agree": "Yarda", "agree": "Yarda",
"agree_and_continue": "Amincewa & Ci gaba", "agree_and_continue": "Amincewa & Ci gaba",
"agree_to": "Ta hanyar ƙirƙirar asusu kun yarda da", "agree_to": "Ta hanyar ƙirƙirar asusu kun yarda da",
"alert_notice": "Sanarwa",
"all": "DUK", "all": "DUK",
"all_trades": "Duk ciniki", "all_trades": "Duk ciniki",
"all_transactions": "Dukan Ma'amaloli", "all_transactions": "Dukan Ma'amaloli",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Kunna binciken Mweb", "litecoin_enable_mweb_sync": "Kunna binciken Mweb",
"litecoin_mweb": "Mweb", "litecoin_mweb": "Mweb",
"litecoin_mweb_always_scan": "Saita Mweb koyaushe", "litecoin_mweb_always_scan": "Saita Mweb koyaushe",
"litecoin_mweb_description": "Mweb shine sabon tsarin yarjejeniya da ya kawo da sauri, mai rahusa, da kuma ma'amaloli masu zaman kansu zuwa Litecoin",
"litecoin_mweb_dismiss": "Tuɓe \\ sallama",
"litecoin_mweb_display_card": "Nuna katin Mweb", "litecoin_mweb_display_card": "Nuna katin Mweb",
"litecoin_mweb_enable_later": "Kuna iya zaɓar kunna Mweb kuma a ƙarƙashin saitunan nuni.",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Peg fita",
"litecoin_mweb_scanning": "Mweb scanning", "litecoin_mweb_scanning": "Mweb scanning",
"litecoin_mweb_settings": "Saitunan Mweb", "litecoin_mweb_settings": "Saitunan Mweb",
"litecoin_mweb_warning": "Amfani da Mweb zai fara saukewa ~ 600MB na bayanai, kuma yana iya ɗaukar minti 30 dangane da saurin cibiyar sadarwa. Wannan bayanan farko zai saika saukarwa sau ɗaya kawai kuma a samu don duk wuraren shakatawa", "litecoin_mweb_warning": "Amfani da Mweb zai fara saukewa ~ 600MB na bayanai, kuma yana iya ɗaukar minti 30 dangane da saurin cibiyar sadarwa. Wannan bayanan farko zai saika saukarwa sau ɗaya kawai kuma a samu don duk wuraren shakatawa",

View file

@ -36,6 +36,7 @@
"agree": "सहमत", "agree": "सहमत",
"agree_and_continue": "सहमत और जारी रखें", "agree_and_continue": "सहमत और जारी रखें",
"agree_to": "खाता बनाकर आप इससे सहमत होते हैं ", "agree_to": "खाता बनाकर आप इससे सहमत होते हैं ",
"alert_notice": "सूचना",
"all": "सब", "all": "सब",
"all_trades": "सभी व्यापार", "all_trades": "सभी व्यापार",
"all_transactions": "सभी लेन - देन", "all_transactions": "सभी लेन - देन",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "MWEB स्कैनिंग सक्षम करें", "litecoin_enable_mweb_sync": "MWEB स्कैनिंग सक्षम करें",
"litecoin_mweb": "मावली", "litecoin_mweb": "मावली",
"litecoin_mweb_always_scan": "MWEB हमेशा स्कैनिंग सेट करें", "litecoin_mweb_always_scan": "MWEB हमेशा स्कैनिंग सेट करें",
"litecoin_mweb_description": "MWEB एक नया प्रोटोकॉल है जो लिटकोइन के लिए तेजी से, सस्ता और अधिक निजी लेनदेन लाता है",
"litecoin_mweb_dismiss": "नकार देना",
"litecoin_mweb_display_card": "MWEB कार्ड दिखाएं", "litecoin_mweb_display_card": "MWEB कार्ड दिखाएं",
"litecoin_mweb_enable_later": "आप प्रदर्शन सेटिंग्स के तहत फिर से MWEB को सक्षम करने के लिए चुन सकते हैं।",
"litecoin_mweb_pegin": "खूंटी",
"litecoin_mweb_pegout": "मरना",
"litecoin_mweb_scanning": "MWEB स्कैनिंग", "litecoin_mweb_scanning": "MWEB स्कैनिंग",
"litecoin_mweb_settings": "MWEB सेटिंग्स", "litecoin_mweb_settings": "MWEB सेटिंग्स",
"litecoin_mweb_warning": "MWEB का उपयोग शुरू में ~ 600MB डेटा डाउनलोड करेगा, और नेटवर्क की गति के आधार पर 30 मिनट तक का समय लग सकता है। यह प्रारंभिक डेटा केवल एक बार डाउनलोड करेगा और सभी लिटकोइन वॉलेट के लिए उपलब्ध होगा", "litecoin_mweb_warning": "MWEB का उपयोग शुरू में ~ 600MB डेटा डाउनलोड करेगा, और नेटवर्क की गति के आधार पर 30 मिनट तक का समय लग सकता है। यह प्रारंभिक डेटा केवल एक बार डाउनलोड करेगा और सभी लिटकोइन वॉलेट के लिए उपलब्ध होगा",

View file

@ -36,6 +36,7 @@
"agree": "Slažem se", "agree": "Slažem se",
"agree_and_continue": "Slažem se i nastavi", "agree_and_continue": "Slažem se i nastavi",
"agree_to": "Stvaranjem računa pristajete na ", "agree_to": "Stvaranjem računa pristajete na ",
"alert_notice": "Obavijest",
"all": "SVE", "all": "SVE",
"all_trades": "Svi obrti", "all_trades": "Svi obrti",
"all_transactions": "Sve transakcije", "all_transactions": "Sve transakcije",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Omogućite MWEB skeniranje", "litecoin_enable_mweb_sync": "Omogućite MWEB skeniranje",
"litecoin_mweb": "MWeb", "litecoin_mweb": "MWeb",
"litecoin_mweb_always_scan": "Postavite MWeb uvijek skeniranje", "litecoin_mweb_always_scan": "Postavite MWeb uvijek skeniranje",
"litecoin_mweb_description": "MWEB je novi protokol koji u Litecoin donosi brže, jeftinije i privatnije transakcije",
"litecoin_mweb_dismiss": "Odbaciti",
"litecoin_mweb_display_card": "Prikaži MWeb karticu", "litecoin_mweb_display_card": "Prikaži MWeb karticu",
"litecoin_mweb_enable_later": "Možete odabrati da MWEB ponovo omogućite pod postavkama zaslona.",
"litecoin_mweb_pegin": "Uvući se",
"litecoin_mweb_pegout": "Odapeti",
"litecoin_mweb_scanning": "MWEB skeniranje", "litecoin_mweb_scanning": "MWEB skeniranje",
"litecoin_mweb_settings": "Postavke MWEB -a", "litecoin_mweb_settings": "Postavke MWEB -a",
"litecoin_mweb_warning": "Korištenje MWEB -a u početku će preuzeti ~ 600MB podataka, a može potrajati do 30 minuta, ovisno o brzini mreže. Ovi početni podaci preuzet će samo jednom i biti dostupni za sve Litecoin novčanike", "litecoin_mweb_warning": "Korištenje MWEB -a u početku će preuzeti ~ 600MB podataka, a može potrajati do 30 minuta, ovisno o brzini mreže. Ovi početni podaci preuzet će samo jednom i biti dostupni za sve Litecoin novčanike",

View file

@ -36,6 +36,7 @@
"agree": "Համաձայն եմ", "agree": "Համաձայն եմ",
"agree_and_continue": "Համաձայն եմ և շարունակեմ", "agree_and_continue": "Համաձայն եմ և շարունակեմ",
"agree_to": "Ստեղծելով հաշիվ դուք համաձայնում եք ", "agree_to": "Ստեղծելով հաշիվ դուք համաձայնում եք ",
"alert_notice": "Ծանուցում",
"all": "Բոլորը", "all": "Բոլորը",
"all_trades": "Բոլոր գործարքները", "all_trades": "Բոլոր գործարքները",
"all_transactions": "Բոլոր գործառնությունները", "all_transactions": "Բոլոր գործառնությունները",
@ -363,6 +364,11 @@
"ledger_error_wrong_app": "Խնդրում ենք համոզվել, որ դուք բացել եք ճիշտ ծրագիրը ձեր Ledger-ում", "ledger_error_wrong_app": "Խնդրում ենք համոզվել, որ դուք բացել եք ճիշտ ծրագիրը ձեր Ledger-ում",
"ledger_please_enable_bluetooth": "Խնդրում ենք միացնել Bluetooth-ը ձեր Ledger-ը հայտնաբերելու համար", "ledger_please_enable_bluetooth": "Խնդրում ենք միացնել Bluetooth-ը ձեր Ledger-ը հայտնաբերելու համար",
"light_theme": "Լուսավոր", "light_theme": "Լուսավոր",
"litecoin_mweb_description": "Mweb- ը նոր արձանագրություն է, որը բերում է ավելի արագ, ավելի էժան եւ ավելի մասնավոր գործարքներ դեպի LITECOIN",
"litecoin_mweb_dismiss": "Հեռացնել",
"litecoin_mweb_enable_later": "Կարող եք ընտրել Mweb- ը կրկին միացնել ցուցադրման պարամետրերը:",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Հափշտակել",
"live_fee_rates": "Ապակի վարձավճարներ API- ի միջոցով", "live_fee_rates": "Ապակի վարձավճարներ API- ի միջոցով",
"load_more": "Բեռնել ավելին", "load_more": "Բեռնել ավելին",
"loading_your_wallet": "Ձեր հաշվեհամարը բեռնում է", "loading_your_wallet": "Ձեր հաշվեհամարը բեռնում է",

View file

@ -36,6 +36,7 @@
"agree": "Setuju", "agree": "Setuju",
"agree_and_continue": "Setuju & Lanjutkan", "agree_and_continue": "Setuju & Lanjutkan",
"agree_to": "Dengan membuat akun Anda setuju dengan ", "agree_to": "Dengan membuat akun Anda setuju dengan ",
"alert_notice": "Melihat",
"all": "SEMUA", "all": "SEMUA",
"all_trades": "Semua perdagangan", "all_trades": "Semua perdagangan",
"all_transactions": "Semua transaksi", "all_transactions": "Semua transaksi",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Aktifkan pemindaian MWEB", "litecoin_enable_mweb_sync": "Aktifkan pemindaian MWEB",
"litecoin_mweb": "Mweb", "litecoin_mweb": "Mweb",
"litecoin_mweb_always_scan": "Atur mWeb selalu memindai", "litecoin_mweb_always_scan": "Atur mWeb selalu memindai",
"litecoin_mweb_description": "MWEB adalah protokol baru yang membawa transaksi yang lebih cepat, lebih murah, dan lebih pribadi ke Litecoin",
"litecoin_mweb_dismiss": "Membubarkan",
"litecoin_mweb_display_card": "Tunjukkan kartu mWeb", "litecoin_mweb_display_card": "Tunjukkan kartu mWeb",
"litecoin_mweb_enable_later": "Anda dapat memilih untuk mengaktifkan MWEB lagi di bawah pengaturan tampilan.",
"litecoin_mweb_pegin": "Pasak masuk",
"litecoin_mweb_pegout": "Mati",
"litecoin_mweb_scanning": "Pemindaian MWEB", "litecoin_mweb_scanning": "Pemindaian MWEB",
"litecoin_mweb_settings": "Pengaturan MWEB", "litecoin_mweb_settings": "Pengaturan MWEB",
"litecoin_mweb_warning": "Menggunakan MWEB pada awalnya akan mengunduh ~ 600MB data, dan dapat memakan waktu hingga 30 menit tergantung pada kecepatan jaringan. Data awal ini hanya akan mengunduh sekali dan tersedia untuk semua dompet litecoin", "litecoin_mweb_warning": "Menggunakan MWEB pada awalnya akan mengunduh ~ 600MB data, dan dapat memakan waktu hingga 30 menit tergantung pada kecepatan jaringan. Data awal ini hanya akan mengunduh sekali dan tersedia untuk semua dompet litecoin",

View file

@ -36,6 +36,7 @@
"agree": "d'accordo", "agree": "d'accordo",
"agree_and_continue": "Accetta e continua", "agree_and_continue": "Accetta e continua",
"agree_to": "Creando un account accetti il ", "agree_to": "Creando un account accetti il ",
"alert_notice": "Avviso",
"all": "TUTTO", "all": "TUTTO",
"all_trades": "Svi obrti", "all_trades": "Svi obrti",
"all_transactions": "Sve transakcije", "all_transactions": "Sve transakcije",
@ -367,7 +368,12 @@
"litecoin_enable_mweb_sync": "Abilita la scansione MWeb", "litecoin_enable_mweb_sync": "Abilita la scansione MWeb",
"litecoin_mweb": "MWeb", "litecoin_mweb": "MWeb",
"litecoin_mweb_always_scan": "Imposta MWeb per scansionare sempre", "litecoin_mweb_always_scan": "Imposta MWeb per scansionare sempre",
"litecoin_mweb_description": "MWeb è un nuovo protocollo che porta transazioni più veloci, più economiche e più private a Litecoin",
"litecoin_mweb_dismiss": "Congedare",
"litecoin_mweb_display_card": "Mostra la scheda MWeb", "litecoin_mweb_display_card": "Mostra la scheda MWeb",
"litecoin_mweb_enable_later": "È possibile scegliere di abilitare nuovamente MWeb nelle impostazioni di visualizzazione.",
"litecoin_mweb_pegin": "Piolo in",
"litecoin_mweb_pegout": "PEG OUT",
"litecoin_mweb_scanning": "Scansione MWeb", "litecoin_mweb_scanning": "Scansione MWeb",
"litecoin_mweb_settings": "Impostazioni MWeb", "litecoin_mweb_settings": "Impostazioni MWeb",
"litecoin_mweb_warning": "L'uso di MWeb inizialmente scaricherà ~ 600 MB di dati e potrebbe richiedere fino a 30 minuti a seconda della velocità di rete. Questi dati iniziali scaricheranno solo una volta e saranno disponibili per tutti i portafogli Litecoin", "litecoin_mweb_warning": "L'uso di MWeb inizialmente scaricherà ~ 600 MB di dati e potrebbe richiedere fino a 30 minuti a seconda della velocità di rete. Questi dati iniziali scaricheranno solo una volta e saranno disponibili per tutti i portafogli Litecoin",

View file

@ -36,6 +36,7 @@
"agree": "同意する", "agree": "同意する",
"agree_and_continue": "同意して続行", "agree_and_continue": "同意して続行",
"agree_to": "アカウントを作成することにより、", "agree_to": "アカウントを作成することにより、",
"alert_notice": "知らせ",
"all": "すべて", "all": "すべて",
"all_trades": "すべての取引", "all_trades": "すべての取引",
"all_transactions": "全取引", "all_transactions": "全取引",
@ -367,7 +368,12 @@
"litecoin_enable_mweb_sync": "MWEBスキャンを有効にします", "litecoin_enable_mweb_sync": "MWEBスキャンを有効にします",
"litecoin_mweb": "mweb", "litecoin_mweb": "mweb",
"litecoin_mweb_always_scan": "MWEBを常にスキャンします", "litecoin_mweb_always_scan": "MWEBを常にスキャンします",
"litecoin_mweb_description": "MWEBは、Litecoinにより速く、より安価で、よりプライベートなトランザクションをもたらす新しいプロトコルです",
"litecoin_mweb_dismiss": "却下する",
"litecoin_mweb_display_card": "MWEBカードを表示します", "litecoin_mweb_display_card": "MWEBカードを表示します",
"litecoin_mweb_enable_later": "表示設定の下で、MWEBを再度有効にすることを選択できます。",
"litecoin_mweb_pegin": "ペグイン",
"litecoin_mweb_pegout": "ペグアウト",
"litecoin_mweb_scanning": "MWEBスキャン", "litecoin_mweb_scanning": "MWEBスキャン",
"litecoin_mweb_settings": "MWEB設定", "litecoin_mweb_settings": "MWEB設定",
"litecoin_mweb_warning": "MWEBを使用すると、最初は〜600MBのデータをダウンロードし、ネットワーク速度に応じて最大30分かかる場合があります。この最初のデータは一度だけダウンロードされ、すべてのLitecoinウォレットで利用可能になります", "litecoin_mweb_warning": "MWEBを使用すると、最初は〜600MBのデータをダウンロードし、ネットワーク速度に応じて最大30分かかる場合があります。この最初のデータは一度だけダウンロードされ、すべてのLitecoinウォレットで利用可能になります",

View file

@ -36,6 +36,7 @@
"agree": "동의하다", "agree": "동의하다",
"agree_and_continue": "동의 및 계속", "agree_and_continue": "동의 및 계속",
"agree_to": "계정을 생성하면 ", "agree_to": "계정을 생성하면 ",
"alert_notice": "알아채다",
"all": "모든", "all": "모든",
"all_trades": "A모든 거래", "all_trades": "A모든 거래",
"all_transactions": "모든 거래 창구", "all_transactions": "모든 거래 창구",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "mweb 스캔을 활성화합니다", "litecoin_enable_mweb_sync": "mweb 스캔을 활성화합니다",
"litecoin_mweb": "mweb", "litecoin_mweb": "mweb",
"litecoin_mweb_always_scan": "mweb는 항상 스캔을 설정합니다", "litecoin_mweb_always_scan": "mweb는 항상 스캔을 설정합니다",
"litecoin_mweb_description": "MWEB는 Litecoin에 더 빠르고 저렴하며 개인 거래를 제공하는 새로운 프로토콜입니다.",
"litecoin_mweb_dismiss": "해고하다",
"litecoin_mweb_display_card": "mweb 카드를 보여주십시오", "litecoin_mweb_display_card": "mweb 카드를 보여주십시오",
"litecoin_mweb_enable_later": "디스플레이 설정에서 MWEB를 다시 활성화하도록 선택할 수 있습니다.",
"litecoin_mweb_pegin": "페그를 입력하십시오",
"litecoin_mweb_pegout": "죽다",
"litecoin_mweb_scanning": "mweb 스캔", "litecoin_mweb_scanning": "mweb 스캔",
"litecoin_mweb_settings": "mweb 설정", "litecoin_mweb_settings": "mweb 설정",
"litecoin_mweb_warning": "MWEB를 사용하면 처음에는 ~ 600MB의 데이터를 다운로드하며 네트워크 속도에 따라 최대 30 분이 소요될 수 있습니다. 이 초기 데이터는 한 번만 다운로드하여 모든 조명 지갑에 사용할 수 있습니다.", "litecoin_mweb_warning": "MWEB를 사용하면 처음에는 ~ 600MB의 데이터를 다운로드하며 네트워크 속도에 따라 최대 30 분이 소요될 수 있습니다. 이 초기 데이터는 한 번만 다운로드하여 모든 조명 지갑에 사용할 수 있습니다.",

View file

@ -36,6 +36,7 @@
"agree": "သဘောတူသည်။", "agree": "သဘောတူသည်။",
"agree_and_continue": "သဘောတူပြီး ရှေ့ဆက်ပါ။", "agree_and_continue": "သဘောတူပြီး ရှေ့ဆက်ပါ။",
"agree_to": "အကောင့်ဖန်တီးခြင်းဖြင့် သင်သည် ဤအရာကို သဘောတူပါသည်။", "agree_to": "အကောင့်ဖန်တီးခြင်းဖြင့် သင်သည် ဤအရာကို သဘောတူပါသည်။",
"alert_notice": "မှတ်သား",
"all": "အားလုံး", "all": "အားလုံး",
"all_trades": "ကုန်သွယ်မှုအားလုံး", "all_trades": "ကုန်သွယ်မှုအားလုံး",
"all_transactions": "အရောင်းအဝယ်အားလုံး", "all_transactions": "အရောင်းအဝယ်အားလုံး",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "mweb scanning ဖွင့်ပါ", "litecoin_enable_mweb_sync": "mweb scanning ဖွင့်ပါ",
"litecoin_mweb": "မင်္ဂလာပါ", "litecoin_mweb": "မင်္ဂလာပါ",
"litecoin_mweb_always_scan": "Mweb အမြဲစကင်ဖတ်စစ်ဆေးပါ", "litecoin_mweb_always_scan": "Mweb အမြဲစကင်ဖတ်စစ်ဆေးပါ",
"litecoin_mweb_description": "Mweb သည် Protocol အသစ်ဖြစ်ပြီး LitCoin သို့ပိုမိုဈေးချိုသာသော, စျေးသက်သက်သာသာသုံးခြင်းနှင့်ပိုမိုများပြားသောပုဂ္ဂလိကငွေပို့ဆောင်မှုများကိုဖြစ်ပေါ်စေသည်",
"litecoin_mweb_dismiss": "ထုတ်ပစ်",
"litecoin_mweb_display_card": "MweB ကဒ်ကိုပြပါ", "litecoin_mweb_display_card": "MweB ကဒ်ကိုပြပါ",
"litecoin_mweb_enable_later": "သင် MweB ကို display settings အောက်ရှိ ထပ်မံ. ခွင့်ပြုရန်ရွေးချယ်နိုင်သည်။",
"litecoin_mweb_pegin": "တံစို့",
"litecoin_mweb_pegout": "တံစို့",
"litecoin_mweb_scanning": "mweb scanning", "litecoin_mweb_scanning": "mweb scanning",
"litecoin_mweb_settings": "Mweb ဆက်တင်များ", "litecoin_mweb_settings": "Mweb ဆက်တင်များ",
"litecoin_mweb_warning": "MweB ကိုအသုံးပြုခြင်းသည်အစပိုင်းတွင် ~ 600MB ဒေတာများကို download လုပ်ပြီးကွန်ယက်အမြန်နှုန်းပေါ် မူတည်. မိနစ် 30 အထိကြာနိုင်သည်။ ဤကန ဦး ဒေတာကိုတစ်ကြိမ်သာ download လုပ်ပြီး litecoin Walkets အားလုံးအတွက်ရနိုင်သည်", "litecoin_mweb_warning": "MweB ကိုအသုံးပြုခြင်းသည်အစပိုင်းတွင် ~ 600MB ဒေတာများကို download လုပ်ပြီးကွန်ယက်အမြန်နှုန်းပေါ် မူတည်. မိနစ် 30 အထိကြာနိုင်သည်။ ဤကန ဦး ဒေတာကိုတစ်ကြိမ်သာ download လုပ်ပြီး litecoin Walkets အားလုံးအတွက်ရနိုင်သည်",

View file

@ -36,6 +36,7 @@
"agree": "mee eens", "agree": "mee eens",
"agree_and_continue": "Akkoord & doorgaan", "agree_and_continue": "Akkoord & doorgaan",
"agree_to": "Door een account aan te maken gaat u akkoord met de ", "agree_to": "Door een account aan te maken gaat u akkoord met de ",
"alert_notice": "Kennisgeving",
"all": "ALLE", "all": "ALLE",
"all_trades": "Alle transacties", "all_trades": "Alle transacties",
"all_transactions": "Alle transacties", "all_transactions": "Alle transacties",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "MWEB -scanning inschakelen", "litecoin_enable_mweb_sync": "MWEB -scanning inschakelen",
"litecoin_mweb": "Mweb", "litecoin_mweb": "Mweb",
"litecoin_mweb_always_scan": "Stel mweb altijd op scannen", "litecoin_mweb_always_scan": "Stel mweb altijd op scannen",
"litecoin_mweb_description": "MWEB is een nieuw protocol dat snellere, goedkopere en meer privé -transacties naar Litecoin brengt",
"litecoin_mweb_dismiss": "Afwijzen",
"litecoin_mweb_display_card": "Toon MWEB -kaart", "litecoin_mweb_display_card": "Toon MWEB -kaart",
"litecoin_mweb_enable_later": "U kunt ervoor kiezen om MWeb opnieuw in te schakelen onder weergave -instellingen.",
"litecoin_mweb_pegin": "Vastmaken",
"litecoin_mweb_pegout": "Uithakken",
"litecoin_mweb_scanning": "MWEB -scanning", "litecoin_mweb_scanning": "MWEB -scanning",
"litecoin_mweb_settings": "MWEB -instellingen", "litecoin_mweb_settings": "MWEB -instellingen",
"litecoin_mweb_warning": "Het gebruik van MWeb downloadt in eerste instantie ~ 600 MB aan gegevens en kan tot 30 minuten duren, afhankelijk van de netwerksnelheid. Deze eerste gegevens worden slechts eenmaal gedownload en zijn beschikbaar voor alle Litecoin -portefeuilles", "litecoin_mweb_warning": "Het gebruik van MWeb downloadt in eerste instantie ~ 600 MB aan gegevens en kan tot 30 minuten duren, afhankelijk van de netwerksnelheid. Deze eerste gegevens worden slechts eenmaal gedownload en zijn beschikbaar voor alle Litecoin -portefeuilles",

View file

@ -36,6 +36,7 @@
"agree": "Zgadzam się", "agree": "Zgadzam się",
"agree_and_continue": "Zgadzam się i kontynuuj", "agree_and_continue": "Zgadzam się i kontynuuj",
"agree_to": "Tworząc konto wyrażasz zgodę na ", "agree_to": "Tworząc konto wyrażasz zgodę na ",
"alert_notice": "Ogłoszenie",
"all": "WSZYSTKO", "all": "WSZYSTKO",
"all_trades": "Wszystkie operacje", "all_trades": "Wszystkie operacje",
"all_transactions": "Wszystkie transakcje", "all_transactions": "Wszystkie transakcje",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Włącz skanowanie MWEB", "litecoin_enable_mweb_sync": "Włącz skanowanie MWEB",
"litecoin_mweb": "MWEB", "litecoin_mweb": "MWEB",
"litecoin_mweb_always_scan": "Ustaw MWEB zawsze skanowanie", "litecoin_mweb_always_scan": "Ustaw MWEB zawsze skanowanie",
"litecoin_mweb_description": "MWEB to nowy protokół, który przynosi szybciej, tańsze i bardziej prywatne transakcje do Litecoin",
"litecoin_mweb_dismiss": "Odrzucać",
"litecoin_mweb_display_card": "Pokaż kartę MWEB", "litecoin_mweb_display_card": "Pokaż kartę MWEB",
"litecoin_mweb_enable_later": "Możesz ponownie włączyć MWEB w ustawieniach wyświetlania.",
"litecoin_mweb_pegin": "Kołek",
"litecoin_mweb_pegout": "Palikować",
"litecoin_mweb_scanning": "Skanowanie MWEB", "litecoin_mweb_scanning": "Skanowanie MWEB",
"litecoin_mweb_settings": "Ustawienia MWEB", "litecoin_mweb_settings": "Ustawienia MWEB",
"litecoin_mweb_warning": "Korzystanie z MWEB początkowo pobiera ~ 600 MB danych i może potrwać do 30 minut w zależności od prędkości sieci. Te początkowe dane pobierają tylko raz i będą dostępne dla wszystkich portfeli Litecoin", "litecoin_mweb_warning": "Korzystanie z MWEB początkowo pobiera ~ 600 MB danych i może potrwać do 30 minut w zależności od prędkości sieci. Te początkowe dane pobierają tylko raz i będą dostępne dla wszystkich portfeli Litecoin",

View file

@ -36,6 +36,7 @@
"agree": "Concordo", "agree": "Concordo",
"agree_and_continue": "Concordar e continuar", "agree_and_continue": "Concordar e continuar",
"agree_to": "Ao criar conta você concorda com ", "agree_to": "Ao criar conta você concorda com ",
"alert_notice": "Perceber",
"all": "TUDO", "all": "TUDO",
"all_trades": "Todas as negociações", "all_trades": "Todas as negociações",
"all_transactions": "Todas as transacções", "all_transactions": "Todas as transacções",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Ativar digitalização do MWEB", "litecoin_enable_mweb_sync": "Ativar digitalização do MWEB",
"litecoin_mweb": "Mweb", "litecoin_mweb": "Mweb",
"litecoin_mweb_always_scan": "Definir mweb sempre digitalizando", "litecoin_mweb_always_scan": "Definir mweb sempre digitalizando",
"litecoin_mweb_description": "MWEB é um novo protocolo que traz transações mais rápidas, baratas e mais privadas para o Litecoin",
"litecoin_mweb_dismiss": "Liberar",
"litecoin_mweb_display_card": "Mostre o cartão MWEB", "litecoin_mweb_display_card": "Mostre o cartão MWEB",
"litecoin_mweb_enable_later": "Você pode optar por ativar o MWEB novamente em Configurações de exibição.",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Peg fora",
"litecoin_mweb_scanning": "MWEB Scanning", "litecoin_mweb_scanning": "MWEB Scanning",
"litecoin_mweb_settings": "Configurações do MWEB", "litecoin_mweb_settings": "Configurações do MWEB",
"litecoin_mweb_warning": "O uso do MWEB baixará inicialmente ~ 600 MB de dados e pode levar até 30 minutos, dependendo da velocidade da rede. Esses dados iniciais serão baixados apenas uma vez e estarão disponíveis para todas as carteiras Litecoin", "litecoin_mweb_warning": "O uso do MWEB baixará inicialmente ~ 600 MB de dados e pode levar até 30 minutos, dependendo da velocidade da rede. Esses dados iniciais serão baixados apenas uma vez e estarão disponíveis para todas as carteiras Litecoin",

View file

@ -36,6 +36,7 @@
"agree": "согласен", "agree": "согласен",
"agree_and_continue": "Согласиться и продолжить", "agree_and_continue": "Согласиться и продолжить",
"agree_to": "Создавая аккаунт, вы соглашаетесь с ", "agree_to": "Создавая аккаунт, вы соглашаетесь с ",
"alert_notice": "Уведомление",
"all": "ВСЕ", "all": "ВСЕ",
"all_trades": "Все сделки", "all_trades": "Все сделки",
"all_transactions": "Все транзакции", "all_transactions": "Все транзакции",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Включить MWEB сканирование", "litecoin_enable_mweb_sync": "Включить MWEB сканирование",
"litecoin_mweb": "Мвеб", "litecoin_mweb": "Мвеб",
"litecoin_mweb_always_scan": "Установить MWEB всегда сканирование", "litecoin_mweb_always_scan": "Установить MWEB всегда сканирование",
"litecoin_mweb_description": "MWEB - это новый протокол, который приносит быстрее, дешевле и более частные транзакции в Litecoin",
"litecoin_mweb_dismiss": "Увольнять",
"litecoin_mweb_display_card": "Показать карту MWEB", "litecoin_mweb_display_card": "Показать карту MWEB",
"litecoin_mweb_enable_later": "Вы можете снова включить MWEB в настройках отображения.",
"litecoin_mweb_pegin": "Внедрять",
"litecoin_mweb_pegout": "Выкрикивать",
"litecoin_mweb_scanning": "MWEB сканирование", "litecoin_mweb_scanning": "MWEB сканирование",
"litecoin_mweb_settings": "Настройки MWEB", "litecoin_mweb_settings": "Настройки MWEB",
"litecoin_mweb_warning": "Использование MWEB изначально загрузит ~ 600 МБ данных и может занять до 30 минут в зависимости от скорости сети. Эти начальные данные будут загружаться только один раз и будут доступны для всех кошельков Litecoin", "litecoin_mweb_warning": "Использование MWEB изначально загрузит ~ 600 МБ данных и может занять до 30 минут в зависимости от скорости сети. Эти начальные данные будут загружаться только один раз и будут доступны для всех кошельков Litecoin",

View file

@ -36,6 +36,7 @@
"agree": "ยอมรับ", "agree": "ยอมรับ",
"agree_and_continue": "ยอมรับและดำเนินการต่อ", "agree_and_continue": "ยอมรับและดำเนินการต่อ",
"agree_to": "การสร้างบัญชีของคุณยอมรับเงื่อนไขของ", "agree_to": "การสร้างบัญชีของคุณยอมรับเงื่อนไขของ",
"alert_notice": "สังเกต",
"all": "ทั้งหมด", "all": "ทั้งหมด",
"all_trades": "การซื้อขายทั้งหมด", "all_trades": "การซื้อขายทั้งหมด",
"all_transactions": "การทำธุรกรรมทั้งหมด", "all_transactions": "การทำธุรกรรมทั้งหมด",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "เปิดใช้งานการสแกน MWEB", "litecoin_enable_mweb_sync": "เปิดใช้งานการสแกน MWEB",
"litecoin_mweb": "mweb", "litecoin_mweb": "mweb",
"litecoin_mweb_always_scan": "ตั้งค่าการสแกน MWEB เสมอ", "litecoin_mweb_always_scan": "ตั้งค่าการสแกน MWEB เสมอ",
"litecoin_mweb_description": "MWEB เป็นโปรโตคอลใหม่ที่นำการทำธุรกรรมที่เร็วกว่าราคาถูกกว่าและเป็นส่วนตัวมากขึ้นไปยัง Litecoin",
"litecoin_mweb_dismiss": "อนุญาตให้ออกไป",
"litecoin_mweb_display_card": "แสดงการ์ด mweb", "litecoin_mweb_display_card": "แสดงการ์ด mweb",
"litecoin_mweb_enable_later": "คุณสามารถเลือกเปิดใช้งาน MWEB อีกครั้งภายใต้การตั้งค่าการแสดงผล",
"litecoin_mweb_pegin": "หมุด",
"litecoin_mweb_pegout": "ตรึง",
"litecoin_mweb_scanning": "การสแกน MWEB", "litecoin_mweb_scanning": "การสแกน MWEB",
"litecoin_mweb_settings": "การตั้งค่า MWEB", "litecoin_mweb_settings": "การตั้งค่า MWEB",
"litecoin_mweb_warning": "การใช้ MWEB จะดาวน์โหลดข้อมูล ~ 600MB ในขั้นต้นและอาจใช้เวลาสูงสุด 30 นาทีขึ้นอยู่กับความเร็วเครือข่าย ข้อมูลเริ่มต้นนี้จะดาวน์โหลดได้เพียงครั้งเดียวและพร้อมใช้งานสำหรับกระเป๋าเงินทั้งหมดของ Litecoin", "litecoin_mweb_warning": "การใช้ MWEB จะดาวน์โหลดข้อมูล ~ 600MB ในขั้นต้นและอาจใช้เวลาสูงสุด 30 นาทีขึ้นอยู่กับความเร็วเครือข่าย ข้อมูลเริ่มต้นนี้จะดาวน์โหลดได้เพียงครั้งเดียวและพร้อมใช้งานสำหรับกระเป๋าเงินทั้งหมดของ Litecoin",

View file

@ -36,6 +36,7 @@
"agree": "Sumang-ayon", "agree": "Sumang-ayon",
"agree_and_continue": "Sumang-ayon & Magpatuloy", "agree_and_continue": "Sumang-ayon & Magpatuloy",
"agree_to": "Sa pamamagitan ng paggawa ng account sumasang-ayon ka sa ", "agree_to": "Sa pamamagitan ng paggawa ng account sumasang-ayon ka sa ",
"alert_notice": "PAUNAWA",
"all": "LAHAT", "all": "LAHAT",
"all_trades": "Lahat ng mga trade", "all_trades": "Lahat ng mga trade",
"all_transactions": "Lahat ng mga transaksyon", "all_transactions": "Lahat ng mga transaksyon",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Paganahin ang pag -scan ng MWeb", "litecoin_enable_mweb_sync": "Paganahin ang pag -scan ng MWeb",
"litecoin_mweb": "Mweb", "litecoin_mweb": "Mweb",
"litecoin_mweb_always_scan": "Itakda ang MWeb na laging nag -scan", "litecoin_mweb_always_scan": "Itakda ang MWeb na laging nag -scan",
"litecoin_mweb_description": "Ang MWeb ay isang bagong protocol na nagdadala ng mas mabilis, mas mura, at mas maraming pribadong mga transaksyon sa Litecoin",
"litecoin_mweb_dismiss": "Tanggalin",
"litecoin_mweb_display_card": "Ipakita ang MWEB Card", "litecoin_mweb_display_card": "Ipakita ang MWEB Card",
"litecoin_mweb_enable_later": "Maaari kang pumili upang paganahin muli ang MWeb sa ilalim ng mga setting ng pagpapakita.",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Peg out",
"litecoin_mweb_scanning": "Pag -scan ng Mweb", "litecoin_mweb_scanning": "Pag -scan ng Mweb",
"litecoin_mweb_settings": "Mga Setting ng Mweb", "litecoin_mweb_settings": "Mga Setting ng Mweb",
"litecoin_mweb_warning": "Ang paggamit ng MWEB ay unang i -download ang ~ 600MB ng data, at maaaring tumagal ng hanggang sa 30 minuto depende sa bilis ng network. Ang paunang data na ito ay mag -download lamang ng isang beses at magagamit para sa lahat ng mga wallets ng Litecoin", "litecoin_mweb_warning": "Ang paggamit ng MWEB ay unang i -download ang ~ 600MB ng data, at maaaring tumagal ng hanggang sa 30 minuto depende sa bilis ng network. Ang paunang data na ito ay mag -download lamang ng isang beses at magagamit para sa lahat ng mga wallets ng Litecoin",

View file

@ -36,6 +36,7 @@
"agree": "Kabul Et", "agree": "Kabul Et",
"agree_and_continue": "Kabul Et & Devam Et", "agree_and_continue": "Kabul Et & Devam Et",
"agree_to": "Hesap oluşturarak bunları kabul etmiş olursunuz ", "agree_to": "Hesap oluşturarak bunları kabul etmiş olursunuz ",
"alert_notice": "Fark etme",
"all": "HEPSİ", "all": "HEPSİ",
"all_trades": "Tüm takaslar", "all_trades": "Tüm takaslar",
"all_transactions": "Tüm transferler", "all_transactions": "Tüm transferler",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "MWEB taramasını etkinleştir", "litecoin_enable_mweb_sync": "MWEB taramasını etkinleştir",
"litecoin_mweb": "Mweb", "litecoin_mweb": "Mweb",
"litecoin_mweb_always_scan": "MWEB'i her zaman taramayı ayarlayın", "litecoin_mweb_always_scan": "MWEB'i her zaman taramayı ayarlayın",
"litecoin_mweb_description": "MWEB, Litecoin'e daha hızlı, daha ucuz ve daha fazla özel işlem getiren yeni bir protokoldür",
"litecoin_mweb_dismiss": "Azletmek",
"litecoin_mweb_display_card": "MWEB kartını göster", "litecoin_mweb_display_card": "MWEB kartını göster",
"litecoin_mweb_enable_later": "Ekran ayarlarının altında MWEB'yi tekrar etkinleştirmeyi seçebilirsiniz.",
"litecoin_mweb_pegin": "Takılmak",
"litecoin_mweb_pegout": "Çiğnemek",
"litecoin_mweb_scanning": "MWEB taraması", "litecoin_mweb_scanning": "MWEB taraması",
"litecoin_mweb_settings": "MWEB ayarları", "litecoin_mweb_settings": "MWEB ayarları",
"litecoin_mweb_warning": "MWEB kullanmak başlangıçta ~ 600MB veri indirir ve ağ hızına bağlı olarak 30 dakikaya kadar sürebilir. Bu ilk veriler yalnızca bir kez indirilecek ve tüm Litecoin cüzdanları için kullanılabilir olacak", "litecoin_mweb_warning": "MWEB kullanmak başlangıçta ~ 600MB veri indirir ve ağ hızına bağlı olarak 30 dakikaya kadar sürebilir. Bu ilk veriler yalnızca bir kez indirilecek ve tüm Litecoin cüzdanları için kullanılabilir olacak",

View file

@ -36,6 +36,7 @@
"agree": "Згоден", "agree": "Згоден",
"agree_and_continue": "Погодитися та продовжити", "agree_and_continue": "Погодитися та продовжити",
"agree_to": "Створюючи обліковий запис, ви погоджуєтеся з ", "agree_to": "Створюючи обліковий запис, ви погоджуєтеся з ",
"alert_notice": "Ув'язнення",
"all": "ВСЕ", "all": "ВСЕ",
"all_trades": "Всі операції", "all_trades": "Всі операції",
"all_transactions": "Всі транзакції", "all_transactions": "Всі транзакції",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "Увімкнути сканування MWEB", "litecoin_enable_mweb_sync": "Увімкнути сканування MWEB",
"litecoin_mweb": "Мвеб", "litecoin_mweb": "Мвеб",
"litecoin_mweb_always_scan": "Встановити mweb завжди сканувати", "litecoin_mweb_always_scan": "Встановити mweb завжди сканувати",
"litecoin_mweb_description": "MWEB - це новий протокол, який приносить швидкі, дешевші та більш приватні транзакції Litecoin",
"litecoin_mweb_dismiss": "Звільнити",
"litecoin_mweb_display_card": "Показати карту MWeb", "litecoin_mweb_display_card": "Показати карту MWeb",
"litecoin_mweb_enable_later": "Ви можете знову ввімкнути MWEB в налаштуваннях дисплея.",
"litecoin_mweb_pegin": "Подякувати",
"litecoin_mweb_pegout": "Подякувати",
"litecoin_mweb_scanning": "Сканування Mweb", "litecoin_mweb_scanning": "Сканування Mweb",
"litecoin_mweb_settings": "Налаштування MWEB", "litecoin_mweb_settings": "Налаштування MWEB",
"litecoin_mweb_warning": "Використання MWEB спочатку завантажить ~ 600 Мб даних і може зайняти до 30 хвилин залежно від швидкості мережі. Ці початкові дані завантажуються лише один раз і будуть доступні для всіх гаманців Litecoin", "litecoin_mweb_warning": "Використання MWEB спочатку завантажить ~ 600 Мб даних і може зайняти до 30 хвилин залежно від швидкості мережі. Ці початкові дані завантажуються лише один раз і будуть доступні для всіх гаманців Litecoin",

View file

@ -36,6 +36,7 @@
"agree": "متفق", "agree": "متفق",
"agree_and_continue": "اتفاق کریں اور جاری رکھیں", "agree_and_continue": "اتفاق کریں اور جاری رکھیں",
"agree_to": "اکاؤنٹ بنا کر آپ اس سے اتفاق کرتے ہیں۔", "agree_to": "اکاؤنٹ بنا کر آپ اس سے اتفاق کرتے ہیں۔",
"alert_notice": "نوٹس",
"all": "تمام", "all": "تمام",
"all_trades": "تمام تجارت", "all_trades": "تمام تجارت",
"all_transactions": "تمام لین دین", "all_transactions": "تمام لین دین",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "MWEB اسکیننگ کو فعال کریں", "litecoin_enable_mweb_sync": "MWEB اسکیننگ کو فعال کریں",
"litecoin_mweb": "MWEB", "litecoin_mweb": "MWEB",
"litecoin_mweb_always_scan": "MWEB ہمیشہ اسکیننگ سیٹ کریں", "litecoin_mweb_always_scan": "MWEB ہمیشہ اسکیننگ سیٹ کریں",
"litecoin_mweb_description": "MWEB ایک نیا پروٹوکول ہے جو لیٹیکوئن میں تیز ، سستا اور زیادہ نجی لین دین لاتا ہے",
"litecoin_mweb_dismiss": "خارج",
"litecoin_mweb_display_card": "MWEB کارڈ دکھائیں", "litecoin_mweb_display_card": "MWEB کارڈ دکھائیں",
"litecoin_mweb_enable_later": "آپ ڈسپلے کی ترتیبات کے تحت MWEB کو دوبارہ فعال کرنے کا انتخاب کرسکتے ہیں۔",
"litecoin_mweb_pegin": "پیگ میں",
"litecoin_mweb_pegout": "پیگ آؤٹ",
"litecoin_mweb_scanning": "MWEB اسکیننگ", "litecoin_mweb_scanning": "MWEB اسکیننگ",
"litecoin_mweb_settings": "MWEB کی ترتیبات", "litecoin_mweb_settings": "MWEB کی ترتیبات",
"litecoin_mweb_warning": "MWEB کا استعمال ابتدائی طور پر m 600mb ڈیٹا ڈاؤن لوڈ کرے گا ، اور نیٹ ورک کی رفتار کے لحاظ سے 30 منٹ تک کا وقت لگ سکتا ہے۔ یہ ابتدائی اعداد و شمار صرف ایک بار ڈاؤن لوڈ کریں گے اور تمام لیٹیکوئن بٹوے کے لئے دستیاب ہوں گے", "litecoin_mweb_warning": "MWEB کا استعمال ابتدائی طور پر m 600mb ڈیٹا ڈاؤن لوڈ کرے گا ، اور نیٹ ورک کی رفتار کے لحاظ سے 30 منٹ تک کا وقت لگ سکتا ہے۔ یہ ابتدائی اعداد و شمار صرف ایک بار ڈاؤن لوڈ کریں گے اور تمام لیٹیکوئن بٹوے کے لئے دستیاب ہوں گے",

View file

@ -36,6 +36,7 @@
"agree": "Đồng ý", "agree": "Đồng ý",
"agree_and_continue": "Đồng ý & Tiếp tục", "agree_and_continue": "Đồng ý & Tiếp tục",
"agree_to": "Bằng cách tạo tài khoản, bạn đồng ý với ", "agree_to": "Bằng cách tạo tài khoản, bạn đồng ý với ",
"alert_notice": "Để ý",
"all": "TẤT CẢ", "all": "TẤT CẢ",
"all_trades": "Tất cả giao dịch", "all_trades": "Tất cả giao dịch",
"all_transactions": "Tất cả giao dịch", "all_transactions": "Tất cả giao dịch",
@ -364,6 +365,11 @@
"ledger_error_wrong_app": "Vui lòng đảm bảo bạn đã mở đúng ứng dụng trên Ledger của mình", "ledger_error_wrong_app": "Vui lòng đảm bảo bạn đã mở đúng ứng dụng trên Ledger của mình",
"ledger_please_enable_bluetooth": "Vui lòng bật Bluetooth để phát hiện Ledger của bạn", "ledger_please_enable_bluetooth": "Vui lòng bật Bluetooth để phát hiện Ledger của bạn",
"light_theme": "Chủ đề sáng", "light_theme": "Chủ đề sáng",
"litecoin_mweb_description": "MWEB là một giao thức mới mang lại các giao dịch nhanh hơn, rẻ hơn và riêng tư hơn cho Litecoin",
"litecoin_mweb_dismiss": "Miễn nhiệm",
"litecoin_mweb_enable_later": "Bạn có thể chọn bật lại MWEB trong cài đặt hiển thị.",
"litecoin_mweb_pegin": "Chốt vào",
"litecoin_mweb_pegout": "Chốt ra",
"live_fee_rates": "Tỷ lệ phí hiện tại qua API", "live_fee_rates": "Tỷ lệ phí hiện tại qua API",
"load_more": "Tải thêm", "load_more": "Tải thêm",
"loading_your_wallet": "Đang tải ví của bạn", "loading_your_wallet": "Đang tải ví của bạn",

View file

@ -36,6 +36,7 @@
"agree": "Jọ rò", "agree": "Jọ rò",
"agree_and_continue": "Jọ Rò àti Tẹ̀síwájú", "agree_and_continue": "Jọ Rò àti Tẹ̀síwájú",
"agree_to": "Tẹ́ ẹ bá dá àkáǹtì ẹ jọ rò ", "agree_to": "Tẹ́ ẹ bá dá àkáǹtì ẹ jọ rò ",
"alert_notice": "Akiyesi",
"all": "Gbogbo", "all": "Gbogbo",
"all_trades": "Gbogbo àwọn pàṣípààrọ̀", "all_trades": "Gbogbo àwọn pàṣípààrọ̀",
"all_transactions": "Gbogbo àwọn àránṣẹ́", "all_transactions": "Gbogbo àwọn àránṣẹ́",
@ -367,7 +368,12 @@
"litecoin_enable_mweb_sync": "Mu mweb ọlọjẹ", "litecoin_enable_mweb_sync": "Mu mweb ọlọjẹ",
"litecoin_mweb": "Mweb", "litecoin_mweb": "Mweb",
"litecoin_mweb_always_scan": "Ṣeto mweb nigbagbogbo n ṣayẹwo", "litecoin_mweb_always_scan": "Ṣeto mweb nigbagbogbo n ṣayẹwo",
"litecoin_mweb_description": "Mweb jẹ ilana ilana tuntun ti o mu iyara wa yiyara, din owo, ati awọn iṣowo ikọkọ diẹ sii si Livcoin",
"litecoin_mweb_dismiss": "Tuka",
"litecoin_mweb_display_card": "Fihan kaadi Mweb", "litecoin_mweb_display_card": "Fihan kaadi Mweb",
"litecoin_mweb_enable_later": "O le yan lati ṣiṣẹ Mweb lẹẹkansi labẹ awọn eto ifihan.",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Peg jade",
"litecoin_mweb_scanning": "Mweb scanning", "litecoin_mweb_scanning": "Mweb scanning",
"litecoin_mweb_settings": "Awọn eto Mweb", "litecoin_mweb_settings": "Awọn eto Mweb",
"litecoin_mweb_warning": "Lilo Mweb yoo wa lakoko igbasilẹ ~ 600MB ti data, o le gba to iṣẹju 30 da lori iyara nẹtiwọọki. Awọn data akọkọ yii yoo ṣe igbasilẹ lẹẹkan si ki o wa fun gbogbo awọn Wolinkun LiveCooin", "litecoin_mweb_warning": "Lilo Mweb yoo wa lakoko igbasilẹ ~ 600MB ti data, o le gba to iṣẹju 30 da lori iyara nẹtiwọọki. Awọn data akọkọ yii yoo ṣe igbasilẹ lẹẹkan si ki o wa fun gbogbo awọn Wolinkun LiveCooin",

View file

@ -36,6 +36,7 @@
"agree": "同意", "agree": "同意",
"agree_and_continue": "同意并继续", "agree_and_continue": "同意并继续",
"agree_to": "创建账户即表示您同意 ", "agree_to": "创建账户即表示您同意 ",
"alert_notice": "注意",
"all": "全部", "all": "全部",
"all_trades": "所有的变化", "all_trades": "所有的变化",
"all_transactions": "所有交易", "all_transactions": "所有交易",
@ -366,7 +367,12 @@
"litecoin_enable_mweb_sync": "启用MWEB扫描", "litecoin_enable_mweb_sync": "启用MWEB扫描",
"litecoin_mweb": "MWEB", "litecoin_mweb": "MWEB",
"litecoin_mweb_always_scan": "设置MWEB总是扫描", "litecoin_mweb_always_scan": "设置MWEB总是扫描",
"litecoin_mweb_description": "MWEB是一项新协议它将更快更便宜和更多的私人交易带给Litecoin",
"litecoin_mweb_dismiss": "解雇",
"litecoin_mweb_display_card": "显示MWEB卡", "litecoin_mweb_display_card": "显示MWEB卡",
"litecoin_mweb_enable_later": "您可以选择在显示设置下再次启用MWEB。",
"litecoin_mweb_pegin": "钉进",
"litecoin_mweb_pegout": "昏倒",
"litecoin_mweb_scanning": "MWEB扫描", "litecoin_mweb_scanning": "MWEB扫描",
"litecoin_mweb_settings": "MWEB设置", "litecoin_mweb_settings": "MWEB设置",
"litecoin_mweb_warning": "使用MWEB最初将下载约600MB的数据并且最多可能需要30分钟的时间具体取决于网络速度。此初始数据只能下载一次并适用于所有莱特币钱包", "litecoin_mweb_warning": "使用MWEB最初将下载约600MB的数据并且最多可能需要30分钟的时间具体取决于网络速度。此初始数据只能下载一次并适用于所有莱特币钱包",

View file

@ -107,6 +107,7 @@ import 'package:cw_bitcoin/pending_bitcoin_transaction.dart';
import 'package:cw_bitcoin/bitcoin_receive_page_option.dart'; import 'package:cw_bitcoin/bitcoin_receive_page_option.dart';
import 'package:cw_bitcoin/bitcoin_wallet.dart'; import 'package:cw_bitcoin/bitcoin_wallet.dart';
import 'package:cw_bitcoin/electrum_wallet.dart'; import 'package:cw_bitcoin/electrum_wallet.dart';
import 'package:cw_bitcoin/electrum_wallet_addresses.dart';
import 'package:cw_bitcoin/bitcoin_unspent.dart'; import 'package:cw_bitcoin/bitcoin_unspent.dart';
import 'package:cw_bitcoin/bitcoin_mnemonic.dart'; import 'package:cw_bitcoin/bitcoin_mnemonic.dart';
import 'package:cw_bitcoin/bitcoin_transaction_priority.dart'; import 'package:cw_bitcoin/bitcoin_transaction_priority.dart';
@ -230,6 +231,7 @@ abstract class Bitcoin {
bool txIsMweb(TransactionInfo txInfo); bool txIsMweb(TransactionInfo txInfo);
Future<void> setMwebEnabled(Object wallet, bool enabled); Future<void> setMwebEnabled(Object wallet, bool enabled);
bool getMwebEnabled(Object wallet); bool getMwebEnabled(Object wallet);
String? getUnusedMwebAddress(Object wallet);
} }
"""; """;