diff --git a/app/src/main/java/com/example/dcav2gui/EarnerInterface.java b/app/src/main/java/com/example/dcav2gui/EarnerInterface.java index 9770905..105a0de 100644 --- a/app/src/main/java/com/example/dcav2gui/EarnerInterface.java +++ b/app/src/main/java/com/example/dcav2gui/EarnerInterface.java @@ -6,9 +6,13 @@ import android.app.AlertDialog; import android.content.Context; import android.os.Handler; import android.os.Looper; +import android.text.InputType; +import android.view.View; +import android.widget.EditText; import android.widget.Toast; import com.example.dcav2gui.ui.earners.EarnerData; +import com.example.dcav2gui.ui.home.HomeFragment; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -87,7 +91,7 @@ public class EarnerInterface { try { JsonObject result = getLastSubscription(exchange, true); String dialogTitle = "Last subscription"; - String dialogMessage = result.get("last_subscription").toString(); + String dialogMessage = HomeFragment.timeStampConverter(result.get("last_subscription").getAsJsonObject().get(exchange).getAsDouble(),false); new Handler(Looper.getMainLooper()).post(() -> showSimpleDialog(dialogTitle, dialogMessage, context)); } catch (IOException e) { e.printStackTrace(); @@ -101,7 +105,7 @@ public class EarnerInterface { try { JsonObject result = getLastRedemption(exchange, true); String dialogTitle = "Last redemption"; - String dialogMessage = result.get("last_redemption").toString(); + String dialogMessage = HomeFragment.timeStampConverter(result.get("last_redemption").getAsJsonObject().get(exchange).getAsDouble(),false); new Handler(Looper.getMainLooper()).post(() -> showSimpleDialog(dialogTitle, dialogMessage, context)); } catch (IOException e) { e.printStackTrace(); @@ -117,7 +121,7 @@ public class EarnerInterface { new Handler(Looper.getMainLooper()).post(() -> showJsonDialog(result, context)); } catch (IOException e) { e.printStackTrace(); - new Handler(Looper.getMainLooper()).post(() -> Toast.makeText(context, "Failed to get last redemption", Toast.LENGTH_SHORT).show()); + new Handler(Looper.getMainLooper()).post(() -> Toast.makeText(context, "Failed to get time between subscriptions", Toast.LENGTH_SHORT).show()); } }).start(); } @@ -129,7 +133,7 @@ public class EarnerInterface { new Handler(Looper.getMainLooper()).post(() -> showJsonDialog(result, context)); } catch (IOException e) { e.printStackTrace(); - new Handler(Looper.getMainLooper()).post(() -> Toast.makeText(context, "Failed to get last redemption", Toast.LENGTH_SHORT).show()); + new Handler(Looper.getMainLooper()).post(() -> Toast.makeText(context, "Failed to get time between redemptions", Toast.LENGTH_SHORT).show()); } }).start(); } @@ -141,11 +145,263 @@ public class EarnerInterface { new Handler(Looper.getMainLooper()).post(() -> showJsonDialog(result, context)); } catch (IOException e) { e.printStackTrace(); - new Handler(Looper.getMainLooper()).post(() -> Toast.makeText(context, "Failed to get last redemption", Toast.LENGTH_SHORT).show()); + new Handler(Looper.getMainLooper()).post(() -> Toast.makeText(context, "Failed to get minimum amount in trading account", Toast.LENGTH_SHORT).show()); } }).start(); } + public static void sendRequestTogglePause(String exchange, Context context) { + new Thread(() -> { + try { + JsonObject result = togglePause(exchange, true); + new Handler(Looper.getMainLooper()).post(() -> showJsonDialog(result, context)); + } catch (IOException e) { + e.printStackTrace(); + new Handler(Looper.getMainLooper()).post(() -> Toast.makeText(context, "Failed to toggle pause", Toast.LENGTH_SHORT).show()); + } + }).start(); + } + + public static void sendRequestSetStepSize(String exchange, Context context) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("Change step size on "+ exchange); + + final EditText input = new EditText(context); + input.setInputType(InputType.TYPE_CLASS_NUMBER); + input.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); + builder.setView(input); + + builder.setPositiveButton("Set", (dialog, which) -> { + final double amountToAdd = Double.parseDouble(input.getText().toString()); + new Thread(() -> { + try { + JsonObject response = setStepSize(exchange, amountToAdd,true); + new Handler(Looper.getMainLooper()).post(() -> { + showJsonDialog(response, context); + }); + } catch (IOException e) { + e.printStackTrace(); + // Show an error dialog on the main thread + new Handler(Looper.getMainLooper()).post(() -> { + AlertDialog.Builder errorBuilder = new AlertDialog.Builder(context); + errorBuilder.setTitle("Error"); + errorBuilder.setMessage("Failed to change step size: " + e.getMessage()); + errorBuilder.setPositiveButton("OK", null); + errorBuilder.show(); + }); + } + }).start(); + }); + builder.setNegativeButton("Cancel", (dialog, which) -> dialog.cancel()); + builder.show(); + } + + public static void sendRequestSetPercentage(String exchange, Context context) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("Change percentage on "+ exchange); + + final EditText input = new EditText(context); + input.setInputType(InputType.TYPE_CLASS_NUMBER); + input.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); + builder.setView(input); + + builder.setPositiveButton("Set", (dialog, which) -> { + final double newPercentage = Double.parseDouble(input.getText().toString()); + new Thread(() -> { + try { + JsonObject response = setPercentage(exchange, newPercentage,true); + new Handler(Looper.getMainLooper()).post(() -> { + showJsonDialog(response, context); + }); + } catch (IOException e) { + e.printStackTrace(); + // Show an error dialog on the main thread + new Handler(Looper.getMainLooper()).post(() -> { + AlertDialog.Builder errorBuilder = new AlertDialog.Builder(context); + errorBuilder.setTitle("Error"); + errorBuilder.setMessage("Failed to change percentage: " + e.getMessage()); + errorBuilder.setPositiveButton("OK", null); + errorBuilder.show(); + }); + } + }).start(); + }); + builder.setNegativeButton("Cancel", (dialog, which) -> dialog.cancel()); + builder.show(); + } + + public static void sendRequestSetTimeBetweenSubscriptions(String exchange, Context context) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("Change time between subscriptions on "+ exchange); + + final EditText input = new EditText(context); + input.setInputType(InputType.TYPE_CLASS_NUMBER); + input.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); + builder.setView(input); + + builder.setPositiveButton("Set", (dialog, which) -> { + final double newTime = Double.parseDouble(input.getText().toString()); + new Thread(() -> { + try { + JsonObject response = setTimeBetweenSubscriptions(exchange, newTime,true); + new Handler(Looper.getMainLooper()).post(() -> { + showJsonDialog(response, context); + }); + } catch (IOException e) { + e.printStackTrace(); + // Show an error dialog on the main thread + new Handler(Looper.getMainLooper()).post(() -> { + AlertDialog.Builder errorBuilder = new AlertDialog.Builder(context); + errorBuilder.setTitle("Error"); + errorBuilder.setMessage("Failed to change time between subscriptions: " + e.getMessage()); + errorBuilder.setPositiveButton("OK", null); + errorBuilder.show(); + }); + } + }).start(); + }); + builder.setNegativeButton("Cancel", (dialog, which) -> dialog.cancel()); + builder.show(); + } + + public static void sendRequestSetTimeBetweenRedemptions(String exchange, Context context) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("Change time between redemptions on "+ exchange); + + final EditText input = new EditText(context); + input.setInputType(InputType.TYPE_CLASS_NUMBER); + input.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); + builder.setView(input); + + builder.setPositiveButton("Set", (dialog, which) -> { + final double newTime = Double.parseDouble(input.getText().toString()); + new Thread(() -> { + try { + JsonObject response = setTimeBetweenRedemptions(exchange, newTime,true); + new Handler(Looper.getMainLooper()).post(() -> { + showJsonDialog(response, context); + }); + } catch (IOException e) { + e.printStackTrace(); + // Show an error dialog on the main thread + new Handler(Looper.getMainLooper()).post(() -> { + AlertDialog.Builder errorBuilder = new AlertDialog.Builder(context); + errorBuilder.setTitle("Error"); + errorBuilder.setMessage("Failed to change time between redemptions: " + e.getMessage()); + errorBuilder.setPositiveButton("OK", null); + errorBuilder.show(); + }); + } + }).start(); + }); + builder.setNegativeButton("Cancel", (dialog, which) -> dialog.cancel()); + builder.show(); + } + + public static void sendRequestSetMinimumAmountInTradingAccount(String exchange, Context context) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("Change minimum amount in trading account on "+ exchange); + + final EditText input = new EditText(context); + input.setInputType(InputType.TYPE_CLASS_NUMBER); + input.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); + builder.setView(input); + + builder.setPositiveButton("Set", (dialog, which) -> { + final double minimumAmount = Double.parseDouble(input.getText().toString()); + new Thread(() -> { + try { + JsonObject response = setMinimumAmountInTradingAccount(exchange, minimumAmount,true); + new Handler(Looper.getMainLooper()).post(() -> { + showJsonDialog(response, context); + }); + } catch (IOException e) { + e.printStackTrace(); + // Show an error dialog on the main thread + new Handler(Looper.getMainLooper()).post(() -> { + AlertDialog.Builder errorBuilder = new AlertDialog.Builder(context); + errorBuilder.setTitle("Error"); + errorBuilder.setMessage("Failed to change minimum amount in trading account: " + e.getMessage()); + errorBuilder.setPositiveButton("OK", null); + errorBuilder.show(); + }); + } + }).start(); + }); + builder.setNegativeButton("Cancel", (dialog, which) -> dialog.cancel()); + builder.show(); + } + + public static void sendRequestSubscribeFunds(String exchange, Context context) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("Subscribe funds on "+ exchange); + + final EditText input = new EditText(context); + input.setInputType(InputType.TYPE_CLASS_NUMBER); + input.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); + builder.setView(input); + + builder.setPositiveButton("Set", (dialog, which) -> { + final double amountToSubscribe = Double.parseDouble(input.getText().toString()); + new Thread(() -> { + try { + JsonObject response = subscribeFunds(exchange, amountToSubscribe,true); + new Handler(Looper.getMainLooper()).post(() -> { + showJsonDialog(response, context); + }); + } catch (IOException e) { + e.printStackTrace(); + // Show an error dialog on the main thread + new Handler(Looper.getMainLooper()).post(() -> { + AlertDialog.Builder errorBuilder = new AlertDialog.Builder(context); + errorBuilder.setTitle("Error"); + errorBuilder.setMessage("Failed to subscribe funds: " + e.getMessage()); + errorBuilder.setPositiveButton("OK", null); + errorBuilder.show(); + }); + } + }).start(); + }); + builder.setNegativeButton("Cancel", (dialog, which) -> dialog.cancel()); + builder.show(); + } + + public static void sendRequestRedeemFunds(String exchange, Context context) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle("Redeem funds on "+ exchange); + + final EditText input = new EditText(context); + input.setInputType(InputType.TYPE_CLASS_NUMBER); + input.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); + builder.setView(input); + + builder.setPositiveButton("Set", (dialog, which) -> { + final double amountToRedeem = Double.parseDouble(input.getText().toString()); + new Thread(() -> { + try { + JsonObject response = redeemFunds(exchange, amountToRedeem,true); + new Handler(Looper.getMainLooper()).post(() -> { + showJsonDialog(response, context); + }); + } catch (IOException e) { + e.printStackTrace(); + // Show an error dialog on the main thread + new Handler(Looper.getMainLooper()).post(() -> { + AlertDialog.Builder errorBuilder = new AlertDialog.Builder(context); + errorBuilder.setTitle("Error"); + errorBuilder.setMessage("Failed to redeem funds: " + e.getMessage()); + errorBuilder.setPositiveButton("OK", null); + errorBuilder.show(); + }); + } + }).start(); + }); + builder.setNegativeButton("Cancel", (dialog, which) -> dialog.cancel()); + builder.show(); + } + + + public static EarnerGlobalData getEarnerGlobalData(boolean retry) throws IOException { double uptime = 0.0; List earnerList = new ArrayList<>(); diff --git a/app/src/main/java/com/example/dcav2gui/ui/earners/EarnFragment.java b/app/src/main/java/com/example/dcav2gui/ui/earners/EarnFragment.java index ab971f8..93a6d0f 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/earners/EarnFragment.java +++ b/app/src/main/java/com/example/dcav2gui/ui/earners/EarnFragment.java @@ -68,6 +68,7 @@ public class EarnFragment extends Fragment implements EarnerCardAdapter.OnCardLo EarnerInterface.sendRequestGetStepSize(exchange, getContext()); return true; } else if (item.getItemId() == R.id.earnerMenuSetStepSize) { + EarnerInterface.sendRequestSetStepSize(exchange, getContext()); return true; } else if (item.getItemId() == R.id.earnerMenuLastSubscription) { EarnerInterface.sendRequestLastSubscription(exchange, getContext()); @@ -76,26 +77,37 @@ public class EarnFragment extends Fragment implements EarnerCardAdapter.OnCardLo EarnerInterface.sendRequestLastRedemption(exchange, getContext()); return true; } else if (item.getItemId() == R.id.earnerMenuTogglePause) { + EarnerInterface.sendRequestTogglePause(exchange, getContext()); return true; } else if (item.getItemId() == R.id.earnerMenuGetPercentage) { EarnerInterface.sendRequestGetPercentage(exchange, getContext()); return true; } else if (item.getItemId() == R.id.earnerMenuSetPercentage) { + EarnerInterface.sendRequestSetPercentage(exchange, getContext()); return true; } else if (item.getItemId() == R.id.earnerMenuGetTimeBetweenSubscriptions) { EarnerInterface.sendRequestGetTimeBetweenSubscriptions(exchange, getContext()); return true; } else if (item.getItemId() == R.id.earnerMenuSetTimeBetweenSubscriptions) { + EarnerInterface.sendRequestSetTimeBetweenSubscriptions(exchange, getContext()); return true; } else if (item.getItemId() == R.id.earnerMenuGetTimeBetweenRedemptions) { EarnerInterface.sendRequestGetTimeBetweenRedemptions(exchange, getContext()); return true; } else if (item.getItemId() == R.id.earnerMenuSetTimeBetweenRedemptions) { + EarnerInterface.sendRequestSetTimeBetweenRedemptions(exchange, getContext()); return true; } else if (item.getItemId() == R.id.earnerMenuGetMinimumAmountInTradingAccount) { EarnerInterface.sendRequestGetMinimumAmountInTradingAccount(exchange, getContext()); return true; } else if (item.getItemId() == R.id.earnerMenuSetMinimumAmountInTradingAccount) { + EarnerInterface.sendRequestSetMinimumAmountInTradingAccount(exchange, getContext()); + return true; + } else if (item.getItemId() == R.id.earnerMenuSubscribe){ + EarnerInterface.sendRequestSubscribeFunds(exchange, getContext()); + return true; + } else if (item.getItemId() == R.id.earnerMenuRedeem) { + EarnerInterface.sendRequestRedeemFunds(exchange, getContext()); return true; } return false; diff --git a/app/src/main/res/menu/earner_popup_menu.xml b/app/src/main/res/menu/earner_popup_menu.xml index 05ebb8a..87ae8a3 100644 --- a/app/src/main/res/menu/earner_popup_menu.xml +++ b/app/src/main/res/menu/earner_popup_menu.xml @@ -10,6 +10,10 @@ android:title="Last redemption" /> + +