aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/ml
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/ml')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/activities/TrendingActivity.java38
1 files changed, 35 insertions, 3 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/TrendingActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/TrendingActivity.java
index 79d8b24e..fa9ac0f0 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/TrendingActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/TrendingActivity.java
@@ -6,6 +6,8 @@ import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.util.DisplayMetrics;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -97,6 +99,7 @@ public class TrendingActivity extends BaseActivity {
Executor mExecutor;
private String mAccessToken;
private String mAccountName;
+ private boolean isRefreshing = false;
private ArrayList<TrendingSearch> trendingSearches;
private TrendingSearchRecyclerViewAdapter adapter;
@@ -170,7 +173,7 @@ public class TrendingActivity extends BaseActivity {
recyclerView.setAdapter(adapter);
swipeRefreshLayout.setEnabled(mSharedPreferences.getBoolean(SharedPreferencesUtils.PULL_TO_REFRESH, true));
- swipeRefreshLayout.setOnRefreshListener(this::loadTrendingSearches);
+ swipeRefreshLayout.setOnRefreshListener(this::fetchTrendingSearches);
if (savedInstanceState != null) {
trendingSearches = savedInstanceState.getParcelableArrayList(TRENDING_SEARCHES_STATE);
@@ -178,11 +181,16 @@ public class TrendingActivity extends BaseActivity {
if (trendingSearches != null) {
adapter.setTrendingSearches(trendingSearches);
} else {
- loadTrendingSearches();
+ fetchTrendingSearches();
}
}
- private void loadTrendingSearches() {
+ private void fetchTrendingSearches() {
+ if (isRefreshing) {
+ return;
+ }
+ isRefreshing = true;
+
errorLinearLayout.setVisibility(View.GONE);
Glide.with(this).clear(errorImageView);
swipeRefreshLayout.setRefreshing(true);
@@ -222,12 +230,14 @@ public class TrendingActivity extends BaseActivity {
trendingSearches = trendingSearchList;
swipeRefreshLayout.setRefreshing(false);
adapter.setTrendingSearches(trendingSearches);
+ isRefreshing = false;
});
} catch (JSONException e) {
e.printStackTrace();
handler.post(() -> {
swipeRefreshLayout.setRefreshing(false);
showErrorView(R.string.error_parse_trending_search);
+ isRefreshing = false;
});
}
});
@@ -235,6 +245,7 @@ public class TrendingActivity extends BaseActivity {
handler.post(() -> {
swipeRefreshLayout.setRefreshing(false);
showErrorView(R.string.error_fetch_trending_search);
+ isRefreshing = false;
});
}
}
@@ -244,6 +255,7 @@ public class TrendingActivity extends BaseActivity {
handler.post(() -> {
swipeRefreshLayout.setRefreshing(false);
showErrorView(R.string.error_fetch_trending_search);
+ isRefreshing = false;
});
}
});
@@ -256,6 +268,26 @@ public class TrendingActivity extends BaseActivity {
}
@Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.trending_activity, menu);
+ applyMenuItemTheme(menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ if (item.getItemId() == android.R.id.home) {
+ finish();
+ return true;
+ } else if (item.getItemId() == R.id.action_refresh_trending_activity) {
+ fetchTrendingSearches();
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelableArrayList(TRENDING_SEARCHES_STATE, trendingSearches);