commit 154331c578ecf5bdaf574792ee5be176af3d9ddb Author: Hashik Donthineni HashikDonthineni@gmail.com Date: Sat Jul 11 02:44:47 2020 +0530
Fetched the count in the MainFragment and logged it --- .../org/torproject/snowflake/MainActivity.java | 26 ++++++++++++++++++---- .../snowflake/fragments/MainFragment.java | 10 ++++++++- .../snowflake/interfaces/MainFragmentCallback.java | 1 + 3 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/app/src/main/java/org/torproject/snowflake/MainActivity.java b/app/src/main/java/org/torproject/snowflake/MainActivity.java index 4807285..65480cc 100644 --- a/app/src/main/java/org/torproject/snowflake/MainActivity.java +++ b/app/src/main/java/org/torproject/snowflake/MainActivity.java @@ -36,6 +36,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers; */ public class MainActivity extends AppCompatActivity implements MainFragmentCallback { private static final String TAG = "MainActivity"; + public int servedCount; int currentFragment; private SharedPreferences sharedPreferences; private Button settingsButton; @@ -48,13 +49,21 @@ public class MainActivity extends AppCompatActivity implements MainFragmentCallb setSupportActionBar(findViewById(R.id.toolbar)); settingsButton = findViewById(R.id.settings_button); sharedPreferences = GlobalApplication.getAppPreferences(); + servedCount = 0;
- + //Launching another thread to check, reset served date if need be. disposable = Single.fromCallable(this::checkServedDate) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe((status) -> { - //Update The TextView showing users served to user. + .subscribe((status) -> { //Runs on main thread + //By this point the servedCount must be reset or left as is after checking the dates. + servedCount = sharedPreferences.getInt(getString(R.string.users_served), 0); + + Fragment mainFragment = getSupportFragmentManager().findFragmentByTag(Integer.toString(FragmentConstants.MAIN_FRAGMENT)); + //If the fragment is in foreground update the count. Or else ignore. + if (mainFragment != null) { + ((MainFragment) mainFragment).showServed(); + } });
//Creating notification channel if app is being run for the first time @@ -93,7 +102,7 @@ public class MainActivity extends AppCompatActivity implements MainFragmentCallb getSupportFragmentManager() .beginTransaction() .replace(R.id.fragment_container, - fragment).commit(); + fragment, Integer.toString(currentFragment)).commit(); }
/** @@ -120,6 +129,15 @@ public class MainActivity extends AppCompatActivity implements MainFragmentCallb return sharedPreferences.getBoolean(getString(R.string.is_service_running_bool), false); }
+ /** + * @return Total served users count in the past 24hrs. + */ + @Override + public int getServed() { + //By default 0 is returned until the thread finishes executing checkServedDate function. + return servedCount; + } + /** * Used to create a new notification channel if app is started for the first time on a device. */ diff --git a/app/src/main/java/org/torproject/snowflake/fragments/MainFragment.java b/app/src/main/java/org/torproject/snowflake/fragments/MainFragment.java index 0ac2407..705cd0c 100644 --- a/app/src/main/java/org/torproject/snowflake/fragments/MainFragment.java +++ b/app/src/main/java/org/torproject/snowflake/fragments/MainFragment.java @@ -2,6 +2,7 @@ package org.torproject.snowflake.fragments;
import android.content.Context; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -10,7 +11,6 @@ import android.widget.Button; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment;
-import org.torproject.snowflake.BuildConfig; import org.torproject.snowflake.R; import org.torproject.snowflake.constants.ForegroundServiceConstants; import org.torproject.snowflake.interfaces.MainFragmentCallback; @@ -21,6 +21,7 @@ import org.torproject.snowflake.interfaces.MainFragmentCallback; * create an instance of this fragment. */ public class MainFragment extends Fragment { + private static final String TAG = "MainFragment"; MainFragmentCallback callback;
public MainFragment() { @@ -56,6 +57,9 @@ public class MainFragment extends Fragment { callback.serviceToggle(ForegroundServiceConstants.ACTION_START); });
+ //Calling this in case we return back to this fragment from a different fragment. + showServed(); + // Inflate the layout for this fragment return rootView; } @@ -65,4 +69,8 @@ public class MainFragment extends Fragment { super.onAttach(context); callback = (MainFragmentCallback) context; } + + public void showServed() { + Log.d(TAG, "showServed: " + callback.getServed()); + } } \ No newline at end of file diff --git a/app/src/main/java/org/torproject/snowflake/interfaces/MainFragmentCallback.java b/app/src/main/java/org/torproject/snowflake/interfaces/MainFragmentCallback.java index 08e2d99..40da367 100644 --- a/app/src/main/java/org/torproject/snowflake/interfaces/MainFragmentCallback.java +++ b/app/src/main/java/org/torproject/snowflake/interfaces/MainFragmentCallback.java @@ -3,4 +3,5 @@ package org.torproject.snowflake.interfaces; public interface MainFragmentCallback { boolean isServiceRunning(); void serviceToggle(String action); + int getServed(); }