Marketcap fixes and improvements
- Add rank - Fix marketcap not displaying for NANO and BCN - Add crash catcher for some not well support cryptocurrencies
This commit is contained in:
parent
97dc6df33a
commit
c431b18d36
@ -90,6 +90,9 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
|
|||||||
private PreferencesManager preferencesManager;
|
private PreferencesManager preferencesManager;
|
||||||
private BinanceManager binanceManager;
|
private BinanceManager binanceManager;
|
||||||
|
|
||||||
|
private boolean isSnapshotUpdated;
|
||||||
|
private boolean isTickerUpdated;
|
||||||
|
|
||||||
private boolean displayLineChart;
|
private boolean displayLineChart;
|
||||||
|
|
||||||
private Button lineChartButton;
|
private Button lineChartButton;
|
||||||
@ -147,6 +150,9 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
|
|||||||
databaseManager = new DatabaseManager(this);
|
databaseManager = new DatabaseManager(this);
|
||||||
preferencesManager = new PreferencesManager(this);
|
preferencesManager = new PreferencesManager(this);
|
||||||
|
|
||||||
|
isSnapshotUpdated = false;
|
||||||
|
isTickerUpdated = false;
|
||||||
|
|
||||||
displayLineChart = true;
|
displayLineChart = true;
|
||||||
|
|
||||||
viewFlipper = findViewById(R.id.vfCurrencyDetails);
|
viewFlipper = findViewById(R.id.vfCurrencyDetails);
|
||||||
@ -231,6 +237,17 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
|
|||||||
.setMovementMethod(LinkMovementMethod.getInstance());
|
.setMovementMethod(LinkMovementMethod.getInstance());
|
||||||
((TextView) findViewById(R.id.txtViewPercentageCoinEmited))
|
((TextView) findViewById(R.id.txtViewPercentageCoinEmited))
|
||||||
.setText("Percentage of coin emited : " + numberConformer(currency.getMinedCoinSupply() / currency.getMaxCoinSupply() * 100) + "%");
|
.setText("Percentage of coin emited : " + numberConformer(currency.getMinedCoinSupply() / currency.getMaxCoinSupply() * 100) + "%");
|
||||||
|
if(currency.getMarketCapitalization() != 0)
|
||||||
|
{
|
||||||
|
((TextView) findViewById(R.id.txtViewMarketCapitalization))
|
||||||
|
.setText(PlaceholderManager.getValueString(numberConformer(currency.getMarketCapitalization()), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(currency.getRank() != 0)
|
||||||
|
{
|
||||||
|
((TextView) findViewById(R.id.txtViewRank))
|
||||||
|
.setText(String.valueOf(currency.getRank()));
|
||||||
|
}
|
||||||
|
|
||||||
if(currency.getMaxCoinSupply() == 0)
|
if(currency.getMaxCoinSupply() == 0)
|
||||||
{
|
{
|
||||||
@ -251,6 +268,24 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
|
|||||||
currency.updateSnapshot(this, new Currency.CurrencyCallBack() {
|
currency.updateSnapshot(this, new Currency.CurrencyCallBack() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(final Currency currency) {
|
public void onSuccess(final Currency currency) {
|
||||||
|
isSnapshotUpdated = true;
|
||||||
|
dataCounter();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
currency.updateTicker(this, preferencesManager.getDefaultCurrency(), new Currency.CurrencyCallBack() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Currency currency) {
|
||||||
|
isTickerUpdated = true;
|
||||||
|
dataCounter();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dataCounter()
|
||||||
|
{
|
||||||
|
if(isTickerUpdated && isSnapshotUpdated)
|
||||||
|
{
|
||||||
runOnUiThread(new Runnable() {
|
runOnUiThread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -258,7 +293,6 @@ public class CurrencyDetailsActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupActionBar()
|
private void setupActionBar()
|
||||||
|
@ -44,6 +44,7 @@ import com.github.mikephil.charting.data.PieEntry;
|
|||||||
import com.github.mikephil.charting.formatter.PercentFormatter;
|
import com.github.mikephil.charting.formatter.PercentFormatter;
|
||||||
import com.nauk.coinfolio.DataManagers.BalanceManager;
|
import com.nauk.coinfolio.DataManagers.BalanceManager;
|
||||||
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
|
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
|
||||||
|
import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyTickerList;
|
||||||
import com.nauk.coinfolio.DataManagers.MarketCapManager;
|
import com.nauk.coinfolio.DataManagers.MarketCapManager;
|
||||||
import com.nauk.coinfolio.DataManagers.PreferencesManager;
|
import com.nauk.coinfolio.DataManagers.PreferencesManager;
|
||||||
import com.nauk.coinfolio.LayoutManagers.HomeLayoutGenerator;
|
import com.nauk.coinfolio.LayoutManagers.HomeLayoutGenerator;
|
||||||
|
@ -32,6 +32,7 @@ import com.nauk.coinfolio.Activities.HomeActivity;
|
|||||||
import com.nauk.coinfolio.Activities.SettingsActivity;
|
import com.nauk.coinfolio.Activities.SettingsActivity;
|
||||||
import com.nauk.coinfolio.DataManagers.BalanceManager;
|
import com.nauk.coinfolio.DataManagers.BalanceManager;
|
||||||
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
|
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
|
||||||
|
import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyTickerList;
|
||||||
import com.nauk.coinfolio.DataManagers.PreferencesManager;
|
import com.nauk.coinfolio.DataManagers.PreferencesManager;
|
||||||
import com.nauk.coinfolio.LayoutManagers.HomeLayoutGenerator;
|
import com.nauk.coinfolio.LayoutManagers.HomeLayoutGenerator;
|
||||||
import com.nauk.coinfolio.PlaceholderManager;
|
import com.nauk.coinfolio.PlaceholderManager;
|
||||||
@ -62,6 +63,7 @@ public class Summary extends Fragment {
|
|||||||
private SwipeRefreshLayout refreshLayout;
|
private SwipeRefreshLayout refreshLayout;
|
||||||
private Dialog loadingDialog;
|
private Dialog loadingDialog;
|
||||||
private String defaultCurrency;
|
private String defaultCurrency;
|
||||||
|
private CurrencyTickerList currencyTickerList;
|
||||||
|
|
||||||
private TextView toolbarSubtitle;
|
private TextView toolbarSubtitle;
|
||||||
private CollapsingToolbarLayout toolbarLayout;
|
private CollapsingToolbarLayout toolbarLayout;
|
||||||
@ -73,6 +75,7 @@ public class Summary extends Fragment {
|
|||||||
private int iconCounter;
|
private int iconCounter;
|
||||||
private float totalValue;
|
private float totalValue;
|
||||||
private boolean detailsChecker;
|
private boolean detailsChecker;
|
||||||
|
private boolean tickersChecker;
|
||||||
protected float totalFluctuation;
|
protected float totalFluctuation;
|
||||||
private long lastTimestamp;
|
private long lastTimestamp;
|
||||||
|
|
||||||
@ -88,10 +91,12 @@ public class Summary extends Fragment {
|
|||||||
layoutGenerator = new HomeLayoutGenerator(getActivity());
|
layoutGenerator = new HomeLayoutGenerator(getActivity());
|
||||||
refreshLayout = fragmentView.findViewById(R.id.swiperefreshsummary);
|
refreshLayout = fragmentView.findViewById(R.id.swiperefreshsummary);
|
||||||
toolbarSubtitle = fragmentView.findViewById(R.id.toolbarSubtitle);
|
toolbarSubtitle = fragmentView.findViewById(R.id.toolbarSubtitle);
|
||||||
|
currencyTickerList = new CurrencyTickerList(getActivity());
|
||||||
|
|
||||||
totalValue = 0;
|
totalValue = 0;
|
||||||
totalFluctuation = 0;
|
totalFluctuation = 0;
|
||||||
lastTimestamp = 0;
|
lastTimestamp = 0;
|
||||||
|
tickersChecker = false;
|
||||||
|
|
||||||
defaultCurrency = preferencesManager.getDefaultCurrency();
|
defaultCurrency = preferencesManager.getDefaultCurrency();
|
||||||
|
|
||||||
@ -277,6 +282,11 @@ public class Summary extends Fragment {
|
|||||||
{
|
{
|
||||||
currencyLayout.addView(currencyView.get(i));
|
currencyLayout.addView(currencyView.get(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(loadingDialog.isShowing())
|
||||||
|
{
|
||||||
|
loadingDialog.dismiss();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -285,13 +295,18 @@ public class Summary extends Fragment {
|
|||||||
newRunnable.run();
|
newRunnable.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void countCoins(boolean isCoin, boolean isDetails)
|
private void countCoins(boolean isCoin, boolean isDetails, boolean isTickers)
|
||||||
{
|
{
|
||||||
if(isCoin)
|
if(isCoin)
|
||||||
{
|
{
|
||||||
coinCounter++;
|
coinCounter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isTickers)
|
||||||
|
{
|
||||||
|
tickersChecker = true;
|
||||||
|
}
|
||||||
|
|
||||||
if(isDetails)
|
if(isDetails)
|
||||||
{
|
{
|
||||||
detailsChecker = true;
|
detailsChecker = true;
|
||||||
@ -299,7 +314,7 @@ public class Summary extends Fragment {
|
|||||||
|
|
||||||
if(balanceManager.getTotalBalance() != null)
|
if(balanceManager.getTotalBalance() != null)
|
||||||
{
|
{
|
||||||
if(coinCounter == balanceManager.getTotalBalance().size() && detailsChecker)
|
if(coinCounter == balanceManager.getTotalBalance().size() && detailsChecker && tickersChecker)
|
||||||
{
|
{
|
||||||
IconDownloader iconDownloader = new IconDownloader();
|
IconDownloader iconDownloader = new IconDownloader();
|
||||||
iconDownloader.execute();
|
iconDownloader.execute();
|
||||||
@ -500,6 +515,8 @@ public class Summary extends Fragment {
|
|||||||
{
|
{
|
||||||
final Currency localCurrency = balanceManager.getTotalBalance().get(i);
|
final Currency localCurrency = balanceManager.getTotalBalance().get(i);
|
||||||
|
|
||||||
|
localCurrency.setTickerId(currencyTickerList.getTickerIdForSymbol(localCurrency.getSymbol()));
|
||||||
|
|
||||||
updateChartColor(localCurrency);
|
updateChartColor(localCurrency);
|
||||||
|
|
||||||
loadCurrency(localCurrency);
|
loadCurrency(localCurrency);
|
||||||
@ -514,11 +531,6 @@ public class Summary extends Fragment {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(loadingDialog.isShowing())
|
|
||||||
{
|
|
||||||
loadingDialog.dismiss();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -626,11 +638,17 @@ public class Summary extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(Void... params)
|
protected Void doInBackground(Void... params)
|
||||||
{
|
{
|
||||||
|
currencyTickerList.update(new BalanceManager.IconCallBack() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
countCoins(false, false, true);
|
||||||
|
}
|
||||||
|
});
|
||||||
balanceManager.updateDetails(new BalanceManager.IconCallBack() {
|
balanceManager.updateDetails(new BalanceManager.IconCallBack() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess()
|
public void onSuccess()
|
||||||
{
|
{
|
||||||
countCoins(false, true);
|
countCoins(false, true, false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -647,8 +665,7 @@ public class Summary extends Fragment {
|
|||||||
balance.get(i).updatePrice(getActivity(), defaultCurrency, new Currency.CurrencyCallBack() {
|
balance.get(i).updatePrice(getActivity(), defaultCurrency, new Currency.CurrencyCallBack() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Currency currency) {
|
public void onSuccess(Currency currency) {
|
||||||
countCoins(true, false);
|
countCoins(true, false, false);
|
||||||
Log.d("coinfolio", "History " + currency.getSymbol());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -658,7 +675,7 @@ public class Summary extends Fragment {
|
|||||||
getActivity().runOnUiThread(new Runnable() {
|
getActivity().runOnUiThread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
countCoins(false, false);
|
countCoins(false, false, false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,7 @@ import com.nauk.coinfolio.DataManagers.BalanceManager;
|
|||||||
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
|
import com.nauk.coinfolio.DataManagers.CurrencyData.Currency;
|
||||||
import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyDataChart;
|
import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyDataChart;
|
||||||
import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyDetailsList;
|
import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyDetailsList;
|
||||||
|
import com.nauk.coinfolio.DataManagers.CurrencyData.CurrencyTickerList;
|
||||||
import com.nauk.coinfolio.DataManagers.PreferencesManager;
|
import com.nauk.coinfolio.DataManagers.PreferencesManager;
|
||||||
import com.nauk.coinfolio.DataManagers.WatchlistManager;
|
import com.nauk.coinfolio.DataManagers.WatchlistManager;
|
||||||
import com.nauk.coinfolio.PlaceholderManager;
|
import com.nauk.coinfolio.PlaceholderManager;
|
||||||
@ -73,6 +74,9 @@ public class Watchlist extends Fragment {
|
|||||||
private long lastTimestamp;
|
private long lastTimestamp;
|
||||||
private PreferencesManager preferencesManager;
|
private PreferencesManager preferencesManager;
|
||||||
private String defaultCurrency;
|
private String defaultCurrency;
|
||||||
|
private CurrencyTickerList currencyTickerList;
|
||||||
|
private boolean tickerUpdated;
|
||||||
|
private boolean detailsUpdated;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
|
||||||
@ -85,6 +89,15 @@ public class Watchlist extends Fragment {
|
|||||||
|
|
||||||
lastTimestamp = 0;
|
lastTimestamp = 0;
|
||||||
defaultCurrency = preferencesManager.getDefaultCurrency();
|
defaultCurrency = preferencesManager.getDefaultCurrency();
|
||||||
|
currencyTickerList = new CurrencyTickerList(getActivity());
|
||||||
|
tickerUpdated = false;
|
||||||
|
currencyTickerList.update(new BalanceManager.IconCallBack() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess() {
|
||||||
|
tickerUpdated = true;
|
||||||
|
checkUpdatedData();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
watchlistManager = new WatchlistManager(getContext());
|
watchlistManager = new WatchlistManager(getContext());
|
||||||
|
|
||||||
@ -212,14 +225,15 @@ public class Watchlist extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lastTimestamp = System.currentTimeMillis()/1000;
|
lastTimestamp = System.currentTimeMillis()/1000;
|
||||||
|
detailsUpdated = false;
|
||||||
|
|
||||||
watchlistManager.updateWatchlist();
|
watchlistManager.updateWatchlist();
|
||||||
|
|
||||||
currencyDetailsList.update(new BalanceManager.IconCallBack() {
|
currencyDetailsList.update(new BalanceManager.IconCallBack() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess() {
|
public void onSuccess() {
|
||||||
WatchlistUpdater watchlistUpdater = new WatchlistUpdater();
|
detailsUpdated = true;
|
||||||
watchlistUpdater.execute();
|
checkUpdatedData();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -232,6 +246,15 @@ public class Watchlist extends Fragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void checkUpdatedData()
|
||||||
|
{
|
||||||
|
if(tickerUpdated && detailsUpdated)
|
||||||
|
{
|
||||||
|
WatchlistUpdater watchlistUpdater = new WatchlistUpdater();
|
||||||
|
watchlistUpdater.execute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void generateCards()
|
private void generateCards()
|
||||||
{
|
{
|
||||||
final List<View> watchlistViews = new ArrayList<View>();
|
final List<View> watchlistViews = new ArrayList<View>();
|
||||||
@ -516,6 +539,7 @@ public class Watchlist extends Fragment {
|
|||||||
protected Void doInBackground(Void... voids) {
|
protected Void doInBackground(Void... voids) {
|
||||||
for(final Currency currency : watchlistManager.getWatchlist())
|
for(final Currency currency : watchlistManager.getWatchlist())
|
||||||
{
|
{
|
||||||
|
currency.setTickerId(currencyTickerList.getTickerIdForSymbol(currency.getSymbol()));
|
||||||
currency.setId(getCurrencyId(currency.getSymbol()));
|
currency.setId(getCurrencyId(currency.getSymbol()));
|
||||||
currency.updatePrice(getActivity(), preferencesManager.getDefaultCurrency(), new Currency.CurrencyCallBack() {
|
currency.updatePrice(getActivity(), preferencesManager.getDefaultCurrency(), new Currency.CurrencyCallBack() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -19,6 +19,7 @@ import java.util.List;
|
|||||||
public class Currency implements Parcelable {
|
public class Currency implements Parcelable {
|
||||||
|
|
||||||
private int id;
|
private int id;
|
||||||
|
private String tickerId;
|
||||||
private String name;
|
private String name;
|
||||||
private String symbol;
|
private String symbol;
|
||||||
private double value;
|
private double value;
|
||||||
@ -38,6 +39,7 @@ public class Currency implements Parcelable {
|
|||||||
private String proofType;
|
private String proofType;
|
||||||
private int totalSupply;
|
private int totalSupply;
|
||||||
private double marketCapitalization;
|
private double marketCapitalization;
|
||||||
|
private int rank;
|
||||||
private List<String> socialMediaLinks;
|
private List<String> socialMediaLinks;
|
||||||
//private String proofType
|
//private String proofType
|
||||||
|
|
||||||
@ -152,7 +154,29 @@ public class Currency implements Parcelable {
|
|||||||
dataRetriver.updateSnapshot(id, new CurrencyDataRetriever.CurrencyCallBack() {
|
dataRetriver.updateSnapshot(id, new CurrencyDataRetriever.CurrencyCallBack() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Currency currencyInfo) {
|
public void onSuccess(Currency currencyInfo) {
|
||||||
Currency.this.mergeWith(currencyInfo);
|
//Currency.this.mergeWith(currencyInfo);
|
||||||
|
|
||||||
|
Currency.this.proofType = currencyInfo.proofType;
|
||||||
|
Currency.this.algorithm = currencyInfo.algorithm;
|
||||||
|
Currency.this.description = currencyInfo.description;
|
||||||
|
Currency.this.maxCoinSupply = currencyInfo.maxCoinSupply;
|
||||||
|
Currency.this.minedCoinSupply = currencyInfo.minedCoinSupply;
|
||||||
|
|
||||||
|
callBack.onSuccess(Currency.this);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateTicker(android.content.Context context, String toSymbol, final CurrencyCallBack callBack)
|
||||||
|
{
|
||||||
|
dataRetriver = new CurrencyDataRetriever(context);
|
||||||
|
dataRetriver.updateTickerInfos(tickerId, toSymbol, new CurrencyDataRetriever.CurrencyCallBack() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Currency currencyInfo) {
|
||||||
|
//Currency.this.mergeWith(currencyInfo);
|
||||||
|
|
||||||
|
Currency.this.marketCapitalization = currencyInfo.marketCapitalization;
|
||||||
|
Currency.this.rank = currencyInfo.rank;
|
||||||
|
|
||||||
callBack.onSuccess(Currency.this);
|
callBack.onSuccess(Currency.this);
|
||||||
}
|
}
|
||||||
@ -355,6 +379,30 @@ public class Currency implements Parcelable {
|
|||||||
this.proofType = proofType;
|
this.proofType = proofType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double getMarketCapitalization() {
|
||||||
|
return marketCapitalization;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMarketCapitalization(double marketCapitalization) {
|
||||||
|
this.marketCapitalization = marketCapitalization;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRank() {
|
||||||
|
return rank;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRank(int rank) {
|
||||||
|
this.rank = rank;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTickerId() {
|
||||||
|
return tickerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTickerId(String tickerId) {
|
||||||
|
this.tickerId = tickerId;
|
||||||
|
}
|
||||||
|
|
||||||
private void updateDayFluctuation()
|
private void updateDayFluctuation()
|
||||||
{
|
{
|
||||||
if(historyMinutes != null)
|
if(historyMinutes != null)
|
||||||
@ -412,6 +460,7 @@ public class Currency implements Parcelable {
|
|||||||
dest.writeList(this.historyMinutes);
|
dest.writeList(this.historyMinutes);
|
||||||
dest.writeParcelable(this.icon, flags);
|
dest.writeParcelable(this.icon, flags);
|
||||||
dest.writeInt(this.chartColor);
|
dest.writeInt(this.chartColor);
|
||||||
|
dest.writeString(this.tickerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Currency(Parcel in) {
|
protected Currency(Parcel in) {
|
||||||
@ -426,6 +475,7 @@ public class Currency implements Parcelable {
|
|||||||
in.readList(this.historyMinutes, CurrencyDataChart.class.getClassLoader());
|
in.readList(this.historyMinutes, CurrencyDataChart.class.getClassLoader());
|
||||||
this.icon = in.readParcelable(Bitmap.class.getClassLoader());
|
this.icon = in.readParcelable(Bitmap.class.getClassLoader());
|
||||||
this.chartColor = in.readInt();
|
this.chartColor = in.readInt();
|
||||||
|
this.tickerId = in.readString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Parcelable.Creator<Currency> CREATOR = new Parcelable.Creator<Currency>() {
|
public static final Parcelable.Creator<Currency> CREATOR = new Parcelable.Creator<Currency>() {
|
||||||
|
@ -33,6 +33,7 @@ public class CurrencyDataRetriever {
|
|||||||
private String dayHistoryUrl = "https://min-api.cryptocompare.com/data/histoday";
|
private String dayHistoryUrl = "https://min-api.cryptocompare.com/data/histoday";
|
||||||
private String priceUrl = "https://min-api.cryptocompare.com/data/pricemultifull?fsyms=";
|
private String priceUrl = "https://min-api.cryptocompare.com/data/pricemultifull?fsyms=";
|
||||||
private String snapshotUrl = "https://www.cryptocompare.com/api/data/coinsnapshotfullbyid/?id=";
|
private String snapshotUrl = "https://www.cryptocompare.com/api/data/coinsnapshotfullbyid/?id=";
|
||||||
|
private String tickerUrl = "https://api.coinmarketcap.com/v1/ticker/";
|
||||||
|
|
||||||
private RequestQueue requestQueue;
|
private RequestQueue requestQueue;
|
||||||
|
|
||||||
@ -45,12 +46,49 @@ public class CurrencyDataRetriever {
|
|||||||
requestQueue = Volley.newRequestQueue(context);
|
requestQueue = Volley.newRequestQueue(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateTickerInfos(String currencyName, final String toSymbol, final CurrencyCallBack callBack)
|
||||||
|
{
|
||||||
|
final String requestUrl = tickerUrl + currencyName + "/?convert=" + toSymbol;
|
||||||
|
|
||||||
|
StringRequest stringRequest = new StringRequest(Request.Method.GET, requestUrl,
|
||||||
|
new Response.Listener<String>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(String response) {
|
||||||
|
callBack.onSuccess(processTicker(response, toSymbol));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new Response.ErrorListener() {
|
||||||
|
@Override
|
||||||
|
public void onErrorResponse(VolleyError error) {
|
||||||
|
callBack.onSuccess(new Currency());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
requestQueue.add(stringRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Currency processTicker(String response, String toSymbol)
|
||||||
|
{
|
||||||
|
Currency currency = new Currency();
|
||||||
|
|
||||||
|
response = response.substring(1, response.length()-1);
|
||||||
|
|
||||||
|
try {
|
||||||
|
JSONObject jsonObject = new JSONObject(response);
|
||||||
|
|
||||||
|
currency.setMarketCapitalization(jsonObject.getDouble("market_cap_" + toSymbol.toLowerCase()));
|
||||||
|
currency.setRank(jsonObject.getInt("rank"));
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return currency;
|
||||||
|
}
|
||||||
|
|
||||||
public void updateSnapshot(int id, final CurrencyCallBack callBack)
|
public void updateSnapshot(int id, final CurrencyCallBack callBack)
|
||||||
{
|
{
|
||||||
final String requestUrl = snapshotUrl + id;
|
final String requestUrl = snapshotUrl + id;
|
||||||
|
|
||||||
Log.d("coinfolio", "Update snapshot for " + id);
|
|
||||||
|
|
||||||
StringRequest stringRequest = new StringRequest(Request.Method.GET, requestUrl,
|
StringRequest stringRequest = new StringRequest(Request.Method.GET, requestUrl,
|
||||||
new Response.Listener<String>() {
|
new Response.Listener<String>() {
|
||||||
@Override
|
@Override
|
||||||
@ -61,7 +99,7 @@ public class CurrencyDataRetriever {
|
|||||||
new Response.ErrorListener() {
|
new Response.ErrorListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onErrorResponse(VolleyError error) {
|
public void onErrorResponse(VolleyError error) {
|
||||||
|
callBack.onSuccess(new Currency());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -0,0 +1,101 @@
|
|||||||
|
package com.nauk.coinfolio.DataManagers.CurrencyData;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.android.volley.Request;
|
||||||
|
import com.android.volley.RequestQueue;
|
||||||
|
import com.android.volley.Response;
|
||||||
|
import com.android.volley.VolleyError;
|
||||||
|
import com.android.volley.toolbox.StringRequest;
|
||||||
|
import com.android.volley.toolbox.Volley;
|
||||||
|
import com.nauk.coinfolio.DataManagers.BalanceManager;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Guitoune on 22/04/2018.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class CurrencyTickerList {
|
||||||
|
|
||||||
|
final private static String TICKERLISTURL = "https://api.coinmarketcap.com/v1/ticker/?limit=0";
|
||||||
|
private RequestQueue requestQueue;
|
||||||
|
private LinkedHashMap<String, String> coinTickersHashmap;
|
||||||
|
private android.content.Context context;
|
||||||
|
|
||||||
|
public CurrencyTickerList(android.content.Context context)
|
||||||
|
{
|
||||||
|
this.context = context;
|
||||||
|
requestQueue = Volley.newRequestQueue(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update(final BalanceManager.IconCallBack callBack)
|
||||||
|
{
|
||||||
|
coinTickersHashmap = new LinkedHashMap<>();
|
||||||
|
StringRequest strRequest = new StringRequest(Request.Method.GET, TICKERLISTURL,
|
||||||
|
new Response.Listener<String>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(String response) {
|
||||||
|
if (response.length() > 0) {
|
||||||
|
processTickerListResult(response, callBack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
new Response.ErrorListener() {
|
||||||
|
@Override
|
||||||
|
public void onErrorResponse(VolleyError error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
requestQueue.add(strRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTickerIdForSymbol(String symbol)
|
||||||
|
{
|
||||||
|
String tickerId = null;
|
||||||
|
try {
|
||||||
|
JSONObject jsonObject = new JSONObject(coinTickersHashmap.get(symbol));
|
||||||
|
tickerId = jsonObject.getString("id");
|
||||||
|
} catch (JSONException | NullPointerException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return tickerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void processTickerListResult(String response, BalanceManager.IconCallBack callBack)
|
||||||
|
{
|
||||||
|
response = response.substring(1, response.length() - 1);
|
||||||
|
String[] strTable = response.split(Pattern.quote("},"));
|
||||||
|
|
||||||
|
for(int i = 0; i < strTable.length; i++)
|
||||||
|
{
|
||||||
|
strTable[i] += "}";
|
||||||
|
try {
|
||||||
|
JSONObject jsonObject = new JSONObject(strTable[i]);
|
||||||
|
switch (jsonObject.getString("symbol"))
|
||||||
|
{
|
||||||
|
case "MIOTA":
|
||||||
|
coinTickersHashmap.put("IOT", strTable[i]);
|
||||||
|
break;
|
||||||
|
case "NANO":
|
||||||
|
coinTickersHashmap.put("XRB", strTable[i]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
coinTickersHashmap.put(jsonObject.getString("symbol"), strTable[i]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
callBack.onSuccess();
|
||||||
|
}
|
||||||
|
}
|
@ -443,13 +443,13 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:layout_weight="0.5"
|
android:orientation="horizontal">
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical"
|
||||||
|
android:layout_weight="0.5">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@ -460,7 +460,28 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/txtViewMarketCapitalization"
|
android:id="@+id/txtViewMarketCapitalization"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"/>
|
android:layout_height="wrap_content"
|
||||||
|
android:text="--"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_weight="0.5">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Rank"
|
||||||
|
android:textStyle="bold"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/txtViewRank"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="--"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user