Some changes to enable multicomm (not working yet)

This commit is contained in:
Balazs Toldi 2023-10-06 07:56:33 +02:00
parent 29547f4750
commit ea7a4b03ab
No known key found for this signature in database
GPG Key ID: 6C7D440036F99D58
18 changed files with 188 additions and 256 deletions

View File

@ -34,13 +34,13 @@ import butterknife.ButterKnife;
import eu.toldi.infinityforlemmy.Infinity;
import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.RetrofitHolder;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.customviews.slidr.Slidr;
import eu.toldi.infinityforlemmy.multireddit.CreateMultiReddit;
import eu.toldi.infinityforlemmy.multireddit.MultiRedditJSONModel;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import eu.toldi.infinityforlemmy.utils.Utils;
import retrofit2.Retrofit;
public class CreateMultiRedditActivity extends BaseActivity {
@ -71,8 +71,8 @@ public class CreateMultiRedditActivity extends BaseActivity {
@BindView(R.id.select_subreddit_text_view_create_multi_reddit_activity)
TextView selectSubredditTextView;
@Inject
@Named("oauth")
Retrofit mOauthRetrofit;
@Named("no_oauth")
RetrofitHolder mRetrofit;
@Inject
RedditDataRoomDatabase mRedditDataRoomDatabase;
@Inject
@ -87,7 +87,7 @@ public class CreateMultiRedditActivity extends BaseActivity {
Executor mExecutor;
private String mAccessToken;
private String mAccountName;
private ArrayList<String> mSubreddits;
private ArrayList<SubredditWithSelection> mSubreddits;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -116,8 +116,8 @@ public class CreateMultiRedditActivity extends BaseActivity {
mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null);
mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_NAME, "-");
if (mAccessToken == null) {
visibilityLinearLayout.setVisibility(View.GONE);
if (mAccessToken == null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
nameEditText.setImeOptions(nameEditText.getImeOptions() | EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING);
descriptionEditText.setImeOptions(descriptionEditText.getImeOptions() | EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING);
@ -125,7 +125,7 @@ public class CreateMultiRedditActivity extends BaseActivity {
}
if (savedInstanceState != null) {
mSubreddits = savedInstanceState.getStringArrayList(SELECTED_SUBREDDITS_STATE);
mSubreddits = savedInstanceState.getParcelableArrayList(SELECTED_SUBREDDITS_STATE);
} else {
mSubreddits = new ArrayList<>();
}
@ -135,7 +135,7 @@ public class CreateMultiRedditActivity extends BaseActivity {
private void bindView() {
selectSubredditTextView.setOnClickListener(view -> {
Intent intent = new Intent(CreateMultiRedditActivity.this, SelectedSubredditsAndUsersActivity.class);
intent.putStringArrayListExtra(SelectedSubredditsAndUsersActivity.EXTRA_SELECTED_SUBREDDITS, mSubreddits);
intent.putParcelableArrayListExtra(SelectedSubredditsAndUsersActivity.EXTRA_SELECTED_SUBREDDITS, mSubreddits);
startActivityForResult(intent, SUBREDDIT_SELECTION_REQUEST_CODE);
});
}
@ -159,29 +159,8 @@ public class CreateMultiRedditActivity extends BaseActivity {
return true;
}
if (mAccessToken != null) {
String jsonModel = new MultiRedditJSONModel(nameEditText.getText().toString(), descriptionEditText.getText().toString(),
visibilitySwitch.isChecked(), mSubreddits).createJSONModel();
CreateMultiReddit.createMultiReddit(mOauthRetrofit, mRedditDataRoomDatabase, mAccessToken,
"/user/" + mAccountName + "/m/" + nameEditText.getText().toString(),
jsonModel, new CreateMultiReddit.CreateMultiRedditListener() {
@Override
public void success() {
finish();
}
@Override
public void failed(int errorCode) {
if (errorCode == 409) {
Snackbar.make(coordinatorLayout, R.string.duplicate_multi_reddit, Snackbar.LENGTH_SHORT).show();
} else {
Snackbar.make(coordinatorLayout, R.string.create_multi_reddit_failed, Snackbar.LENGTH_SHORT).show();
}
}
});
} else {
CreateMultiReddit.anonymousCreateMultiReddit(mExecutor, new Handler(), mRedditDataRoomDatabase,
"/user/-/m/" + nameEditText.getText().toString(),
"/user/" + mAccountName + "/m/" + nameEditText.getText().toString(),
nameEditText.getText().toString(), descriptionEditText.getText().toString(),
mSubreddits, new CreateMultiReddit.CreateMultiRedditListener() {
@Override
@ -195,7 +174,6 @@ public class CreateMultiRedditActivity extends BaseActivity {
}
});
}
}
return false;
}
@ -204,7 +182,7 @@ public class CreateMultiRedditActivity extends BaseActivity {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SUBREDDIT_SELECTION_REQUEST_CODE && resultCode == RESULT_OK) {
if (data != null) {
mSubreddits = data.getStringArrayListExtra(
mSubreddits = data.getParcelableArrayListExtra(
SubredditMultiselectionActivity.EXTRA_RETURN_SELECTED_SUBREDDITS);
}
}
@ -213,7 +191,7 @@ public class CreateMultiRedditActivity extends BaseActivity {
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putStringArrayList(SELECTED_SUBREDDITS_STATE, mSubreddits);
outState.putParcelableArrayList(SELECTED_SUBREDDITS_STATE, mSubreddits);
}
@Override

View File

@ -40,7 +40,6 @@ import eu.toldi.infinityforlemmy.customviews.slidr.Slidr;
import eu.toldi.infinityforlemmy.multireddit.EditMultiReddit;
import eu.toldi.infinityforlemmy.multireddit.FetchMultiRedditInfo;
import eu.toldi.infinityforlemmy.multireddit.MultiReddit;
import eu.toldi.infinityforlemmy.multireddit.MultiRedditJSONModel;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import eu.toldi.infinityforlemmy.utils.Utils;
import retrofit2.Retrofit;
@ -191,7 +190,7 @@ public class EditMultiRedditActivity extends BaseActivity {
selectSubredditTextView.setOnClickListener(view -> {
Intent intent = new Intent(EditMultiRedditActivity.this, SelectedSubredditsAndUsersActivity.class);
if (multiReddit.getSubreddits() != null) {
intent.putStringArrayListExtra(SelectedSubredditsAndUsersActivity.EXTRA_SELECTED_SUBREDDITS, multiReddit.getSubreddits());
intent.putParcelableArrayListExtra(SelectedSubredditsAndUsersActivity.EXTRA_SELECTED_SUBREDDITS, multiReddit.getSubreddits());
}
startActivityForResult(intent, SUBREDDIT_SELECTION_REQUEST_CODE);
});
@ -234,7 +233,7 @@ public class EditMultiRedditActivity extends BaseActivity {
}
});
} else {
String jsonModel = new MultiRedditJSONModel(nameEditText.getText().toString(), descriptionEditText.getText().toString(),
/*String jsonModel = new MultiRedditJSONModel(nameEditText.getText().toString(), descriptionEditText.getText().toString(),
visibilitySwitch.isChecked(), multiReddit.getSubreddits()).createJSONModel();
EditMultiReddit.editMultiReddit(mRetrofit, mAccessToken, multiReddit.getPath(),
jsonModel, new EditMultiReddit.EditMultiRedditListener() {
@ -247,7 +246,7 @@ public class EditMultiRedditActivity extends BaseActivity {
public void failed() {
Snackbar.make(coordinatorLayout, R.string.edit_multi_reddit_failed, Snackbar.LENGTH_SHORT).show();
}
});
});*/
}
return true;
}
@ -259,7 +258,7 @@ public class EditMultiRedditActivity extends BaseActivity {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SUBREDDIT_SELECTION_REQUEST_CODE && resultCode == RESULT_OK) {
if (data != null) {
multiReddit.setSubreddits(data.getStringArrayListExtra(
multiReddit.setSubreddits(data.getParcelableArrayListExtra(
SelectedSubredditsAndUsersActivity.EXTRA_RETURN_SELECTED_SUBREDDITS));
}
}

View File

@ -117,7 +117,7 @@ public class MultiredditSelectionActivity extends BaseActivity implements Activi
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null);
mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_NAME, null);
mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_QUALIFIED_NAME, null);
if (savedInstanceState == null) {
bindView(true);

View File

@ -52,8 +52,10 @@ import eu.toldi.infinityforlemmy.recentsearchquery.RecentSearchQuery;
import eu.toldi.infinityforlemmy.recentsearchquery.RecentSearchQueryViewModel;
import eu.toldi.infinityforlemmy.subreddit.ParseSubredditData;
import eu.toldi.infinityforlemmy.subreddit.SubredditData;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.subscribedsubreddit.SubscribedSubredditData;
import eu.toldi.infinityforlemmy.utils.APIUtils;
import eu.toldi.infinityforlemmy.utils.LemmyUtils;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import eu.toldi.infinityforlemmy.utils.Utils;
import retrofit2.Call;
@ -182,9 +184,9 @@ public class SearchActivity extends BaseActivity {
if (searchOnlySubreddits) {
Intent returnIntent = new Intent();
if (getIntent().getBooleanExtra(EXTRA_IS_MULTI_SELECTION, false)) {
ArrayList<String> subredditNameList = new ArrayList<>();
subredditNameList.add(subredditData.getName());
returnIntent.putStringArrayListExtra(RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES, subredditNameList);
ArrayList<SubredditWithSelection> subredditNameList = new ArrayList<>();
subredditNameList.add(new SubredditWithSelection(subredditData.getName(), subredditData.getIconUrl(), LemmyUtils.actorID2FullName(subredditData.getActorId())));
returnIntent.putParcelableArrayListExtra(RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES, subredditNameList);
} else {
returnIntent.putExtra(EXTRA_RETURN_SUBREDDIT_NAME, new SubscribedSubredditData(subredditData));
returnIntent.putExtra(EXTRA_RETURN_SUBREDDIT_ICON_URL, subredditData.getIconUrl());

View File

@ -18,7 +18,6 @@ import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.util.ArrayList;
import java.util.Collections;
import javax.inject.Inject;
import javax.inject.Named;
@ -33,6 +32,7 @@ import eu.toldi.infinityforlemmy.bottomsheetfragments.SelectSubredditsOrUsersOpt
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.customviews.LinearLayoutManagerBugFixed;
import eu.toldi.infinityforlemmy.customviews.slidr.Slidr;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
public class SelectedSubredditsAndUsersActivity extends BaseActivity implements ActivityToolbarInterface {
@ -62,7 +62,7 @@ public class SelectedSubredditsAndUsersActivity extends BaseActivity implements
CustomThemeWrapper mCustomThemeWrapper;
private LinearLayoutManagerBugFixed linearLayoutManager;
private SelectedSubredditsRecyclerViewAdapter adapter;
private ArrayList<String> subreddits;
private ArrayList<SubredditWithSelection> subreddits;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -86,12 +86,11 @@ public class SelectedSubredditsAndUsersActivity extends BaseActivity implements
setToolbarGoToTop(toolbar);
if (savedInstanceState != null) {
subreddits = savedInstanceState.getStringArrayList(SELECTED_SUBREDDITS_STATE);
subreddits = savedInstanceState.getParcelableArrayList(SELECTED_SUBREDDITS_STATE);
} else {
subreddits = getIntent().getStringArrayListExtra(EXTRA_SELECTED_SUBREDDITS);
subreddits = getIntent().getParcelableArrayListExtra(EXTRA_SELECTED_SUBREDDITS);
}
Collections.sort(subreddits);
adapter = new SelectedSubredditsRecyclerViewAdapter(this, mCustomThemeWrapper, subreddits);
linearLayoutManager = new LinearLayoutManagerBugFixed(this);
@ -158,7 +157,7 @@ public class SelectedSubredditsAndUsersActivity extends BaseActivity implements
if (subreddits == null) {
subreddits = new ArrayList<>();
}
subreddits = data.getStringArrayListExtra(SubredditMultiselectionActivity.EXTRA_RETURN_SELECTED_SUBREDDITS);
subreddits = data.getParcelableArrayListExtra(SubredditMultiselectionActivity.EXTRA_RETURN_SELECTED_SUBREDDITS);
adapter.addSubreddits(subreddits);
}
} else if (requestCode == USER_SELECTION_REQUEST_CODE) {
@ -176,7 +175,7 @@ public class SelectedSubredditsAndUsersActivity extends BaseActivity implements
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
if (adapter != null) {
outState.putStringArrayList(SELECTED_SUBREDDITS_STATE, adapter.getSubreddits());
outState.putParcelableArrayList(SELECTED_SUBREDDITS_STATE, adapter.getSubreddits());
}
}

View File

@ -37,13 +37,14 @@ import eu.toldi.infinityforlemmy.ActivityToolbarInterface;
import eu.toldi.infinityforlemmy.Infinity;
import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.RetrofitHolder;
import eu.toldi.infinityforlemmy.adapters.SubredditMultiselectionRecyclerViewAdapter;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.customviews.LinearLayoutManagerBugFixed;
import eu.toldi.infinityforlemmy.customviews.slidr.Slidr;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.subscribedsubreddit.SubscribedSubredditViewModel;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import retrofit2.Retrofit;
public class SubredditMultiselectionActivity extends BaseActivity implements ActivityToolbarInterface {
@ -70,8 +71,8 @@ public class SubredditMultiselectionActivity extends BaseActivity implements Act
@BindView(R.id.error_text_view_subscribed_subreddits_multiselection_activity)
TextView mErrorTextView;
@Inject
@Named("oauth")
Retrofit mOauthRetrofit;
@Named("no_oauth")
RetrofitHolder mRetrofit;
@Inject
RedditDataRoomDatabase mRedditDataRoomDatabase;
@Inject
@ -131,7 +132,7 @@ public class SubredditMultiselectionActivity extends BaseActivity implements Act
mSwipeRefreshLayout.setEnabled(false);
mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_NAME, "-");
mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_QUALIFIED_NAME, "-");
bindView();
}
@ -177,7 +178,7 @@ public class SubredditMultiselectionActivity extends BaseActivity implements Act
} else if (itemId == R.id.action_save_subreddit_multiselection_activity) {
if (mAdapter != null) {
Intent returnIntent = new Intent();
returnIntent.putStringArrayListExtra(EXTRA_RETURN_SELECTED_SUBREDDITS,
returnIntent.putExtra(EXTRA_RETURN_SELECTED_SUBREDDITS,
mAdapter.getAllSelectedSubreddits());
setResult(RESULT_OK, returnIntent);
}
@ -198,12 +199,12 @@ public class SubredditMultiselectionActivity extends BaseActivity implements Act
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SUBREDDIT_SEARCH_REQUEST_CODE && resultCode == RESULT_OK && data != null && mAdapter != null) {
Intent returnIntent = new Intent();
ArrayList<String> selectedSubreddits = mAdapter.getAllSelectedSubreddits();
ArrayList<String> searchedSubreddits = data.getStringArrayListExtra(SearchActivity.RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES);
ArrayList<SubredditWithSelection> selectedSubreddits = mAdapter.getAllSelectedSubreddits();
ArrayList<SubredditWithSelection> searchedSubreddits = data.getParcelableArrayListExtra(SearchActivity.RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES);
if (searchedSubreddits != null) {
selectedSubreddits.addAll(searchedSubreddits);
}
returnIntent.putStringArrayListExtra(EXTRA_RETURN_SELECTED_SUBREDDITS, selectedSubreddits);
returnIntent.putParcelableArrayListExtra(EXTRA_RETURN_SELECTED_SUBREDDITS, selectedSubreddits);
setResult(RESULT_OK, returnIntent);
finish();
}

View File

@ -233,7 +233,7 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(sectionsPagerAdapter);
viewPager.setOffscreenPageLimit(1);
if (viewPager.getCurrentItem() != 2) {
if (viewPager.getCurrentItem() != 1) {
fab.hide();
}
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@ -244,7 +244,7 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
fab.hide();
} else {
lockSwipeRightToGoBack();
if (position != 2) {
if (position != 1) {
fab.hide();
} else {
fab.show();
@ -476,7 +476,7 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
@Override
public Fragment getItem(int position) {
switch (position) {
default:
case 0: {
SubscribedSubredditsListingFragment fragment = new SubscribedSubredditsListingFragment();
Bundle bundle = new Bundle();
@ -487,12 +487,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 == null ? "-" : mAccountQualifiedName);
fragment.setArguments(bundle);
return fragment;
}
}
}
@Override
public int getCount() {
return 1;
return 2;
}
@Override
@ -501,8 +509,6 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
case 0:
return Utils.getTabTextWithCustomFont(typeface, getString(R.string.communities));
case 1:
return Utils.getTabTextWithCustomFont(typeface, getString(R.string.users));
case 2:
return Utils.getTabTextWithCustomFont(typeface, getString(R.string.multi_reddits));
}
@ -515,8 +521,6 @@ public class SubscribedThingListingActivity extends BaseActivity implements Acti
Fragment fragment = (Fragment) super.instantiateItem(container, position);
if (position == 0) {
subscribedSubredditsListingFragment = (SubscribedSubredditsListingFragment) fragment;
} else if (position == 1) {
followedUsersListingFragment = (FollowedUsersListingFragment) fragment;
} else {
multiRedditListingFragment = (MultiRedditListingFragment) fragment;
}

View File

@ -6,7 +6,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
@ -20,15 +19,14 @@ import java.util.concurrent.Executor;
import butterknife.BindView;
import butterknife.ButterKnife;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import me.zhanghai.android.fastscroll.PopupTextProvider;
import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.activities.BaseActivity;
import eu.toldi.infinityforlemmy.asynctasks.InsertMultireddit;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.multireddit.FavoriteMultiReddit;
import eu.toldi.infinityforlemmy.multireddit.MultiReddit;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import me.zhanghai.android.fastscroll.PopupTextProvider;
import pl.droidsonroids.gif.GifImageView;
import retrofit2.Retrofit;
@ -54,6 +52,7 @@ public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter<
public interface OnItemClickListener {
void onClick(MultiReddit multiReddit);
void onLongClick(MultiReddit multiReddit);
}
@ -120,80 +119,31 @@ public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter<
MultiReddit multiReddit = mMultiReddits.get(holder.getBindingAdapterPosition() - offset);
name = multiReddit.getDisplayName();
iconUrl = multiReddit.getIconUrl();
if(multiReddit.isFavorite()) {
if (multiReddit.isFavorite()) {
((MultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_24dp);
} else {
((MultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_border_24dp);
}
((MultiRedditViewHolder) holder).favoriteImageView.setOnClickListener(view -> {
if(multiReddit.isFavorite()) {
if (multiReddit.isFavorite()) {
((MultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_border_24dp);
multiReddit.setFavorite(false);
if (mAccessToken == null) {
InsertMultireddit.insertMultireddit(mExecutor, new Handler(), mRedditDataRoomDatabase, multiReddit,
() -> {
//Do nothing
});
} else {
FavoriteMultiReddit.favoriteMultiReddit(mExecutor, new Handler(), mOauthRetrofit, mRedditDataRoomDatabase,
mAccessToken, false, multiReddit,
new FavoriteMultiReddit.FavoriteMultiRedditListener() {
@Override
public void success() {
int position = holder.getBindingAdapterPosition() - offset;
if(position >= 0 && mMultiReddits.size() > position) {
mMultiReddits.get(position).setFavorite(false);
}
((MultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_border_24dp);
}
@Override
public void failed() {
Toast.makeText(mActivity, R.string.thing_unfavorite_failed, Toast.LENGTH_SHORT).show();
int position = holder.getBindingAdapterPosition() - offset;
if(position >= 0 && mMultiReddits.size() > position) {
mMultiReddits.get(position).setFavorite(true);
}
((MultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_24dp);
}
}
);
}
} else {
((MultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_24dp);
multiReddit.setFavorite(true);
if (mAccessToken == null) {
InsertMultireddit.insertMultireddit(mExecutor, new Handler(), mRedditDataRoomDatabase, multiReddit,
() -> {
//Do nothing
});
} else {
FavoriteMultiReddit.favoriteMultiReddit(mExecutor, new Handler(), mOauthRetrofit, mRedditDataRoomDatabase,
mAccessToken, true, multiReddit,
new FavoriteMultiReddit.FavoriteMultiRedditListener() {
@Override
public void success() {
int position = holder.getBindingAdapterPosition() - offset;
if(position >= 0 && mMultiReddits.size() > position) {
mMultiReddits.get(position).setFavorite(true);
}
((MultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_24dp);
}
@Override
public void failed() {
Toast.makeText(mActivity, R.string.thing_favorite_failed, Toast.LENGTH_SHORT).show();
int position = holder.getBindingAdapterPosition() - offset;
if(position >= 0 && mMultiReddits.size() > position) {
mMultiReddits.get(position).setFavorite(false);
}
((MultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_border_24dp);
}
}
);
}
}
});
holder.itemView.setOnClickListener(view -> {
mOnItemClickListener.onClick(multiReddit);
@ -220,79 +170,29 @@ public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter<
MultiReddit multiReddit = mFavoriteMultiReddits.get(holder.getBindingAdapterPosition() - 1);
String name = multiReddit.getDisplayName();
String iconUrl = multiReddit.getIconUrl();
if(multiReddit.isFavorite()) {
if (multiReddit.isFavorite()) {
((FavoriteMultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_24dp);
} else {
((FavoriteMultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_border_24dp);
}
((FavoriteMultiRedditViewHolder) holder).favoriteImageView.setOnClickListener(view -> {
if(multiReddit.isFavorite()) {
if (multiReddit.isFavorite()) {
((FavoriteMultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_border_24dp);
multiReddit.setFavorite(false);
if (mAccessToken == null) {
InsertMultireddit.insertMultireddit(mExecutor, new Handler(), mRedditDataRoomDatabase, multiReddit,
() -> {
//Do nothing
});
} else {
FavoriteMultiReddit.favoriteMultiReddit(mExecutor, new Handler(), mOauthRetrofit, mRedditDataRoomDatabase,
mAccessToken, false, multiReddit,
new FavoriteMultiReddit.FavoriteMultiRedditListener() {
@Override
public void success() {
int position = holder.getBindingAdapterPosition() - 1;
if(position >= 0 && mFavoriteMultiReddits.size() > position) {
mFavoriteMultiReddits.get(position).setFavorite(false);
}
((FavoriteMultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_border_24dp);
}
@Override
public void failed() {
Toast.makeText(mActivity, R.string.thing_unfavorite_failed, Toast.LENGTH_SHORT).show();
int position = holder.getBindingAdapterPosition() - 1;
if(position >= 0 && mFavoriteMultiReddits.size() > position) {
mFavoriteMultiReddits.get(position).setFavorite(true);
}
((FavoriteMultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_24dp);
}
}
);
}
} else {
((FavoriteMultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_24dp);
multiReddit.setFavorite(true);
if (mAccessToken == null) {
InsertMultireddit.insertMultireddit(mExecutor, new Handler(), mRedditDataRoomDatabase, multiReddit,
() -> {
//Do nothing
});
} else {
FavoriteMultiReddit.favoriteMultiReddit(mExecutor, new Handler(), mOauthRetrofit, mRedditDataRoomDatabase,
mAccessToken, true, multiReddit,
new FavoriteMultiReddit.FavoriteMultiRedditListener() {
@Override
public void success() {
int position = holder.getBindingAdapterPosition() - 1;
if(position >= 0 && mFavoriteMultiReddits.size() > position) {
mFavoriteMultiReddits.get(position).setFavorite(true);
}
((FavoriteMultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_24dp);
}
@Override
public void failed() {
Toast.makeText(mActivity, R.string.thing_favorite_failed, Toast.LENGTH_SHORT).show();
int position = holder.getBindingAdapterPosition() - 1;
if(position >= 0 && mFavoriteMultiReddits.size() > position) {
mFavoriteMultiReddits.get(position).setFavorite(false);
}
((FavoriteMultiRedditViewHolder) holder).favoriteImageView.setImageResource(R.drawable.ic_favorite_border_24dp);
}
}
);
}
}
});
holder.itemView.setOnClickListener(view -> {
@ -322,7 +222,7 @@ public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter<
@Override
public int getItemCount() {
if (mMultiReddits != null) {
if(mFavoriteMultiReddits != null && mFavoriteMultiReddits.size() > 0) {
if (mFavoriteMultiReddits != null && mFavoriteMultiReddits.size() > 0) {
return mMultiReddits.size() > 0 ?
mFavoriteMultiReddits.size() + mMultiReddits.size() + 2 : 0;
}
@ -334,7 +234,7 @@ public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter<
@Override
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
if(holder instanceof MultiRedditViewHolder) {
if (holder instanceof MultiRedditViewHolder) {
mGlide.clear(((MultiRedditViewHolder) holder).iconImageView);
} else if (holder instanceof FavoriteMultiRedditViewHolder) {
mGlide.clear(((FavoriteMultiRedditViewHolder) holder).iconImageView);
@ -403,7 +303,8 @@ public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter<
}
class FavoriteMultiRedditsDividerViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.divider_text_view_item_favorite_thing_divider) TextView dividerTextView;
@BindView(R.id.divider_text_view_item_favorite_thing_divider)
TextView dividerTextView;
FavoriteMultiRedditsDividerViewHolder(@NonNull View itemView) {
super(itemView);
@ -417,7 +318,8 @@ public class MultiRedditListingRecyclerViewAdapter extends RecyclerView.Adapter<
}
class AllMultiRedditsDividerViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.divider_text_view_item_favorite_thing_divider) TextView dividerTextView;
@BindView(R.id.divider_text_view_item_favorite_thing_divider)
TextView dividerTextView;
AllMultiRedditsDividerViewHolder(@NonNull View itemView) {
super(itemView);

View File

@ -16,13 +16,14 @@ import butterknife.ButterKnife;
import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.activities.BaseActivity;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
public class SelectedSubredditsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private BaseActivity activity;
private CustomThemeWrapper customThemeWrapper;
private ArrayList<String> subreddits;
private ArrayList<SubredditWithSelection> subreddits;
public SelectedSubredditsRecyclerViewAdapter(BaseActivity activity, CustomThemeWrapper customThemeWrapper, ArrayList<String> subreddits) {
public SelectedSubredditsRecyclerViewAdapter(BaseActivity activity, CustomThemeWrapper customThemeWrapper, ArrayList<SubredditWithSelection> subreddits) {
this.activity = activity;
this.customThemeWrapper = customThemeWrapper;
if (subreddits == null) {
@ -42,7 +43,7 @@ public class SelectedSubredditsRecyclerViewAdapter extends RecyclerView.Adapter<
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (holder instanceof SubredditViewHolder) {
((SubredditViewHolder) holder).subredditNameTextView.setText(subreddits.get(holder.getBindingAdapterPosition()));
((SubredditViewHolder) holder).subredditNameTextView.setText(subreddits.get(holder.getBindingAdapterPosition()).getName());
((SubredditViewHolder) holder).deleteButton.setOnClickListener(view -> {
subreddits.remove(holder.getBindingAdapterPosition());
notifyItemRemoved(holder.getBindingAdapterPosition());
@ -55,18 +56,18 @@ public class SelectedSubredditsRecyclerViewAdapter extends RecyclerView.Adapter<
return subreddits.size();
}
public void addSubreddits(ArrayList<String> newSubreddits) {
public void addSubreddits(ArrayList<SubredditWithSelection> newSubreddits) {
int oldSize = subreddits.size();
subreddits.addAll(newSubreddits);
notifyItemRangeInserted(oldSize, newSubreddits.size());
}
public void addUserInSubredditType(String username) {
subreddits.add(username);
notifyItemInserted(subreddits.size());
/*subreddits.add(username);
notifyItemInserted(subreddits.size());*/
}
public ArrayList<String> getSubreddits() {
public ArrayList<SubredditWithSelection> getSubreddits() {
return subreddits;
}

View File

@ -19,12 +19,12 @@ import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.activities.BaseActivity;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.subscribedsubreddit.SubscribedSubredditData;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import pl.droidsonroids.gif.GifImageView;
public class SubredditMultiselectionRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@ -91,11 +91,11 @@ public class SubredditMultiselectionRecyclerViewAdapter extends RecyclerView.Ada
notifyDataSetChanged();
}
public ArrayList<String> getAllSelectedSubreddits() {
ArrayList<String> selectedSubreddits = new ArrayList<>();
public ArrayList<SubredditWithSelection> getAllSelectedSubreddits() {
ArrayList<SubredditWithSelection> selectedSubreddits = new ArrayList<>();
for (SubredditWithSelection s : subscribedSubreddits) {
if (s.isSelected()) {
selectedSubreddits.add(s.getName());
selectedSubreddits.add(s);
}
}
return selectedSubreddits;

View File

@ -29,7 +29,6 @@ import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
import eu.toldi.infinityforlemmy.FragmentCommunicator;
import eu.toldi.infinityforlemmy.Infinity;
import eu.toldi.infinityforlemmy.R;
@ -45,6 +44,7 @@ import eu.toldi.infinityforlemmy.customviews.LinearLayoutManagerBugFixed;
import eu.toldi.infinityforlemmy.multireddit.MultiReddit;
import eu.toldi.infinityforlemmy.multireddit.MultiRedditViewModel;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
import retrofit2.Retrofit;
public class MultiRedditListingFragment extends Fragment implements FragmentCommunicator {
@ -111,9 +111,9 @@ public class MultiRedditListingFragment extends Fragment implements FragmentComm
String accessToken = getArguments().getString(EXTRA_ACCESS_TOKEN);
boolean isGettingMultiredditInfo = getArguments().getBoolean(EXTRA_IS_GETTING_MULTIREDDIT_INFO, false);
if (accessToken == null) {
mSwipeRefreshLayout.setEnabled(false);
}
mGlide = Glide.with(this);

View File

@ -13,6 +13,7 @@ import java.util.concurrent.Executor;
import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.account.Account;
import eu.toldi.infinityforlemmy.apis.RedditAPI;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.utils.APIUtils;
import retrofit2.Call;
import retrofit2.Callback;
@ -63,7 +64,7 @@ public class CreateMultiReddit {
public static void anonymousCreateMultiReddit(Executor executor, Handler handler,
RedditDataRoomDatabase redditDataRoomDatabase,
String multipath, String name, String description,
List<String> subreddits,
List<SubredditWithSelection> subreddits,
CreateMultiRedditListener createMultiRedditListener) {
executor.execute(() -> {
if (!redditDataRoomDatabase.accountDao().isAnonymousAccountInserted()) {
@ -72,8 +73,8 @@ public class CreateMultiReddit {
redditDataRoomDatabase.multiRedditDao().insert(new MultiReddit(multipath, name, name, description,
null, null, "private", "-", 0, System.currentTimeMillis(), true, false, false));
List<AnonymousMultiredditSubreddit> anonymousMultiredditSubreddits = new ArrayList<>();
for (String s : subreddits) {
anonymousMultiredditSubreddits.add(new AnonymousMultiredditSubreddit(multipath, s));
for (SubredditWithSelection s : subreddits) {
anonymousMultiredditSubreddits.add(new AnonymousMultiredditSubreddit(multipath, s.getQualifiedName()));
}
redditDataRoomDatabase.anonymousMultiredditSubredditDao().insertAll(anonymousMultiredditSubreddits);

View File

@ -11,6 +11,7 @@ import java.util.concurrent.Executor;
import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.apis.RedditAPI;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.utils.APIUtils;
import retrofit2.Call;
import retrofit2.Callback;
@ -52,10 +53,10 @@ public class EditMultiReddit {
EditMultiRedditListener editMultiRedditListener) {
executor.execute(() -> {
ArrayList<AnonymousMultiredditSubreddit> anonymousMultiredditSubreddits = new ArrayList<>();
ArrayList<String> subreddits = multiReddit.getSubreddits();
ArrayList<SubredditWithSelection> subreddits = multiReddit.getSubreddits();
redditDataRoomDatabase.multiRedditDao().insert(multiReddit);
for (String s : subreddits) {
anonymousMultiredditSubreddits.add(new AnonymousMultiredditSubreddit(multiReddit.getPath(), s));
for (SubredditWithSelection s : subreddits) {
anonymousMultiredditSubreddits.add(new AnonymousMultiredditSubreddit(multiReddit.getPath(), s.getQualifiedName()));
}
redditDataRoomDatabase.anonymousMultiredditSubredditDao().insertAll(anonymousMultiredditSubreddits);
handler.post(editMultiRedditListener::success);

View File

@ -14,8 +14,9 @@ import java.util.concurrent.Executor;
import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.apis.RedditAPI;
import eu.toldi.infinityforlemmy.utils.JSONUtils;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.utils.APIUtils;
import eu.toldi.infinityforlemmy.utils.JSONUtils;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@ -55,10 +56,8 @@ public class FetchMultiRedditInfo {
MultiReddit multiReddit = redditDataRoomDatabase.multiRedditDao().getMultiReddit(multipath, "-");
ArrayList<AnonymousMultiredditSubreddit> anonymousMultiredditSubreddits =
(ArrayList<AnonymousMultiredditSubreddit>) redditDataRoomDatabase.anonymousMultiredditSubredditDao().getAllAnonymousMultiRedditSubreddits(multipath);
ArrayList<String> subredditNames = new ArrayList<>();
for (AnonymousMultiredditSubreddit a : anonymousMultiredditSubreddits) {
subredditNames.add(a.getSubredditName());
}
ArrayList<SubredditWithSelection> subredditNames = new ArrayList<>();
multiReddit.setSubreddits(subredditNames);
handler.post(() -> fetchMultiRedditInfoListener.success(multiReddit));
});
@ -93,11 +92,9 @@ public class FetchMultiRedditInfo {
boolean over18 = object.getBoolean(JSONUtils.OVER_18_KEY);
boolean isSubscriber = object.getBoolean(JSONUtils.IS_SUBSCRIBER_KEY);
boolean isFavorite = object.getBoolean(JSONUtils.IS_FAVORITED_KEY);
ArrayList<String> subreddits = new ArrayList<>();
ArrayList<SubredditWithSelection> subreddits = new ArrayList<>();
JSONArray subredditsArray = object.getJSONArray(JSONUtils.SUBREDDITS_KEY);
for (int i = 0; i < subredditsArray.length(); i++) {
subreddits.add(subredditsArray.getJSONObject(i).getString(JSONUtils.NAME_KEY));
}
multiReddit = new MultiReddit(path, displayName, name, description, copiedFrom, iconUrl,
visibility, owner, nSubscribers, createdUTC, over18, isSubscriber, isFavorite,

View File

@ -12,6 +12,7 @@ import androidx.room.Ignore;
import java.util.ArrayList;
import eu.toldi.infinityforlemmy.account.Account;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
@Entity(tableName = "multi_reddits", primaryKeys = {"path", "username"},
foreignKeys = @ForeignKey(entity = Account.class, parentColumns = "username",
@ -48,7 +49,7 @@ public class MultiReddit implements Parcelable {
@ColumnInfo(name = "is_favorite")
private boolean isFavorite;
@Ignore
private ArrayList<String> subreddits;
private ArrayList<SubredditWithSelection> subreddits;
public MultiReddit(@NonNull String path, @NonNull String displayName, @NonNull String name,
String description, String copiedFrom, String iconUrl, String visibility,
@ -72,7 +73,7 @@ public class MultiReddit implements Parcelable {
public MultiReddit(@NonNull String path, @NonNull String displayName, @NonNull String name,
String description, String copiedFrom, String iconUrl, String visibility,
@NonNull String owner, int nSubscribers, long createdUTC, boolean over18,
boolean isSubscriber, boolean isFavorite, ArrayList<String> subreddits) {
boolean isSubscriber, boolean isFavorite, ArrayList<SubredditWithSelection> subreddits) {
this.displayName = displayName;
this.name = name;
this.description = description;
@ -104,7 +105,7 @@ public class MultiReddit implements Parcelable {
isSubscriber = in.readByte() != 0;
isFavorite = in.readByte() != 0;
subreddits = new ArrayList<>();
in.readStringList(subreddits);
in.readList(subreddits, SubredditWithSelection.class.getClassLoader());
}
public static final Creator<MultiReddit> CREATOR = new Creator<>() {
@ -226,11 +227,11 @@ public class MultiReddit implements Parcelable {
isFavorite = favorite;
}
public ArrayList<String> getSubreddits() {
public ArrayList<SubredditWithSelection> getSubreddits() {
return subreddits;
}
public void setSubreddits(ArrayList<String> subreddits) {
public void setSubreddits(ArrayList<SubredditWithSelection> subreddits) {
this.subreddits = subreddits;
}
@ -254,6 +255,6 @@ public class MultiReddit implements Parcelable {
parcel.writeByte((byte) (over18 ? 1 : 0));
parcel.writeByte((byte) (isSubscriber ? 1 : 0));
parcel.writeByte((byte) (isFavorite ? 1 : 0));
parcel.writeStringList(subreddits);
parcel.writeList(subreddits);
}
}

View File

@ -9,6 +9,7 @@ import org.json.JSONObject;
import java.util.ArrayList;
import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.utils.JSONUtils;
public class ParseMultiReddit {
@ -47,10 +48,8 @@ public class ParseMultiReddit {
boolean isFavorited = singleMultiRedditJSON.getBoolean(JSONUtils.IS_FAVORITED_KEY);
JSONArray subredditsArray = singleMultiRedditJSON.getJSONArray(JSONUtils.SUBREDDITS_KEY);
ArrayList<String> subreddits = new ArrayList<>();
for (int j = 0; j < subredditsArray.length(); j++) {
subreddits.add(subredditsArray.getJSONObject(j).getString(JSONUtils.NAME_KEY));
}
ArrayList<SubredditWithSelection> subreddits = new ArrayList<>();
return new MultiReddit(path, displayName, name, description, copiedFrom,
iconUrl, visibility, owner, nSubscribers, createdUTC, over18, isSubscriber,

View File

@ -17,6 +17,7 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.regex.Pattern;
import eu.toldi.infinityforlemmy.RetrofitHolder;
import eu.toldi.infinityforlemmy.SortType;
@ -180,9 +181,9 @@ public class PostPagingSource extends ListenableFuturePagingSource<Integer, Post
case TYPE_ANONYMOUS_FRONT_PAGE:
// Return a dummy result
return Futures.immediateFuture(new LoadResult.Page<>(new ArrayList<>(), null, null));
/* case TYPE_MULTI_REDDIT:
return loadMultiRedditPosts(loadParams, api);
default:
case TYPE_MULTI_REDDIT:
return loadMultipleSubredditPosts(loadParams, api, List.of(multiRedditPath.split(Pattern.quote("+"))));
/* default:
return loadAnonymousHomePosts(loadParams, api);*/
}
}
@ -294,6 +295,42 @@ public class PostPagingSource extends ListenableFuturePagingSource<Integer, Post
return Futures.catching(partialLoadResultFuture,
IOException.class, LoadResult.Error::new, executor);
}
private ListenableFuture<LoadResult<Integer, Post>> loadMultipleSubredditPosts(@NonNull LoadParams<Integer> loadParams, LemmyAPI api, List<String> communities) {
List<ListenableFuture<LoadResult<Integer, Post>>> futures = new ArrayList<>();
for (String community : communities) {
ListenableFuture<Response<String>> subredditPost;
subredditPost = api.getPosts(null, sortType.getType().value, loadParams.getKey(), 25, null, community, false, accessToken);
ListenableFuture<LoadResult<Integer, Post>> communityFuture = Futures.transform(subredditPost,
this::transformData, executor);
ListenableFuture<LoadResult<Integer, Post>> partialLoadResultFuture =
Futures.catching(communityFuture, HttpException.class,
LoadResult.Error::new, executor);
futures.add(Futures.catching(partialLoadResultFuture,
IOException.class, LoadResult.Error::new, executor));
}
return Futures.transform(Futures.successfulAsList(futures),
results -> {
List<Post> combinedPosts = new ArrayList<>();
for (LoadResult<Integer, Post> result : results) {
if (result instanceof LoadResult.Page) {
combinedPosts.addAll(((LoadResult.Page<Integer, Post>) result).getData());
} else if (result instanceof LoadResult.Error) {
// Handle or propagate the error if needed
return result;
}
}
return new LoadResult.Page<>(combinedPosts, null, null);
}, executor);
}
/*
private ListenableFuture<LoadResult<String, Post>> loadMultiRedditPosts(@NonNull LoadParams<String> loadParams, LemmyAPI api) {
ListenableFuture<Response<String>> multiRedditPosts;

View File

@ -9,21 +9,26 @@ import java.util.ArrayList;
import java.util.List;
import eu.toldi.infinityforlemmy.subscribedsubreddit.SubscribedSubredditData;
import eu.toldi.infinityforlemmy.utils.LemmyUtils;
public class SubredditWithSelection implements Parcelable {
private String name;
private String iconUrl;
private final String name;
private final String iconUrl;
private final String qualifiedName;
private boolean selected;
public SubredditWithSelection(String name, String iconUrl) {
public SubredditWithSelection(String name, String iconUrl, String qualifiedName) {
this.name = name;
this.iconUrl = iconUrl;
this.qualifiedName = qualifiedName;
selected = false;
}
protected SubredditWithSelection(Parcel in) {
name = in.readString();
iconUrl = in.readString();
qualifiedName = in.readString();
selected = in.readByte() != 0;
}
@ -51,6 +56,10 @@ public class SubredditWithSelection implements Parcelable {
return selected;
}
public String getQualifiedName() {
return qualifiedName;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
@ -59,14 +68,14 @@ public class SubredditWithSelection implements Parcelable {
List<SubscribedSubredditData> subscribedSubredditData) {
ArrayList<SubredditWithSelection> subredditWithSelections = new ArrayList<>();
for (SubscribedSubredditData s : subscribedSubredditData) {
subredditWithSelections.add(new SubredditWithSelection(s.getName(), s.getIconUrl()));
subredditWithSelections.add(new SubredditWithSelection(s.getName(), s.getIconUrl(), s.getQualified_name()));
}
return subredditWithSelections;
}
public static SubredditWithSelection convertSubreddit(SubredditData subreddit) {
return new SubredditWithSelection(subreddit.getName(), subreddit.getIconUrl());
return new SubredditWithSelection(subreddit.getName(), subreddit.getIconUrl(), LemmyUtils.actorID2FullName(subreddit.getActorId()));
}
public int compareName(SubredditWithSelection subredditWithSelection) {
@ -95,6 +104,7 @@ public class SubredditWithSelection implements Parcelable {
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(name);
parcel.writeString(iconUrl);
parcel.writeString(qualifiedName);
parcel.writeByte((byte) (selected ? 1 : 0));
}
}