Introduced the GetRequiredFees API call
This commit is contained in:
parent
e9c920d469
commit
94986a4786
3 changed files with 176 additions and 1 deletions
|
@ -0,0 +1,41 @@
|
||||||
|
package cy.agorise.graphenej.api.calls;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import cy.agorise.graphenej.Asset;
|
||||||
|
import cy.agorise.graphenej.BaseOperation;
|
||||||
|
import cy.agorise.graphenej.BlockData;
|
||||||
|
import cy.agorise.graphenej.RPC;
|
||||||
|
import cy.agorise.graphenej.Transaction;
|
||||||
|
import cy.agorise.graphenej.models.ApiCall;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper around the "get_required_fees" API call
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class GetRequiredFees implements ApiCallable {
|
||||||
|
|
||||||
|
private Transaction mTransaction;
|
||||||
|
private Asset mFeeAsset;
|
||||||
|
|
||||||
|
public GetRequiredFees(Transaction transaction, Asset feeAsset){
|
||||||
|
this.mTransaction = transaction;
|
||||||
|
this.mFeeAsset = feeAsset;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GetRequiredFees(List<BaseOperation> operations, Asset feeAsset){
|
||||||
|
this.mTransaction = new Transaction(new BlockData(0, 0, 0), operations);
|
||||||
|
this.mFeeAsset = feeAsset;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ApiCall toApiCall(int apiId, long sequenceId) {
|
||||||
|
// Building a new API call to request fees information
|
||||||
|
ArrayList<Serializable> accountParams = new ArrayList<>();
|
||||||
|
accountParams.add((Serializable) mTransaction.getOperations());
|
||||||
|
accountParams.add(this.mFeeAsset.getObjectId());
|
||||||
|
return new ApiCall(apiId, RPC.CALL_GET_REQUIRED_FEES, accountParams, RPC.VERSION, sequenceId);
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,21 +8,66 @@ import android.os.Bundle;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.google.common.primitives.UnsignedLong;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
|
import butterknife.OnClick;
|
||||||
|
import cy.agorise.graphenej.Asset;
|
||||||
|
import cy.agorise.graphenej.AssetAmount;
|
||||||
|
import cy.agorise.graphenej.BaseOperation;
|
||||||
|
import cy.agorise.graphenej.UserAccount;
|
||||||
import cy.agorise.graphenej.api.ApiAccess;
|
import cy.agorise.graphenej.api.ApiAccess;
|
||||||
import cy.agorise.graphenej.api.android.NetworkService;
|
import cy.agorise.graphenej.api.android.NetworkService;
|
||||||
|
import cy.agorise.graphenej.api.android.RxBus;
|
||||||
|
import cy.agorise.graphenej.api.calls.GetRequiredFees;
|
||||||
|
import cy.agorise.graphenej.models.JsonRpcResponse;
|
||||||
|
import cy.agorise.graphenej.operations.LimitOrderCreateOperation;
|
||||||
|
import cy.agorise.graphenej.operations.TransferOperation;
|
||||||
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
|
import io.reactivex.functions.Consumer;
|
||||||
|
|
||||||
public class SecondActivity extends AppCompatActivity {
|
public class SecondActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private final String TAG = this.getClass().getName();
|
private final String TAG = this.getClass().getName();
|
||||||
|
|
||||||
|
@BindView(R.id.text_field)
|
||||||
|
TextView mTextField;
|
||||||
|
|
||||||
// In case we want to interact directly with the service
|
// In case we want to interact directly with the service
|
||||||
private NetworkService mService;
|
private NetworkService mService;
|
||||||
|
|
||||||
|
private Gson gson = new Gson();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_second);
|
setContentView(R.layout.activity_second);
|
||||||
|
|
||||||
|
ButterKnife.bind(this);
|
||||||
|
|
||||||
|
RxBus.getBusInstance()
|
||||||
|
.asFlowable()
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(new Consumer<Object>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(Object message) throws Exception {
|
||||||
|
if(message instanceof String){
|
||||||
|
Log.d(TAG,"Got text message: "+(message));
|
||||||
|
mTextField.setText(mTextField.getText() + ((String) message) + "\n");
|
||||||
|
}else if(message instanceof JsonRpcResponse){
|
||||||
|
mTextField.setText(mTextField.getText() + gson.toJson(message, JsonRpcResponse.class) + "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -58,4 +103,50 @@ public class SecondActivity extends AppCompatActivity {
|
||||||
Log.d(TAG,"onServiceDisconnected");
|
Log.d(TAG,"onServiceDisconnected");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@OnClick(R.id.transfer_fee_usd)
|
||||||
|
public void onTransferFeeUsdClicked(View v){
|
||||||
|
List<BaseOperation> operations = getTransferOperation();
|
||||||
|
mService.sendMessage(new GetRequiredFees(operations, new Asset("1.3.121")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnClick(R.id.transfer_fee_bts)
|
||||||
|
public void onTransferFeeBtsClicked(View v){
|
||||||
|
List<BaseOperation> operations = getTransferOperation();
|
||||||
|
mService.sendMessage(new GetRequiredFees(operations, new Asset("1.3.0")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnClick(R.id.exchange_fee_usd)
|
||||||
|
public void onExchangeFeeUsdClicked(View v){
|
||||||
|
List<BaseOperation> operations = getExchangeOperation();
|
||||||
|
mService.sendMessage(new GetRequiredFees(operations, new Asset("1.3.121")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnClick(R.id.exchange_fee_bts)
|
||||||
|
public void onExchangeFeeBtsClicked(View v){
|
||||||
|
List<BaseOperation> operations = getExchangeOperation();
|
||||||
|
mService.sendMessage(new GetRequiredFees(operations, new Asset("1.3.0")));
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<BaseOperation> getTransferOperation(){
|
||||||
|
TransferOperation transferOperation = new TransferOperation(
|
||||||
|
new UserAccount("1.2.138632"),
|
||||||
|
new UserAccount("1.2.129848"),
|
||||||
|
new AssetAmount(UnsignedLong.ONE, new Asset("1.3.0")));
|
||||||
|
ArrayList<BaseOperation> operations = new ArrayList();
|
||||||
|
operations.add(transferOperation);
|
||||||
|
return operations;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<BaseOperation> getExchangeOperation() {
|
||||||
|
LimitOrderCreateOperation operation = new LimitOrderCreateOperation(
|
||||||
|
new UserAccount("1.2.138632"),
|
||||||
|
new AssetAmount(UnsignedLong.valueOf(10000), new Asset("1.3.0")),
|
||||||
|
new AssetAmount(UnsignedLong.valueOf(10), new Asset("1.3.121")),
|
||||||
|
1000000,
|
||||||
|
true);
|
||||||
|
ArrayList<BaseOperation> operations = new ArrayList();
|
||||||
|
operations.add(operation);
|
||||||
|
return operations;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,5 +5,48 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="com.luminiasoft.labs.sample.SecondActivity">
|
tools:context="com.luminiasoft.labs.sample.SecondActivity">
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/text_field"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:lines="20"
|
||||||
|
app:layout_constraintRight_toRightOf="parent"
|
||||||
|
app:layout_constraintLeft_toLeftOf="parent"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/buttons_container"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"/>
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/buttons_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:weightSum="4"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent">
|
||||||
|
<Button
|
||||||
|
android:id="@+id/transfer_fee_usd"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:textSize="11sp"
|
||||||
|
android:text="Transfer (USD)"/>
|
||||||
|
<Button
|
||||||
|
android:id="@+id/transfer_fee_bts"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:textSize="11sp"
|
||||||
|
android:text="Transfer (BTS)"/>
|
||||||
|
<Button
|
||||||
|
android:id="@+id/exchange_fee_usd"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:textSize="11sp"
|
||||||
|
android:text="Exchange (USD)"/>
|
||||||
|
<Button
|
||||||
|
android:id="@+id/exchange_fee_bts"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:textSize="11sp"
|
||||||
|
android:text="Exchange (BTS)"/>
|
||||||
|
</LinearLayout>
|
||||||
</android.support.constraint.ConstraintLayout>
|
</android.support.constraint.ConstraintLayout>
|
||||||
|
|
Loading…
Reference in a new issue