mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-10-26 06:32:03 +01:00
Big progress on multicomminities
Now most of the stuff is working!
This commit is contained in:
@@ -49,7 +49,7 @@ public class FetchPostFilterReadPostsAndConcatenatedSubredditNames {
|
|||||||
if (anonymousSubscribedSubreddits != null && !anonymousSubscribedSubreddits.isEmpty()) {
|
if (anonymousSubscribedSubreddits != null && !anonymousSubscribedSubreddits.isEmpty()) {
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
for (SubscribedSubredditData s : anonymousSubscribedSubreddits) {
|
for (SubscribedSubredditData s : anonymousSubscribedSubreddits) {
|
||||||
stringBuilder.append(s.getName()).append("+");
|
stringBuilder.append(s.getQualified_name()).append(",");
|
||||||
}
|
}
|
||||||
if (stringBuilder.length() > 0) {
|
if (stringBuilder.length() > 0) {
|
||||||
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
|
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import android.view.View;
|
|||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.Switch;
|
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@@ -25,6 +24,7 @@ import com.google.android.material.appbar.AppBarLayout;
|
|||||||
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
import com.google.android.material.appbar.CollapsingToolbarLayout;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -40,6 +40,7 @@ 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.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;
|
import retrofit2.Retrofit;
|
||||||
@@ -69,12 +70,6 @@ public class EditMultiRedditActivity extends BaseActivity {
|
|||||||
EditText descriptionEditText;
|
EditText descriptionEditText;
|
||||||
@BindView(R.id.divider_2_edit_multi_reddit_activity)
|
@BindView(R.id.divider_2_edit_multi_reddit_activity)
|
||||||
View divider2;
|
View divider2;
|
||||||
@BindView(R.id.visibility_wrapper_linear_layout_edit_multi_reddit_activity)
|
|
||||||
LinearLayout visibilityLinearLayout;
|
|
||||||
@BindView(R.id.visibility_text_view_edit_multi_reddit_activity)
|
|
||||||
TextView visibilityTextView;
|
|
||||||
@BindView(R.id.visibility_switch_edit_multi_reddit_activity)
|
|
||||||
Switch visibilitySwitch;
|
|
||||||
@BindView(R.id.select_subreddit_text_view_edit_multi_reddit_activity)
|
@BindView(R.id.select_subreddit_text_view_edit_multi_reddit_activity)
|
||||||
TextView selectSubredditTextView;
|
TextView selectSubredditTextView;
|
||||||
@Inject
|
@Inject
|
||||||
@@ -125,7 +120,6 @@ public class EditMultiRedditActivity extends BaseActivity {
|
|||||||
mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_QUALIFIED_NAME, "-");
|
mAccountName = mCurrentAccountSharedPreferences.getString(SharedPreferencesUtils.ACCOUNT_QUALIFIED_NAME, "-");
|
||||||
|
|
||||||
if (mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
visibilityLinearLayout.setVisibility(View.GONE);
|
|
||||||
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);
|
||||||
@@ -167,13 +161,21 @@ public class EditMultiRedditActivity extends BaseActivity {
|
|||||||
linearLayout.setVisibility(View.VISIBLE);
|
linearLayout.setVisibility(View.VISIBLE);
|
||||||
nameEditText.setText(multiReddit.getDisplayName());
|
nameEditText.setText(multiReddit.getDisplayName());
|
||||||
descriptionEditText.setText(multiReddit.getDescription());
|
descriptionEditText.setText(multiReddit.getDescription());
|
||||||
visibilitySwitch.setChecked(!multiReddit.getVisibility().equals("public"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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.putParcelableArrayListExtra(SelectedSubredditsAndUsersActivity.EXTRA_SELECTED_SUBREDDITS, multiReddit.getSubreddits());
|
if (multiReddit.getSubreddits().isEmpty()) {
|
||||||
|
String[] communities = multiReddit.getPath().split(",");
|
||||||
|
ArrayList<SubredditWithSelection> communitiesList = new ArrayList<>();
|
||||||
|
for (String community : communities) {
|
||||||
|
communitiesList.add(new SubredditWithSelection(community.substring(0, community.indexOf('@')), null, community));
|
||||||
|
}
|
||||||
|
intent.putParcelableArrayListExtra(SelectedSubredditsAndUsersActivity.EXTRA_SELECTED_SUBREDDITS, communitiesList);
|
||||||
|
} else {
|
||||||
|
intent.putParcelableArrayListExtra(SelectedSubredditsAndUsersActivity.EXTRA_SELECTED_SUBREDDITS, multiReddit.getSubreddits());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
startActivityForResult(intent, SUBREDDIT_SELECTION_REQUEST_CODE);
|
startActivityForResult(intent, SUBREDDIT_SELECTION_REQUEST_CODE);
|
||||||
});
|
});
|
||||||
@@ -203,8 +205,18 @@ public class EditMultiRedditActivity extends BaseActivity {
|
|||||||
multiReddit.setDisplayName(name);
|
multiReddit.setDisplayName(name);
|
||||||
multiReddit.setName(name);
|
multiReddit.setName(name);
|
||||||
multiReddit.setDescription(descriptionEditText.getText().toString());
|
multiReddit.setDescription(descriptionEditText.getText().toString());
|
||||||
|
StringBuilder pathStringBuilder = new StringBuilder();
|
||||||
|
String prefix = "";
|
||||||
|
for (SubredditWithSelection s : multiReddit.getSubreddits()) {
|
||||||
|
pathStringBuilder.append(prefix);
|
||||||
|
prefix = ",";
|
||||||
|
pathStringBuilder.append(s.getQualifiedName());
|
||||||
|
}
|
||||||
|
|
||||||
|
multiReddit.setPath(pathStringBuilder.toString());
|
||||||
|
|
||||||
EditMultiReddit.anonymousEditMultiReddit(mExecutor, new Handler(), mRedditDataRoomDatabase,
|
EditMultiReddit.anonymousEditMultiReddit(mExecutor, new Handler(), mRedditDataRoomDatabase,
|
||||||
multiReddit, new EditMultiReddit.EditMultiRedditListener() {
|
multiReddit, multipath, new EditMultiReddit.EditMultiRedditListener() {
|
||||||
@Override
|
@Override
|
||||||
public void success() {
|
public void success() {
|
||||||
finish();
|
finish();
|
||||||
@@ -263,7 +275,6 @@ public class EditMultiRedditActivity extends BaseActivity {
|
|||||||
divider2.setBackgroundColor(dividerColor);
|
divider2.setBackgroundColor(dividerColor);
|
||||||
descriptionEditText.setTextColor(primaryTextColor);
|
descriptionEditText.setTextColor(primaryTextColor);
|
||||||
descriptionEditText.setHintTextColor(secondaryTextColor);
|
descriptionEditText.setHintTextColor(secondaryTextColor);
|
||||||
visibilityTextView.setTextColor(primaryTextColor);
|
|
||||||
selectSubredditTextView.setTextColor(primaryTextColor);
|
selectSubredditTextView.setTextColor(primaryTextColor);
|
||||||
|
|
||||||
if (typeface != null) {
|
if (typeface != null) {
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ 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.adapters.SelectedSubredditsRecyclerViewAdapter;
|
import eu.toldi.infinityforlemmy.adapters.SelectedSubredditsRecyclerViewAdapter;
|
||||||
import eu.toldi.infinityforlemmy.bottomsheetfragments.SelectSubredditsOrUsersOptionsBottomSheetFragment;
|
|
||||||
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;
|
||||||
@@ -109,8 +108,7 @@ public class SelectedSubredditsAndUsersActivity extends BaseActivity implements
|
|||||||
});
|
});
|
||||||
|
|
||||||
fab.setOnClickListener(view -> {
|
fab.setOnClickListener(view -> {
|
||||||
SelectSubredditsOrUsersOptionsBottomSheetFragment selectSubredditsOrUsersOptionsBottomSheetFragment = new SelectSubredditsOrUsersOptionsBottomSheetFragment();
|
selectSubreddits();
|
||||||
selectSubredditsOrUsersOptionsBottomSheetFragment.show(getSupportFragmentManager(), selectSubredditsOrUsersOptionsBottomSheetFragment.getTag());
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,10 +62,8 @@ import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
|
|||||||
import eu.toldi.infinityforlemmy.customviews.NavigationWrapper;
|
import eu.toldi.infinityforlemmy.customviews.NavigationWrapper;
|
||||||
import eu.toldi.infinityforlemmy.customviews.slidr.Slidr;
|
import eu.toldi.infinityforlemmy.customviews.slidr.Slidr;
|
||||||
import eu.toldi.infinityforlemmy.events.GoBackToMainPageEvent;
|
import eu.toldi.infinityforlemmy.events.GoBackToMainPageEvent;
|
||||||
import eu.toldi.infinityforlemmy.events.RefreshMultiRedditsEvent;
|
|
||||||
import eu.toldi.infinityforlemmy.events.SwitchAccountEvent;
|
import eu.toldi.infinityforlemmy.events.SwitchAccountEvent;
|
||||||
import eu.toldi.infinityforlemmy.fragments.PostFragment;
|
import eu.toldi.infinityforlemmy.fragments.PostFragment;
|
||||||
import eu.toldi.infinityforlemmy.multireddit.DeleteMultiReddit;
|
|
||||||
import eu.toldi.infinityforlemmy.multireddit.MultiReddit;
|
import eu.toldi.infinityforlemmy.multireddit.MultiReddit;
|
||||||
import eu.toldi.infinityforlemmy.post.MarkPostAsRead;
|
import eu.toldi.infinityforlemmy.post.MarkPostAsRead;
|
||||||
import eu.toldi.infinityforlemmy.post.Post;
|
import eu.toldi.infinityforlemmy.post.Post;
|
||||||
@@ -764,6 +762,7 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT
|
|||||||
Intent editIntent = new Intent(this, EditMultiRedditActivity.class);
|
Intent editIntent = new Intent(this, EditMultiRedditActivity.class);
|
||||||
editIntent.putExtra(EditMultiRedditActivity.EXTRA_MULTI_PATH, multiPath);
|
editIntent.putExtra(EditMultiRedditActivity.EXTRA_MULTI_PATH, multiPath);
|
||||||
startActivity(editIntent);
|
startActivity(editIntent);
|
||||||
|
finish();
|
||||||
return true;
|
return true;
|
||||||
} else if (itemId == R.id.action_delete_view_multi_reddit_detail_activity) {
|
} else if (itemId == R.id.action_delete_view_multi_reddit_detail_activity) {
|
||||||
new MaterialAlertDialogBuilder(this, R.style.MaterialAlertDialogTheme)
|
new MaterialAlertDialogBuilder(this, R.style.MaterialAlertDialogTheme)
|
||||||
@@ -771,30 +770,13 @@ public class ViewMultiRedditDetailActivity extends BaseActivity implements SortT
|
|||||||
.setMessage(R.string.delete_multi_reddit_dialog_message)
|
.setMessage(R.string.delete_multi_reddit_dialog_message)
|
||||||
.setPositiveButton(R.string.delete, (dialogInterface, i)
|
.setPositiveButton(R.string.delete, (dialogInterface, i)
|
||||||
-> {
|
-> {
|
||||||
if (mAccessToken == null) {
|
|
||||||
DeleteMultiredditInDatabase.deleteMultiredditInDatabase(mExecutor, new Handler(), mRedditDataRoomDatabase, mAccountName, multiPath,
|
|
||||||
() -> {
|
|
||||||
Toast.makeText(this, R.string.delete_multi_reddit_success, Toast.LENGTH_SHORT).show();
|
|
||||||
finish();
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
DeleteMultiReddit.deleteMultiReddit(mExecutor, new Handler(), mOauthRetrofit, mRedditDataRoomDatabase,
|
|
||||||
mAccessToken, mAccountName, multiPath, new DeleteMultiReddit.DeleteMultiRedditListener() {
|
|
||||||
@Override
|
|
||||||
public void success() {
|
|
||||||
Toast.makeText(ViewMultiRedditDetailActivity.this,
|
|
||||||
R.string.delete_multi_reddit_success, Toast.LENGTH_SHORT).show();
|
|
||||||
EventBus.getDefault().post(new RefreshMultiRedditsEvent());
|
|
||||||
finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
DeleteMultiredditInDatabase.deleteMultiredditInDatabase(mExecutor, new Handler(), mRedditDataRoomDatabase, mAccountName, multiPath,
|
||||||
public void failed() {
|
() -> {
|
||||||
Toast.makeText(ViewMultiRedditDetailActivity.this,
|
Toast.makeText(this, R.string.delete_multi_reddit_success, Toast.LENGTH_SHORT).show();
|
||||||
R.string.delete_multi_reddit_failed, Toast.LENGTH_SHORT).show();
|
finish();
|
||||||
}
|
});
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
.show();
|
.show();
|
||||||
|
|||||||
@@ -43,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()).getName());
|
((SubredditViewHolder) holder).subredditNameTextView.setText(subreddits.get(holder.getBindingAdapterPosition()).getQualifiedName());
|
||||||
((SubredditViewHolder) holder).deleteButton.setOnClickListener(view -> {
|
((SubredditViewHolder) holder).deleteButton.setOnClickListener(view -> {
|
||||||
subreddits.remove(holder.getBindingAdapterPosition());
|
subreddits.remove(holder.getBindingAdapterPosition());
|
||||||
notifyItemRemoved(holder.getBindingAdapterPosition());
|
notifyItemRemoved(holder.getBindingAdapterPosition());
|
||||||
@@ -58,7 +58,11 @@ public class SelectedSubredditsRecyclerViewAdapter extends RecyclerView.Adapter<
|
|||||||
|
|
||||||
public void addSubreddits(ArrayList<SubredditWithSelection> newSubreddits) {
|
public void addSubreddits(ArrayList<SubredditWithSelection> newSubreddits) {
|
||||||
int oldSize = subreddits.size();
|
int oldSize = subreddits.size();
|
||||||
subreddits.addAll(newSubreddits);
|
for (SubredditWithSelection subreddit : newSubreddits) {
|
||||||
|
if (!subreddits.contains(subreddit)) {
|
||||||
|
subreddits.add(subreddit);
|
||||||
|
}
|
||||||
|
}
|
||||||
notifyItemRangeInserted(oldSize, newSubreddits.size());
|
notifyItemRangeInserted(oldSize, newSubreddits.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ public class SubredditMultiselectionRecyclerViewAdapter extends RecyclerView.Ada
|
|||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
if (holder instanceof SubscribedSubredditViewHolder) {
|
if (holder instanceof SubscribedSubredditViewHolder) {
|
||||||
((SubscribedSubredditViewHolder) holder).nameTextView.setText(subscribedSubreddits.get(position).getName());
|
((SubscribedSubredditViewHolder) holder).nameTextView.setText(subscribedSubreddits.get(position).getName());
|
||||||
|
((SubscribedSubredditViewHolder) holder).instanceTextView.setText(subscribedSubreddits.get(position).getQualifiedName().substring(subscribedSubreddits.get(position).getQualifiedName().indexOf("@")));
|
||||||
glide.load(subscribedSubreddits.get(position).getIconUrl())
|
glide.load(subscribedSubreddits.get(position).getIconUrl())
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.error(glide.load(R.drawable.subreddit_default_icon)
|
.error(glide.load(R.drawable.subreddit_default_icon)
|
||||||
@@ -107,6 +108,9 @@ public class SubredditMultiselectionRecyclerViewAdapter extends RecyclerView.Ada
|
|||||||
GifImageView iconImageView;
|
GifImageView iconImageView;
|
||||||
@BindView(R.id.name_text_view_item_subscribed_subreddit_multiselection)
|
@BindView(R.id.name_text_view_item_subscribed_subreddit_multiselection)
|
||||||
TextView nameTextView;
|
TextView nameTextView;
|
||||||
|
|
||||||
|
@BindView(R.id.instance_text_view_item_subscribed_subreddit_multiselection)
|
||||||
|
TextView instanceTextView;
|
||||||
@BindView(R.id.checkbox_item_subscribed_subreddit_multiselection)
|
@BindView(R.id.checkbox_item_subscribed_subreddit_multiselection)
|
||||||
CheckBox checkBox;
|
CheckBox checkBox;
|
||||||
|
|
||||||
@@ -115,10 +119,12 @@ public class SubredditMultiselectionRecyclerViewAdapter extends RecyclerView.Ada
|
|||||||
this.itemView = itemView;
|
this.itemView = itemView;
|
||||||
ButterKnife.bind(this, itemView);
|
ButterKnife.bind(this, itemView);
|
||||||
nameTextView.setTextColor(primaryTextColor);
|
nameTextView.setTextColor(primaryTextColor);
|
||||||
|
instanceTextView.setTextColor(primaryTextColor);
|
||||||
checkBox.setButtonTintList(ColorStateList.valueOf(colorAccent));
|
checkBox.setButtonTintList(ColorStateList.valueOf(colorAccent));
|
||||||
|
|
||||||
if (activity.typeface != null) {
|
if (activity.typeface != null) {
|
||||||
nameTextView.setTypeface(activity.typeface);
|
nameTextView.setTypeface(activity.typeface);
|
||||||
|
instanceTextView.setTypeface(activity.typeface);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -438,7 +438,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
|
|
||||||
postType = getArguments().getInt(EXTRA_POST_TYPE);
|
postType = getArguments().getInt(EXTRA_POST_TYPE);
|
||||||
|
|
||||||
mSwipeRefreshLayout.setEnabled(mSharedPreferences.getBoolean(SharedPreferencesUtils.PULL_TO_REFRESH, true) && postType != PostPagingSource.TYPE_ANONYMOUS_FRONT_PAGE);
|
mSwipeRefreshLayout.setEnabled(mSharedPreferences.getBoolean(SharedPreferencesUtils.PULL_TO_REFRESH, true));
|
||||||
mSwipeRefreshLayout.setOnRefreshListener(this::refresh);
|
mSwipeRefreshLayout.setOnRefreshListener(this::refresh);
|
||||||
|
|
||||||
accessToken = getArguments().getString(EXTRA_ACCESS_TOKEN);
|
accessToken = getArguments().getString(EXTRA_ACCESS_TOKEN);
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import android.os.Handler;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -73,12 +72,12 @@ public class CreateMultiReddit {
|
|||||||
}
|
}
|
||||||
redditDataRoomDatabase.multiRedditDao().insert(new MultiReddit(multipath, name, name, description,
|
redditDataRoomDatabase.multiRedditDao().insert(new MultiReddit(multipath, name, name, description,
|
||||||
null, null, "private", accountName, 0, System.currentTimeMillis(), true, false, false));
|
null, null, "private", accountName, 0, System.currentTimeMillis(), true, false, false));
|
||||||
List<AnonymousMultiredditSubreddit> anonymousMultiredditSubreddits = new ArrayList<>();
|
/*List<AnonymousMultiredditSubreddit> anonymousMultiredditSubreddits = new ArrayList<>();
|
||||||
for (SubredditWithSelection s : subreddits) {
|
for (SubredditWithSelection s : subreddits) {
|
||||||
anonymousMultiredditSubreddits.add(new AnonymousMultiredditSubreddit(multipath, s.getQualifiedName()));
|
anonymousMultiredditSubreddits.add(new AnonymousMultiredditSubreddit(multipath, s.getQualifiedName()));
|
||||||
}
|
}
|
||||||
redditDataRoomDatabase.anonymousMultiredditSubredditDao().insertAll(anonymousMultiredditSubreddits);
|
redditDataRoomDatabase.anonymousMultiredditSubredditDao().insertAll(anonymousMultiredditSubreddits);
|
||||||
|
*/
|
||||||
handler.post(createMultiRedditListener::success);
|
handler.post(createMultiRedditListener::success);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,16 +49,14 @@ public class EditMultiReddit {
|
|||||||
|
|
||||||
public static void anonymousEditMultiReddit(Executor executor, Handler handler,
|
public static void anonymousEditMultiReddit(Executor executor, Handler handler,
|
||||||
RedditDataRoomDatabase redditDataRoomDatabase,
|
RedditDataRoomDatabase redditDataRoomDatabase,
|
||||||
MultiReddit multiReddit,
|
MultiReddit multiReddit, String oldPath,
|
||||||
EditMultiRedditListener editMultiRedditListener) {
|
EditMultiRedditListener editMultiRedditListener) {
|
||||||
executor.execute(() -> {
|
executor.execute(() -> {
|
||||||
ArrayList<AnonymousMultiredditSubreddit> anonymousMultiredditSubreddits = new ArrayList<>();
|
ArrayList<AnonymousMultiredditSubreddit> anonymousMultiredditSubreddits = new ArrayList<>();
|
||||||
ArrayList<SubredditWithSelection> subreddits = multiReddit.getSubreddits();
|
ArrayList<SubredditWithSelection> subreddits = multiReddit.getSubreddits();
|
||||||
|
redditDataRoomDatabase.multiRedditDao().anonymousDeleteMultiReddit(oldPath);
|
||||||
redditDataRoomDatabase.multiRedditDao().insert(multiReddit);
|
redditDataRoomDatabase.multiRedditDao().insert(multiReddit);
|
||||||
for (SubredditWithSelection s : subreddits) {
|
|
||||||
anonymousMultiredditSubreddits.add(new AnonymousMultiredditSubreddit(multiReddit.getPath(), s.getQualifiedName()));
|
|
||||||
}
|
|
||||||
redditDataRoomDatabase.anonymousMultiredditSubredditDao().insertAll(anonymousMultiredditSubreddits);
|
|
||||||
handler.post(editMultiRedditListener::success);
|
handler.post(editMultiRedditListener::success);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import androidx.paging.PagingDataTransforms;
|
|||||||
import androidx.paging.PagingLiveData;
|
import androidx.paging.PagingLiveData;
|
||||||
import androidx.paging.PagingSource;
|
import androidx.paging.PagingSource;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@@ -249,8 +250,9 @@ public class PostViewModel extends ViewModel {
|
|||||||
break;
|
break;
|
||||||
case PostPagingSource.TYPE_MULTI_REDDIT:
|
case PostPagingSource.TYPE_MULTI_REDDIT:
|
||||||
case PostPagingSource.TYPE_ANONYMOUS_FRONT_PAGE:
|
case PostPagingSource.TYPE_ANONYMOUS_FRONT_PAGE:
|
||||||
paging3PagingSource = new MulticommunityPagingSource(retrofit.getRetrofit().create(LemmyAPI.class), List.of(name.split(Pattern.quote(","))), accessToken,
|
String[] communities = (name != null) ? name.split(Pattern.quote(",")) : new String[0];
|
||||||
sortType, executor, postFilter, readPostList, postEnricher);
|
paging3PagingSource = new MulticommunityPagingSource(retrofit.getRetrofit().create(LemmyAPI.class), List.of(communities), accessToken,
|
||||||
|
sortType, executor, postFilter, (readPostList != null) ? readPostList : new ArrayList<>(), postEnricher);
|
||||||
break;
|
break;
|
||||||
case PostPagingSource.TYPE_SEARCH:
|
case PostPagingSource.TYPE_SEARCH:
|
||||||
paging3PagingSource = new PostPagingSource(executor, retrofit, accessToken, accountName,
|
paging3PagingSource = new PostPagingSource(executor, retrofit, accessToken, accountName,
|
||||||
@@ -387,12 +389,12 @@ public class PostViewModel extends ViewModel {
|
|||||||
this.executor = executor;
|
this.executor = executor;
|
||||||
this.retrofit = retrofit;
|
this.retrofit = retrofit;
|
||||||
this.sharedPreferences = sharedPreferences;
|
this.sharedPreferences = sharedPreferences;
|
||||||
// TODO is this used? because it is getting overwritten with opt
|
|
||||||
this.name = concatenatedSubredditNames;
|
this.name = concatenatedSubredditNames;
|
||||||
this.postType = postType;
|
this.postType = postType;
|
||||||
this.sortType = sortType;
|
this.sortType = sortType;
|
||||||
this.postFilter = postFilter;
|
this.postFilter = postFilter;
|
||||||
this.name = opt;
|
|
||||||
this.postEnricher = postEnricher;
|
this.postEnricher = postEnricher;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import java.util.concurrent.Executor
|
|||||||
class MulticommunityPagingSource(
|
class MulticommunityPagingSource(
|
||||||
private val api: LemmyAPI,
|
private val api: LemmyAPI,
|
||||||
private val communities: List<String>,
|
private val communities: List<String>,
|
||||||
private val accessToken: String,
|
private val accessToken: String?,
|
||||||
private val sortType: SortType,
|
private val sortType: SortType,
|
||||||
private val executor: Executor,
|
private val executor: Executor,
|
||||||
private val postFilter: PostFilter,
|
private val postFilter: PostFilter,
|
||||||
@@ -41,12 +41,14 @@ class MulticommunityPagingSource(
|
|||||||
val wasCached = mutableMapOf<String, Boolean>()
|
val wasCached = mutableMapOf<String, Boolean>()
|
||||||
// Loop through each community and fetch posts
|
// Loop through each community and fetch posts
|
||||||
for ((community, pageNumber) in currentPageMap) {
|
for ((community, pageNumber) in currentPageMap) {
|
||||||
|
if (community == "all") continue // Skip all
|
||||||
if (undisplayedPosts.containsKey(community) && undisplayedPosts[community]!!.size > 10) {
|
if (undisplayedPosts.containsKey(community) && undisplayedPosts[community]!!.size > 10) {
|
||||||
val posts: List<Post> = undisplayedPosts[community] ?: listOf()
|
val posts: List<Post> = undisplayedPosts[community] ?: listOf()
|
||||||
combinedPosts.addAll(posts)
|
combinedPosts.addAll(posts)
|
||||||
undisplayedPosts[community]!!.clear() // Clear used posts
|
undisplayedPosts[community]!!.clear() // Clear used posts
|
||||||
wasCached[community] = true
|
wasCached[community] = true
|
||||||
|
// Add a dummy future to the list
|
||||||
|
futuresList.add(Futures.immediateFuture(LoadResult.Page(posts, null, null)))
|
||||||
} else {
|
} else {
|
||||||
val future = fetchPostsFromCommunity(api, pageNumber, community)
|
val future = fetchPostsFromCommunity(api, pageNumber, community)
|
||||||
futuresList.add(future)
|
futuresList.add(future)
|
||||||
@@ -71,6 +73,7 @@ class MulticommunityPagingSource(
|
|||||||
// Handle other cases like LoadResult.Error
|
// Handle other cases like LoadResult.Error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
val sorted = when (sortType.type) {
|
val sorted = when (sortType.type) {
|
||||||
SortType.Type.NEW -> {
|
SortType.Type.NEW -> {
|
||||||
sortByNewest(combinedPosts)
|
sortByNewest(combinedPosts)
|
||||||
@@ -97,10 +100,18 @@ class MulticommunityPagingSource(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (currentPageMap.containsKey("all")) {
|
||||||
|
nextPageMap["all"] = filteredPosts.size + currentPageMap["all"]!!
|
||||||
|
} else {
|
||||||
|
nextPageMap["all"] = filteredPosts.size
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LoadResult.Page(
|
LoadResult.Page(
|
||||||
data = filteredPosts,
|
data = filteredPosts,
|
||||||
prevKey = null, // Define prevKey logic if needed
|
prevKey = null, // Define prevKey logic if needed
|
||||||
nextKey = nextPageMap
|
nextKey = if (filteredPosts.isNotEmpty()) nextPageMap else null
|
||||||
)
|
)
|
||||||
}, executor)
|
}, executor)
|
||||||
val partialLoadResultFuture =
|
val partialLoadResultFuture =
|
||||||
|
|||||||
@@ -85,33 +85,6 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp" />
|
android:layout_height="1dp" />
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/visibility_wrapper_linear_layout_edit_multi_reddit_activity"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:background="?attr/selectableItemBackground"
|
|
||||||
android:clickable="true"
|
|
||||||
android:focusable="true"
|
|
||||||
android:padding="16dp"
|
|
||||||
tools:visibility="gone">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/visibility_text_view_edit_multi_reddit_activity"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:text="@string/private_multi_reddit"
|
|
||||||
android:textColor="?attr/primaryTextColor"
|
|
||||||
android:textSize="?attr/font_default" />
|
|
||||||
|
|
||||||
<Switch
|
|
||||||
android:id="@+id/visibility_switch_edit_multi_reddit_activity"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:checked="true" />
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/select_subreddit_text_view_edit_multi_reddit_activity"
|
android:id="@+id/select_subreddit_text_view_edit_multi_reddit_activity"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|||||||
@@ -18,15 +18,36 @@
|
|||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:layout_marginEnd="32dp" />
|
android:layout_marginEnd="32dp" />
|
||||||
|
|
||||||
<TextView
|
<LinearLayout
|
||||||
android:id="@+id/name_text_view_item_subscribed_subreddit_multiselection"
|
android:layout_width="match_parent"
|
||||||
android:layout_width="0dp"
|
android:layout_height="match_parent"
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:layout_gravity="center_vertical"
|
android:orientation="horizontal">
|
||||||
android:layout_marginEnd="32dp"
|
|
||||||
android:textSize="?attr/font_default"
|
<TextView
|
||||||
android:fontFamily="?attr/font_family" />
|
android:id="@+id/name_text_view_item_subscribed_subreddit_multiselection"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:layout_marginEnd="0dp"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="start"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:fontFamily="?attr/font_family"
|
||||||
|
android:textSize="?attr/font_default" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/instance_text_view_item_subscribed_subreddit_multiselection"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:layout_marginEnd="32dp"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:gravity="start"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:fontFamily="?attr/font_family"
|
||||||
|
android:textSize="?attr/font_default" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<CheckBox
|
<CheckBox
|
||||||
android:id="@+id/checkbox_item_subscribed_subreddit_multiselection"
|
android:id="@+id/checkbox_item_subscribed_subreddit_multiselection"
|
||||||
|
|||||||
Reference in New Issue
Block a user