mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-02-07 07:04:44 +01:00
Some changes to enable multicomm (not working yet)
This commit is contained in:
parent
29547f4750
commit
ea7a4b03ab
@ -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
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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());
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
|
@ -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;
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user