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.Infinity;
import eu.toldi.infinityforlemmy.R; import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.RedditDataRoomDatabase; import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.RetrofitHolder;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper; import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.customviews.slidr.Slidr; import eu.toldi.infinityforlemmy.customviews.slidr.Slidr;
import eu.toldi.infinityforlemmy.multireddit.CreateMultiReddit; 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.SharedPreferencesUtils;
import eu.toldi.infinityforlemmy.utils.Utils; import eu.toldi.infinityforlemmy.utils.Utils;
import retrofit2.Retrofit;
public class CreateMultiRedditActivity extends BaseActivity { 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) @BindView(R.id.select_subreddit_text_view_create_multi_reddit_activity)
TextView selectSubredditTextView; TextView selectSubredditTextView;
@Inject @Inject
@Named("oauth") @Named("no_oauth")
Retrofit mOauthRetrofit; RetrofitHolder mRetrofit;
@Inject @Inject
RedditDataRoomDatabase mRedditDataRoomDatabase; RedditDataRoomDatabase mRedditDataRoomDatabase;
@Inject @Inject
@ -87,7 +87,7 @@ public class CreateMultiRedditActivity extends BaseActivity {
Executor mExecutor; Executor mExecutor;
private String mAccessToken; private String mAccessToken;
private String mAccountName; private String mAccountName;
private ArrayList<String> mSubreddits; private ArrayList<SubredditWithSelection> mSubreddits;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -116,8 +116,8 @@ public class CreateMultiRedditActivity extends BaseActivity {
mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null); mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null);
mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_NAME, "-"); mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_NAME, "-");
if (mAccessToken == null) {
visibilityLinearLayout.setVisibility(View.GONE); visibilityLinearLayout.setVisibility(View.GONE);
if (mAccessToken == null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
nameEditText.setImeOptions(nameEditText.getImeOptions() | EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING); nameEditText.setImeOptions(nameEditText.getImeOptions() | EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING);
descriptionEditText.setImeOptions(descriptionEditText.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) { if (savedInstanceState != null) {
mSubreddits = savedInstanceState.getStringArrayList(SELECTED_SUBREDDITS_STATE); mSubreddits = savedInstanceState.getParcelableArrayList(SELECTED_SUBREDDITS_STATE);
} else { } else {
mSubreddits = new ArrayList<>(); mSubreddits = new ArrayList<>();
} }
@ -135,7 +135,7 @@ public class CreateMultiRedditActivity extends BaseActivity {
private void bindView() { private void bindView() {
selectSubredditTextView.setOnClickListener(view -> { selectSubredditTextView.setOnClickListener(view -> {
Intent intent = new Intent(CreateMultiRedditActivity.this, SelectedSubredditsAndUsersActivity.class); 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); startActivityForResult(intent, SUBREDDIT_SELECTION_REQUEST_CODE);
}); });
} }
@ -159,29 +159,8 @@ public class CreateMultiRedditActivity extends BaseActivity {
return true; 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, CreateMultiReddit.anonymousCreateMultiReddit(mExecutor, new Handler(), mRedditDataRoomDatabase,
"/user/-/m/" + nameEditText.getText().toString(), "/user/" + mAccountName + "/m/" + nameEditText.getText().toString(),
nameEditText.getText().toString(), descriptionEditText.getText().toString(), nameEditText.getText().toString(), descriptionEditText.getText().toString(),
mSubreddits, new CreateMultiReddit.CreateMultiRedditListener() { mSubreddits, new CreateMultiReddit.CreateMultiRedditListener() {
@Override @Override
@ -195,7 +174,6 @@ public class CreateMultiRedditActivity extends BaseActivity {
} }
}); });
} }
}
return false; return false;
} }
@ -204,7 +182,7 @@ public class CreateMultiRedditActivity extends BaseActivity {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SUBREDDIT_SELECTION_REQUEST_CODE && resultCode == RESULT_OK) { if (requestCode == SUBREDDIT_SELECTION_REQUEST_CODE && resultCode == RESULT_OK) {
if (data != null) { if (data != null) {
mSubreddits = data.getStringArrayListExtra( mSubreddits = data.getParcelableArrayListExtra(
SubredditMultiselectionActivity.EXTRA_RETURN_SELECTED_SUBREDDITS); SubredditMultiselectionActivity.EXTRA_RETURN_SELECTED_SUBREDDITS);
} }
} }
@ -213,7 +191,7 @@ public class CreateMultiRedditActivity extends BaseActivity {
@Override @Override
protected void onSaveInstanceState(@NonNull Bundle outState) { protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
outState.putStringArrayList(SELECTED_SUBREDDITS_STATE, mSubreddits); outState.putParcelableArrayList(SELECTED_SUBREDDITS_STATE, mSubreddits);
} }
@Override @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.EditMultiReddit;
import eu.toldi.infinityforlemmy.multireddit.FetchMultiRedditInfo; import eu.toldi.infinityforlemmy.multireddit.FetchMultiRedditInfo;
import eu.toldi.infinityforlemmy.multireddit.MultiReddit; import eu.toldi.infinityforlemmy.multireddit.MultiReddit;
import eu.toldi.infinityforlemmy.multireddit.MultiRedditJSONModel;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils; import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import eu.toldi.infinityforlemmy.utils.Utils; import eu.toldi.infinityforlemmy.utils.Utils;
import retrofit2.Retrofit; import retrofit2.Retrofit;
@ -191,7 +190,7 @@ public class EditMultiRedditActivity extends BaseActivity {
selectSubredditTextView.setOnClickListener(view -> { selectSubredditTextView.setOnClickListener(view -> {
Intent intent = new Intent(EditMultiRedditActivity.this, SelectedSubredditsAndUsersActivity.class); Intent intent = new Intent(EditMultiRedditActivity.this, SelectedSubredditsAndUsersActivity.class);
if (multiReddit.getSubreddits() != null) { 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); startActivityForResult(intent, SUBREDDIT_SELECTION_REQUEST_CODE);
}); });
@ -234,7 +233,7 @@ public class EditMultiRedditActivity extends BaseActivity {
} }
}); });
} else { } 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(); visibilitySwitch.isChecked(), multiReddit.getSubreddits()).createJSONModel();
EditMultiReddit.editMultiReddit(mRetrofit, mAccessToken, multiReddit.getPath(), EditMultiReddit.editMultiReddit(mRetrofit, mAccessToken, multiReddit.getPath(),
jsonModel, new EditMultiReddit.EditMultiRedditListener() { jsonModel, new EditMultiReddit.EditMultiRedditListener() {
@ -247,7 +246,7 @@ public class EditMultiRedditActivity extends BaseActivity {
public void failed() { public void failed() {
Snackbar.make(coordinatorLayout, R.string.edit_multi_reddit_failed, Snackbar.LENGTH_SHORT).show(); Snackbar.make(coordinatorLayout, R.string.edit_multi_reddit_failed, Snackbar.LENGTH_SHORT).show();
} }
}); });*/
} }
return true; return true;
} }
@ -259,7 +258,7 @@ public class EditMultiRedditActivity extends BaseActivity {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SUBREDDIT_SELECTION_REQUEST_CODE && resultCode == RESULT_OK) { if (requestCode == SUBREDDIT_SELECTION_REQUEST_CODE && resultCode == RESULT_OK) {
if (data != null) { if (data != null) {
multiReddit.setSubreddits(data.getStringArrayListExtra( multiReddit.setSubreddits(data.getParcelableArrayListExtra(
SelectedSubredditsAndUsersActivity.EXTRA_RETURN_SELECTED_SUBREDDITS)); SelectedSubredditsAndUsersActivity.EXTRA_RETURN_SELECTED_SUBREDDITS));
} }
} }

View File

@ -117,7 +117,7 @@ public class MultiredditSelectionActivity extends BaseActivity implements Activi
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mAccessToken = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCESS_TOKEN, null); 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) { if (savedInstanceState == null) {
bindView(true); bindView(true);

View File

@ -52,8 +52,10 @@ import eu.toldi.infinityforlemmy.recentsearchquery.RecentSearchQuery;
import eu.toldi.infinityforlemmy.recentsearchquery.RecentSearchQueryViewModel; import eu.toldi.infinityforlemmy.recentsearchquery.RecentSearchQueryViewModel;
import eu.toldi.infinityforlemmy.subreddit.ParseSubredditData; import eu.toldi.infinityforlemmy.subreddit.ParseSubredditData;
import eu.toldi.infinityforlemmy.subreddit.SubredditData; import eu.toldi.infinityforlemmy.subreddit.SubredditData;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.subscribedsubreddit.SubscribedSubredditData; import eu.toldi.infinityforlemmy.subscribedsubreddit.SubscribedSubredditData;
import eu.toldi.infinityforlemmy.utils.APIUtils; import eu.toldi.infinityforlemmy.utils.APIUtils;
import eu.toldi.infinityforlemmy.utils.LemmyUtils;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils; import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import eu.toldi.infinityforlemmy.utils.Utils; import eu.toldi.infinityforlemmy.utils.Utils;
import retrofit2.Call; import retrofit2.Call;
@ -182,9 +184,9 @@ public class SearchActivity extends BaseActivity {
if (searchOnlySubreddits) { if (searchOnlySubreddits) {
Intent returnIntent = new Intent(); Intent returnIntent = new Intent();
if (getIntent().getBooleanExtra(EXTRA_IS_MULTI_SELECTION, false)) { if (getIntent().getBooleanExtra(EXTRA_IS_MULTI_SELECTION, false)) {
ArrayList<String> subredditNameList = new ArrayList<>(); ArrayList<SubredditWithSelection> subredditNameList = new ArrayList<>();
subredditNameList.add(subredditData.getName()); subredditNameList.add(new SubredditWithSelection(subredditData.getName(), subredditData.getIconUrl(), LemmyUtils.actorID2FullName(subredditData.getActorId())));
returnIntent.putStringArrayListExtra(RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES, subredditNameList); returnIntent.putParcelableArrayListExtra(RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES, subredditNameList);
} else { } else {
returnIntent.putExtra(EXTRA_RETURN_SUBREDDIT_NAME, new SubscribedSubredditData(subredditData)); returnIntent.putExtra(EXTRA_RETURN_SUBREDDIT_NAME, new SubscribedSubredditData(subredditData));
returnIntent.putExtra(EXTRA_RETURN_SUBREDDIT_ICON_URL, subredditData.getIconUrl()); 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 com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
@ -33,6 +32,7 @@ import eu.toldi.infinityforlemmy.bottomsheetfragments.SelectSubredditsOrUsersOpt
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper; import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.customviews.LinearLayoutManagerBugFixed; import eu.toldi.infinityforlemmy.customviews.LinearLayoutManagerBugFixed;
import eu.toldi.infinityforlemmy.customviews.slidr.Slidr; import eu.toldi.infinityforlemmy.customviews.slidr.Slidr;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils; import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
public class SelectedSubredditsAndUsersActivity extends BaseActivity implements ActivityToolbarInterface { public class SelectedSubredditsAndUsersActivity extends BaseActivity implements ActivityToolbarInterface {
@ -62,7 +62,7 @@ public class SelectedSubredditsAndUsersActivity extends BaseActivity implements
CustomThemeWrapper mCustomThemeWrapper; CustomThemeWrapper mCustomThemeWrapper;
private LinearLayoutManagerBugFixed linearLayoutManager; private LinearLayoutManagerBugFixed linearLayoutManager;
private SelectedSubredditsRecyclerViewAdapter adapter; private SelectedSubredditsRecyclerViewAdapter adapter;
private ArrayList<String> subreddits; private ArrayList<SubredditWithSelection> subreddits;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -86,12 +86,11 @@ public class SelectedSubredditsAndUsersActivity extends BaseActivity implements
setToolbarGoToTop(toolbar); setToolbarGoToTop(toolbar);
if (savedInstanceState != null) { if (savedInstanceState != null) {
subreddits = savedInstanceState.getStringArrayList(SELECTED_SUBREDDITS_STATE); subreddits = savedInstanceState.getParcelableArrayList(SELECTED_SUBREDDITS_STATE);
} else { } else {
subreddits = getIntent().getStringArrayListExtra(EXTRA_SELECTED_SUBREDDITS); subreddits = getIntent().getParcelableArrayListExtra(EXTRA_SELECTED_SUBREDDITS);
} }
Collections.sort(subreddits);
adapter = new SelectedSubredditsRecyclerViewAdapter(this, mCustomThemeWrapper, subreddits); adapter = new SelectedSubredditsRecyclerViewAdapter(this, mCustomThemeWrapper, subreddits);
linearLayoutManager = new LinearLayoutManagerBugFixed(this); linearLayoutManager = new LinearLayoutManagerBugFixed(this);
@ -158,7 +157,7 @@ public class SelectedSubredditsAndUsersActivity extends BaseActivity implements
if (subreddits == null) { if (subreddits == null) {
subreddits = new ArrayList<>(); subreddits = new ArrayList<>();
} }
subreddits = data.getStringArrayListExtra(SubredditMultiselectionActivity.EXTRA_RETURN_SELECTED_SUBREDDITS); subreddits = data.getParcelableArrayListExtra(SubredditMultiselectionActivity.EXTRA_RETURN_SELECTED_SUBREDDITS);
adapter.addSubreddits(subreddits); adapter.addSubreddits(subreddits);
} }
} else if (requestCode == USER_SELECTION_REQUEST_CODE) { } else if (requestCode == USER_SELECTION_REQUEST_CODE) {
@ -176,7 +175,7 @@ public class SelectedSubredditsAndUsersActivity extends BaseActivity implements
protected void onSaveInstanceState(@NonNull Bundle outState) { protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
if (adapter != null) { 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.Infinity;
import eu.toldi.infinityforlemmy.R; import eu.toldi.infinityforlemmy.R;
import eu.toldi.infinityforlemmy.RedditDataRoomDatabase; import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.RetrofitHolder;
import eu.toldi.infinityforlemmy.adapters.SubredditMultiselectionRecyclerViewAdapter; import eu.toldi.infinityforlemmy.adapters.SubredditMultiselectionRecyclerViewAdapter;
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper; import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
import eu.toldi.infinityforlemmy.customviews.LinearLayoutManagerBugFixed; import eu.toldi.infinityforlemmy.customviews.LinearLayoutManagerBugFixed;
import eu.toldi.infinityforlemmy.customviews.slidr.Slidr; import eu.toldi.infinityforlemmy.customviews.slidr.Slidr;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.subscribedsubreddit.SubscribedSubredditViewModel; import eu.toldi.infinityforlemmy.subscribedsubreddit.SubscribedSubredditViewModel;
import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils; import eu.toldi.infinityforlemmy.utils.SharedPreferencesUtils;
import retrofit2.Retrofit;
public class SubredditMultiselectionActivity extends BaseActivity implements ActivityToolbarInterface { 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) @BindView(R.id.error_text_view_subscribed_subreddits_multiselection_activity)
TextView mErrorTextView; TextView mErrorTextView;
@Inject @Inject
@Named("oauth") @Named("no_oauth")
Retrofit mOauthRetrofit; RetrofitHolder mRetrofit;
@Inject @Inject
RedditDataRoomDatabase mRedditDataRoomDatabase; RedditDataRoomDatabase mRedditDataRoomDatabase;
@Inject @Inject
@ -131,7 +132,7 @@ public class SubredditMultiselectionActivity extends BaseActivity implements Act
mSwipeRefreshLayout.setEnabled(false); mSwipeRefreshLayout.setEnabled(false);
mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_NAME, "-"); mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_QUALIFIED_NAME, "-");
bindView(); bindView();
} }
@ -177,7 +178,7 @@ public class SubredditMultiselectionActivity extends BaseActivity implements Act
} else if (itemId == R.id.action_save_subreddit_multiselection_activity) { } else if (itemId == R.id.action_save_subreddit_multiselection_activity) {
if (mAdapter != null) { if (mAdapter != null) {
Intent returnIntent = new Intent(); Intent returnIntent = new Intent();
returnIntent.putStringArrayListExtra(EXTRA_RETURN_SELECTED_SUBREDDITS, returnIntent.putExtra(EXTRA_RETURN_SELECTED_SUBREDDITS,
mAdapter.getAllSelectedSubreddits()); mAdapter.getAllSelectedSubreddits());
setResult(RESULT_OK, returnIntent); setResult(RESULT_OK, returnIntent);
} }
@ -198,12 +199,12 @@ public class SubredditMultiselectionActivity extends BaseActivity implements Act
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SUBREDDIT_SEARCH_REQUEST_CODE && resultCode == RESULT_OK && data != null && mAdapter != null) { if (requestCode == SUBREDDIT_SEARCH_REQUEST_CODE && resultCode == RESULT_OK && data != null && mAdapter != null) {
Intent returnIntent = new Intent(); Intent returnIntent = new Intent();
ArrayList<String> selectedSubreddits = mAdapter.getAllSelectedSubreddits(); ArrayList<SubredditWithSelection> selectedSubreddits = mAdapter.getAllSelectedSubreddits();
ArrayList<String> searchedSubreddits = data.getStringArrayListExtra(SearchActivity.RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES); ArrayList<SubredditWithSelection> searchedSubreddits = data.getParcelableArrayListExtra(SearchActivity.RETURN_EXTRA_SELECTED_SUBREDDIT_NAMES);
if (searchedSubreddits != null) { if (searchedSubreddits != null) {
selectedSubreddits.addAll(searchedSubreddits); selectedSubreddits.addAll(searchedSubreddits);
} }
returnIntent.putStringArrayListExtra(EXTRA_RETURN_SELECTED_SUBREDDITS, selectedSubreddits); returnIntent.putParcelableArrayListExtra(EXTRA_RETURN_SELECTED_SUBREDDITS, selectedSubreddits);
setResult(RESULT_OK, returnIntent); setResult(RESULT_OK, returnIntent);
finish(); finish();
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -12,6 +12,7 @@ import androidx.room.Ignore;
import java.util.ArrayList; import java.util.ArrayList;
import eu.toldi.infinityforlemmy.account.Account; import eu.toldi.infinityforlemmy.account.Account;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
@Entity(tableName = "multi_reddits", primaryKeys = {"path", "username"}, @Entity(tableName = "multi_reddits", primaryKeys = {"path", "username"},
foreignKeys = @ForeignKey(entity = Account.class, parentColumns = "username", foreignKeys = @ForeignKey(entity = Account.class, parentColumns = "username",
@ -48,7 +49,7 @@ public class MultiReddit implements Parcelable {
@ColumnInfo(name = "is_favorite") @ColumnInfo(name = "is_favorite")
private boolean isFavorite; private boolean isFavorite;
@Ignore @Ignore
private ArrayList<String> subreddits; private ArrayList<SubredditWithSelection> subreddits;
public MultiReddit(@NonNull String path, @NonNull String displayName, @NonNull String name, public MultiReddit(@NonNull String path, @NonNull String displayName, @NonNull String name,
String description, String copiedFrom, String iconUrl, String visibility, 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, public MultiReddit(@NonNull String path, @NonNull String displayName, @NonNull String name,
String description, String copiedFrom, String iconUrl, String visibility, String description, String copiedFrom, String iconUrl, String visibility,
@NonNull String owner, int nSubscribers, long createdUTC, boolean over18, @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.displayName = displayName;
this.name = name; this.name = name;
this.description = description; this.description = description;
@ -104,7 +105,7 @@ public class MultiReddit implements Parcelable {
isSubscriber = in.readByte() != 0; isSubscriber = in.readByte() != 0;
isFavorite = in.readByte() != 0; isFavorite = in.readByte() != 0;
subreddits = new ArrayList<>(); subreddits = new ArrayList<>();
in.readStringList(subreddits); in.readList(subreddits, SubredditWithSelection.class.getClassLoader());
} }
public static final Creator<MultiReddit> CREATOR = new Creator<>() { public static final Creator<MultiReddit> CREATOR = new Creator<>() {
@ -226,11 +227,11 @@ public class MultiReddit implements Parcelable {
isFavorite = favorite; isFavorite = favorite;
} }
public ArrayList<String> getSubreddits() { public ArrayList<SubredditWithSelection> getSubreddits() {
return subreddits; return subreddits;
} }
public void setSubreddits(ArrayList<String> subreddits) { public void setSubreddits(ArrayList<SubredditWithSelection> subreddits) {
this.subreddits = subreddits; this.subreddits = subreddits;
} }
@ -254,6 +255,6 @@ public class MultiReddit implements Parcelable {
parcel.writeByte((byte) (over18 ? 1 : 0)); parcel.writeByte((byte) (over18 ? 1 : 0));
parcel.writeByte((byte) (isSubscriber ? 1 : 0)); parcel.writeByte((byte) (isSubscriber ? 1 : 0));
parcel.writeByte((byte) (isFavorite ? 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 java.util.ArrayList;
import eu.toldi.infinityforlemmy.RedditDataRoomDatabase; import eu.toldi.infinityforlemmy.RedditDataRoomDatabase;
import eu.toldi.infinityforlemmy.subreddit.SubredditWithSelection;
import eu.toldi.infinityforlemmy.utils.JSONUtils; import eu.toldi.infinityforlemmy.utils.JSONUtils;
public class ParseMultiReddit { public class ParseMultiReddit {
@ -47,10 +48,8 @@ public class ParseMultiReddit {
boolean isFavorited = singleMultiRedditJSON.getBoolean(JSONUtils.IS_FAVORITED_KEY); boolean isFavorited = singleMultiRedditJSON.getBoolean(JSONUtils.IS_FAVORITED_KEY);
JSONArray subredditsArray = singleMultiRedditJSON.getJSONArray(JSONUtils.SUBREDDITS_KEY); JSONArray subredditsArray = singleMultiRedditJSON.getJSONArray(JSONUtils.SUBREDDITS_KEY);
ArrayList<String> subreddits = new ArrayList<>(); ArrayList<SubredditWithSelection> subreddits = new ArrayList<>();
for (int j = 0; j < subredditsArray.length(); j++) {
subreddits.add(subredditsArray.getJSONObject(j).getString(JSONUtils.NAME_KEY));
}
return new MultiReddit(path, displayName, name, description, copiedFrom, return new MultiReddit(path, displayName, name, description, copiedFrom,
iconUrl, visibility, owner, nSubscribers, createdUTC, over18, isSubscriber, iconUrl, visibility, owner, nSubscribers, createdUTC, over18, isSubscriber,

View File

@ -17,6 +17,7 @@ import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import java.util.regex.Pattern;
import eu.toldi.infinityforlemmy.RetrofitHolder; import eu.toldi.infinityforlemmy.RetrofitHolder;
import eu.toldi.infinityforlemmy.SortType; import eu.toldi.infinityforlemmy.SortType;
@ -180,9 +181,9 @@ public class PostPagingSource extends ListenableFuturePagingSource<Integer, Post
case TYPE_ANONYMOUS_FRONT_PAGE: case TYPE_ANONYMOUS_FRONT_PAGE:
// Return a dummy result // Return a dummy result
return Futures.immediateFuture(new LoadResult.Page<>(new ArrayList<>(), null, null)); return Futures.immediateFuture(new LoadResult.Page<>(new ArrayList<>(), null, null));
/* case TYPE_MULTI_REDDIT: case TYPE_MULTI_REDDIT:
return loadMultiRedditPosts(loadParams, api); return loadMultipleSubredditPosts(loadParams, api, List.of(multiRedditPath.split(Pattern.quote("+"))));
default: /* default:
return loadAnonymousHomePosts(loadParams, api);*/ return loadAnonymousHomePosts(loadParams, api);*/
} }
} }
@ -294,6 +295,42 @@ public class PostPagingSource extends ListenableFuturePagingSource<Integer, Post
return Futures.catching(partialLoadResultFuture, return Futures.catching(partialLoadResultFuture,
IOException.class, LoadResult.Error::new, executor); 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) { private ListenableFuture<LoadResult<String, Post>> loadMultiRedditPosts(@NonNull LoadParams<String> loadParams, LemmyAPI api) {
ListenableFuture<Response<String>> multiRedditPosts; ListenableFuture<Response<String>> multiRedditPosts;

View File

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