From adcbdad32d1c1324d432a92ed323627bb7029710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20S=C3=A1nchez?= Date: Tue, 11 Mar 2025 12:03:03 -0300 Subject: [PATCH] EarnerViewModel --- .../dcav2gui/ui/earners/EarnViewModel.java | 4 -- .../dcav2gui/ui/earners/EarnerViewModel.java | 63 +++++++++++++++++++ 2 files changed, 63 insertions(+), 4 deletions(-) delete mode 100644 app/src/main/java/com/example/dcav2gui/ui/earners/EarnViewModel.java create mode 100644 app/src/main/java/com/example/dcav2gui/ui/earners/EarnerViewModel.java diff --git a/app/src/main/java/com/example/dcav2gui/ui/earners/EarnViewModel.java b/app/src/main/java/com/example/dcav2gui/ui/earners/EarnViewModel.java deleted file mode 100644 index 4b89a8d..0000000 --- a/app/src/main/java/com/example/dcav2gui/ui/earners/EarnViewModel.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.example.dcav2gui.ui.earners; - -public class EarnViewModel { -} diff --git a/app/src/main/java/com/example/dcav2gui/ui/earners/EarnerViewModel.java b/app/src/main/java/com/example/dcav2gui/ui/earners/EarnerViewModel.java new file mode 100644 index 0000000..bb71950 --- /dev/null +++ b/app/src/main/java/com/example/dcav2gui/ui/earners/EarnerViewModel.java @@ -0,0 +1,63 @@ +package com.example.dcav2gui.ui.earners; + +import android.app.Application; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.Looper; + +import androidx.annotation.NonNull; +import androidx.lifecycle.AndroidViewModel; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +import com.example.dcav2gui.EarnerInterface; +import com.example.dcav2gui.MainActivity; +import com.example.dcav2gui.ui.settings.SettingsData; + +import java.io.IOException; + +public class EarnerViewModel extends AndroidViewModel { + + private final MutableLiveData earnerGlobalData; + SettingsData settingsData = MainActivity.getGlobalSettings(); + + public EarnerViewModel(@NonNull Application application) { + super(application); + earnerGlobalData = new MutableLiveData<>(); + fetchEarnerData(); // Initial data fetch + } + + public LiveData getWorkerData() { + + if (earnerGlobalData.getValue() == null) { + fetchEarnerData(); + } + return earnerGlobalData; + } + + private void fetchEarnerData() { + HandlerThread handlerThread = new HandlerThread("FetchWorkerDataThread"); + handlerThread.start(); + Handler handler = new Handler(handlerThread.getLooper()); + handler.post(new Runnable() { + @Override + public void run() { + try { + // Fetch and update the data + EarnerInterface.EarnerGlobalData newData = EarnerInterface.getEarnerGlobalData(true); + earnerGlobalData.postValue(newData); + } catch (IOException e) { + e.printStackTrace(); + } + + // Schedule the next execution + new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { + @Override + public void run() { + fetchEarnerData(); + } + }, (long) settingsData.timeBetweenQueries * 1000); + } + }); + } +}