faster instance loading

This commit is contained in:
Nicolás Sánchez 2024-12-18 10:21:17 -03:00
parent 1906ddec8f
commit 231fb297f8
8 changed files with 78 additions and 17 deletions

View File

@ -615,12 +615,8 @@ public class InstanceInterface {
} }
} }
public static List<WorkerData> fetchWorkersDataForCards(String exchange) throws IOException { public static List<WorkerData> translateToWorkerData(List<InstanceInterface.WorkerStatsData> workerStatsDataList) {
// Implement this method to fetch actual data //Translates from WorkerStatsData to WorkerData (for cards)
// call List<WorkerStatsData> getAllWorkersStats from InstanceInterface and
// translate all the WorkerStatsData objects to WorkerData objects!
// Example implementation:
List<InstanceInterface.WorkerStatsData> workerStatsDataList = InstanceInterface.getAllWorkersStats(exchange, true);
List<WorkerData> workerDataList = new ArrayList<>(); List<WorkerData> workerDataList = new ArrayList<>();
if (workerStatsDataList != null) { if (workerStatsDataList != null) {
for (InstanceInterface.WorkerStatsData workerStatsData : workerStatsDataList) { for (InstanceInterface.WorkerStatsData workerStatsData : workerStatsDataList) {
@ -651,8 +647,17 @@ public class InstanceInterface {
return Double.compare(w1.getUptime(), w2.getUptime()); return Double.compare(w1.getUptime(), w2.getUptime());
} }
}); });
return workerDataList; return workerDataList;
}
public static List<WorkerData> fetchWorkersDataForCards(String exchange) throws IOException {
// Implement this method to fetch actual data
// call List<WorkerStatsData> getAllWorkersStats from InstanceInterface and
// translate all the WorkerStatsData objects to WorkerData objects!
// Example implementation:
List<InstanceInterface.WorkerStatsData> workerStatsDataList = InstanceInterface.getAllWorkersStats(exchange, true);
return translateToWorkerData(workerStatsDataList);
} }

View File

@ -25,6 +25,9 @@ import com.example.dcav2gui.databinding.ActivityMainBinding;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
import java.util.Objects;
import okhttp3.internal.connection.Exchange;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
@ -32,6 +35,11 @@ public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding; private ActivityMainBinding binding;
public static SettingsData globalSettings; public static SettingsData globalSettings;
public HomeFragment.HomeCache homeViewCache; public HomeFragment.HomeCache homeViewCache;
public static InstanceInterface.ExchangeStatsData binanceCache;
public static InstanceInterface.ExchangeStatsData gateioCache;
public static InstanceInterface.ExchangeStatsData kucoinCache;
public static InstanceInterface.ExchangeStatsData okxCache;
public HomeFragment.HomeCache getHomeViewCache() { public HomeFragment.HomeCache getHomeViewCache() {
@ -42,6 +50,27 @@ public class MainActivity extends AppCompatActivity {
this.homeViewCache = newCache; this.homeViewCache = newCache;
} }
public void setInstanceCache(InstanceInterface.ExchangeStatsData binance,
InstanceInterface.ExchangeStatsData gateio,
InstanceInterface.ExchangeStatsData kucoin,
InstanceInterface.ExchangeStatsData okx) {
binanceCache = binance;
gateioCache = gateio;
kucoinCache = kucoin;
okxCache = okx;
}
public static InstanceInterface.ExchangeStatsData getInstanceCache(String exchange) {
if (Objects.equals(exchange, "binance")) {
return binanceCache;
} else if (Objects.equals(exchange, "gateio")) {
return gateioCache;
} else if (Objects.equals(exchange, "kucoin")) {
return kucoinCache;
} else {
return okxCache;
}
}
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {

View File

@ -12,6 +12,7 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import com.example.dcav2gui.InstanceInterface; import com.example.dcav2gui.InstanceInterface;
import com.example.dcav2gui.MainActivity;
import com.example.dcav2gui.R; import com.example.dcav2gui.R;
import com.example.dcav2gui.databinding.FragmentBinanceBinding; import com.example.dcav2gui.databinding.FragmentBinanceBinding;
import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter; import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter;
@ -19,6 +20,7 @@ import com.example.dcav2gui.ui.exchanges.WorkerData;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Objects;
public class BinanceFragment extends Fragment { public class BinanceFragment extends Fragment {
@ -28,6 +30,7 @@ public class BinanceFragment extends Fragment {
private WorkerCardAdapter workerCardAdapter; private WorkerCardAdapter workerCardAdapter;
private TextView statusBar; private TextView statusBar;
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) { ViewGroup container, Bundle savedInstanceState) {
@ -42,6 +45,11 @@ public class BinanceFragment extends Fragment {
workerCardAdapter = new WorkerCardAdapter(binding.binanceCardsContainer); workerCardAdapter = new WorkerCardAdapter(binding.binanceCardsContainer);
List<InstanceInterface.WorkerStatsData> workerCache = MainActivity.getInstanceCache("binance").getWorkers();
List<WorkerData> translatedList = InstanceInterface.translateToWorkerData(workerCache);
WorkerCardAdapter.populateStatusBar(statusBar, translatedList);
workerCardAdapter.updateData(translatedList);
binanceViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> { binanceViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> {
if (workerDataList != null) { if (workerDataList != null) {
WorkerCardAdapter.populateStatusBar(statusBar, workerDataList); WorkerCardAdapter.populateStatusBar(statusBar, workerDataList);

View File

@ -26,7 +26,7 @@ public class BinanceViewModel extends AndroidViewModel {
} }
public LiveData<List<WorkerData>> getWorkerData() { public LiveData<List<WorkerData>> getWorkerData() {
//Iterate through workerDataList
if (workerDataList.getValue() == null) { if (workerDataList.getValue() == null) {
fetchWorkerData(); fetchWorkerData();
} }

View File

@ -10,10 +10,14 @@ import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import com.example.dcav2gui.InstanceInterface;
import com.example.dcav2gui.MainActivity;
import com.example.dcav2gui.R; import com.example.dcav2gui.R;
import com.example.dcav2gui.databinding.FragmentGateioBinding; import com.example.dcav2gui.databinding.FragmentGateioBinding;
import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter; import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter;
import java.util.List;
public class GateioFragment extends Fragment { public class GateioFragment extends Fragment {
@ -35,6 +39,11 @@ public class GateioFragment extends Fragment {
workerCardAdapter = new WorkerCardAdapter(binding.gateioCardsContainer); workerCardAdapter = new WorkerCardAdapter(binding.gateioCardsContainer);
List<InstanceInterface.WorkerStatsData> workerCache = MainActivity.getInstanceCache("gateio").getWorkers();
List<WorkerData> translatedList = InstanceInterface.translateToWorkerData(workerCache);
WorkerCardAdapter.populateStatusBar(statusBar, translatedList);
workerCardAdapter.updateData(translatedList);
GateioViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> { GateioViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> {
if (workerDataList != null) { if (workerDataList != null) {
WorkerCardAdapter.populateStatusBar(statusBar, workerDataList); WorkerCardAdapter.populateStatusBar(statusBar, workerDataList);

View File

@ -10,10 +10,14 @@ import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import com.example.dcav2gui.InstanceInterface;
import com.example.dcav2gui.MainActivity;
import com.example.dcav2gui.R; import com.example.dcav2gui.R;
import com.example.dcav2gui.databinding.FragmentKucoinBinding; import com.example.dcav2gui.databinding.FragmentKucoinBinding;
import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter; import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter;
import java.util.List;
public class KucoinFragment extends Fragment { public class KucoinFragment extends Fragment {
@ -35,6 +39,11 @@ public class KucoinFragment extends Fragment {
workerCardAdapter = new WorkerCardAdapter(binding.kucoinCardsContainer); workerCardAdapter = new WorkerCardAdapter(binding.kucoinCardsContainer);
List<InstanceInterface.WorkerStatsData> workerCache = MainActivity.getInstanceCache("kucoin").getWorkers();
List<WorkerData> translatedList = InstanceInterface.translateToWorkerData(workerCache);
WorkerCardAdapter.populateStatusBar(statusBar, translatedList);
workerCardAdapter.updateData(translatedList);
KucoinViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> { KucoinViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> {
if (workerDataList != null) { if (workerDataList != null) {
WorkerCardAdapter.populateStatusBar(statusBar, workerDataList); WorkerCardAdapter.populateStatusBar(statusBar, workerDataList);

View File

@ -10,10 +10,14 @@ import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import com.example.dcav2gui.InstanceInterface;
import com.example.dcav2gui.MainActivity;
import com.example.dcav2gui.R; import com.example.dcav2gui.R;
import com.example.dcav2gui.databinding.FragmentOkxBinding; import com.example.dcav2gui.databinding.FragmentOkxBinding;
import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter; import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter;
import java.util.List;
public class OkxFragment extends Fragment { public class OkxFragment extends Fragment {
@ -35,6 +39,11 @@ public class OkxFragment extends Fragment {
workerCardAdapter = new WorkerCardAdapter(binding.okexCardsContainer); workerCardAdapter = new WorkerCardAdapter(binding.okexCardsContainer);
List<InstanceInterface.WorkerStatsData> workerCache = MainActivity.getInstanceCache("okx").getWorkers();
List<WorkerData> translatedList = InstanceInterface.translateToWorkerData(workerCache);
WorkerCardAdapter.populateStatusBar(statusBar, translatedList);
workerCardAdapter.updateData(translatedList);
OkxViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> { OkxViewModel.getWorkerData().observe(getViewLifecycleOwner(), workerDataList -> {
if (workerDataList != null) { if (workerDataList != null) {
WorkerCardAdapter.populateStatusBar(statusBar, workerDataList); WorkerCardAdapter.populateStatusBar(statusBar, workerDataList);

View File

@ -9,7 +9,6 @@ import android.text.SpannableString;
import android.text.SpannableStringBuilder; import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan; import android.text.style.ForegroundColorSpan;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -112,14 +111,6 @@ public class HomeFragment extends Fragment {
private TextView log3Content; private TextView log3Content;
private TextView log4Content; private TextView log4Content;
// InstanceInterface.ExchangeStatsData binanceStats;
// InstanceInterface.ExchangeStatsData gateioStats;
// InstanceInterface.ExchangeStatsData kucoinStats;
// InstanceInterface.ExchangeStatsData okexStats;
public View onCreateView(@NonNull LayoutInflater inflater, public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) { ViewGroup container, Bundle savedInstanceState) {
@ -612,6 +603,7 @@ public class HomeFragment extends Fragment {
mainActivity.setHomeViewCache( mainActivity.setHomeViewCache(
new HomeCache (priceData, priceData2, priceData3, profitsData, binanceStats, gateioStats, kucoinStats, okexStats, deals, logs1, logs2, logs3, logs4) new HomeCache (priceData, priceData2, priceData3, profitsData, binanceStats, gateioStats, kucoinStats, okexStats, deals, logs1, logs2, logs3, logs4)
); );
mainActivity.setInstanceCache(binanceStats, gateioStats, kucoinStats, okexStats);
}); });