aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java3
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SubscribedThingListingActivity.java73
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java20
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java3
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Event/GoBackToMainPageEvent.java4
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/MultiRedditListingFragment.java197
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/SubscribedSubredditsListingFragment.java2
-rw-r--r--app/src/main/res/drawable/ic_home_black_24dp.xml9
-rw-r--r--app/src/main/res/layout/activity_view_subreddit_detail.xml8
-rw-r--r--app/src/main/res/layout/fragment_multi_reddit_listing.xml55
-rw-r--r--app/src/main/res/values/strings.xml1
11 files changed, 360 insertions, 15 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java
index 304c0bac..08596718 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/MainActivity.java
@@ -437,7 +437,8 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
});
multiRedditBottomAppBar.setOnClickListener(view -> {
- Intent intent = new Intent(MainActivity.this, MultiRedditListingActivity.class);
+ Intent intent = new Intent(MainActivity.this, SubscribedThingListingActivity.class);
+ intent.putExtra(SubscribedThingListingActivity.EXTRA_SHOW_MULTIREDDITS, true);
startActivity(intent);
});
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SubscribedThingListingActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SubscribedThingListingActivity.java
index 1cb7303e..c1919782 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SubscribedThingListingActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/SubscribedThingListingActivity.java
@@ -32,14 +32,19 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import ml.docilealligator.infinityforreddit.ActivityToolbarInterface;
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
+import ml.docilealligator.infinityforreddit.AsyncTask.InsertMultiRedditAsyncTask;
import ml.docilealligator.infinityforreddit.AsyncTask.InsertSubscribedThingsAsyncTask;
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
+import ml.docilealligator.infinityforreddit.Event.GoBackToMainPageEvent;
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
import ml.docilealligator.infinityforreddit.FetchSubscribedThing;
import ml.docilealligator.infinityforreddit.Fragment.FollowedUsersListingFragment;
+import ml.docilealligator.infinityforreddit.Fragment.MultiRedditListingFragment;
import ml.docilealligator.infinityforreddit.Fragment.SubscribedSubredditsListingFragment;
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
import ml.docilealligator.infinityforreddit.Infinity;
+import ml.docilealligator.infinityforreddit.MultiReddit.FetchMyMultiReddits;
+import ml.docilealligator.infinityforreddit.MultiReddit.MultiReddit;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData;
@@ -49,7 +54,9 @@ import retrofit2.Retrofit;
public class SubscribedThingListingActivity extends BaseActivity implements ActivityToolbarInterface {
+ public static final String EXTRA_SHOW_MULTIREDDITS = "ESM";
private static final String INSERT_SUBSCRIBED_SUBREDDIT_STATE = "ISSS";
+ private static final String INSERT_MULTIREDDIT_STATE = "IMS";
private static final String NULL_ACCESS_TOKEN_STATE = "NATS";
private static final String ACCESS_TOKEN_STATE = "ATS";
private static final String ACCOUNT_NAME_STATE = "ANS";
@@ -78,6 +85,8 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
private String mAccessToken;
private String mAccountName;
private boolean mInsertSuccess = false;
+ private boolean mInsertMultiredditSuccess = false;
+ private boolean showMultiReddits = false;
private SectionsPagerAdapter sectionsPagerAdapter;
@Override
@@ -113,6 +122,7 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
if (savedInstanceState != null) {
mInsertSuccess = savedInstanceState.getBoolean(INSERT_SUBSCRIBED_SUBREDDIT_STATE);
+ mInsertMultiredditSuccess = savedInstanceState.getBoolean(INSERT_MULTIREDDIT_STATE);
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
@@ -122,6 +132,7 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
initializeViewPagerAndLoadSubscriptions();
}
} else {
+ showMultiReddits = getIntent().getBooleanExtra(EXTRA_SHOW_MULTIREDDITS, false);
getCurrentAccountAndInitializeViewPager();
}
}
@@ -158,9 +169,13 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
private void initializeViewPagerAndLoadSubscriptions() {
sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(sectionsPagerAdapter);
- viewPager.setOffscreenPageLimit(2);
+ viewPager.setOffscreenPageLimit(3);
tabLayout.setupWithViewPager(viewPager);
+ if (showMultiReddits) {
+ viewPager.setCurrentItem(2);
+ }
+
loadSubscriptions(false);
}
@@ -178,6 +193,7 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(INSERT_SUBSCRIBED_SUBREDDIT_STATE, mInsertSuccess);
+ outState.putBoolean(INSERT_MULTIREDDIT_STATE, mInsertMultiredditSuccess);
outState.putBoolean(NULL_ACCESS_TOKEN_STATE, mNullAccessToken);
outState.putString(ACCESS_TOKEN_STATE, mAccessToken);
outState.putString(ACCOUNT_NAME_STATE, mAccountName);
@@ -220,6 +236,29 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
}
});
}
+
+ if (!(!forceLoad && mInsertMultiredditSuccess)) {
+ loadMultiReddits();
+ }
+ }
+
+ private void loadMultiReddits() {
+ FetchMyMultiReddits.fetchMyMultiReddits(mOauthRetrofit, mAccessToken, new FetchMyMultiReddits.FetchMyMultiRedditsListener() {
+ @Override
+ public void success(ArrayList<MultiReddit> multiReddits) {
+ new InsertMultiRedditAsyncTask(mRedditDataRoomDatabase, multiReddits, mAccountName, () -> {
+ mInsertMultiredditSuccess = true;
+ sectionsPagerAdapter.stopMultiRedditRefreshProgressbar();
+ }).execute();
+ }
+
+ @Override
+ public void failed() {
+ mInsertMultiredditSuccess = false;
+ sectionsPagerAdapter.stopMultiRedditRefreshProgressbar();
+ Toast.makeText(SubscribedThingListingActivity.this, R.string.error_loading_multi_reddit_list, Toast.LENGTH_SHORT).show();
+ }
+ });
}
@Subscribe
@@ -227,6 +266,11 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
finish();
}
+ @Subscribe
+ public void goBackToMainPageEvent(GoBackToMainPageEvent event) {
+ finish();
+ }
+
@Override
public void onLongPress() {
if (sectionsPagerAdapter != null) {
@@ -238,6 +282,7 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
private SubscribedSubredditsListingFragment subscribedSubredditsListingFragment;
private FollowedUsersListingFragment followedUsersListingFragment;
+ private MultiRedditListingFragment multiRedditListingFragment;
public SectionsPagerAdapter(FragmentManager fm) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
@@ -255,7 +300,7 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
fragment.setArguments(bundle);
return fragment;
}
- default: {
+ case 1: {
FollowedUsersListingFragment fragment = new FollowedUsersListingFragment();
Bundle bundle = new Bundle();
bundle.putString(FollowedUsersListingFragment.EXTRA_ACCOUNT_NAME, mAccountName);
@@ -263,12 +308,20 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
fragment.setArguments(bundle);
return fragment;
}
+ default: {
+ MultiRedditListingFragment fragment = new MultiRedditListingFragment();
+ Bundle bundle = new Bundle();
+ bundle.putString(MultiRedditListingFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
+ bundle.putString(MultiRedditListingFragment.EXTRA_ACCOUNT_NAME, mAccountName);
+ fragment.setArguments(bundle);
+ return fragment;
+ }
}
}
@Override
public int getCount() {
- return 2;
+ return 3;
}
@Override
@@ -278,6 +331,8 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
return getString(R.string.subreddits);
case 1:
return getString(R.string.users);
+ case 2:
+ return getString(R.string.multi_reddits);
}
return null;
@@ -291,6 +346,8 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
subscribedSubredditsListingFragment = (SubscribedSubredditsListingFragment) fragment;
} else if (position == 1) {
followedUsersListingFragment = (FollowedUsersListingFragment) fragment;
+ } else {
+ multiRedditListingFragment = (MultiRedditListingFragment) fragment;
}
return fragment;
@@ -305,11 +362,19 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
}
}
+ void stopMultiRedditRefreshProgressbar() {
+ if (multiRedditListingFragment != null) {
+ ((FragmentCommunicator) multiRedditListingFragment).stopRefreshProgressbar();
+ }
+ }
+
void goBackToTop() {
if (viewPager.getCurrentItem() == 0) {
subscribedSubredditsListingFragment.goBackToTop();
- } else {
+ } else if (viewPager.getCurrentItem() == 1) {
followedUsersListingFragment.goBackToTop();
+ } else {
+ multiRedditListingFragment.goBackToTop();
}
}
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java
index a026456a..19b34354 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Activity/ViewSubredditDetailActivity.java
@@ -58,6 +58,7 @@ import ml.docilealligator.infinityforreddit.AsyncTask.InsertSubredditDataAsyncTa
import ml.docilealligator.infinityforreddit.AsyncTask.SwitchAccountAsyncTask;
import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
+import ml.docilealligator.infinityforreddit.Event.GoBackToMainPageEvent;
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
import ml.docilealligator.infinityforreddit.FetchSubredditData;
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
@@ -137,8 +138,8 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
LinearLayout linearLayoutBottomAppBar;
@BindView(R.id.subscriptions_bottom_app_bar_view_subreddit_detail_activity)
ImageView subscriptionsBottomAppBar;
- @BindView(R.id.multi_reddit_bottom_app_bar_view_subreddit_detail_activity)
- ImageView multiRedditBottomAppBar;
+ @BindView(R.id.go_back_to_main_page_bottom_app_bar_view_subreddit_detail_activity)
+ ImageView goBackToMainPageBottomAppBar;
@BindView(R.id.message_bottom_app_bar_view_subreddit_detail_activity)
ImageView messageBottomAppBar;
@BindView(R.id.profile_bottom_app_bar_view_subreddit_detail_activity)
@@ -436,7 +437,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
bottomNavigationView.setBackgroundTint(ColorStateList.valueOf(mCustomThemeWrapper.getBottomAppBarBackgroundColor()));
int bottomAppBarIconColor = mCustomThemeWrapper.getBottomAppBarIconColor();
subscriptionsBottomAppBar.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
- multiRedditBottomAppBar.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
+ goBackToMainPageBottomAppBar.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
messageBottomAppBar.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
profileBottomAppBar.setColorFilter(bottomAppBarIconColor, android.graphics.PorterDuff.Mode.SRC_IN);
applyTabLayoutTheme(tabLayout);
@@ -523,11 +524,15 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
startActivity(intent);
});
- multiRedditBottomAppBar.setOnClickListener(view -> {
- Intent intent = new Intent(ViewSubredditDetailActivity.this, MultiRedditListingActivity.class);
+ subscriptionsBottomAppBar.setOnLongClickListener(view -> {
+ Intent intent = new Intent(ViewSubredditDetailActivity.this, SubscribedThingListingActivity.class);
+ intent.putExtra(SubscribedThingListingActivity.EXTRA_SHOW_MULTIREDDITS, true);
startActivity(intent);
+ return true;
});
+ goBackToMainPageBottomAppBar.setOnClickListener(view -> EventBus.getDefault().post(new GoBackToMainPageEvent()));
+
messageBottomAppBar.setOnClickListener(view -> {
Intent intent = new Intent(this, ViewMessageActivity.class);
startActivity(intent);
@@ -849,6 +854,11 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
sectionsPagerAdapter.changeNSFW(changeNSFWEvent.nsfw);
}
+ @Subscribe
+ public void goBackToMainPageEvent(GoBackToMainPageEvent event) {
+ finish();
+ }
+
@Override
public void onLongPress() {
if (sectionsPagerAdapter != null) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java b/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java
index 4ee9fe85..f36c1932 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/AppComponent.java
@@ -45,6 +45,7 @@ import ml.docilealligator.infinityforreddit.Activity.ViewVideoActivity;
import ml.docilealligator.infinityforreddit.Fragment.CommentsListingFragment;
import ml.docilealligator.infinityforreddit.Fragment.FlairBottomSheetFragment;
import ml.docilealligator.infinityforreddit.Fragment.FollowedUsersListingFragment;
+import ml.docilealligator.infinityforreddit.Fragment.MultiRedditListingFragment;
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
import ml.docilealligator.infinityforreddit.Fragment.SidebarFragment;
import ml.docilealligator.infinityforreddit.Fragment.SubredditListingFragment;
@@ -176,4 +177,6 @@ public interface AppComponent {
void inject(ViewImgurVideoFragment viewImgurVideoFragment);
void inject(DownloadRedditVideoService downloadRedditVideoService);
+
+ void inject(MultiRedditListingFragment multiRedditListingFragment);
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Event/GoBackToMainPageEvent.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Event/GoBackToMainPageEvent.java
new file mode 100644
index 00000000..8457d6dc
--- /dev/null
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Event/GoBackToMainPageEvent.java
@@ -0,0 +1,4 @@
+package ml.docilealligator.infinityforreddit.Event;
+
+public class GoBackToMainPageEvent {
+}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/MultiRedditListingFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/MultiRedditListingFragment.java
new file mode 100644
index 00000000..89311f15
--- /dev/null
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/MultiRedditListingFragment.java
@@ -0,0 +1,197 @@
+package ml.docilealligator.infinityforreddit.Fragment;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.res.ColorStateList;
+import android.content.res.Resources;
+import android.os.Build;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.RequestManager;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import me.zhanghai.android.fastscroll.FastScrollerBuilder;
+import ml.docilealligator.infinityforreddit.Activity.BaseActivity;
+import ml.docilealligator.infinityforreddit.Activity.CreateMultiRedditActivity;
+import ml.docilealligator.infinityforreddit.Activity.SubscribedThingListingActivity;
+import ml.docilealligator.infinityforreddit.Adapter.MultiRedditListingRecyclerViewAdapter;
+import ml.docilealligator.infinityforreddit.CustomTheme.CustomThemeWrapper;
+import ml.docilealligator.infinityforreddit.FragmentCommunicator;
+import ml.docilealligator.infinityforreddit.Infinity;
+import ml.docilealligator.infinityforreddit.MultiReddit.MultiRedditViewModel;
+import ml.docilealligator.infinityforreddit.R;
+import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
+import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils;
+import retrofit2.Retrofit;
+
+public class MultiRedditListingFragment extends Fragment implements FragmentCommunicator {
+
+ public static final String EXTRA_ACCOUNT_NAME = "EAN";
+ public static final String EXTRA_ACCESS_TOKEN = "EAT";
+ private static final String INSERT_MULTI_REDDIT_STATE = "ISSS";
+
+ @BindView(R.id.swipe_refresh_layout_multi_reddit_listing_fragment)
+ SwipeRefreshLayout mSwipeRefreshLayout;
+ @BindView(R.id.recycler_view_multi_reddit_listing_fragment)
+ RecyclerView mRecyclerView;
+ @BindView(R.id.fetch_multi_reddit_listing_info_linear_layout_multi_reddit_listing_fragment)
+ LinearLayout mErrorLinearLayout;
+ @BindView(R.id.fetch_multi_reddit_listing_info_image_view_multi_reddit_listing_fragment)
+ ImageView mErrorImageView;
+ @BindView(R.id.fetch_multi_reddit_listing_info_text_view_multi_reddit_listing_fragment)
+ TextView mErrorTextView;
+ @BindView(R.id.fab_multi_reddit_listing_fragment)
+ FloatingActionButton fab;
+ @Inject
+ RedditDataRoomDatabase mRedditDataRoomDatabase;
+ @Inject
+ @Named("default")
+ SharedPreferences mSharedPreferences;
+ @Inject
+ @Named("oauth")
+ Retrofit mOauthRetrofit;
+ @Inject
+ CustomThemeWrapper mCustomThemeWrapper;
+
+ public MultiRedditViewModel mMultiRedditViewModel;
+ private AppCompatActivity mActivity;
+ private RequestManager mGlide;
+ private LinearLayoutManager mLinearLayoutManager;
+ private boolean mInsertSuccess = false;
+
+ public MultiRedditListingFragment() {
+ // Required empty public constructor
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.fragment_multi_reddit_listing, container, false);
+
+ ((Infinity) mActivity.getApplication()).getAppComponent().inject(this);
+
+ ButterKnife.bind(this, rootView);
+
+ applyTheme();
+
+ if ((mActivity instanceof BaseActivity && ((BaseActivity) mActivity).isImmersiveInterface())) {
+ mRecyclerView.setPadding(0, 0, 0, ((BaseActivity) mActivity).getNavBarHeight());
+ } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
+ && mSharedPreferences.getBoolean(SharedPreferencesUtils.IMMERSIVE_INTERFACE_KEY, true)) {
+ Resources resources = getResources();
+ int navBarResourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
+ if (navBarResourceId > 0) {
+ mRecyclerView.setPadding(0, 0, 0, resources.getDimensionPixelSize(navBarResourceId));
+ }
+ }
+
+ String accountName = getArguments().getString(EXTRA_ACCOUNT_NAME);
+ String accessToken = getArguments().getString(EXTRA_ACCESS_TOKEN);
+
+ mGlide = Glide.with(this);
+
+ fab.setOnClickListener(view -> {
+ Intent intent = new Intent(mActivity, CreateMultiRedditActivity.class);
+ startActivity(intent);
+ });
+
+ mLinearLayoutManager = new LinearLayoutManager(mActivity);
+ mRecyclerView.setLayoutManager(mLinearLayoutManager);
+ MultiRedditListingRecyclerViewAdapter adapter = new MultiRedditListingRecyclerViewAdapter(mActivity,
+ mOauthRetrofit, mRedditDataRoomDatabase, mCustomThemeWrapper, accessToken, accountName);
+ mRecyclerView.setAdapter(adapter);
+ mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
+ super.onScrolled(recyclerView, dx, dy);
+ if (dy > 0) {
+ fab.hide();
+ } else {
+ fab.show();
+ }
+ }
+ });
+ new FastScrollerBuilder(mRecyclerView).build();
+
+ mMultiRedditViewModel = new ViewModelProvider(this,
+ new MultiRedditViewModel.Factory(mActivity.getApplication(), mRedditDataRoomDatabase, accountName))
+ .get(MultiRedditViewModel.class);
+
+ mMultiRedditViewModel.getAllMultiReddits().observe(this, subscribedUserData -> {
+ if (subscribedUserData == null || subscribedUserData.size() == 0) {
+ mRecyclerView.setVisibility(View.GONE);
+ mErrorLinearLayout.setVisibility(View.VISIBLE);
+ mGlide.load(R.drawable.error_image).into(mErrorImageView);
+ } else {
+ mErrorLinearLayout.setVisibility(View.GONE);
+ mRecyclerView.setVisibility(View.VISIBLE);
+ mGlide.clear(mErrorImageView);
+ }
+ adapter.setMultiReddits(subscribedUserData);
+ });
+
+ mMultiRedditViewModel.getAllFavoriteMultiReddits().observe(this, favoriteSubscribedUserData -> {
+ if (favoriteSubscribedUserData != null && favoriteSubscribedUserData.size() > 0) {
+ mErrorLinearLayout.setVisibility(View.GONE);
+ mRecyclerView.setVisibility(View.VISIBLE);
+ mGlide.clear(mErrorImageView);
+ }
+ adapter.setFavoriteMultiReddits(favoriteSubscribedUserData);
+ });
+
+ return rootView;
+ }
+
+ public void goBackToTop() {
+ if (mLinearLayoutManager != null) {
+ mLinearLayoutManager.scrollToPositionWithOffset(0, 0);
+ }
+ }
+
+ @Override
+ public void onAttach(@NonNull Context context) {
+ super.onAttach(context);
+ mActivity = (AppCompatActivity) context;
+ }
+
+ @Override
+ public void applyTheme() {
+ if (mActivity instanceof SubscribedThingListingActivity) {
+ mSwipeRefreshLayout.setOnRefreshListener(() -> ((SubscribedThingListingActivity) mActivity).loadSubscriptions(true));
+ mSwipeRefreshLayout.setProgressBackgroundColorSchemeColor(mCustomThemeWrapper.getCircularProgressBarBackground());
+ mSwipeRefreshLayout.setColorSchemeColors(mCustomThemeWrapper.getColorAccent());
+ } else {
+ mSwipeRefreshLayout.setEnabled(false);
+ }
+
+ mErrorTextView.setTextColor(mCustomThemeWrapper.getSecondaryTextColor());
+ fab.setBackgroundTintList(ColorStateList.valueOf(mCustomThemeWrapper.getColorPrimaryLightTheme()));
+ fab.setImageTintList(ColorStateList.valueOf(mCustomThemeWrapper.getFABIconColor()));
+ }
+
+ @Override
+ public void stopRefreshProgressbar() {
+ mSwipeRefreshLayout.setRefreshing(false);
+ }
+} \ No newline at end of file
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/SubscribedSubredditsListingFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/SubscribedSubredditsListingFragment.java
index 8e14ce96..728b80ce 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/SubscribedSubredditsListingFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/Fragment/SubscribedSubredditsListingFragment.java
@@ -177,10 +177,10 @@ public class SubscribedSubredditsListingFragment extends Fragment implements Fra
mSwipeRefreshLayout.setOnRefreshListener(() -> ((SubscribedThingListingActivity) mActivity).loadSubscriptions(true));
mSwipeRefreshLayout.setProgressBackgroundColorSchemeColor(customThemeWrapper.getCircularProgressBarBackground());
mSwipeRefreshLayout.setColorSchemeColors(customThemeWrapper.getColorAccent());
- mErrorTextView.setTextColor(customThemeWrapper.getSecondaryTextColor());
} else {
mSwipeRefreshLayout.setEnabled(false);
}
+ mErrorTextView.setTextColor(customThemeWrapper.getSecondaryTextColor());
}
public void goBackToTop() {
diff --git a/app/src/main/res/drawable/ic_home_black_24dp.xml b/app/src/main/res/drawable/ic_home_black_24dp.xml
new file mode 100644
index 00000000..a35f1eff
--- /dev/null
+++ b/app/src/main/res/drawable/ic_home_black_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:pathData="M12,5.69l5,4.5V18h-2v-6H9v6H7v-7.81l5,-4.5M12,3L2,12h3v8h6v-6h2v6h6v-8h3L12,3z"
+ android:fillColor="#000000"/>
+</vector>
diff --git a/app/src/main/res/layout/activity_view_subreddit_detail.xml b/app/src/main/res/layout/activity_view_subreddit_detail.xml
index ee3f0357..bbe2e94a 100644
--- a/app/src/main/res/layout/activity_view_subreddit_detail.xml
+++ b/app/src/main/res/layout/activity_view_subreddit_detail.xml
@@ -183,25 +183,25 @@
android:weightSum="5">
<ImageView
- android:id="@+id/subscriptions_bottom_app_bar_view_subreddit_detail_activity"
+ android:id="@+id/go_back_to_main_page_bottom_app_bar_view_subreddit_detail_activity"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:paddingTop="8dp"
android:paddingBottom="8dp"
- android:src="@drawable/ic_subscritptions_bottom_app_bar_24dp"
+ android:src="@drawable/ic_home_black_24dp"
android:background="?attr/selectableItemBackgroundBorderless" />
<ImageView
- android:id="@+id/multi_reddit_bottom_app_bar_view_subreddit_detail_activity"
+ android:id="@+id/subscriptions_bottom_app_bar_view_subreddit_detail_activity"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:paddingTop="8dp"
android:paddingBottom="8dp"
- android:src="@drawable/ic_multi_reddit_24dp"
+ android:src="@drawable/ic_subscritptions_bottom_app_bar_24dp"
android:background="?attr/selectableItemBackgroundBorderless" />
<TextView
diff --git a/app/src/main/res/layout/fragment_multi_reddit_listing.xml b/app/src/main/res/layout/fragment_multi_reddit_listing.xml
new file mode 100644
index 00000000..87f6bf6a
--- /dev/null
+++ b/app/src/main/res/layout/fragment_multi_reddit_listing.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+ android:id="@+id/swipe_refresh_layout_multi_reddit_listing_fragment"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/recycler_view_multi_reddit_listing_fragment"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
+
+ <LinearLayout
+ android:id="@+id/fetch_multi_reddit_listing_info_linear_layout_multi_reddit_listing_fragment"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginBottom="48dp"
+ android:gravity="center"
+ android:orientation="vertical"
+ android:visibility="gone"
+ app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+ <ImageView
+ android:id="@+id/fetch_multi_reddit_listing_info_image_view_multi_reddit_listing_fragment"
+ android:layout_width="150dp"
+ android:layout_height="wrap_content" />
+
+ <TextView
+ android:id="@+id/fetch_multi_reddit_listing_info_text_view_multi_reddit_listing_fragment"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="16dp"
+ android:gravity="center"
+ android:text="@string/no_multi_reddits"
+ android:textSize="?attr/font_default" />
+
+ </LinearLayout>
+
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/fab_multi_reddit_listing_fragment"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_margin="@dimen/fab_margin"
+ android:layout_gravity="bottom|end"
+ app:srcCompat="@drawable/ic_add_day_night_24dp"
+ app:tint="@android:color/white" />
+
+</androidx.coordinatorlayout.widget.CoordinatorLayout> \ 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 b28bdc1b..7f313913 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -175,6 +175,7 @@
<string name="subreddits">Subreddits</string>
<string name="users">Users</string>
+ <string name="multi_reddits">MultiReddits</string>
<string name="bottom_sheet_post_type">Post</string>
<string name="bottom_sheet_post_text">Text</string>