From 958a36e4f1bf7dedfabea8b403f4a2371494a392 Mon Sep 17 00:00:00 2001 From: nuclearfog Date: Sun, 29 Aug 2021 10:42:34 +0200 Subject: [PATCH] added refresh icon to exclude list, added toast messages, removed automatic exclude list refreshing Signed-off-by: nuclearfog --- .../twidda/activity/UserExclude.java | 39 ++++++++++++------- .../twidda/backend/UserExcludeLoader.java | 34 +++++++--------- app/src/main/res/drawable/refresh.xml | 9 +++++ app/src/main/res/menu/excludelist.xml | 6 +++ app/src/main/res/values-de-rDE/strings.xml | 3 ++ app/src/main/res/values/strings.xml | 3 ++ 6 files changed, 59 insertions(+), 35 deletions(-) create mode 100644 app/src/main/res/drawable/refresh.xml diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/UserExclude.java b/app/src/main/java/org/nuclearfog/twidda/activity/UserExclude.java index 07be6573..a7157b11 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/UserExclude.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/UserExclude.java @@ -1,16 +1,17 @@ package org.nuclearfog.twidda.activity; +import static android.os.AsyncTask.Status.RUNNING; import static org.nuclearfog.twidda.backend.UserExcludeLoader.Mode.BLOCK_USER; import static org.nuclearfog.twidda.backend.UserExcludeLoader.Mode.MUTE_USER; import static org.nuclearfog.twidda.backend.UserExcludeLoader.Mode.REFRESH; -import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.SearchView; import androidx.appcompat.widget.SearchView.OnQueryTextListener; @@ -79,6 +80,19 @@ public class UserExclude extends AppCompatActivity implements OnTabSelectedListe } + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == R.id.menu_exclude_refresh) { + if (userExclTask == null || userExclTask.getStatus() != RUNNING) { + Toast.makeText(this, R.string.info_refreshing_exclude_list, Toast.LENGTH_SHORT).show(); + userExclTask = new UserExcludeLoader(this, REFRESH); + userExclTask.execute(); + } + } + return super.onOptionsItemSelected(item); + } + + @Override public boolean onPrepareOptionsMenu(Menu m) { SearchView searchView = (SearchView) m.findItem(R.id.menu_exclude_user).getActionView(); @@ -93,16 +107,6 @@ public class UserExclude extends AppCompatActivity implements OnTabSelectedListe } - @Override - protected void onStart() { - super.onStart(); - if (userExclTask == null) { - userExclTask = new UserExcludeLoader(this, ""); - userExclTask.execute(REFRESH); - } - } - - @Override protected void onDestroy() { super.onDestroy(); @@ -127,14 +131,15 @@ public class UserExclude extends AppCompatActivity implements OnTabSelectedListe @Override public boolean onQueryTextSubmit(String query) { - if (userExclTask == null || userExclTask.getStatus() != AsyncTask.Status.RUNNING) { - userExclTask = new UserExcludeLoader(this, query); + if (userExclTask == null || userExclTask.getStatus() != RUNNING) { if (tablayout.getSelectedTabPosition() == 0) { - userExclTask.execute(MUTE_USER); + userExclTask = new UserExcludeLoader(this, MUTE_USER); + userExclTask.execute(query); return true; } if (tablayout.getSelectedTabPosition() == 1) { - userExclTask.execute(BLOCK_USER); + userExclTask = new UserExcludeLoader(this, BLOCK_USER); + userExclTask.execute(query); return true; } } @@ -161,6 +166,10 @@ public class UserExclude extends AppCompatActivity implements OnTabSelectedListe Toast.makeText(this, R.string.info_user_blocked, Toast.LENGTH_SHORT).show(); invalidateOptionsMenu(); break; + + case REFRESH: + Toast.makeText(this, R.string.info_exclude_list_updated, Toast.LENGTH_SHORT).show(); + break; } } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/UserExcludeLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/UserExcludeLoader.java index 172d0b53..e6936899 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/UserExcludeLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/UserExcludeLoader.java @@ -18,7 +18,7 @@ import java.util.List; * * @author nuclearfog */ -public class UserExcludeLoader extends AsyncTask { +public class UserExcludeLoader extends AsyncTask { public enum Mode { REFRESH, @@ -31,44 +31,38 @@ public class UserExcludeLoader extends AsyncTask callback; private ExcludeDatabase excludeDatabase; private TwitterEngine mTwitter; - private String name; + private Mode mode; - public UserExcludeLoader(UserExclude callback, String name) { + public UserExcludeLoader(UserExclude callback, Mode mode) { super(); mTwitter = TwitterEngine.getInstance(callback); excludeDatabase = ExcludeDatabase.getInstance(callback); this.callback = new WeakReference<>(callback); - this.name = name; + this.mode = mode; } @Override - protected Mode doInBackground(Mode... mode) { + protected Void doInBackground(String[] names) { try { - switch (mode[0]) { - case REFRESH: - List ids = mTwitter.getExcludedUserIDs(); - excludeDatabase.setExcludeList(ids); - break; - - case MUTE_USER: - mTwitter.muteUser(name); - break; - - case BLOCK_USER: - mTwitter.blockUser(name); - break; + if (mode == Mode.REFRESH) { + List ids = mTwitter.getExcludedUserIDs(); + excludeDatabase.setExcludeList(ids); + } else if (mode == Mode.MUTE_USER) { + mTwitter.muteUser(names[0]); + } else if (mode == Mode.BLOCK_USER) { + mTwitter.blockUser(names[0]); } } catch (EngineException err) { this.err = err; } - return mode[0]; + return null; } @Override - protected void onPostExecute(Mode mode) { + protected void onPostExecute(Void v) { UserExclude activity = callback.get(); if (activity != null) { if (err == null) { diff --git a/app/src/main/res/drawable/refresh.xml b/app/src/main/res/drawable/refresh.xml new file mode 100644 index 00000000..595049a1 --- /dev/null +++ b/app/src/main/res/drawable/refresh.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/menu/excludelist.xml b/app/src/main/res/menu/excludelist.xml index 0332b28f..d83d6a7d 100644 --- a/app/src/main/res/menu/excludelist.xml +++ b/app/src/main/res/menu/excludelist.xml @@ -9,4 +9,10 @@ app:actionViewClass="androidx.appcompat.widget.SearchView" app:showAsAction="ifRoom|collapseActionView" /> + + \ No newline at end of file diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index dc5c960d..bb758017 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -212,4 +212,7 @@ \@Name blockieren Nutzer ausschließen Ergebnisse filtern + Filterliste aktualisieren + aktualisiere Filterliste + Filterliste aktualisiert! \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 380cf055..37806343 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -150,6 +150,8 @@ Tweet removed Tweet sent Location is pending, please wait. + refreshing exclude list + exclude_list_updated! Error @@ -223,6 +225,7 @@ filter results enter @name to mute enter @name to block + refresh exclude list Yes