mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-07 11:17:25 +01:00
Swipe to refresh in SubscribedThingActivity and MultiRedditListingActivity.
This commit is contained in:
parent
cdd25f3405
commit
e69c26db19
@ -965,7 +965,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
private PostFragment allPostFragment;
|
private PostFragment allPostFragment;
|
||||||
|
|
||||||
SectionsPagerAdapter(FragmentManager fm) {
|
SectionsPagerAdapter(FragmentManager fm) {
|
||||||
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
|
super(fm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
|
@ -5,6 +5,7 @@ import android.content.res.Configuration;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.TypedValue;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -13,12 +14,14 @@ import android.view.WindowManager;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
import com.bumptech.glide.RequestManager;
|
import com.bumptech.glide.RequestManager;
|
||||||
@ -55,6 +58,8 @@ public class MultiRedditListingActivity extends BaseActivity {
|
|||||||
AppBarLayout mAppBarLayout;
|
AppBarLayout mAppBarLayout;
|
||||||
@BindView(R.id.toolbar_multi_reddit_listing_activity)
|
@BindView(R.id.toolbar_multi_reddit_listing_activity)
|
||||||
Toolbar mToolbar;
|
Toolbar mToolbar;
|
||||||
|
@BindView(R.id.swipe_refresh_layout_multi_reddit_listing_activity)
|
||||||
|
SwipeRefreshLayout mSwipeRefreshLayout;
|
||||||
@BindView(R.id.recycler_view_multi_reddit_listing_activity)
|
@BindView(R.id.recycler_view_multi_reddit_listing_activity)
|
||||||
RecyclerView mRecyclerView;
|
RecyclerView mRecyclerView;
|
||||||
@BindView(R.id.fetch_multi_reddit_listing_info_linear_layout_multi_reddit_listing_activity)
|
@BindView(R.id.fetch_multi_reddit_listing_info_linear_layout_multi_reddit_listing_activity)
|
||||||
@ -137,6 +142,13 @@ public class MultiRedditListingActivity extends BaseActivity {
|
|||||||
setSupportActionBar(mToolbar);
|
setSupportActionBar(mToolbar);
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
|
mSwipeRefreshLayout.setOnRefreshListener(this::loadMultiReddits);
|
||||||
|
|
||||||
|
TypedValue typedValue = new TypedValue();
|
||||||
|
getTheme().resolveAttribute(R.attr.cardViewBackgroundColor, typedValue, true);
|
||||||
|
mSwipeRefreshLayout.setProgressBackgroundColorSchemeColor(typedValue.data);
|
||||||
|
mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent);
|
||||||
|
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mInsertSuccess = savedInstanceState.getBoolean(INSERT_MULTI_REDDIT_STATE);
|
mInsertSuccess = savedInstanceState.getBoolean(INSERT_MULTI_REDDIT_STATE);
|
||||||
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
||||||
@ -202,15 +214,21 @@ public class MultiRedditListingActivity extends BaseActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void loadMultiReddits() {
|
private void loadMultiReddits() {
|
||||||
|
mSwipeRefreshLayout.setRefreshing(true);
|
||||||
GetMultiReddit.getMyMultiReddits(mOauthRetrofit, mAccessToken, new GetMultiReddit.GetMultiRedditListener() {
|
GetMultiReddit.getMyMultiReddits(mOauthRetrofit, mAccessToken, new GetMultiReddit.GetMultiRedditListener() {
|
||||||
@Override
|
@Override
|
||||||
public void success(ArrayList<MultiReddit> multiReddits) {
|
public void success(ArrayList<MultiReddit> multiReddits) {
|
||||||
new InsertMultiRedditAsyncTask(mRedditDataRoomDatabase, multiReddits, () -> mInsertSuccess = true).execute();
|
new InsertMultiRedditAsyncTask(mRedditDataRoomDatabase, multiReddits, () -> {
|
||||||
|
mInsertSuccess = true;
|
||||||
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
|
}).execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void failed() {
|
public void failed() {
|
||||||
mInsertSuccess = false;
|
mInsertSuccess = false;
|
||||||
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
|
Toast.makeText(MultiRedditListingActivity.this, R.string.error_loading_multi_reddit_list, Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import android.view.View;
|
|||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
@ -38,13 +39,14 @@ import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|||||||
import ml.docilealligator.infinityforreddit.FetchSubscribedThing;
|
import ml.docilealligator.infinityforreddit.FetchSubscribedThing;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.FollowedUsersListingFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.FollowedUsersListingFragment;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.SubscribedSubredditsListingFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.SubscribedSubredditsListingFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils;
|
|
||||||
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData;
|
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData;
|
||||||
import ml.docilealligator.infinityforreddit.SubscribedSubredditDatabase.SubscribedSubredditData;
|
import ml.docilealligator.infinityforreddit.SubscribedSubredditDatabase.SubscribedSubredditData;
|
||||||
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserData;
|
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserData;
|
||||||
|
import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class SubscribedThingListingActivity extends BaseActivity {
|
public class SubscribedThingListingActivity extends BaseActivity {
|
||||||
@ -170,7 +172,7 @@ public class SubscribedThingListingActivity extends BaseActivity {
|
|||||||
viewPager.setOffscreenPageLimit(2);
|
viewPager.setOffscreenPageLimit(2);
|
||||||
tabLayout.setupWithViewPager(viewPager);
|
tabLayout.setupWithViewPager(viewPager);
|
||||||
|
|
||||||
loadSubscriptions();
|
loadSubscriptions(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -198,8 +200,8 @@ public class SubscribedThingListingActivity extends BaseActivity {
|
|||||||
EventBus.getDefault().unregister(this);
|
EventBus.getDefault().unregister(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadSubscriptions() {
|
public void loadSubscriptions(boolean forceLoad) {
|
||||||
if (!mInsertSuccess) {
|
if (!(!forceLoad && mInsertSuccess)) {
|
||||||
FetchSubscribedThing.fetchSubscribedThing(mOauthRetrofit, mAccessToken, mAccountName, null,
|
FetchSubscribedThing.fetchSubscribedThing(mOauthRetrofit, mAccessToken, mAccountName, null,
|
||||||
new ArrayList<>(), new ArrayList<>(),
|
new ArrayList<>(), new ArrayList<>(),
|
||||||
new ArrayList<>(),
|
new ArrayList<>(),
|
||||||
@ -214,12 +216,18 @@ public class SubscribedThingListingActivity extends BaseActivity {
|
|||||||
subscribedSubredditData,
|
subscribedSubredditData,
|
||||||
subscribedUserData,
|
subscribedUserData,
|
||||||
subredditData,
|
subredditData,
|
||||||
() -> mInsertSuccess = true).execute();
|
() -> {
|
||||||
|
mInsertSuccess = true;
|
||||||
|
sectionsPagerAdapter.stopRefreshProgressbar();
|
||||||
|
}).execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFetchSubscribedThingFail() {
|
public void onFetchSubscribedThingFail() {
|
||||||
mInsertSuccess = false;
|
mInsertSuccess = false;
|
||||||
|
sectionsPagerAdapter.stopRefreshProgressbar();
|
||||||
|
Toast.makeText(SubscribedThingListingActivity.this,
|
||||||
|
R.string.error_loading_subscriptions, Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -232,6 +240,9 @@ public class SubscribedThingListingActivity extends BaseActivity {
|
|||||||
|
|
||||||
private class SectionsPagerAdapter extends FragmentPagerAdapter {
|
private class SectionsPagerAdapter extends FragmentPagerAdapter {
|
||||||
|
|
||||||
|
private SubscribedSubredditsListingFragment subscribedSubredditsListingFragment;
|
||||||
|
private FollowedUsersListingFragment followedUsersListingFragment;
|
||||||
|
|
||||||
public SectionsPagerAdapter(FragmentManager fm) {
|
public SectionsPagerAdapter(FragmentManager fm) {
|
||||||
super(fm);
|
super(fm);
|
||||||
}
|
}
|
||||||
@ -279,7 +290,23 @@ public class SubscribedThingListingActivity extends BaseActivity {
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public Object instantiateItem(@NonNull ViewGroup container, int position) {
|
public Object instantiateItem(@NonNull ViewGroup container, int position) {
|
||||||
return super.instantiateItem(container, position);
|
Fragment fragment = (Fragment) super.instantiateItem(container, position);
|
||||||
|
if (position == 0) {
|
||||||
|
subscribedSubredditsListingFragment = (SubscribedSubredditsListingFragment) fragment;
|
||||||
|
} else if (position == 1) {
|
||||||
|
followedUsersListingFragment = (FollowedUsersListingFragment) fragment;
|
||||||
|
}
|
||||||
|
|
||||||
|
return fragment;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stopRefreshProgressbar() {
|
||||||
|
if (subscribedSubredditsListingFragment != null) {
|
||||||
|
((FragmentCommunicator) subscribedSubredditsListingFragment).stopRefreshProgressbar();
|
||||||
|
}
|
||||||
|
if (followedUsersListingFragment != null) {
|
||||||
|
((FragmentCommunicator) followedUsersListingFragment).stopRefreshProgressbar();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import android.content.res.Configuration;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.TypedValue;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -16,6 +17,7 @@ import androidx.fragment.app.Fragment;
|
|||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
import com.bumptech.glide.RequestManager;
|
import com.bumptech.glide.RequestManager;
|
||||||
@ -25,7 +27,9 @@ import javax.inject.Named;
|
|||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
import ml.docilealligator.infinityforreddit.Activity.SubscribedThingListingActivity;
|
||||||
import ml.docilealligator.infinityforreddit.Adapter.FollowedUsersRecyclerViewAdapter;
|
import ml.docilealligator.infinityforreddit.Adapter.FollowedUsersRecyclerViewAdapter;
|
||||||
|
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
@ -36,11 +40,13 @@ import retrofit2.Retrofit;
|
|||||||
/**
|
/**
|
||||||
* A simple {@link Fragment} subclass.
|
* A simple {@link Fragment} subclass.
|
||||||
*/
|
*/
|
||||||
public class FollowedUsersListingFragment extends Fragment {
|
public class FollowedUsersListingFragment extends Fragment implements FragmentCommunicator {
|
||||||
|
|
||||||
public static final String EXTRA_ACCOUNT_NAME = "EAN";
|
public static final String EXTRA_ACCOUNT_NAME = "EAN";
|
||||||
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
||||||
|
|
||||||
|
@BindView(R.id.swipe_refresh_layout_followed_users_listing_fragment)
|
||||||
|
SwipeRefreshLayout mSwipeRefreshLayout;
|
||||||
@BindView(R.id.recycler_view_followed_users_listing_fragment)
|
@BindView(R.id.recycler_view_followed_users_listing_fragment)
|
||||||
RecyclerView mRecyclerView;
|
RecyclerView mRecyclerView;
|
||||||
@BindView(R.id.no_subscriptions_linear_layout_followed_users_listing_fragment)
|
@BindView(R.id.no_subscriptions_linear_layout_followed_users_listing_fragment)
|
||||||
@ -84,6 +90,16 @@ public class FollowedUsersListingFragment extends Fragment {
|
|||||||
|
|
||||||
mGlide = Glide.with(this);
|
mGlide = Glide.with(this);
|
||||||
|
|
||||||
|
if (mActivity instanceof SubscribedThingListingActivity) {
|
||||||
|
mSwipeRefreshLayout.setOnRefreshListener(() -> ((SubscribedThingListingActivity) mActivity).loadSubscriptions(true));
|
||||||
|
TypedValue typedValue = new TypedValue();
|
||||||
|
mActivity.getTheme().resolveAttribute(R.attr.cardViewBackgroundColor, typedValue, true);
|
||||||
|
mSwipeRefreshLayout.setProgressBackgroundColorSchemeColor(typedValue.data);
|
||||||
|
mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent);
|
||||||
|
} else {
|
||||||
|
mSwipeRefreshLayout.setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
|
mRecyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
|
||||||
FollowedUsersRecyclerViewAdapter adapter = new FollowedUsersRecyclerViewAdapter(mActivity,
|
FollowedUsersRecyclerViewAdapter adapter = new FollowedUsersRecyclerViewAdapter(mActivity,
|
||||||
mOauthRetrofit, mRedditDataRoomDatabase, getArguments().getString(EXTRA_ACCESS_TOKEN));
|
mOauthRetrofit, mRedditDataRoomDatabase, getArguments().getString(EXTRA_ACCESS_TOKEN));
|
||||||
@ -94,6 +110,7 @@ public class FollowedUsersListingFragment extends Fragment {
|
|||||||
.get(SubscribedUserViewModel.class);
|
.get(SubscribedUserViewModel.class);
|
||||||
|
|
||||||
mSubscribedUserViewModel.getAllSubscribedUsers().observe(this, subscribedUserData -> {
|
mSubscribedUserViewModel.getAllSubscribedUsers().observe(this, subscribedUserData -> {
|
||||||
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
if (subscribedUserData == null || subscribedUserData.size() == 0) {
|
if (subscribedUserData == null || subscribedUserData.size() == 0) {
|
||||||
mRecyclerView.setVisibility(View.GONE);
|
mRecyclerView.setVisibility(View.GONE);
|
||||||
mLinearLayout.setVisibility(View.VISIBLE);
|
mLinearLayout.setVisibility(View.VISIBLE);
|
||||||
@ -107,6 +124,7 @@ public class FollowedUsersListingFragment extends Fragment {
|
|||||||
});
|
});
|
||||||
|
|
||||||
mSubscribedUserViewModel.getAllFavoriteSubscribedUsers().observe(this, favoriteSubscribedUserData -> {
|
mSubscribedUserViewModel.getAllFavoriteSubscribedUsers().observe(this, favoriteSubscribedUserData -> {
|
||||||
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
if (favoriteSubscribedUserData != null && favoriteSubscribedUserData.size() > 0) {
|
if (favoriteSubscribedUserData != null && favoriteSubscribedUserData.size() > 0) {
|
||||||
mLinearLayout.setVisibility(View.GONE);
|
mLinearLayout.setVisibility(View.GONE);
|
||||||
mRecyclerView.setVisibility(View.VISIBLE);
|
mRecyclerView.setVisibility(View.VISIBLE);
|
||||||
@ -118,4 +136,8 @@ public class FollowedUsersListingFragment extends Fragment {
|
|||||||
return rootView;
|
return rootView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stopRefreshProgressbar() {
|
||||||
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,6 @@ import android.os.Build;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.CountDownTimer;
|
import android.os.CountDownTimer;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.util.Log;
|
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
@ -6,6 +6,7 @@ import android.content.res.Configuration;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.TypedValue;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -17,6 +18,7 @@ import androidx.fragment.app.Fragment;
|
|||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||||
|
|
||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
import com.bumptech.glide.RequestManager;
|
import com.bumptech.glide.RequestManager;
|
||||||
@ -27,7 +29,9 @@ import javax.inject.Named;
|
|||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.Activity.SubredditSelectionActivity;
|
import ml.docilealligator.infinityforreddit.Activity.SubredditSelectionActivity;
|
||||||
|
import ml.docilealligator.infinityforreddit.Activity.SubscribedThingListingActivity;
|
||||||
import ml.docilealligator.infinityforreddit.Adapter.SubscribedSubredditsRecyclerViewAdapter;
|
import ml.docilealligator.infinityforreddit.Adapter.SubscribedSubredditsRecyclerViewAdapter;
|
||||||
|
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
@ -38,7 +42,7 @@ import retrofit2.Retrofit;
|
|||||||
/**
|
/**
|
||||||
* A simple {@link Fragment} subclass.
|
* A simple {@link Fragment} subclass.
|
||||||
*/
|
*/
|
||||||
public class SubscribedSubredditsListingFragment extends Fragment {
|
public class SubscribedSubredditsListingFragment extends Fragment implements FragmentCommunicator {
|
||||||
|
|
||||||
public static final String EXTRA_ACCOUNT_NAME = "EAN";
|
public static final String EXTRA_ACCOUNT_NAME = "EAN";
|
||||||
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
||||||
@ -46,6 +50,8 @@ public class SubscribedSubredditsListingFragment extends Fragment {
|
|||||||
public static final String EXTRA_IS_SUBREDDIT_SELECTION = "EISS";
|
public static final String EXTRA_IS_SUBREDDIT_SELECTION = "EISS";
|
||||||
public static final String EXTRA_EXTRA_CLEAR_SELECTION = "EECS";
|
public static final String EXTRA_EXTRA_CLEAR_SELECTION = "EECS";
|
||||||
|
|
||||||
|
@BindView(R.id.swipe_refresh_layout_subscribed_subreddits_listing_fragment)
|
||||||
|
SwipeRefreshLayout mSwipeRefreshLayout;
|
||||||
@BindView(R.id.recycler_view_subscribed_subreddits_listing_fragment)
|
@BindView(R.id.recycler_view_subscribed_subreddits_listing_fragment)
|
||||||
RecyclerView mRecyclerView;
|
RecyclerView mRecyclerView;
|
||||||
@BindView(R.id.no_subscriptions_linear_layout_subreddits_listing_fragment)
|
@BindView(R.id.no_subscriptions_linear_layout_subreddits_listing_fragment)
|
||||||
@ -92,6 +98,16 @@ public class SubscribedSubredditsListingFragment extends Fragment {
|
|||||||
|
|
||||||
mGlide = Glide.with(this);
|
mGlide = Glide.with(this);
|
||||||
|
|
||||||
|
if (mActivity instanceof SubscribedThingListingActivity) {
|
||||||
|
mSwipeRefreshLayout.setOnRefreshListener(() -> ((SubscribedThingListingActivity) mActivity).loadSubscriptions(true));
|
||||||
|
TypedValue typedValue = new TypedValue();
|
||||||
|
mActivity.getTheme().resolveAttribute(R.attr.cardViewBackgroundColor, typedValue, true);
|
||||||
|
mSwipeRefreshLayout.setProgressBackgroundColorSchemeColor(typedValue.data);
|
||||||
|
mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent);
|
||||||
|
} else {
|
||||||
|
mSwipeRefreshLayout.setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
|
mRecyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
|
||||||
|
|
||||||
SubscribedSubredditsRecyclerViewAdapter adapter;
|
SubscribedSubredditsRecyclerViewAdapter adapter;
|
||||||
@ -108,6 +124,7 @@ public class SubscribedSubredditsListingFragment extends Fragment {
|
|||||||
new SubscribedSubredditViewModel.Factory(mActivity.getApplication(), mRedditDataRoomDatabase, accountName))
|
new SubscribedSubredditViewModel.Factory(mActivity.getApplication(), mRedditDataRoomDatabase, accountName))
|
||||||
.get(SubscribedSubredditViewModel.class);
|
.get(SubscribedSubredditViewModel.class);
|
||||||
mSubscribedSubredditViewModel.getAllSubscribedSubreddits().observe(this, subscribedSubredditData -> {
|
mSubscribedSubredditViewModel.getAllSubscribedSubreddits().observe(this, subscribedSubredditData -> {
|
||||||
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
if (subscribedSubredditData == null || subscribedSubredditData.size() == 0) {
|
if (subscribedSubredditData == null || subscribedSubredditData.size() == 0) {
|
||||||
mRecyclerView.setVisibility(View.GONE);
|
mRecyclerView.setVisibility(View.GONE);
|
||||||
mLinearLayout.setVisibility(View.VISIBLE);
|
mLinearLayout.setVisibility(View.VISIBLE);
|
||||||
@ -123,6 +140,7 @@ public class SubscribedSubredditsListingFragment extends Fragment {
|
|||||||
});
|
});
|
||||||
|
|
||||||
mSubscribedSubredditViewModel.getAllFavoriteSubscribedSubreddits().observe(this, favoriteSubscribedSubredditData -> {
|
mSubscribedSubredditViewModel.getAllFavoriteSubscribedSubreddits().observe(this, favoriteSubscribedSubredditData -> {
|
||||||
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
if (favoriteSubscribedSubredditData != null && favoriteSubscribedSubredditData.size() > 0) {
|
if (favoriteSubscribedSubredditData != null && favoriteSubscribedSubredditData.size() > 0) {
|
||||||
mLinearLayout.setVisibility(View.GONE);
|
mLinearLayout.setVisibility(View.GONE);
|
||||||
mRecyclerView.setVisibility(View.VISIBLE);
|
mRecyclerView.setVisibility(View.VISIBLE);
|
||||||
@ -134,4 +152,9 @@ public class SubscribedSubredditsListingFragment extends Fragment {
|
|||||||
|
|
||||||
return rootView;
|
return rootView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stopRefreshProgressbar() {
|
||||||
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
public interface FragmentCommunicator {
|
public interface FragmentCommunicator {
|
||||||
void refresh();
|
default void refresh() {
|
||||||
|
}
|
||||||
|
|
||||||
default boolean handleKeyDown(int keyCode) { return false; }
|
default boolean handleKeyDown(int keyCode) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
default void changeNSFW(boolean nsfw) {
|
default void changeNSFW(boolean nsfw) {
|
||||||
}
|
}
|
||||||
@ -25,6 +28,9 @@ public interface FragmentCommunicator {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
default void changePostLayout(int postLayout) { }
|
default void changePostLayout(int postLayout) {
|
||||||
|
}
|
||||||
|
|
||||||
|
default void stopRefreshProgressbar() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,11 +68,15 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
if (postType == TYPE_SUBREDDIT) {
|
if (postType == TYPE_SUBREDDIT) {
|
||||||
this.subredditOrUserName = path;
|
this.subredditOrUserName = path;
|
||||||
} else {
|
} else {
|
||||||
|
if (sortType != null) {
|
||||||
if (path.endsWith("/")) {
|
if (path.endsWith("/")) {
|
||||||
multiRedditPath = path + sortType.getType().value;
|
multiRedditPath = path + sortType.getType().value;
|
||||||
} else {
|
} else {
|
||||||
multiRedditPath = path + "/" + sortType.getType().value;
|
multiRedditPath = path + "/" + sortType.getType().value;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
multiRedditPath = path;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
paginationNetworkStateLiveData = new MutableLiveData<>();
|
paginationNetworkStateLiveData = new MutableLiveData<>();
|
||||||
initialLoadStateLiveData = new MutableLiveData<>();
|
initialLoadStateLiveData = new MutableLiveData<>();
|
||||||
|
@ -31,11 +31,18 @@
|
|||||||
|
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
|
android:id="@+id/swipe_refresh_layout_multi_reddit_listing_activity"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/recycler_view_multi_reddit_listing_activity"
|
android:id="@+id/recycler_view_multi_reddit_listing_activity"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent" />
|
||||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
|
||||||
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/fetch_multi_reddit_listing_info_linear_layout_multi_reddit_listing_activity"
|
android:id="@+id/fetch_multi_reddit_listing_info_linear_layout_multi_reddit_listing_activity"
|
||||||
|
@ -5,12 +5,19 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:application=".FollowedUsersListingFragment">
|
tools:application=".FollowedUsersListingFragment">
|
||||||
|
|
||||||
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
|
android:id="@+id/swipe_refresh_layout_followed_users_listing_fragment"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/recycler_view_followed_users_listing_fragment"
|
android:id="@+id/recycler_view_followed_users_listing_fragment"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:clipToPadding="false" />
|
android:clipToPadding="false" />
|
||||||
|
|
||||||
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/no_subscriptions_linear_layout_followed_users_listing_fragment"
|
android:id="@+id/no_subscriptions_linear_layout_followed_users_listing_fragment"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -5,12 +5,19 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:application=".SubscribedSubredditsListingFragment">
|
tools:application=".SubscribedSubredditsListingFragment">
|
||||||
|
|
||||||
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
|
android:id="@+id/swipe_refresh_layout_subscribed_subreddits_listing_fragment"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/recycler_view_subscribed_subreddits_listing_fragment"
|
android:id="@+id/recycler_view_subscribed_subreddits_listing_fragment"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:clipToPadding="false" />
|
android:clipToPadding="false" />
|
||||||
|
|
||||||
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/no_subscriptions_linear_layout_subreddits_listing_fragment"
|
android:id="@+id/no_subscriptions_linear_layout_subreddits_listing_fragment"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -375,4 +375,6 @@
|
|||||||
<string name="elapsed_time_years_ago">%1$d Years</string>
|
<string name="elapsed_time_years_ago">%1$d Years</string>
|
||||||
|
|
||||||
<string name="error_getting_multi_reddit_data">Error getting multireddit data</string>
|
<string name="error_getting_multi_reddit_data">Error getting multireddit data</string>
|
||||||
|
<string name="error_loading_multi_reddit_list">Cannot sync multireddits</string>
|
||||||
|
<string name="error_loading_subscriptions">Cannot sync subscriptions</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user