diff --git a/app/.idea/caches/build_file_checksums.ser b/app/.idea/caches/build_file_checksums.ser index 8caf6cca..ab9abf24 100644 Binary files a/app/.idea/caches/build_file_checksums.ser and b/app/.idea/caches/build_file_checksums.ser differ diff --git a/app/.idea/gradle.xml b/app/.idea/gradle.xml index 5396c6c0..53028c90 100644 --- a/app/.idea/gradle.xml +++ b/app/.idea/gradle.xml @@ -1,5 +1,6 @@ + + + + + + + + + + file://$PROJECT_DIR$/src/main/java/com/brian/stocks/stock/StocksFragment.java + 162 + + + + \ No newline at end of file diff --git a/app/src/main/java/com/brian/stocks/home/CashFragment.java b/app/src/main/java/com/brian/stocks/home/CashFragment.java index 9832e2fd..11319a17 100644 --- a/app/src/main/java/com/brian/stocks/home/CashFragment.java +++ b/app/src/main/java/com/brian/stocks/home/CashFragment.java @@ -119,8 +119,8 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, private void showAlert() { AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); alert.setIcon(R.mipmap.ic_launcher_round) - .setTitle("Alert") - .setMessage("Coming soon") + .setTitle("Coming soon") + .setMessage(" Make sure no one can access") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { diff --git a/app/src/main/java/com/brian/stocks/home/CoinsFragment.java b/app/src/main/java/com/brian/stocks/home/CoinsFragment.java index 50e00012..af07f0ae 100644 --- a/app/src/main/java/com/brian/stocks/home/CoinsFragment.java +++ b/app/src/main/java/com/brian/stocks/home/CoinsFragment.java @@ -15,6 +15,7 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; +import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; import android.widget.Toast; @@ -82,6 +83,7 @@ public class CoinsFragment extends Fragment { private Socket mSocket; private String mOnramperApikey; private String onRamperCoins=""; + private String xanpoolApikey; { try { @@ -147,14 +149,18 @@ public void OnDeposit(int position) { } @Override - public void OnRamp(final int position) { + public void OnBuyNow(final int position) { final CoinInfo coin = coinList.get(position); CoinSymbol = coin.getCoinSymbol(); CoinId = coin.getCoinId(); - if(coin.getBuyNowOption() == 2) { // btc, eth, usdc, dai + if(coin.getBuyNowOption() >= 2) { // btc, eth, usdc, dai AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); View view = getLayoutInflater().inflate(R.layout.dialog_coin_buy_option, null); final RadioGroup coinRdg = view.findViewById(R.id.coin_rdg); + if(coin.getBuyNowOption() == 2) { + RadioButton rdb3 = view.findViewById(R.id.coin_rdb_3); + rdb3.setVisibility(View.GONE); + } alert.setView(view) .setIcon(R.mipmap.ic_launcher_round) .setPositiveButton("Confirm", new DialogInterface.OnClickListener() { @@ -164,6 +170,7 @@ public void onClick(DialogInterface dialog, int which) { if (coinRdg.getCheckedRadioButtonId() == R.id.coin_rdb_1) doGenerateWalletAddress("", 1); // ramp else if(coinRdg.getCheckedRadioButtonId() == R.id.coin_rdb_2)doGenerateWalletAddress("", 2); // onramp + else if(coinRdg.getCheckedRadioButtonId() == R.id.coin_rdb_3)doGenerateWalletAddress("", 3); // xanpool else { Toast.makeText(getContext(), "Please select option", Toast.LENGTH_SHORT).show(); return; @@ -232,7 +239,7 @@ public void onClick(DialogInterface dialog, int id) { } private void showWalletAddressDialog(JSONObject data) { - if (data.has("deposit_amount")) { + if (CoinSymbol.equals("XMT")) { DepositERC20Dialog DepositDialogERC20; DepositDialogERC20 = new DepositERC20Dialog(R.layout.fragment_coin_deposit_erc20, data, CoinSymbol); DepositDialogERC20.setListener(new DepositERC20Dialog.Listener() { @@ -343,6 +350,7 @@ public void onResponse(JSONObject response) { mTotalEffect.setText(response.getString("total_effect")+" %"); mUSDBalance.setText(response.getString("usd_balance")); mOnramperApikey = response.getString("onramper_api_key"); + xanpoolApikey = response.getString("xanpool_api_key"); if(response.getString("total_effect").startsWith("-")) mTotalEffect.setTextColor(RED); else mTotalEffect.setTextColor(GREEN); @@ -422,7 +430,7 @@ else if(type == 1){ // "https://ri-widget-staging-ropsten.firebaseapp.com/" ); rampInstantSDK.show(); - } else { + } else if(type == 2){ String coin_address = CoinSymbol+":["+address+"]"; String excludeCryptos = "&excludeCryptos=EOS,USDT,XLM,BUSD,GUSD,HUSD,PAX,USDS"; String url = "https://widget.onramper.dev?color=1d2d50&apiKey="+mOnramperApikey+"&defaultCrypto="+CoinSymbol+excludeCryptos+"&defaultAddrs="+coin_address+"&onlyCryptos="+onRamperCoins; @@ -430,6 +438,21 @@ else if(type == 1){ browserIntent.putExtra("uri", url); startActivity(browserIntent); } + else if(type == 3){ //xanpool + String base = "https://checkout.xanpool.com/"; + String apikey = "?apiKey="+xanpoolApikey; + String wallet = "&wallet=" + address; + String cryptoCurrency = "&cryptoCurrency=" + CoinSymbol; + String transactionType = "&transactionType=buy"; + String isWebview = "&isWebview=true"; + String partnerData = "&partnerData=88824d8683434f4e"; + + String url = base + apikey + wallet + cryptoCurrency + transactionType + isWebview; + Log.d("xanpool url:", url); + Intent browserIntent = new Intent(getActivity(), WebViewActivity.class); + browserIntent.putExtra("uri", url); + startActivity(browserIntent); + } } else Toast.makeText(getContext(), response.optString("error"), Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/com/brian/stocks/home/InvestedStockFragment.java b/app/src/main/java/com/brian/stocks/home/InvestedStockFragment.java index cfd916d0..f549cc33 100644 --- a/app/src/main/java/com/brian/stocks/home/InvestedStockFragment.java +++ b/app/src/main/java/com/brian/stocks/home/InvestedStockFragment.java @@ -153,6 +153,7 @@ public void onResponse(JSONObject response) { refreshLayout.setRefreshing(false); stocksList.clear(); try { + Log.d("invested stocks response", response.toString()); mTotalBalance.setText("$ " + response.getString("total_balance")); mStockBalance.setText("$ " + response.getString("stock_balance")); mTextStockProfit.setText("$ " + response.getString("stock_profit")); diff --git a/app/src/main/java/com/brian/stocks/home/TransferCoinFragment.java b/app/src/main/java/com/brian/stocks/home/TransferCoinFragment.java index c2c2faf0..64799f6b 100644 --- a/app/src/main/java/com/brian/stocks/home/TransferCoinFragment.java +++ b/app/src/main/java/com/brian/stocks/home/TransferCoinFragment.java @@ -123,16 +123,19 @@ public void onClick(View v) { public void onClick(DialogInterface dialog, int which) { if (TextUtils.isEmpty(editEmail.getText().toString())) { editEmail.setError("!"); + Toast.makeText(getContext(), "Please fill into form.", Toast.LENGTH_SHORT).show(); return; } if (TextUtils.isEmpty(editName.getText().toString())) { editName.setError("!"); + Toast.makeText(getContext(), "Please fill into form.", Toast.LENGTH_SHORT).show(); return; } Pattern p = Pattern.compile("\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}\\b"); final Matcher m = p.matcher(editEmail.getText().toString()); if (!m.find()) { editEmail.setError("Invalid email format"); + Toast.makeText(getContext(), "Invalid email format.", Toast.LENGTH_SHORT).show(); return; } sendContact(); diff --git a/app/src/main/java/com/brian/stocks/home/adapters/CoinAdapter.java b/app/src/main/java/com/brian/stocks/home/adapters/CoinAdapter.java index 769c5702..3d103355 100644 --- a/app/src/main/java/com/brian/stocks/home/adapters/CoinAdapter.java +++ b/app/src/main/java/com/brian/stocks/home/adapters/CoinAdapter.java @@ -40,7 +40,7 @@ public class OrderViewHolder extends RecyclerView.ViewHolder { TextView tvCoinName, tvCoinRate, tvCoinEstAmount, tvCoinBalance, tvCoinEffect; ImageView coinIcon; LinearLayout llCoinBalance; - Button btnDeposit, btnRamp; + Button btnDeposit, btnBuyNow; public OrderViewHolder(View view) { super(view); @@ -53,7 +53,7 @@ public OrderViewHolder(View view) { coinIcon = view.findViewById(R.id.coin_icon); llCoinBalance = view.findViewById(R.id.ll_coin_balance); btnDeposit = view.findViewById(R.id.btn_deposit); - btnRamp = view.findViewById(R.id.btn_ramp); + btnBuyNow = view.findViewById(R.id.btn_coin_buy); } } @@ -118,19 +118,19 @@ public void onClick(View view) { listener.OnDeposit(position); } }); - holder.btnRamp.setOnClickListener(new View.OnClickListener() { + holder.btnBuyNow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - listener.OnRamp(position); + listener.OnBuyNow(position); } }); String coins = "BTC ETH DAI XDAI USDC DOT"; // if(coins.contains(item.getCoinSymbol())) { - if(item.getBuyNowOption() != 0 && item.getBuyNowOption() != 3) { - holder.btnRamp.setVisibility(View.VISIBLE); + if(item.getBuyNowOption() != 0 && item.getBuyNowOption() != 100) { + holder.btnBuyNow.setVisibility(View.VISIBLE); } else { - holder.btnRamp.setVisibility(View.GONE); + holder.btnBuyNow.setVisibility(View.GONE); } } @@ -153,6 +153,6 @@ public interface Listener { * @param position */ void OnDeposit(int position); - void OnRamp(int position); + void OnBuyNow(int position); } } diff --git a/app/src/main/java/com/brian/stocks/model/StocksInfo.java b/app/src/main/java/com/brian/stocks/model/StocksInfo.java index 6c5e2a27..949c0304 100644 --- a/app/src/main/java/com/brian/stocks/model/StocksInfo.java +++ b/app/src/main/java/com/brian/stocks/model/StocksInfo.java @@ -33,7 +33,9 @@ public String getStocksName() { public String getStocksNameOther() { try { - return data.getString("name"); + String name = data.getString("name"); + if(name.equals("null")) name=""; + return name; } catch (JSONException e) { e.printStackTrace(); return null; @@ -85,7 +87,7 @@ public String getStockAvgPrice(){ public String getStocksPrice() { try { - return data.getString("vw"); + return String.format("%.2f", Double.parseDouble(data.getString("vw"))); } catch (JSONException e) { e.printStackTrace(); return "0.0"; @@ -102,7 +104,7 @@ public void setStockAggregate(JSONArray aggregate) { public String getStockTodayChange() { try { - return data.getString("todaysChange"); + return String.format("%.4f", Double.parseDouble(data.getString("todaysChange"))); } catch (JSONException e) { e.printStackTrace(); return "0.0"; @@ -111,7 +113,7 @@ public String getStockTodayChange() { public String getStockTodayChangePercent() { try { - return data.getString("todaysChangePerc"); + return String.format("%.4f", Double.parseDouble(data.getString("todaysChangePerc"))); } catch (JSONException e) { e.printStackTrace(); return "0.0"; @@ -156,6 +158,14 @@ public String getStockOrderID(){ } } + public String getStockOrderCost(){ + try { + return data.getString("est_cost"); + } catch (JSONException e) { + return ""; + } + } + public String getStockOrderDate(){ try { return data.getString("created_at").split(" ")[0]; diff --git a/app/src/main/java/com/brian/stocks/stock/StocksFragment.java b/app/src/main/java/com/brian/stocks/stock/StocksFragment.java index a593170c..a7ecaf49 100644 --- a/app/src/main/java/com/brian/stocks/stock/StocksFragment.java +++ b/app/src/main/java/com/brian/stocks/stock/StocksFragment.java @@ -101,6 +101,8 @@ public void OnGoToTrade(int position) { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEARCH) { getAllStocks(false); + aggregates=new JSONArray(); + getAggregate(); return true; } return false; @@ -141,6 +143,9 @@ public void onRefresh() { private void getAggregate() { String url = URLHelper.GET_ALL_STOCKS_AGGREGATE; + if(!mSearch.equalsIgnoreCase("")) + url = url + "?search="+mSearch; + Log.d("stock aggregate url", url); AndroidNetworking.get(url) .addHeaders("Content-Type", "application/json") .addHeaders("accept", "application/json") @@ -172,8 +177,8 @@ public void onResponse(JSONObject response) { public void onError(ANError error) { // handle error - Toast.makeText(getContext(), "Please try again. Network error.", Toast.LENGTH_SHORT).show(); - Log.d("errorm", "" + error.getMessage()); +// Toast.makeText(getContext(), "Please try again. Network error.", Toast.LENGTH_SHORT).show(); + Log.d("errorm", "" + error.getErrorBody()); } }); } @@ -229,7 +234,6 @@ public void onResponse(JSONObject response) { if(stocks != null) for(int i = 0; i < stocks.length(); i ++) { try { - Log.d("stocksitem", stocks.get(i).toString()); StocksInfo stock = new StocksInfo((JSONObject) stocks.get(i)); if(aggregates.length() > 0) stock.setStockAggregate(aggregates.optJSONArray(i)); @@ -269,8 +273,8 @@ public void onError(ANError error) { loadToast.error(); // handle error - Toast.makeText(getContext(), "Please try again. Network error.", Toast.LENGTH_SHORT).show(); - Log.d("errorm", "" + error.getMessage()); + Toast.makeText(getContext(), error.getErrorBody(), Toast.LENGTH_SHORT).show(); + Log.d("errorm", "" + error.getErrorBody()); } }); } diff --git a/app/src/main/java/com/brian/stocks/stock/stockorder/OrderStockFragment.java b/app/src/main/java/com/brian/stocks/stock/stockorder/OrderStockFragment.java index d0065651..4fe5c00c 100644 --- a/app/src/main/java/com/brian/stocks/stock/stockorder/OrderStockFragment.java +++ b/app/src/main/java/com/brian/stocks/stock/stockorder/OrderStockFragment.java @@ -9,12 +9,14 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.LinearLayout; import android.widget.Toast; import com.androidnetworking.AndroidNetworking; import com.androidnetworking.common.Priority; import com.androidnetworking.error.ANError; import com.androidnetworking.interfaces.JSONObjectRequestListener; +import com.anychart.enums.Layout; import com.brian.stocks.R; import com.brian.stocks.stock.stocktrade.StocksOrderActivity; import com.brian.stocks.helper.SharedHelper; @@ -36,6 +38,7 @@ public class OrderStockFragment extends Fragment { private StockOrderAdapter mAdapter; private List stocksList = new ArrayList<>(); private RecyclerView stocksListView; + LinearLayout emptyLayout; public OrderStockFragment() { // Required empty public constructor @@ -59,6 +62,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, // Inflate the layout for this fragment View rootView = inflater.inflate(R.layout.fragment_order_stock, container, false); stocksListView = (RecyclerView) rootView.findViewById(R.id.list_stocks_view); + emptyLayout = rootView.findViewById(R.id.empty_layout); mAdapter = new StockOrderAdapter(stocksList, false); @@ -107,6 +111,8 @@ public void onResponse(JSONObject response) { if(getContext() != null) SharedHelper.putKey(getContext(), "stock_balance", response.optString("stock_balance")); mAdapter.notifyDataSetChanged(); + if(stocksList.size() > 0) + emptyLayout.setVisibility(View.GONE); } @Override @@ -123,12 +129,8 @@ private void GoToOrder(int position) { StocksInfo stock = stocksList.get(position); Intent intent = new Intent(getActivity(), StocksOrderActivity.class); intent.putExtra("stock_name", stock.getStocksOrderName()); - intent.putExtra("stock_price", stock.getStocksPrice()); intent.putExtra("stock_limit_price", stock.getStockOrderLimitPrice()); - intent.putExtra("stock_shares", stock.getStocksShares()); intent.putExtra("stock_order_shares", stock.getStocksOrderShares()); - intent.putExtra("stock_today_change", stock.getStockTodayChange()); - intent.putExtra("stock_today_change_perc", stock.getStockTodayChangePercent()); intent.putExtra("stock_order_id", stock.getStockOrderID()); intent.putExtra("stock_order_side", stock.getStockOrderSide()); intent.putExtra("stock_order_type", stock.getStockOrderType()); diff --git a/app/src/main/java/com/brian/stocks/stock/stockorder/StockOrderAdapter.java b/app/src/main/java/com/brian/stocks/stock/stockorder/StockOrderAdapter.java index 0828e427..2daf3e97 100644 --- a/app/src/main/java/com/brian/stocks/stock/stockorder/StockOrderAdapter.java +++ b/app/src/main/java/com/brian/stocks/stock/stockorder/StockOrderAdapter.java @@ -22,7 +22,7 @@ public StockOrderAdapter(List arrItems, boolean viewType) { public class OrderViewHolder extends RecyclerView.ViewHolder { - TextView tvStocksName, tvStocksShared, tvStocksOrderStatus, tvStocksOrderSide, tvStocksOrderDate; + TextView tvStocksName, tvStocksShared, tvStocksOrderStatus, tvStocksOrderSide, tvStocksOrderDate, tvStocksOrderCost; @SuppressLint("ResourceAsColor") public OrderViewHolder(View view) { @@ -33,6 +33,7 @@ public OrderViewHolder(View view) { tvStocksOrderStatus = view.findViewById(R.id.stocks_order_status); tvStocksOrderSide = view.findViewById(R.id.stocks_order_side); tvStocksOrderDate = view.findViewById(R.id.stocks_order_date); + tvStocksOrderCost = view.findViewById(R.id.stocks_order_cost); } } @@ -55,6 +56,7 @@ public void onBindViewHolder(@NonNull final OrderViewHolder holder, final int po holder.tvStocksOrderSide.setText(item.getStockOrderSide()); holder.tvStocksOrderStatus.setText(item.getStockOrderStatus()); holder.tvStocksOrderDate.setText(item.getStockOrderDate()); + holder.tvStocksOrderCost.setText("$ "+item.getStockOrderCost()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/com/brian/stocks/stock/stockorder/StockTradeHistoryFragment.java b/app/src/main/java/com/brian/stocks/stock/stockorder/StockTradeHistoryFragment.java index e05290cf..387219ac 100644 --- a/app/src/main/java/com/brian/stocks/stock/stockorder/StockTradeHistoryFragment.java +++ b/app/src/main/java/com/brian/stocks/stock/stockorder/StockTradeHistoryFragment.java @@ -8,6 +8,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.LinearLayout; import android.widget.Toast; import com.androidnetworking.AndroidNetworking; @@ -34,6 +35,7 @@ public class StockTradeHistoryFragment extends Fragment { private StockOrderAdapter mAdapter; private List stocksList = new ArrayList<>(); private RecyclerView stocksListView; + LinearLayout emptyLayout; public StockTradeHistoryFragment() { // Required empty public constructor @@ -57,6 +59,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, // Inflate the layout for this fragment View rootView = inflater.inflate(R.layout.fragment_stock_trade_history, container, false); stocksListView = (RecyclerView) rootView.findViewById(R.id.list_stocks_view); + emptyLayout = rootView.findViewById(R.id.empty_layout); mAdapter = new StockOrderAdapter(stocksList, false); stocksListView.setLayoutManager(new LinearLayoutManager(getContext())); @@ -102,6 +105,8 @@ public void onResponse(JSONObject response) { } mAdapter.notifyDataSetChanged(); + if(stocksList.size() > 0) + emptyLayout.setVisibility(View.GONE); } @Override diff --git a/app/src/main/java/com/brian/stocks/stock/stocktrade/StockReplaceActivity.java b/app/src/main/java/com/brian/stocks/stock/stocktrade/StockReplaceActivity.java index 747fbfdf..03b90b50 100644 --- a/app/src/main/java/com/brian/stocks/stock/stocktrade/StockReplaceActivity.java +++ b/app/src/main/java/com/brian/stocks/stock/stocktrade/StockReplaceActivity.java @@ -268,8 +268,7 @@ public void onResponse(JSONObject response) { public void onError(ANError error) { loadToast.error(); // handle error - Toast.makeText(getBaseContext(), "Please try again. Network error.", Toast.LENGTH_SHORT).show(); - Log.d("errorm", "" + error.getMessage()); + Toast.makeText(getBaseContext(), error.getErrorBody(), Toast.LENGTH_SHORT).show(); } }); } diff --git a/app/src/main/java/com/brian/stocks/stock/stocktrade/StockSellActivity.java b/app/src/main/java/com/brian/stocks/stock/stocktrade/StockSellActivity.java index 452db79f..6b306474 100644 --- a/app/src/main/java/com/brian/stocks/stock/stocktrade/StockSellActivity.java +++ b/app/src/main/java/com/brian/stocks/stock/stocktrade/StockSellActivity.java @@ -137,10 +137,10 @@ public void onClick(View view) { Toast.makeText(getBaseContext(), "Please input shares", Toast.LENGTH_SHORT).show(); return; } - if(Double.parseDouble(mEditShares.getText().toString()) > Double.parseDouble(mStockShares)){ - Toast.makeText(getBaseContext(), "Insufficient Shares", Toast.LENGTH_SHORT).show(); - return; - } +// if(Double.parseDouble(mEditShares.getText().toString()) > Double.parseDouble(mStockShares)){ +// Toast.makeText(getBaseContext(), "Insufficient Shares", Toast.LENGTH_SHORT).show(); +// return; +// } if(Double.parseDouble(mEstCost) == 0){ Toast.makeText(getBaseContext(), "Please fill in all", Toast.LENGTH_SHORT).show(); return; @@ -238,7 +238,8 @@ public void onResponse(JSONObject response) { loadToast.success(); mStockBalance = response.optString("stock_balance"); mTextStockBalance.setText("$ "+mStockBalance); - mStockShares = BigDecimalDouble.newInstance().sub(mStockShares, mEditShares.getText().toString()); + mStockShares = response.optString("shares"); + mTextStockShares.setText(mStockShares); Toast.makeText(getBaseContext(), response.optString("message"), Toast.LENGTH_SHORT).show(); } @@ -246,8 +247,8 @@ public void onResponse(JSONObject response) { public void onError(ANError error) { loadToast.error(); // handle error - Toast.makeText(getBaseContext(), "Please try again. Network error.", Toast.LENGTH_SHORT).show(); - Log.d("errorm", "" + error.getMessage()); + Toast.makeText(getBaseContext(), error.getErrorBody(), Toast.LENGTH_SHORT).show(); + Log.d("errorm", "" + error.getErrorBody()); } }); } diff --git a/app/src/main/java/com/brian/stocks/stock/stocktrade/StocksOrderActivity.java b/app/src/main/java/com/brian/stocks/stock/stocktrade/StocksOrderActivity.java index 56651ee0..d4fadb65 100644 --- a/app/src/main/java/com/brian/stocks/stock/stocktrade/StocksOrderActivity.java +++ b/app/src/main/java/com/brian/stocks/stock/stocktrade/StocksOrderActivity.java @@ -4,6 +4,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; + +import com.brian.stocks.model.StocksInfo; import com.google.android.material.tabs.TabLayout; import androidx.viewpager.widget.ViewPager; import androidx.appcompat.app.AppCompatActivity; @@ -44,6 +46,8 @@ public class StocksOrderActivity extends AppCompatActivity { private ViewPager mStockChartViewPager; private TabLayout mStockTabBar; StockChartTabAdapter mPageAdapter; + private String price, shares; + private boolean loading = true; @Override protected void onCreate(Bundle savedInstanceState) { @@ -63,19 +67,17 @@ protected void onCreate(Bundle savedInstanceState) { mIntent = getIntent(); mStockName.setText(mIntent.getStringExtra("stock_name")); - String price = mIntent.getStringExtra("stock_price"); - String[] separatedPrice = price.split("\\."); - mStockPriceInteger.setText(separatedPrice[0].trim()); - mStockPriceFloat.setText("."+separatedPrice[1].trim()); mStockShares.setText(mIntent.getStringExtra("stock_shares")); StockSide = mIntent.getStringExtra("stock_order_side"); - mStockTodayChange.setText("$ "+mIntent.getStringExtra("stock_today_change")); - mStockTodayChangePerc.setText("( % "+mIntent.getStringExtra("stock_today_change_perc")+" )"); + mBtnEdit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { + if(!loading) onEditOrder(); + else + Toast.makeText(getBaseContext(), "Please wait for loading", Toast.LENGTH_SHORT).show(); } }); @@ -162,20 +164,20 @@ public void onResponse(JSONObject response) { public void onError(ANError error) { loadToast.error(); // handle error - Toast.makeText(getBaseContext(), "Please try again. Network error.", Toast.LENGTH_SHORT).show(); - Log.d("errorm", "" + error.getMessage()); + Toast.makeText(getBaseContext(), error.getErrorBody(), Toast.LENGTH_SHORT).show(); + Log.d("errorm", "" + error.getErrorBody()); } }); } private void onEditOrder() { Intent intent = new Intent(this, StockReplaceActivity.class); - intent.putExtra("stock_price", mIntent.getStringExtra("stock_price")); + intent.putExtra("stock_price", price); intent.putExtra("stock_limit_price", mIntent.getStringExtra("stock_limit_price")); intent.putExtra("stock_name", mIntent.getStringExtra("stock_name")); intent.putExtra("stock_symbol", mStockSymbol.getText()); intent.putExtra("stock_order_id", mIntent.getStringExtra("stock_order_id")); - intent.putExtra("stock_shares", mIntent.getStringExtra("stock_shares")); + intent.putExtra("stock_shares", shares); intent.putExtra("stock_order_shares", mIntent.getStringExtra("stock_order_shares")); intent.putExtra("stock_order_type", mIntent.getStringExtra("stock_order_type")); intent.putExtra("stock_balance", StockBalance); @@ -204,6 +206,7 @@ private void getStockDetailData() { public void onResponse(JSONObject response) { Log.d("response", "" + response); loadToast.success(); + loading = false; try { mAggregateDay = response.getJSONArray("aggregate_day"); mAggregateWeek = response.getJSONArray("aggregate_week"); @@ -225,6 +228,14 @@ public void onResponse(JSONObject response) { mStockSymbol.setText(response.optString("symbol")); StockBalance = response.optString("stock_balance"); + StocksInfo stock = new StocksInfo(response.optJSONObject("stock")); + price = stock.getStocksPrice(); + String[] separatedPrice = price.split("\\."); + mStockPriceInteger.setText(separatedPrice[0].trim()); + mStockPriceFloat.setText("."+separatedPrice[1].trim()); + mStockTodayChange.setText("$ "+stock.getStockTodayChange()); + mStockTodayChangePerc.setText("( % "+ stock.getStockTodayChangePercent() + " )"); + shares = stock.getStocksShares(); } catch (JSONException e) { e.printStackTrace(); diff --git a/app/src/main/java/com/brian/stocks/stock/stocktrade/StocksTradingActivity.java b/app/src/main/java/com/brian/stocks/stock/stocktrade/StocksTradingActivity.java index a3d3d3e5..52ec1607 100644 --- a/app/src/main/java/com/brian/stocks/stock/stocktrade/StocksTradingActivity.java +++ b/app/src/main/java/com/brian/stocks/stock/stocktrade/StocksTradingActivity.java @@ -40,7 +40,7 @@ public class StocksTradingActivity extends AppCompatActivity { private double StockPrice = 0.0; TextView mTextCompanySummary, mTextCompanyWeb, mTextCompanyIndustry; - private JSONArray mAggregateDay, mAggregateWeek, mAggregateMonth, mAggregate6Month, mAggregateYear, mAggregateAll; + private JSONArray mAggregateDay = new JSONArray(), mAggregateWeek = new JSONArray(), mAggregateMonth = new JSONArray(), mAggregate6Month = new JSONArray(), mAggregateYear = new JSONArray(), mAggregateAll = new JSONArray(); private ViewPager mStockChartViewPager; private TabLayout mStockTabBar; StockChartTabAdapter mPageAdapter; @@ -103,6 +103,8 @@ public void onClick(View view) { mBtnSell.setVisibility(View.GONE); } + mPageAdapter=new StockChartTabAdapter(getSupportFragmentManager()); + getStockDetailData(); } @@ -176,23 +178,53 @@ private void getStockDetailData() { public void onResponse(JSONObject response) { Log.d("response", "" + response); loadToast.success(); + try { mAggregateDay = response.getJSONArray("aggregate_day"); + } catch (JSONException e) { + e.printStackTrace(); + } + + try { mAggregateWeek = response.getJSONArray("aggregate_week"); + } catch (JSONException e) { + e.printStackTrace(); + } + + try { mAggregateMonth = response.getJSONArray("aggregate_month"); + } catch (JSONException e) { + e.printStackTrace(); + } + + try { mAggregate6Month = response.getJSONArray("aggregate_month6"); + } catch (JSONException e) { + e.printStackTrace(); + } + + try { mAggregateYear = response.getJSONArray("aggregate_year"); + } catch (JSONException e) { + e.printStackTrace(); + } + + try { mAggregateAll = response.getJSONArray("aggregate_all"); + } catch (JSONException e) { + e.printStackTrace(); + } - mPageAdapter=new StockChartTabAdapter(getSupportFragmentManager()); mPageAdapter.addCharData(mAggregateDay); mPageAdapter.addCharData(mAggregateWeek); mPageAdapter.addCharData(mAggregateMonth); mPageAdapter.addCharData(mAggregate6Month); mPageAdapter.addCharData(mAggregateYear); mPageAdapter.addCharData(mAggregateAll); - mStockChartViewPager.setAdapter(mPageAdapter); - mStockTabBar.setupWithViewPager(mStockChartViewPager); + mStockChartViewPager.setAdapter(mPageAdapter); + mStockTabBar.setupWithViewPager(mStockChartViewPager); + + try { StockBalance = response.optString("stock_balance"); @@ -217,7 +249,7 @@ public void onResponse(JSONObject response) { public void onError(ANError error) { loadToast.error(); // handle error - Toast.makeText(getBaseContext(), "Please try again. Network error.", Toast.LENGTH_SHORT).show(); + Toast.makeText(getBaseContext(), error.getMessage(), Toast.LENGTH_SHORT).show(); Log.d("errorm", "" + error.getMessage()); } }); diff --git a/app/src/main/java/com/brian/stocks/home/CoinExchangeFragment.java b/app/src/main/java/com/brian/stocks/xmt/CoinExchangeFragment.java similarity index 94% rename from app/src/main/java/com/brian/stocks/home/CoinExchangeFragment.java rename to app/src/main/java/com/brian/stocks/xmt/CoinExchangeFragment.java index 59e3d121..1636a107 100644 --- a/app/src/main/java/com/brian/stocks/home/CoinExchangeFragment.java +++ b/app/src/main/java/com/brian/stocks/xmt/CoinExchangeFragment.java @@ -1,8 +1,7 @@ -package com.brian.stocks.home; +package com.brian.stocks.xmt; import android.graphics.Bitmap; import android.graphics.BitmapFactory; -import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; @@ -55,7 +54,7 @@ public class CoinExchangeFragment extends Fragment { private Button mBtnTrade; private TabLayout tabLayout; private EditText mEditQuantity, mEditPrice; - private TextView mTextCoinBuy2, mTextCoinSell2, mTextCoinBuyBalance, mTextCoinSellBalance, mTextOutputTrade, mTextAsksTotalUSD, mTextBidsTotalUSD, mTextPriceUSD; + private TextView mTextChangeVolume, mTextChangeRate, mTextCoinBuy2, mTextCoinSell2, mTextCoinBuyBalance, mTextCoinSellBalance, mTextOutputTrade, mTextAsksTotalUSD, mTextBidsTotalUSD, mTextPriceUSD; private static String CoinSymbol; private View mView; private DecimalFormat df = new DecimalFormat("#.########"); @@ -367,7 +366,7 @@ private void getData() { .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { - //Log.d("coin assets response", "" + response.toString()); + Log.d("coin assets response", "" + response.toString()); try { if (!response.has("success") || response.getBoolean("success") == false) { ordersList.clear(); @@ -379,6 +378,8 @@ public void onResponse(JSONObject response) { mTextBidsTotalUSD.setText("Bids ($0)"); mTextCoinBuyBalance.setText(df.format(0.0)); mTextCoinSellBalance.setText(df.format(0.0)); + mTextChangeVolume.setText("Volume 24h: "+df.format(0.0)+" USD"); + mTextChangeRate.setText("Rate 24h: "+df.format(0.0)+" USD"); updateComponents(); return; } @@ -394,6 +395,9 @@ public void onResponse(JSONObject response) { JSONObject responseObj = null; try { + mTextChangeVolume.setText("Volume 24h: "+df.format(Float.parseFloat(response.getString("change_volume")))+" USD"); + mTextChangeRate.setText("Rate 24h: "+df.format(Float.parseFloat(response.getString("change_rate")))+" USD"); + mTextCoinBuyBalance.setText(df.format(Float.parseFloat(response.getString("coin2_balance")))); mTextCoinSellBalance.setText(df.format(Float.parseFloat(response.getString("coin1_balance")))); responseObj = response.getJSONObject("orders"); @@ -488,6 +492,8 @@ public void onError(ANError error) { mTextPriceUSD.setText("$0"); mTextAsksTotalUSD.setText("Asks ($0"); mTextBidsTotalUSD.setText("Bids ($0)"); + mTextChangeVolume.setText("Volume 24h: "+df.format(0.0)+" USD"); + mTextChangeRate.setText("Rate 24h: "+df.format(0.0)+" USD"); mTextCoinBuyBalance.setText(df.format(0.0)); mTextCoinSellBalance.setText(df.format(0.0)); updateComponents(); @@ -521,7 +527,7 @@ private void sendData() { .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { - //Log.d("coin post response", "" + response.toString()); + Log.d("xmt trading response", "" + response.toString()); if (!response.has("success")) { /* try { @@ -531,6 +537,7 @@ public void onResponse(JSONObject response) { } */ + Toast.makeText(getContext(), "Order failed.", Toast.LENGTH_SHORT).show(); return; } @@ -596,6 +603,10 @@ private void initComponents() { mTextCoinBuyBalance = mView.findViewById(R.id.coin_buy_balance); mTextCoinSellBalance = mView.findViewById(R.id.coin_sell_balance); + + mTextChangeVolume = mView.findViewById(R.id.coin_volume_change); + mTextChangeRate = mView.findViewById(R.id.coin_rate_change); + orderView = mView.findViewById(R.id.orders_view); orderAdapter = new OrderAdapter(ordersList); orderView.setLayoutManager(new LinearLayoutManager(getContext())); @@ -626,6 +637,7 @@ private void initListeners() { mBtnTrade.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { + if(validate()) sendData(); /* if(mEditSellingAmount.getText().toString().equals("")|| @@ -708,6 +720,19 @@ public void afterTextChanged(Editable editable) { }); } + private boolean validate() { + boolean validation = true; + if(mEditPrice.getText().toString().equals("")) { + mEditPrice.setError("!"); + validation = false; + } + if(mEditQuantity.getText().toString().equals("")) { + mEditQuantity.setError("!"); + validation = false; + } + return validation; + } + private double getPrice() throws JSONException { if(selType.equalsIgnoreCase("buy")) { if (asksList.isEmpty()) { diff --git a/app/src/main/java/com/brian/stocks/xmt/XMTTradingActivity.java b/app/src/main/java/com/brian/stocks/xmt/XMTTradingActivity.java index 979b7127..18e01f10 100644 --- a/app/src/main/java/com/brian/stocks/xmt/XMTTradingActivity.java +++ b/app/src/main/java/com/brian/stocks/xmt/XMTTradingActivity.java @@ -7,7 +7,6 @@ import android.os.Bundle; import com.brian.stocks.R; -import com.brian.stocks.home.CoinExchangeFragment; public class XMTTradingActivity extends AppCompatActivity { diff --git a/app/src/main/res/layout/activity_sign_in.xml b/app/src/main/res/layout/activity_sign_in.xml index 03024805..74aae4a6 100644 --- a/app/src/main/res/layout/activity_sign_in.xml +++ b/app/src/main/res/layout/activity_sign_in.xml @@ -107,7 +107,7 @@ android:id="@+id/loginBtn" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="30dp" + android:layout_marginTop="0dp" android:layout_marginHorizontal="20dp" android:text="Log In" android:textColor="@color/white" /> diff --git a/app/src/main/res/layout/activity_stock_buy.xml b/app/src/main/res/layout/activity_stock_buy.xml index 5ed697e6..f90e7361 100644 --- a/app/src/main/res/layout/activity_stock_buy.xml +++ b/app/src/main/res/layout/activity_stock_buy.xml @@ -64,6 +64,7 @@ android:layout_weight="1" android:layout_width="match_parent" android:layout_height="wrap_content" + android:gravity="center_horizontal" android:orientation="horizontal"> @@ -283,10 +286,7 @@ android:layout_height="wrap_content" android:layout_marginTop="10dp" android:layout_marginHorizontal="80dp" - android:background="@drawable/feather_red_button" android:text="Replace" - android:textColor="@android:color/white" - android:textSize="25dp" /> diff --git a/app/src/main/res/layout/activity_stock_sell.xml b/app/src/main/res/layout/activity_stock_sell.xml index f5c0cb8e..b186d05b 100644 --- a/app/src/main/res/layout/activity_stock_sell.xml +++ b/app/src/main/res/layout/activity_stock_sell.xml @@ -64,6 +64,7 @@ android:layout_weight="1" android:layout_width="match_parent" android:layout_height="wrap_content" + android:gravity="center_horizontal" android:orientation="horizontal"> diff --git a/app/src/main/res/layout/activity_stocks_order.xml b/app/src/main/res/layout/activity_stocks_order.xml index 28a0457a..10eb275f 100644 --- a/app/src/main/res/layout/activity_stocks_order.xml +++ b/app/src/main/res/layout/activity_stocks_order.xml @@ -130,19 +130,17 @@