diff --git a/app/src/main/java/com/example/dcav2gui/ui/home/HomeFragment.java b/app/src/main/java/com/example/dcav2gui/ui/home/HomeFragment.java index a416252..2718d27 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/home/HomeFragment.java +++ b/app/src/main/java/com/example/dcav2gui/ui/home/HomeFragment.java @@ -21,6 +21,7 @@ import com.example.dcav2gui.R; import com.example.dcav2gui.TickerTracker; import java.util.Locale; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -254,13 +255,46 @@ public class HomeFragment extends Fragment { String ticker2 = "ETHUSDT"; String ticker3 = "USDTARS"; - TickerTracker.PriceChangeData priceData = TickerTracker.getPriceChanges(ticker1); - TickerTracker.PriceChangeData priceData2 = TickerTracker.getPriceChanges(ticker2); - TickerTracker.PriceChangeData priceData3 = TickerTracker.getPriceChanges(ticker3); + // Fetch price data in background using CompletableFuture + CompletableFuture future1 = CompletableFuture.supplyAsync(() -> { + try { + return TickerTracker.getPriceChanges(ticker1); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + }); + + CompletableFuture future2 = CompletableFuture.supplyAsync(() -> { + try { + return TickerTracker.getPriceChanges(ticker2); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + }); + + CompletableFuture future3 = CompletableFuture.supplyAsync(() -> { + try { + return TickerTracker.getPriceChanges(ticker3); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + }); + + // Wait for all futures to complete + CompletableFuture allFutures = CompletableFuture.allOf(future1, future2, future3); + + // Update UI on the main thread requireActivity().runOnUiThread(() -> { try { + TickerTracker.PriceChangeData priceData = future1.get(); + TickerTracker.PriceChangeData priceData2 = future2.get(); + TickerTracker.PriceChangeData priceData3 = future3.get();; + pricePair1.setText(String.format(Locale.ROOT,"%.2f", priceData.getCurrentPrice())); setPercentageColor(pricePair124hPercentage,priceData.getPriceChangePercent24h()); setPercentageColor(pricePair17dPercentage,priceData.getPriceChangePercent7d()); @@ -280,7 +314,7 @@ public class HomeFragment extends Fragment { Toast.makeText(getContext(), "Error updating UI", Toast.LENGTH_SHORT).show(); } }); - } catch (IOException e) { + } catch (Exception e) { requireActivity().runOnUiThread(() -> Toast.makeText(getContext(), "Failed to fetch price data. Check your connection.", Toast.LENGTH_SHORT).show() );