Search in sources :

Example 1 with SendTransactionDetailsView

use of com.samourai.wallet.widgets.SendTransactionDetailsView in project samourai-wallet-android by Samourai-Wallet.

the class SendActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_send);
    setSupportActionBar(findViewById(R.id.toolbar_send));
    Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
    setTitle("");
    // CustomView for showing and hiding body of th UI
    sendTransactionDetailsView = findViewById(R.id.sendTransactionDetailsView);
    // ViewSwitcher Element for toolbar section of the UI.
    // we can switch between Form and review screen with this element
    amountViewSwitcher = findViewById(R.id.toolbar_view_switcher);
    // Input elements from toolbar section of the UI
    toAddressEditText = findViewById(R.id.edt_send_to);
    btcEditText = findViewById(R.id.amountBTC);
    satEditText = findViewById(R.id.amountSat);
    tvToAddress = findViewById(R.id.to_address_review);
    tvReviewSpendAmount = findViewById(R.id.send_review_amount);
    tvReviewSpendAmountInSats = findViewById(R.id.send_review_amount_in_sats);
    tvMaxAmount = findViewById(R.id.totalBTC);
    // view elements from review segment and transaction segment can be access through respective
    // methods which returns root viewGroup
    btnReview = sendTransactionDetailsView.getTransactionView().findViewById(R.id.review_button);
    cahootsSwitch = sendTransactionDetailsView.getTransactionView().findViewById(R.id.cahoots_switch);
    ricochetHopsSwitch = sendTransactionDetailsView.getTransactionView().findViewById(R.id.ricochet_hops_switch);
    ricochetTitle = sendTransactionDetailsView.getTransactionView().findViewById(R.id.ricochet_desc);
    ricochetDesc = sendTransactionDetailsView.getTransactionView().findViewById(R.id.ricochet_title);
    ricochetStaggeredDelivery = sendTransactionDetailsView.getTransactionView().findViewById(R.id.ricochet_staggered_option);
    ricochetStaggeredOptionGroup = sendTransactionDetailsView.getTransactionView().findViewById(R.id.ricochet_staggered_option_group);
    tvSelectedFeeRate = sendTransactionDetailsView.getTransactionReview().findViewById(R.id.selected_fee_rate);
    tvSelectedFeeRateLayman = sendTransactionDetailsView.getTransactionReview().findViewById(R.id.selected_fee_rate_in_layman);
    tvTotalFee = sendTransactionDetailsView.getTransactionReview().findViewById(R.id.total_fee);
    btnSend = sendTransactionDetailsView.getTransactionReview().findViewById(R.id.send_btn);
    feeSeekBar = sendTransactionDetailsView.getTransactionReview().findViewById(R.id.fee_seekbar);
    tvEstimatedBlockWait = sendTransactionDetailsView.getTransactionReview().findViewById(R.id.est_block_time);
    feeSeekBar = sendTransactionDetailsView.getTransactionReview().findViewById(R.id.fee_seekbar);
    cahootsGroup = sendTransactionDetailsView.findViewById(R.id.cohoots_options);
    cahootsStatusText = sendTransactionDetailsView.findViewById(R.id.cahoot_status_text);
    totalMinerFeeLayout = sendTransactionDetailsView.getTransactionReview().findViewById(R.id.total_miner_fee_group);
    cahootsNotice = sendTransactionDetailsView.findViewById(R.id.cahoots_not_enabled_notice);
    btcEditText.addTextChangedListener(BTCWatcher);
    btcEditText.setFilters(new InputFilter[] { new DecimalDigitsInputFilter(8, 8) });
    satEditText.addTextChangedListener(satWatcher);
    toAddressEditText.addTextChangedListener(AddressWatcher);
    btnReview.setOnClickListener(v -> review());
    btnSend.setOnClickListener(v -> initiateSpend());
    View.OnClickListener clipboardCopy = view -> {
        ClipboardManager cm = (ClipboardManager) this.getSystemService(Context.CLIPBOARD_SERVICE);
        ClipData clipData = android.content.ClipData.newPlainText("Miner fee", tvTotalFee.getText());
        if (cm != null) {
            cm.setPrimaryClip(clipData);
            Toast.makeText(this, getString(R.string.copied_to_clipboard), Toast.LENGTH_SHORT).show();
        }
    };
    tvTotalFee.setOnClickListener(clipboardCopy);
    tvSelectedFeeRate.setOnClickListener(clipboardCopy);
    SPEND_TYPE = SPEND_BOLTZMANN;
    saveChangeIndexes();
    setUpRicochet();
    setUpCahoots();
    setUpFee();
    setBalance();
    enableReviewButton(false);
    setUpBoltzman();
    validateSpend();
    checkDeepLinks();
    if (getIntent().getExtras().containsKey("preselected")) {
        preselectedUTXOs = PreSelectUtil.getInstance().getPreSelected(getIntent().getExtras().getString("preselected"));
        setBalance();
        if (preselectedUTXOs != null && preselectedUTXOs.size() > 0) {
            cahootsGroup.setVisibility(View.GONE);
            ricochetHopsSwitch.setVisibility(View.GONE);
            ricochetTitle.setVisibility(View.GONE);
            ricochetDesc.setVisibility(View.GONE);
        }
    } else {
        Disposable disposable = APIFactory.getInstance(getApplicationContext()).walletBalanceObserver.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(aLong -> {
            if (balance == aLong) {
                return;
            }
            setBalance();
        }, Throwable::printStackTrace);
        compositeDisposables.add(disposable);
        // Update fee
        Disposable feeDisposable = Observable.fromCallable(() -> APIFactory.getInstance(getApplicationContext()).getDynamicFees()).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe(t -> {
            Log.i(TAG, "Fees : ".concat(t.toString()));
            setUpFee();
        }, Throwable::printStackTrace);
        compositeDisposables.add(feeDisposable);
        if (getIntent().getExtras() != null) {
            if (!getIntent().getExtras().containsKey("balance")) {
                return;
            }
            balance = getIntent().getExtras().getLong("balance");
        }
    }
}
Also used : MonetaryUtil(com.samourai.wallet.util.MonetaryUtil) BIP47Util(com.samourai.wallet.bip47.BIP47Util) Bundle(android.os.Bundle) Completable(io.reactivex.Completable) Uri(android.net.Uri) Group(android.support.constraint.Group) WhirlpoolMeta(com.samourai.wallet.whirlpool.WhirlpoolMeta) Cahoots(com.samourai.wallet.cahoots.Cahoots) JSONException(org.json.JSONException) Vector(java.util.Vector) UTXOSActivity(com.samourai.wallet.utxos.UTXOSActivity) Handler(android.os.Handler) Looper(android.os.Looper) Map(java.util.Map) ClipboardManager(android.content.ClipboardManager) BigInteger(java.math.BigInteger) Triple(org.apache.commons.lang3.tuple.Triple) Log(android.util.Log) ContextCompat(android.support.v4.content.ContextCompat) TxosLinkerOptionEnum(com.samourai.boltzmann.linker.TxosLinkerOptionEnum) AppUtil(com.samourai.wallet.util.AppUtil) TorManager(com.samourai.wallet.tor.TorManager) TransactionOutput(org.bitcoinj.core.TransactionOutput) BIP47Meta(com.samourai.wallet.bip47.BIP47Meta) Snackbar(android.support.design.widget.Snackbar) InputFilter(android.text.InputFilter) TextWatcher(android.text.TextWatcher) FormatsUtil(com.samourai.wallet.util.FormatsUtil) DecimalDigitsInputFilter(com.samourai.wallet.util.DecimalDigitsInputFilter) AddressFactory(com.samourai.wallet.util.AddressFactory) Editable(android.text.Editable) NumberFormat(java.text.NumberFormat) ArrayList(java.util.ArrayList) TxAnimUIActivity(com.samourai.wallet.TxAnimUIActivity) SeekBar(android.widget.SeekBar) SamouraiWallet(com.samourai.wallet.SamouraiWallet) Toast(android.widget.Toast) Menu(android.view.Menu) PaymentAddress(com.samourai.wallet.bip47.rpc.PaymentAddress) Observable(io.reactivex.Observable) RicochetMeta(com.samourai.wallet.ricochet.RicochetMeta) CharSequenceX(com.samourai.wallet.util.CharSequenceX) BoltzmannSettings(com.samourai.boltzmann.beans.BoltzmannSettings) Bech32Util(com.samourai.wallet.segwit.bech32.Bech32Util) IOException(java.io.IOException) TypedValue(android.util.TypedValue) Observer(io.reactivex.Observer) PaynymSelectModalFragment(com.samourai.wallet.fragments.PaynymSelectModalFragment) ConstraintLayout(android.support.constraint.ConstraintLayout) APIFactory(com.samourai.wallet.api.APIFactory) EditText(android.widget.EditText) HD_WalletFactory(com.samourai.wallet.hd.HD_WalletFactory) PrefsUtil(com.samourai.wallet.util.PrefsUtil) LinearLayout(android.widget.LinearLayout) Switch(android.widget.Switch) Transaction(org.bitcoinj.core.Transaction) URLDecoder(java.net.URLDecoder) Coin(org.bitcoinj.core.Coin) DecimalFormatSymbols(java.text.DecimalFormatSymbols) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) JSONObject(org.json.JSONObject) CheckBox(android.widget.CheckBox) TxProcessor(com.samourai.boltzmann.processor.TxProcessor) Locale(java.util.Locale) SamouraiActivity(com.samourai.wallet.SamouraiActivity) View(android.view.View) Button(android.widget.Button) ManualCahootsActivity(com.samourai.wallet.send.cahoots.ManualCahootsActivity) Schedulers(io.reactivex.schedulers.Schedulers) ParseException(java.text.ParseException) Splitter(com.google.common.base.Splitter) AccessFactory(com.samourai.wallet.access.AccessFactory) WebUtil(com.samourai.wallet.util.WebUtil) ViewSwitcher(android.widget.ViewSwitcher) PreSelectUtil(com.samourai.wallet.utxos.PreSelectUtil) SendAddressUtil(com.samourai.wallet.util.SendAddressUtil) ViewGroup(android.view.ViewGroup) BIP84Util(com.samourai.wallet.segwit.BIP84Util) AlertDialog(android.app.AlertDialog) Objects(java.util.Objects) List(java.util.List) CompositeDisposable(io.reactivex.disposables.CompositeDisposable) Disposable(io.reactivex.disposables.Disposable) TextView(android.widget.TextView) Script(org.bitcoinj.script.Script) Address(org.bitcoinj.core.Address) Txos(com.samourai.boltzmann.beans.Txos) UnsupportedEncodingException(java.io.UnsupportedEncodingException) Typeface(android.graphics.Typeface) Context(android.content.Context) Intent(android.content.Intent) HashMap(java.util.HashMap) PayloadUtil(com.samourai.wallet.payload.PayloadUtil) BIP49Util(com.samourai.wallet.segwit.BIP49Util) MnemonicException(org.bitcoinj.crypto.MnemonicException) CahootsUtil(com.samourai.wallet.cahoots.CahootsUtil) SendTransactionDetailsView(com.samourai.wallet.widgets.SendTransactionDetailsView) MenuItem(android.view.MenuItem) InputMethodManager(android.view.inputmethod.InputMethodManager) Hex(org.bouncycastle.util.encoders.Hex) ClipData(android.content.ClipData) SelectCahootsType(com.samourai.wallet.send.cahoots.SelectCahootsType) RicochetActivity(com.samourai.wallet.ricochet.RicochetActivity) DialogInterface(android.content.DialogInterface) UTXOCoin(com.samourai.wallet.utxos.models.UTXOCoin) SegwitAddress(com.samourai.wallet.segwit.SegwitAddress) CompoundButton(android.widget.CompoundButton) PayNymDetailsActivity(com.samourai.wallet.paynym.paynymDetails.PayNymDetailsActivity) DecimalFormat(java.text.DecimalFormat) R(com.samourai.wallet.R) PaymentCode(com.samourai.wallet.bip47.rpc.PaymentCode) TxProcessorResult(com.samourai.boltzmann.processor.TxProcessorResult) BatchSendActivity(com.samourai.wallet.BatchSendActivity) TimeUnit(java.util.concurrent.TimeUnit) CameraFragmentBottomSheet(com.samourai.wallet.fragments.CameraFragmentBottomSheet) Activity(android.app.Activity) Collections(java.util.Collections) JSONArray(org.json.JSONArray) ClipboardManager(android.content.ClipboardManager) CompositeDisposable(io.reactivex.disposables.CompositeDisposable) Disposable(io.reactivex.disposables.Disposable) DecimalDigitsInputFilter(com.samourai.wallet.util.DecimalDigitsInputFilter) View(android.view.View) TextView(android.widget.TextView) SendTransactionDetailsView(com.samourai.wallet.widgets.SendTransactionDetailsView) ClipData(android.content.ClipData)

Aggregations

Activity (android.app.Activity)1 AlertDialog (android.app.AlertDialog)1 ClipData (android.content.ClipData)1 ClipboardManager (android.content.ClipboardManager)1 Context (android.content.Context)1 DialogInterface (android.content.DialogInterface)1 Intent (android.content.Intent)1 Typeface (android.graphics.Typeface)1 Uri (android.net.Uri)1 Bundle (android.os.Bundle)1 Handler (android.os.Handler)1 Looper (android.os.Looper)1 ConstraintLayout (android.support.constraint.ConstraintLayout)1 Group (android.support.constraint.Group)1 Snackbar (android.support.design.widget.Snackbar)1 ContextCompat (android.support.v4.content.ContextCompat)1 Editable (android.text.Editable)1 InputFilter (android.text.InputFilter)1 TextWatcher (android.text.TextWatcher)1 Log (android.util.Log)1