예제 #1
0
        void RequestPay()
        {
            if (Initializer.Default.DefaultAccount == null)
            {
                return;
            }

            var txsetting = FiiiCoinService.Default.GetTxSettings();

            if (txsetting.IsFail)
            {
                return;
            }

            if (txsetting.Value.Encrypt)
            {
                SendMsgData <InputWalletPwdPageTopic> sendMsgData = new SendMsgData <InputWalletPwdPageTopic>();
                sendMsgData.Token = InputWalletPwdPageTopic.UnLockWallet;
                sendMsgData.SetCallBack(Request);
                SendMessenger(Pages.InputWalletPwdPage, sendMsgData);
                UpdatePage(Pages.InputWalletPwdPage);
            }
            else
            {
                Request();
            }
            SendMessenger(Pages.ReceiveAddressPage, SendMessageTopic.Refresh);
        }
예제 #2
0
        private bool CheckAndInputPwd()
        {
            var settingResult = OmniCoinService.Default.GetTxSettings();

            if (settingResult.IsFail)
            {
                return(false);
            }

            if (!settingResult.Value.Encrypt)
            {
                return(true);
            }

            SendMsgData <InputWalletPwdPageTopic> data = new SendMsgData <InputWalletPwdPageTopic>();

            data.Token = InputWalletPwdPageTopic.UnLockWallet;
            data.SetCallBack(() =>
            {
                Export(true);
                OnClosePopup();
            });
            SendMessenger(Pages.InputWalletPwdPage, SendMessageTopic.Refresh);
            SendMessenger(Pages.InputWalletPwdPage, data);
            UpdatePage(Pages.InputWalletPwdPage);
            return(false);
        }
예제 #3
0
        void UnlockWallet()
        {
            SendMsgData <InputWalletPwdPageTopic> sendMsgData = new SendMsgData <InputWalletPwdPageTopic>();

            sendMsgData.Token = InputWalletPwdPageTopic.UnLockWallet;
            sendMsgData.SetCallBack(CreateUrl);
            SendMessenger(Pages.InputWalletPwdPage, SendMessageTopic.Refresh);
            SendMessenger(Pages.InputWalletPwdPage, sendMsgData);
            UpdatePage(Pages.InputWalletPwdPage);
        }
예제 #4
0
        void OnSendSetting()
        {
            SendMsgData <ProfessionalSetting> sendMsgData = new SendMsgData <ProfessionalSetting>();

            sendMsgData.Token = ProfessionalSetting.Clone();
            sendMsgData.SetCallBack(() =>
            {
                ProfessionalSetting = sendMsgData.Token;
            });
            SendMessenger(Pages.SendSettingPage, sendMsgData);
            UpdatePage(Pages.SendSettingPage);
        }
예제 #5
0
        void JumpToConfirmPage()
        {
            var result = FiiiCoinService.Default.EstimateTxFeeForSendMany(Initializer.Default.DefaultAccount.Address, SendItems);

            if (result.IsFail)
            {
                ShowMessage(result.GetErrorMsg());
                return;
            }

            var feeValue = result.Value.TotalFee;

            SendMsgData <ConfirmSendData> data = new SendMsgData <ConfirmSendData>();
            var             amountAll          = SendItems.Sum(x => x.Amount);
            ConfirmSendData sendData           = new ConfirmSendData
            {
                Amount = amountAll / Math.Pow(10, 8),
            };

            sendData.Fee = feeValue / Math.Pow(10, 8);

            var tags = SendItems.Select(x =>
            {
                if (string.IsNullOrEmpty(x.Tag.Trim()))
                {
                    return(x.Address);
                }
                else
                {
                    return(x.Tag);
                }
            });

            sendData.ToAddress = string.Join(";", SendItems.Select(x => x.Tag));

            if (!SendItems.Any(x => x.IsContainFee))
            {
                sendData.ArrivalAmount = sendData.Amount;
            }
            else
            {
                sendData.ArrivalAmount = (amountAll - feeValue) / Math.Pow(10, 8);
            }
            data.Token = sendData;
            data.SetCallBack(() =>
            {
                SendDataToService();
            });

            SendMessenger(Pages.ConfirmSendPage, data);
            UpdatePage(Pages.ConfirmSendPage);
        }
예제 #6
0
        void CheckPwd()
        {
            SendMsgData <InputWalletPwdPageTopic> data = new SendMsgData <InputWalletPwdPageTopic>
            {
                Token = InputWalletPwdPageTopic.UnLockWallet
            };

            data.SetCallBack(JumpToConfirmPage);

            SendMessenger(Pages.InputWalletPwdPage, SendMessageTopic.Refresh);
            SendMessenger(Pages.InputWalletPwdPage, data);
            UpdatePage(Pages.InputWalletPwdPage);
        }
예제 #7
0
        void ChooseAddr()
        {
            SendMsgData <AccountInfo> sendMsgData = new SendMsgData <AccountInfo>();

            sendMsgData.SetCallBack(() => {
                if (sendMsgData.CallBackParams != null && sendMsgData.CallBackParams is AccountInfo)
                {
                    Setting.ChangeAddress = (AccountInfo)sendMsgData.CallBackParams;
                }
                UpdatePage(Pages.SendSettingPage);
            });
            UpdatePage(Pages.Choose_Change_Addr_Page);
            SendMessenger(Pages.Choose_Change_Addr_Page, sendMsgData);
        }
예제 #8
0
        void ChooseUtxo()
        {
            SendMsgData <PageUnspent> sendMsgData = new SendMsgData <PageUnspent>();

            sendMsgData.SetCallBack(() => {
                if (sendMsgData.CallBackParams != null && sendMsgData.CallBackParams is PageUnspent)
                {
                    Setting.UTXO.Add((PageUnspent)sendMsgData.CallBackParams);
                }
                UpdatePage(Pages.SendSettingPage);
            });
            UpdatePage(Pages.Choose_Utxo_Page);
            SendMessenger(Pages.Choose_Utxo_Page, sendMsgData);
        }
예제 #9
0
 void OnMouseDubleClick(UrlInfo selectitem)
 {
     if (selectitem != null)
     {
         SendMsgData <TitleWithParams <string> > sendMsgData = new SendMsgData <TitleWithParams <string> >();
         sendMsgData.Token = new TitleWithParams <string> {
             Params = selectitem.Address, Title = "ReceiveAddress"
         };
         sendMsgData.SetCallBack(() =>
         {
             UpdatePage(Pages.ReceiveAddressPage);
         });
         SendMessenger(Pages.ImagePage, sendMsgData);
         UpdatePage(Pages.ImagePage);
     }
 }
예제 #10
0
        void ImportWithPassword(string filePath)
        {
            SendMsgData <InputWalletPwdPageTopic> data = new SendMsgData <InputWalletPwdPageTopic>();

            data.Token = InputWalletPwdPageTopic.RequestPassword;
            data.SetCallBack(() =>
            {
                var password = "";
                if (data.CallBackParams != null)
                {
                    password = data.CallBackParams.ToString();
                    Import(filePath, password);
                }
            });
            SendMessenger(Pages.InputWalletPwdPage, SendMessageTopic.Refresh);
            SendMessenger(Pages.InputWalletPwdPage, data);
            UpdatePage(Pages.InputWalletPwdPage);
        }
예제 #11
0
        void JumpToConfirmPage()
        {
            long feeValue = 0L;

            if (!StaticViewModel.GlobalViewModel.IsEnableProfessional)
            {
                var result = OmniCoinService.Default.EstimateTxFeeForSendMany(Initializer.Default.DefaultAccount.Address, SendItems);
                if (result.IsFail)
                {
                    ShowMessage(result.GetErrorMsg());
                    return;
                }
                feeValue = result.Value.TotalFee;
            }
            else
            {
                var professionalSetting = StaticViewModel.GlobalViewModel.ProfessionalSetting;
                var result = OmniCoinService.Default.EstimateRawTransaction(
                    professionalSetting.UTXO.Select(x => new DTO.SendRawTransactionInputsIM {
                    TxId = x.Txid, Vout = x.Vout
                }).ToList(),
                    SendItems,
                    professionalSetting.ChangeAddress.Address,
                    Convert.ToInt64(Fee * Math.Pow(10, 8)));
                if (result.IsFail)
                {
                    ShowMessage(result.GetErrorMsg());
                    return;
                }
                feeValue = result.Value.TotalFee;
            }



            SendMsgData <ConfirmSendData> data = new SendMsgData <ConfirmSendData>();
            var             amountAll          = SendItems.Sum(x => x.Amount);
            ConfirmSendData sendData           = new ConfirmSendData
            {
                Amount = amountAll / Math.Pow(10, 8),
            };

            sendData.Fee = feeValue / Math.Pow(10, 8);

            var tags = SendItems.Select(x =>
            {
                if (string.IsNullOrEmpty(x.Tag.Trim()))
                {
                    return(x.Address);
                }
                else
                {
                    return(x.Tag);
                }
            });

            sendData.ToAddress = string.Join(";", SendItems.Select(x => x.Tag));

            if (!SendItems.Any(x => x.IsContainFee))
            {
                sendData.ArrivalAmount = sendData.Amount;
            }
            else
            {
                if (!StaticViewModel.GlobalViewModel.IsEnableProfessional)
                {
                    sendData.ArrivalAmount = (amountAll - feeValue) / Math.Pow(10, 8);
                }
                else
                {
                    sendData.ArrivalAmount = amountAll / Math.Pow(10, 8);
                }
            }
            data.Token = sendData;
            data.SetCallBack(() =>
            {
                SendDataToService();
            });

            SendMessenger(Pages.ConfirmSendPage, data);
            UpdatePage(Pages.ConfirmSendPage);
        }