下面列出了怎么用io.reactivex.rxjava3.disposables.CompositeDisposable的API类实例代码及写法,或者点击链接到github查看源代码。
private static void checkIfLnUrl(Context ctx, CompositeDisposable compositeDisposable, @NonNull String inputString, OnDataDecodedListener listener) {
LnUrlUtil.readLnUrl(ctx, inputString, new LnUrlUtil.OnLnUrlReadListener() {
@Override
public void onValidLnUrlWithdraw(LnUrlWithdrawResponse withdrawResponse) {
listener.onValidLnurlWithdraw(withdrawResponse);
}
@Override
public void onValidLnUrlPayRequest() {
// ToDo: implement
listener.onValidLnurlPay();
}
@Override
public void onError(String error, int duration) {
listener.onError(error, duration);
}
@Override
public void onNoLnUrlData() {
checkIfRemoteConnection(ctx, compositeDisposable, inputString, listener);
}
});
}
private static void checkIfLnOrBitcoinInvoice(Context ctx, CompositeDisposable compositeDisposable, @NonNull String inputString, OnDataDecodedListener listener) {
InvoiceUtil.readInvoice(ctx, compositeDisposable, inputString, new InvoiceUtil.OnReadInvoiceCompletedListener() {
@Override
public void onValidLightningInvoice(PayReq paymentRequest, String invoice) {
listener.onValidLightningInvoice(paymentRequest, invoice);
}
@Override
public void onValidBitcoinInvoice(String address, long amount, String message) {
listener.onValidBitcoinInvoice(address, amount, message);
}
@Override
public void onError(String error, int duration) {
listener.onError(error, duration);
}
@Override
public void onNoInvoiceData() {
// No Invoice or Address either, we have unrecognizable data
listener.onError(ctx.getString(R.string.string_analyzer_unrecognized_data), RefConstants.ERROR_DURATION_SHORT);
}
});
}
private static void checkIfNodeUri(Context ctx, CompositeDisposable compositeDisposable, @NonNull String inputString, OnDataDecodedListener listener) {
LightningNodeUri nodeUri = LightningParser.parseNodeUri(inputString);
if (nodeUri != null) {
listener.onValidNodeUri(nodeUri);
} else {
checkIfLnOrBitcoinInvoice(ctx, compositeDisposable, inputString, listener);
}
}
private static void decodeLightningInvoice(Context ctx, OnReadInvoiceCompletedListener listener, String invoice, CompositeDisposable compositeDisposable) {
PayReqString decodePaymentRequest = PayReqString.newBuilder()
.setPayReq(invoice)
.build();
compositeDisposable.add(LndConnection.getInstance().getLightningService().decodePayReq(decodePaymentRequest)
.timeout(RefConstants.TIMEOUT_SHORT * TorUtil.getTorTimeoutMultiplier(), TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(paymentRequest -> {
ZapLog.debug(LOG_TAG, paymentRequest.toString());
if (paymentRequest.getTimestamp() + paymentRequest.getExpiry() < System.currentTimeMillis() / 1000) {
// Show error: payment request expired.
listener.onError(ctx.getString(R.string.error_paymentRequestExpired), RefConstants.ERROR_DURATION_SHORT);
} else if (paymentRequest.getNumSatoshis() == 0) {
// Disable 0 sat invoices
listener.onError(ctx.getString(R.string.error_notAPaymentRequest), RefConstants.ERROR_DURATION_LONG);
} else {
listener.onValidLightningInvoice(paymentRequest, invoice);
}
}, throwable -> {
// If LND can't decode the payment request, show the error LND throws (always english)
listener.onError(throwable.getMessage(), RefConstants.ERROR_DURATION_MEDIUM);
ZapLog.debug(LOG_TAG, throwable.getMessage());
}));
}
BaseDialog(Builder builder) {
super(builder.context);
mBuilder = builder;
mCompositeDisposable = new CompositeDisposable();
setCancelable(builder.cancelable);
setCanceledOnTouchOutside(builder.canceledOnTouchOutside);
setOnShowListener(builder.showListener);
setOnDismissListener(builder.dismissListener);
setOnCancelListener(builder.cancelListener);
setOnKeyListener(builder.keyListener);
getWindow().setSoftInputMode(mBuilder.softInputMode);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
compositeDisposable = new CompositeDisposable();
}
@NonNull
public CompositeDisposable getCompositeDisposable() {
return compositeDisposable;
}
public HistoryItemAdapter(List<HistoryListItem> dataset, TransactionSelectListener transactionSelectListener, CompositeDisposable compositeDisposable) {
mItems = dataset;
mTransactionSelectListener = transactionSelectListener;
mCompositeDisposable = compositeDisposable;
}
public void setCompositeDisposable(CompositeDisposable compositeDisposable) {
mCompositeDisposable = compositeDisposable;
}
public static void analyze(Context ctx, CompositeDisposable compositeDisposable, @NonNull String inputString, OnDataDecodedListener listener) {
checkIfLnUrl(ctx, compositeDisposable, inputString, listener);
}
/**
* 获取观察者集合
*
* @return
*/
public CompositeDisposable getCompositeDisposable() {
return mCompositeDisposable;
}