public async void quickScan() { ICustomQRScanner scanner = DependencyService.Get <ICustomQRScanner>(); if (scanner != null && scanner.needsPermission()) { if (!await scanner.requestPermission()) { return; } } var options = new ZXing.Mobile.MobileBarcodeScanningOptions(); // Restrict to QR codes only options.PossibleFormats = new List <ZXing.BarcodeFormat>() { ZXing.BarcodeFormat.QR_CODE }; var ScannerPage = new ZXingScannerPage(options); ScannerPage.OnScanResult += (result) => { ScannerPage.IsScanning = false; Device.BeginInvokeOnMainThread(() => { Navigation.PopAsync(Config.defaultXamarinAnimations); processQRResult(result.Text); }); }; await Navigation.PushAsync(ScannerPage, Config.defaultXamarinAnimations); }
private void onNavigating(object sender, WebNavigatingEventArgs e) { string current_url = HttpUtility.UrlDecode(e.Url); if (current_url.Equals("ixian:onload", StringComparison.Ordinal)) { onLoad(); } else if (current_url.Equals("ixian:back", StringComparison.Ordinal)) { Navigation.PopAsync(Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:error", StringComparison.Ordinal)) { displaySpixiAlert("SPIXI Account", "Please type a wallet address.", "OK"); } else if (current_url.Contains("ixian:request:")) { try { string[] split = current_url.Split(new string[] { "ixian:request:" }, StringSplitOptions.None); byte[] wal = Base58Check.Base58CheckEncoding.DecodePlain(split[1]); onRequest(wal); }catch (Exception) { displaySpixiAlert("Spixi", "Invalid address has been specified.", "OK"); } } else if (current_url.Equals("ixian:quickscan", StringComparison.Ordinal)) { ICustomQRScanner scanner = DependencyService.Get <ICustomQRScanner>(); if (scanner != null && scanner.useCustomQRScanner()) { Logging.error("Custom scanner not implemented"); e.Cancel = true; return; } quickScan(); } else if (current_url.Contains("ixian:qrresult:")) { string[] split = current_url.Split(new string[] { "ixian:qrresult:" }, StringSplitOptions.None); string result = split[1]; processQRResult(result); e.Cancel = true; return; } else { // Otherwise it's just normal navigation e.Cancel = false; return; } e.Cancel = true; }
private void onNavigating(object sender, WebNavigatingEventArgs e) { string current_url = HttpUtility.UrlDecode(e.Url); if (current_url.Equals("ixian:onload", StringComparison.Ordinal)) { onLoaded(); } else if (current_url.Equals("ixian:wallet", StringComparison.Ordinal)) { // Deprecated } else if (current_url.Equals("ixian:quickscan", StringComparison.Ordinal)) { ICustomQRScanner scanner = DependencyService.Get <ICustomQRScanner>(); if (scanner != null && scanner.useCustomQRScanner()) { Utils.sendUiCommand(webView, "quickScanJS"); e.Cancel = true; return; } quickScan(); } else if (current_url.Contains("ixian:qrresult:")) { string[] split = current_url.Split(new string[] { "ixian:qrresult:" }, StringSplitOptions.None); string result = split[1]; processQRResult(result); e.Cancel = true; return; } else if (current_url.Equals("ixian:newchat", StringComparison.Ordinal)) { newChat(); } else if (current_url.Equals("ixian:test", StringComparison.Ordinal)) { displaySpixiAlert("Test", current_url, "Ok"); } else if (current_url.Equals("ixian:newcontact", StringComparison.Ordinal)) { Navigation.PushAsync(new ContactNewPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:sendixi", StringComparison.Ordinal)) { Navigation.PushAsync(new WalletSendPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:receiveixi", StringComparison.Ordinal)) { Navigation.PushAsync(new WalletReceivePage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:avatar", StringComparison.Ordinal)) { //onChangeAvatarAsync(sender, e); } else if (current_url.Equals("ixian:settings", StringComparison.Ordinal)) { onSettings(sender, e); } else if (current_url.Equals("ixian:address", StringComparison.Ordinal)) { Navigation.PushAsync(new MyAddressPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:lock", StringComparison.Ordinal)) { // prepBackground(); Navigation.PushAsync(new SetLockPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:activity", StringComparison.Ordinal)) { // TODO show wallet activity screen } else if (current_url.Equals("ixian:about", StringComparison.Ordinal)) { Device.OpenUri(new Uri(Config.aboutUrl)); } else if (current_url.Equals("ixian:backup", StringComparison.Ordinal)) { Navigation.PushAsync(new BackupPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:encpass", StringComparison.Ordinal)) { Navigation.PushAsync(new EncryptionPassword(), Config.defaultXamarinAnimations); } else if (current_url.Contains("ixian:chat:")) { string[] split = current_url.Split(new string[] { "ixian:chat:" }, StringSplitOptions.None); string id = split[1]; byte[] id_bytes = Base58Check.Base58CheckEncoding.DecodePlain(id); Friend friend = FriendList.getFriend(id_bytes); if (friend == null) { e.Cancel = true; return; } Navigation.PushAsync(new SingleChatPage(friend), Config.defaultXamarinAnimations); } else if (current_url.Contains("ixian:details:")) { string[] split = current_url.Split(new string[] { "ixian:details:" }, StringSplitOptions.None); string id = split[1]; // TODO: handle exceptions byte[] id_bytes = Base58Check.Base58CheckEncoding.DecodePlain(id); Friend friend = FriendList.getFriend(id_bytes); if (friend == null) { e.Cancel = true; return; } Navigation.PushAsync(new ContactDetails(friend), Config.defaultXamarinAnimations); } else if (current_url.Contains("ixian:txdetails:")) { string[] split = current_url.Split(new string[] { "ixian:txdetails:" }, StringSplitOptions.None); string id = split[1]; Transaction transaction = null; foreach (Transaction tx in TransactionCache.transactions) { if (tx.id.Equals(id, StringComparison.Ordinal)) { transaction = tx; break; } } if (transaction == null) { foreach (Transaction tx in TransactionCache.unconfirmedTransactions) { if (tx.id.Equals(id, StringComparison.Ordinal)) { transaction = tx; break; } } if (transaction == null) { e.Cancel = true; return; } } Navigation.PushAsync(new WalletSentPage(transaction), Config.defaultXamarinAnimations); } else if (current_url.Contains("ixian:tab:")) { currentTab = current_url.Split(new string[] { "ixian:tab:" }, StringSplitOptions.None)[1]; } else { // Otherwise it's just normal navigation e.Cancel = false; return; } e.Cancel = true; }
private void onNavigating(object sender, WebNavigatingEventArgs e) { string current_url = HttpUtility.UrlDecode(e.Url); if (onNavigatingGlobal(current_url)) { e.Cancel = true; return; } if (current_url.Equals("ixian:onload", StringComparison.Ordinal)) { onLoaded(); } else if (current_url.Equals("ixian:wallet", StringComparison.Ordinal)) { // Deprecated } else if (current_url.Equals("ixian:quickscan", StringComparison.Ordinal)) { ICustomQRScanner scanner = DependencyService.Get <ICustomQRScanner>(); if (scanner != null && scanner.useCustomQRScanner()) { Logging.error("Custom scanner not implemented"); e.Cancel = true; return; } quickScan(); } else if (current_url.Contains("ixian:qrresult:")) { string[] split = current_url.Split(new string[] { "ixian:qrresult:" }, StringSplitOptions.None); string result = split[1]; processQRResult(result); e.Cancel = true; return; } else if (current_url.Equals("ixian:newchat", StringComparison.Ordinal)) { newChat(); } else if (current_url.Equals("ixian:newcontact", StringComparison.Ordinal)) { Navigation.PushAsync(new ContactNewPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:sendixi", StringComparison.Ordinal)) { Navigation.PushAsync(new WalletSendPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:receiveixi", StringComparison.Ordinal)) { Navigation.PushAsync(new WalletReceivePage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:wixi", StringComparison.Ordinal)) { Navigation.PushAsync(new WIXISendPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:avatar", StringComparison.Ordinal)) { //onChangeAvatarAsync(sender, e); } else if (current_url.Equals("ixian:settings", StringComparison.Ordinal)) { onSettings(sender, e); } else if (current_url.Equals("ixian:address", StringComparison.Ordinal)) { Navigation.PushAsync(new MyAddressPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:lock", StringComparison.Ordinal)) { // prepBackground(); Navigation.PushAsync(new SetLockPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:activity", StringComparison.Ordinal)) { // TODO show wallet activity screen } else if (current_url.Equals("ixian:about", StringComparison.Ordinal)) { #pragma warning disable CS0618 // Type or member is obsolete Device.OpenUri(new Uri(Config.aboutUrl)); #pragma warning restore CS0618 // Type or member is obsolete } else if (current_url.Equals("ixian:guide", StringComparison.Ordinal)) { #pragma warning disable CS0618 // Type or member is obsolete Device.OpenUri(new Uri(Config.guideUrl)); #pragma warning restore CS0618 // Type or member is obsolete } else if (current_url.Equals("ixian:backup", StringComparison.Ordinal)) { Navigation.PushAsync(new BackupPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:encpass", StringComparison.Ordinal)) { Navigation.PushAsync(new EncryptionPassword(), Config.defaultXamarinAnimations); } else if (current_url.Contains("ixian:chat:")) { string[] split = current_url.Split(new string[] { "ixian:chat:" }, StringSplitOptions.None); string id = split[1]; onChat(id, e); } else if (current_url.Contains("ixian:details:")) { string[] split = current_url.Split(new string[] { "ixian:details:" }, StringSplitOptions.None); string id = split[1]; // TODO: handle exceptions byte[] id_bytes = Base58Check.Base58CheckEncoding.DecodePlain(id); Friend friend = FriendList.getFriend(id_bytes); if (friend == null) { e.Cancel = true; return; } Navigation.PushAsync(new ContactDetails(friend), Config.defaultXamarinAnimations); } else if (current_url.Contains("ixian:txdetails:")) { string[] split = current_url.Split(new string[] { "ixian:txdetails:" }, StringSplitOptions.None); string id = split[1]; byte[] b_txid = Transaction.txIdLegacyToV8(id); Transaction transaction = null; foreach (Transaction tx in TransactionCache.transactions) { if (tx.id.SequenceEqual(b_txid)) { transaction = tx; break; } } if (transaction == null) { foreach (Transaction tx in TransactionCache.unconfirmedTransactions) { if (tx.id.SequenceEqual(b_txid)) { transaction = tx; break; } } if (transaction == null) { e.Cancel = true; return; } } Navigation.PushAsync(new WalletSentPage(transaction), Config.defaultXamarinAnimations); } else if (current_url.Contains("ixian:tab:")) { currentTab = current_url.Split(new string[] { "ixian:tab:" }, StringSplitOptions.None)[1]; } else if (current_url.Equals("ixian:apps", StringComparison.Ordinal)) { // prepBackground(); Navigation.PushAsync(new AppsPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:downloads", StringComparison.Ordinal)) { // prepBackground(); Navigation.PushAsync(new DownloadsPage(), Config.defaultXamarinAnimations); } else if (current_url.StartsWith("ixian:viewLog")) { // TODO perhaps move this whole functionality to Logging class and delete spixi.log.zip on start if exists if (File.Exists(Path.Combine(Config.spixiUserFolder, "spixi.log.zip"))) { File.Delete(Path.Combine(Config.spixiUserFolder, "spixi.log.zip")); } if (File.Exists(Path.Combine(Config.spixiUserFolder, "ixian.log.tmp"))) { File.Delete(Path.Combine(Config.spixiUserFolder, "ixian.log.tmp")); } File.Copy(Path.Combine(Config.spixiUserFolder, "ixian.log"), Path.Combine(Config.spixiUserFolder, "ixian.log.tmp")); using (ZipArchive archive = ZipFile.Open(Path.Combine(Config.spixiUserFolder, "spixi.log.zip"), ZipArchiveMode.Create)) { archive.CreateEntryFromFile(Path.Combine(Config.spixiUserFolder, "ixian.log.tmp"), "ixian.log"); if (File.Exists(Path.Combine(Config.spixiUserFolder, "ixian.0.log"))) { archive.CreateEntryFromFile(Path.Combine(Config.spixiUserFolder, "ixian.0.log"), "ixian.0.log"); } } if (File.Exists(Path.Combine(Config.spixiUserFolder, "ixian.log.tmp"))) { File.Delete(Path.Combine(Config.spixiUserFolder, "ixian.log.tmp")); } DependencyService.Get <IFileOperations>().share(Path.Combine(Config.spixiUserFolder, "spixi.log.zip"), "Share Spixi Log File"); } else if (current_url.StartsWith("ixian:onboardingComplete")) { Application.Current.Properties["onboardingComplete"] = true; Application.Current.SavePropertiesAsync(); // Force-save properties for compatibility with WPF SpixiLocalization.addCustomString("OnboardingComplete", "true"); generatePage("index.html"); } else if (current_url.StartsWith("ixian:joinBot")) { Friend friend = FriendList.addFriend(Base58Check.Base58CheckEncoding.DecodePlain("419jmKRKVFcsjmwpDF1XSZ7j1fez6KWaekpiawHvrpyZ8TPVmH1v6bhT2wFc1uddV"), null, "Spixi Group Chat", null, null, 0); if (friend != null) { friend.save(); StreamProcessor.sendContactRequest(friend); } } else { // Otherwise it's just normal navigation e.Cancel = false; return; } e.Cancel = true; }
private void onNavigating(object sender, WebNavigatingEventArgs e) { string current_url = HttpUtility.UrlDecode(e.Url); if (current_url.Equals("ixian:onload", StringComparison.Ordinal)) { onLoaded(); } else if (current_url.Equals("ixian:wallet", StringComparison.Ordinal)) { // Deprecated } else if (current_url.Equals("ixian:quickscan", StringComparison.Ordinal)) { ICustomQRScanner scanner = DependencyService.Get <ICustomQRScanner>(); if (scanner != null && scanner.useCustomQRScanner()) { Logging.error("Custom scanner not implemented"); e.Cancel = true; return; } quickScan(); } else if (current_url.Contains("ixian:qrresult:")) { string[] split = current_url.Split(new string[] { "ixian:qrresult:" }, StringSplitOptions.None); string result = split[1]; processQRResult(result); e.Cancel = true; return; } else if (current_url.Equals("ixian:newchat", StringComparison.Ordinal)) { newChat(); } else if (current_url.Equals("ixian:test", StringComparison.Ordinal)) { displaySpixiAlert("Test", current_url, "Ok"); } else if (current_url.Equals("ixian:newcontact", StringComparison.Ordinal)) { Navigation.PushAsync(new ContactNewPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:sendixi", StringComparison.Ordinal)) { Navigation.PushAsync(new WalletSendPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:receiveixi", StringComparison.Ordinal)) { Navigation.PushAsync(new WalletReceivePage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:avatar", StringComparison.Ordinal)) { //onChangeAvatarAsync(sender, e); } else if (current_url.Equals("ixian:settings", StringComparison.Ordinal)) { onSettings(sender, e); } else if (current_url.Equals("ixian:address", StringComparison.Ordinal)) { Navigation.PushAsync(new MyAddressPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:lock", StringComparison.Ordinal)) { // prepBackground(); Navigation.PushAsync(new SetLockPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:activity", StringComparison.Ordinal)) { // TODO show wallet activity screen } else if (current_url.Equals("ixian:about", StringComparison.Ordinal)) { #pragma warning disable CS0618 // Type or member is obsolete Device.OpenUri(new Uri(Config.aboutUrl)); #pragma warning restore CS0618 // Type or member is obsolete } else if (current_url.Equals("ixian:backup", StringComparison.Ordinal)) { Navigation.PushAsync(new BackupPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:encpass", StringComparison.Ordinal)) { Navigation.PushAsync(new EncryptionPassword(), Config.defaultXamarinAnimations); } else if (current_url.Contains("ixian:chat:")) { string[] split = current_url.Split(new string[] { "ixian:chat:" }, StringSplitOptions.None); string id = split[1]; onChat(id, e); } else if (current_url.Contains("ixian:details:")) { string[] split = current_url.Split(new string[] { "ixian:details:" }, StringSplitOptions.None); string id = split[1]; // TODO: handle exceptions byte[] id_bytes = Base58Check.Base58CheckEncoding.DecodePlain(id); Friend friend = FriendList.getFriend(id_bytes); if (friend == null) { e.Cancel = true; return; } Navigation.PushAsync(new ContactDetails(friend), Config.defaultXamarinAnimations); } else if (current_url.Contains("ixian:txdetails:")) { string[] split = current_url.Split(new string[] { "ixian:txdetails:" }, StringSplitOptions.None); string id = split[1]; Transaction transaction = null; foreach (Transaction tx in TransactionCache.transactions) { if (tx.id.Equals(id, StringComparison.Ordinal)) { transaction = tx; break; } } if (transaction == null) { foreach (Transaction tx in TransactionCache.unconfirmedTransactions) { if (tx.id.Equals(id, StringComparison.Ordinal)) { transaction = tx; break; } } if (transaction == null) { e.Cancel = true; return; } } Navigation.PushAsync(new WalletSentPage(transaction), Config.defaultXamarinAnimations); } else if (current_url.Contains("ixian:tab:")) { currentTab = current_url.Split(new string[] { "ixian:tab:" }, StringSplitOptions.None)[1]; } else if (current_url.Equals("ixian:apps", StringComparison.Ordinal)) { // prepBackground(); Navigation.PushAsync(new AppsPage(), Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:downloads", StringComparison.Ordinal)) { // prepBackground(); Navigation.PushAsync(new DownloadsPage(), Config.defaultXamarinAnimations); } else if (current_url.StartsWith("ixian:appAccept:")) { string session_id = current_url.Substring("ixian:appAccept:".Length); onAppAccept(session_id); } else if (current_url.StartsWith("ixian:appReject:")) { string session_id = current_url.Substring("ixian:appReject:".Length); onAppReject(session_id); } else if (current_url.StartsWith("ixian:hangUp:")) { string session_id = current_url.Substring("ixian:hangUp:".Length); VoIPManager.hangupCall(Crypto.stringToHash(session_id)); } else if (current_url.StartsWith("ixian:viewLog")) { if (File.Exists(Path.Combine(Config.spixiUserFolder, "spixi.log.zip"))) { File.Delete(Path.Combine(Config.spixiUserFolder, "spixi.log.zip")); } using (ZipArchive archive = ZipFile.Open(Path.Combine(Config.spixiUserFolder, "spixi.log.zip"), ZipArchiveMode.Create)) { archive.CreateEntryFromFile(Path.Combine(Config.spixiUserFolder, "ixian.log"), "ixian.log"); } DependencyService.Get <IFileOperations>().share(Path.Combine(Config.spixiUserFolder, "spixi.log.zip"), "Share Spixi Log File"); } else { // Otherwise it's just normal navigation e.Cancel = false; return; } e.Cancel = true; }
private void onNavigating(object sender, WebNavigatingEventArgs e) { string current_url = HttpUtility.UrlDecode(e.Url); if (current_url.Equals("ixian:onload", StringComparison.Ordinal)) { onLoad(); } else if (current_url.Equals("ixian:back", StringComparison.Ordinal)) { Navigation.PopAsync(Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:pick", StringComparison.Ordinal)) { var recipientPage = new WalletRecipientPage(); recipientPage.pickSucceeded += HandlePickSucceeded; Navigation.PushModalAsync(recipientPage); } else if (current_url.Equals("ixian:quickscan", StringComparison.Ordinal)) { ICustomQRScanner scanner = DependencyService.Get <ICustomQRScanner>(); if (scanner != null && scanner.useCustomQRScanner()) { Utils.sendUiCommand(webView, "quickScanJS"); e.Cancel = true; return; } quickScan(); } else if (current_url.Contains("ixian:qrresult:")) { string[] split = current_url.Split(new string[] { "ixian:qrresult:" }, StringSplitOptions.None); string result = split[1]; processQRResult(result); e.Cancel = true; return; } else if (current_url.Equals("ixian:error", StringComparison.Ordinal)) { displaySpixiAlert("SPIXI", "Please type a wallet address.", "OK"); } else if (current_url.Equals("ixian:error2", StringComparison.Ordinal)) { displaySpixiAlert("SPIXI", "Please type an amount.", "OK"); } else if (current_url.Contains("ixian:send:")) { string[] split = current_url.Split(new string[] { "ixian:send:" }, StringSplitOptions.None); // Extract all addresses and amounts string[] addresses_split = split[1].Split(new string[] { "|" }, StringSplitOptions.None); // Go through each entry foreach (string address_and_amount in addresses_split) { if (address_and_amount.Length < 1) { continue; } // Extract the address and amount string[] asplit = address_and_amount.Split(new string[] { ":" }, StringSplitOptions.None); if (asplit.Count() < 2) { continue; } string address = asplit[0]; string amount = asplit[1]; if (Address.validateChecksum(Base58Check.Base58CheckEncoding.DecodePlain(address)) == false) { e.Cancel = true; displaySpixiAlert("Invalid address checksum", "Please make sure you typed the address correctly.", "OK"); return; } string[] amount_split = amount.Split(new string[] { "." }, StringSplitOptions.None); if (amount_split.Length > 2) { displaySpixiAlert("SPIXI", "Please type a correct decimal amount.", "OK"); e.Cancel = true; return; } // Add decimals if none found if (amount_split.Length == 1) { amount = String.Format("{0}.0", amount); } IxiNumber _amount = amount; if (_amount < (long)0) { displaySpixiAlert("SPIXI", "Please type a positive amount.", "OK"); e.Cancel = true; return; } } Navigation.PushAsync(new WalletSend2Page(addresses_split)); } else if (current_url.Contains("ixian:getMaxAmount")) { if (Node.balance > ConsensusConfig.transactionPrice * 2) { // TODO needs to be improved and pubKey length needs to be taken into account Utils.sendUiCommand(webView, "setAmount", (Node.balance - (ConsensusConfig.transactionPrice * 2)).ToString()); } } else { // Otherwise it's just normal navigation e.Cancel = false; return; } e.Cancel = true; }
private void onNavigating(object sender, WebNavigatingEventArgs e) { string current_url = HttpUtility.UrlDecode(e.Url); if (onNavigatingGlobal(current_url)) { e.Cancel = true; return; } if (current_url.Equals("ixian:onload", StringComparison.Ordinal)) { onLoad(); } else if (current_url.Equals("ixian:back", StringComparison.Ordinal)) { Navigation.PopAsync(Config.defaultXamarinAnimations); } else if (current_url.Equals("ixian:quickscan", StringComparison.Ordinal)) { ICustomQRScanner scanner = DependencyService.Get <ICustomQRScanner>(); if (scanner != null && scanner.useCustomQRScanner()) { Logging.error("Custom scanner not implemented"); e.Cancel = true; return; } quickScan(); } else if (current_url.Contains("ixian:qrresult:")) { string[] split = current_url.Split(new string[] { "ixian:qrresult:" }, StringSplitOptions.None); string result = split[1]; processQRResult(result); e.Cancel = true; return; } else if (current_url.Equals("ixian:error", StringComparison.Ordinal)) { displaySpixiAlert(SpixiLocalization._SL("global-invalid-address-title"), SpixiLocalization._SL("global-invalid-address-text"), SpixiLocalization._SL("global-dialog-ok")); } else if (current_url.Equals("ixian:error2", StringComparison.Ordinal)) { displaySpixiAlert(SpixiLocalization._SL("wallet-error-amount-title"), SpixiLocalization._SL("wallet-error-amount-text"), SpixiLocalization._SL("global-dialog-ok")); } else if (current_url.Contains("ixian:send:")) { string[] split = current_url.Split(new string[] { "ixian:send:" }, StringSplitOptions.None); if (split.Count() < 2) { return; } string address_and_amount = split[1]; //displaySpixiAlert(split[0], address_and_amount, SpixiLocalization._SL("global-dialog-ok")); string[] asplit = address_and_amount.Split(new string[] { ":" }, StringSplitOptions.None); if (asplit.Count() < 2) { return; } string address = asplit[0]; string _amount = asplit[1]; IxiNumber amount = _amount; if (amount <= (long)0) { displaySpixiAlert(SpixiLocalization._SL("wallet-error-amount-title"), SpixiLocalization._SL("wallet-error-amount-text"), SpixiLocalization._SL("global-dialog-ok")); e.Cancel = true; return; } sendPayment(address, amount); } else { // Otherwise it's just normal navigation e.Cancel = false; return; } e.Cancel = true; }