Merge branch 'features/transaction' into develop

This commit is contained in:
GME 2019-04-12 19:30:13 +02:00
commit 6c47bf8458
8 changed files with 319 additions and 33 deletions

View file

@ -8,6 +8,7 @@ import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
import com.google.zxing.BarcodeFormat;
@ -22,6 +23,11 @@ public class QrCodeActivity extends AppCompatActivity {
TextView adresseView;
TextView amountView;
private String user_hash;
private String user_password;
private String session_id;
private String wallet_hash;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -32,7 +38,10 @@ public class QrCodeActivity extends AppCompatActivity {
amountView=findViewById(R.id.textViewAmountDisplay);
Intent intent = getIntent();
String wallet_hash = intent.getStringExtra("WALLET_HASH");
user_hash = intent.getStringExtra("USER_HASH");
user_password = intent.getStringExtra("USER_PWD");
session_id = intent.getStringExtra("SESSION_ID");
wallet_hash = intent.getStringExtra("WALLET_HASH");
String amount = intent.getStringExtra("AMOUNT");
try{
generateQrCode(wallet_hash,amount);
@ -51,7 +60,7 @@ public class QrCodeActivity extends AppCompatActivity {
BitMatrix bitMatrix;
String valueToEncode = wallet_hash+";"+amount;
try{
bitMatrix = new MultiFormatWriter().encode(valueToEncode, BarcodeFormat.QR_CODE,350,350);
bitMatrix = new MultiFormatWriter().encode(valueToEncode, BarcodeFormat.QR_CODE,300,300);
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
qrCode.setImageBitmap(bitmap);
@ -61,4 +70,10 @@ public class QrCodeActivity extends AppCompatActivity {
e.getMessage();
}
}
@Override
protected void onStop() {
super.onStop(); // Always call the superclass method first
Toast.makeText(getApplicationContext(), "onStop called", Toast.LENGTH_LONG).show();
}
}

View file

@ -21,6 +21,11 @@ import com.google.android.gms.vision.barcode.BarcodeDetector;
import monnethic.mobile.transaction.ApprovePayementActivity;
public class QrCodeScannerActivity extends AppCompatActivity {
private String wallet_hash;
private String user_hash;
private String user_password;
private String session_id;
SurfaceView surfaceView;
private BarcodeDetector barcodeDector;
private CameraSource cameraSource;
@ -32,6 +37,11 @@ public class QrCodeScannerActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qr_code_scanner);
Intent intent = getIntent();
user_hash = intent.getStringExtra("USER_HASH");
user_password = intent.getStringExtra("USER_PWD");
session_id = intent.getStringExtra("SESSION_ID");
wallet_hash = intent.getStringExtra("WALLET_HASH");
initViews();
}
@ -82,8 +92,11 @@ public class QrCodeScannerActivity extends AppCompatActivity {
if(barcodes.size()!=0){
intentData = barcodes.valueAt(0).displayValue;
Intent scannedQrIntent = new Intent(QrCodeScannerActivity.this, ApprovePayementActivity.class);
scannedQrIntent.putExtra("valueScanned",intentData);
//TODO INTENT
scannedQrIntent.putExtra("VALUE",intentData);
scannedQrIntent.putExtra("USER_HASH",user_hash);
scannedQrIntent.putExtra("USER_PDW",user_password);
scannedQrIntent.putExtra("WALLET_HASH",wallet_hash);
scannedQrIntent.putExtra("SESSION_ID",session_id);
QrCodeScannerActivity.this.startActivity(scannedQrIntent);
finish();
}

View file

@ -0,0 +1,32 @@
package monnethic.mobile.restApi;
import org.json.JSONObject;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import monnethic.mobile.transaction.SendingTransaction;
public class TransactionApiHandler {
public String doTransaction(SendingTransaction sendingTransaction){
HttpCallHandler httpCallHandler = new HttpCallHandler();
try{
String url = Config.TRANSACTION_SENT;
Map<String,String> map = new HashMap<>();
map.put("source_user_hash",sendingTransaction.getSource_user_hash());
map.put("source_user_pwd",sendingTransaction.getSource_user_pwd());
map.put("transaction_from",sendingTransaction.getTransaction_from());
map.put("transaction_to",sendingTransaction.getTransaction_to());
map.put("transaction_amount",sendingTransaction.getTransaction_amount());
map.put("transaction_unit",sendingTransaction.getTransaction_unit());
String response = httpCallHandler.postHttp(new URL(url),map);
JSONObject jsonObject = new JSONObject(response);
return jsonObject.getString("message");
}catch (Exception e){
e.printStackTrace();
}
return "";
}
}

View file

@ -1,14 +1,29 @@
package monnethic.mobile.transaction;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
import monnethic.mobile.restApi.TransactionApiHandler;
public class ApprovePayementActivity extends AppCompatActivity {
TextView textDisplay;
TextView destAddress;
TextView amountDisplay;
Button buttonCancel;
Button buttonVal;
private String wallet_hash;
private String user_hash;
private String user_password;
private String session_id;
String wallet_dest;
String amount;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -16,14 +31,72 @@ public class ApprovePayementActivity extends AppCompatActivity {
setContentView(R.layout.activity_approve_payement);
Intent intent = getIntent();
String stringToDisplay = intent.getStringExtra("valueScanned");
String[] value = intent.getStringExtra("VALUE").split(";");
wallet_dest = value[0];
amount = value[1];
initViews(stringToDisplay);
user_hash = intent.getStringExtra("USER_HASH");
user_password = intent.getStringExtra("USER_PWD");
session_id = intent.getStringExtra("SESSION_ID");
wallet_hash = intent.getStringExtra("WALLET_HASH");
initViews();
}
private void initViews(String stringToDisplay){
textDisplay = findViewById(R.id.textDisplay);
private void initViews(){
destAddress = findViewById(R.id.destAddress);
amountDisplay = findViewById(R.id.amountApprove);
buttonCancel = findViewById(R.id.buttonCancel);
buttonVal = findViewById(R.id.buttonValidate);
textDisplay.setText(stringToDisplay);
destAddress.setText(wallet_dest);
amountDisplay.setText(amount);
buttonCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
buttonVal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sendTransaction();
}
});
}
public void sendTransaction(){
SendingTransaction sendingTransaction = new SendingTransaction(user_hash,user_password,wallet_hash,wallet_dest,amount,"gonette");
try {
String transaction_hash = new TransactionTask().execute(sendingTransaction).get();
if(transaction_hash!=null){
Toast.makeText(this, "transaction id : "+transaction_hash, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "couldn't get transaction id", Toast.LENGTH_SHORT).show();
}
} catch (Exception e){
e.printStackTrace();
}
finish();
}
private class TransactionTask extends AsyncTask<SendingTransaction,String,String> {
@Override
protected String doInBackground(SendingTransaction... sendingTransactions) {
try{
TransactionApiHandler transactionApiHandler = new TransactionApiHandler();
return transactionApiHandler.doTransaction(sendingTransactions[0]);
}catch (Exception e){
e.printStackTrace();
}
return null;
}
}
@Override
protected void onStop() {
super.onStop(); // Always call the superclass method first
Toast.makeText(getApplicationContext(), "onStop called", Toast.LENGTH_LONG).show();
}
}

View file

@ -52,6 +52,9 @@ public class ReceivePayementActivity extends AppCompatActivity {
public void generateQrCodeWithValue(String amount){
Intent generateQrIntent = new Intent(ReceivePayementActivity.this, QrCodeActivity.class);
generateQrIntent.putExtra("USER_HASH",user_hash);
generateQrIntent.putExtra("USER_PDW",user_password);
generateQrIntent.putExtra("SESSION_ID",session_id);
generateQrIntent.putExtra("WALLET_HASH",wallet_hash);
generateQrIntent.putExtra("AMOUNT",amount);
ReceivePayementActivity.this.startActivity(generateQrIntent);

View file

@ -0,0 +1,71 @@
package monnethic.mobile.transaction;
public class SendingTransaction {
private String source_user_hash;
private String source_user_pwd;
private String transaction_from;
private String transaction_to;
private String transaction_amount;
private String transaction_unit;
public SendingTransaction() {
}
public SendingTransaction(String source_user_hash, String source_user_pwd, String transaction_from, String transaction_to, String transaction_amount, String transaction_unit) {
this.source_user_hash = source_user_hash;
this.source_user_pwd = source_user_pwd;
this.transaction_from = transaction_from;
this.transaction_to = transaction_to;
this.transaction_amount = transaction_amount;
this.transaction_unit = transaction_unit;
}
public String getSource_user_hash() {
return source_user_hash;
}
public void setSource_user_hash(String source_user_hash) {
this.source_user_hash = source_user_hash;
}
public String getSource_user_pwd() {
return source_user_pwd;
}
public void setSource_user_pwd(String source_user_pwd) {
this.source_user_pwd = source_user_pwd;
}
public String getTransaction_from() {
return transaction_from;
}
public void setTransaction_from(String transaction_from) {
this.transaction_from = transaction_from;
}
public String getTransaction_to() {
return transaction_to;
}
public void setTransaction_to(String transaction_to) {
this.transaction_to = transaction_to;
}
public String getTransaction_amount() {
return transaction_amount;
}
public void setTransaction_amount(String transaction_amount) {
this.transaction_amount = transaction_amount;
}
public String getTransaction_unit() {
return transaction_unit;
}
public void setTransaction_unit(String transaction_unit) {
this.transaction_unit = transaction_unit;
}
}

View file

@ -1,6 +1,7 @@
package monnethic.mobile.transaction;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
@ -9,9 +10,13 @@ import android.widget.EditText;
import android.widget.Toast;
import com.example.monnthic.monnethicmobile.R;
import com.j256.ormlite.stmt.query.In;
import java.math.BigInteger;
import monnethic.mobile.homepage.InputController;
import monnethic.mobile.restApi.TransactionApiHandler;
public class TransactionActivity extends AppCompatActivity {
private String wallet_hash;
private String user_hash;
@ -51,18 +56,27 @@ public class TransactionActivity extends AppCompatActivity {
}
public void sendTransaction(){
if(InputController.isEmptyEdit(addressDestination)){
Toast.makeText(this, "No destination address", Toast.LENGTH_SHORT).show();
} else if(InputController.isEmptyEdit(amountEditText)) {
Toast.makeText(this, "No amount", Toast.LENGTH_SHORT).show();
} else {
String wallet_dest = addressDestination.getText().toString();
String amount = amountEditText.getText().toString();
/*
if(AccessBlockchain.sendTransationTo(address, adD, amt)){
Toast.makeText(this, "OK.", Toast.LENGTH_SHORT).show();
SendingTransaction sendingTransaction = new SendingTransaction(user_hash,user_password,wallet_hash,wallet_dest,amount,"gonette");
try {
String transaction_hash = new TransactionTask().execute(sendingTransaction).get();
if(transaction_hash!=null){
Toast.makeText(this, "transaction id : "+transaction_hash, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "couldn't get transaction id", Toast.LENGTH_SHORT).show();
}
} catch (Exception e){
e.printStackTrace();
}
*/
String message = "Comming soon, addressDestination "+wallet_dest+" Amount : "+amount;
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
finish();
}
}
@Override
protected void onStop() {
@ -70,4 +84,18 @@ public class TransactionActivity extends AppCompatActivity {
Toast.makeText(getApplicationContext(), "onStop called", Toast.LENGTH_LONG).show();
}
private class TransactionTask extends AsyncTask<SendingTransaction,String,String> {
@Override
protected String doInBackground(SendingTransaction... sendingTransactions) {
try{
TransactionApiHandler transactionApiHandler = new TransactionApiHandler();
return transactionApiHandler.doTransaction(sendingTransactions[0]);
}catch (Exception e){
e.printStackTrace();
}
return null;
}
}
}

View file

@ -1,20 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="monnethic.mobile.transaction.ApprovePayementActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textDisplay"
android:layout_width="183dp"
android:layout_height="195dp"
android:layout_marginBottom="184dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintStart_toStartOf="parent" />
android:id="@+id/textViewAmount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="61dp"
android:layout_marginTop="284dp"
android:text="AMOUNT :" />
<TextView
android:id="@+id/textViewDestAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/textViewAmount"
android:layout_alignParentTop="true"
android:layout_marginStart="1dp"
android:layout_marginTop="188dp"
android:text="TO :" />
<TextView
android:id="@+id/destAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textViewDestAddress"
android:layout_marginStart="-27dp"
android:layout_marginTop="9dp"
android:layout_toEndOf="@+id/textViewDestAddress" />
<TextView
android:id="@+id/amountApprove"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/textViewAmount"
android:layout_alignParentBottom="true"
android:layout_marginBottom="235dp" />
<Button
android:id="@+id/buttonCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="79dp"
android:layout_marginBottom="111dp"
android:text="CANCEL" />
<Button
android:id="@+id/buttonValidate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/buttonCancel"
android:layout_alignParentEnd="true"
android:layout_marginEnd="81dp"
android:layout_marginBottom="-1dp"
android:text="VALIDATE" />
</RelativeLayout>
</android.support.constraint.ConstraintLayout>