Updated on 2026-08-14

This commit is contained in:
Tangem 2019-04-18 00:20:24 +03:00
parent 6fd870bc9a
commit 5f3d316ab7
10 changed files with 230 additions and 105 deletions

View file

@ -24,9 +24,7 @@ public class ServerApiSoChain {
return requestsCount <= 0;
}
private ResponseListener responseListener;
public interface ResponseListener {
public interface AddressInfoListener {
void onSuccess(SoChain.Response.AddressBalance response);
void onSuccess(SoChain.Response.TxUnspent response);
@ -34,8 +32,22 @@ public class ServerApiSoChain {
void onFail(String message);
}
public void setResponseListener(ResponseListener listener) {
responseListener = listener;
private AddressInfoListener addressInfoListener;
public void setAddressInfoListener(AddressInfoListener listener) {
addressInfoListener = listener;
}
public interface SendTxListener {
void onSuccess(SoChain.Response.SendTx response);
void onFail(String message);
}
private SendTxListener sendTxListener;
public void setSendTxListener(SendTxListener listener) {
sendTxListener = listener;
}
private String getNetwork(Blockchain blockchain) throws Exception {
@ -62,16 +74,16 @@ public class ServerApiSoChain {
Log.i(TAG, "requestAddressBalance onResponse " + response.code());
if (response.code() == 200) {
requestsCount--;
responseListener.onSuccess(response.body());
addressInfoListener.onSuccess(response.body());
} else {
responseListener.onFail(String.valueOf(response.code()));
addressInfoListener.onFail(String.valueOf(response.code()));
}
}
@Override
public void onFailure(@NonNull Call<SoChain.Response.AddressBalance> call, @NonNull Throwable t) {
Log.e(TAG, "requestAddressBalance onFailure " + t.getMessage());
responseListener.onFail(String.valueOf(t.getMessage()));
addressInfoListener.onFail(String.valueOf(t.getMessage()));
}
});
}
@ -87,16 +99,43 @@ public class ServerApiSoChain {
Log.i(TAG, "requestAddressBalance onResponse " + response.code());
if (response.code() == 200) {
requestsCount--;
responseListener.onSuccess(response.body());
addressInfoListener.onSuccess(response.body());
} else {
responseListener.onFail(String.valueOf(response.code()));
addressInfoListener.onFail(String.valueOf(response.code()));
}
}
@Override
public void onFailure(@NonNull Call<SoChain.Response.TxUnspent> call, @NonNull Throwable t) {
Log.e(TAG, "requestAddressBalance onFailure " + t.getMessage());
responseListener.onFail(String.valueOf(t.getMessage()));
addressInfoListener.onFail(String.valueOf(t.getMessage()));
}
});
}
public void requestSendTransaction(Blockchain blockchain, String txHEX) throws Exception {
requestsCount++;
SoChainApi api = App.Companion.getNetworkComponent().getRetrofitSoChain().create(SoChainApi.class);
SoChain.Request.SendTx tx=new SoChain.Request.SendTx();
tx.setTx_hex(txHEX);
Call<SoChain.Response.SendTx> call = api.sendTransaction(getNetwork(blockchain), tx);
call.enqueue(new Callback<SoChain.Response.SendTx>() {
@Override
public void onResponse(@NonNull Call<SoChain.Response.SendTx> call, @NonNull Response<SoChain.Response.SendTx> response) {
Log.i(TAG, "requestAddressBalance onResponse " + response.code());
if (response.code() == 200) {
requestsCount--;
sendTxListener.onSuccess(response.body());
} else {
sendTxListener.onFail(String.valueOf(response.code()));
}
}
@Override
public void onFailure(@NonNull Call<SoChain.Response.SendTx> call, @NonNull Throwable t) {
Log.e(TAG, "requestAddressBalance onFailure " + t.getMessage());
sendTxListener.onFail(String.valueOf(t.getMessage()));
}
});
}

View file

@ -19,5 +19,5 @@ public interface SoChainApi {
@Headers("Content-Type: application/json")
@POST(Server.ApiSoChain.Method.SEND_TRANSACTION)
Call<SoChain.Response> sendTransaction(@Path("network") String network, @Body SoChain.Request.SendTx body);
Call<SoChain.Response.SendTx> sendTransaction(@Path("network") String network, @Body SoChain.Request.SendTx body);
}

View file

@ -42,5 +42,15 @@ class SoChain {
var data: Data? = null
}
class SendTx {
class Data {
var network: String? = null
var txid: String? = null
var tx_hex: String? = null
}
var status: String? = null
var data: Data? = null
}
}
}