Introduced the GetRequiredFees API call

This commit is contained in:
Nelson R. Perez 2018-04-05 11:17:29 -05:00
parent e9c920d469
commit 94986a4786
3 changed files with 176 additions and 1 deletions

View file

@ -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);
}
}

View file

@ -8,21 +8,66 @@ import android.os.Bundle;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
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.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 {
private final String TAG = this.getClass().getName();
@BindView(R.id.text_field)
TextView mTextField;
// In case we want to interact directly with the service
private NetworkService mService;
private Gson gson = new Gson();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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
@ -58,4 +103,50 @@ public class SecondActivity extends AppCompatActivity {
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;
}
}

View file

@ -5,5 +5,48 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
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>