Fix reblog confirm (#1723)

* Fix reblog confirmation default value

* Fix triggering reblog before confirming it

* Fix accidents caused by reblog confirmation
This commit is contained in:
Ivan Kupalov 2020-04-06 19:28:43 +02:00 committed by Alibek Omarov
parent ca36dd0238
commit 5dd190404f
5 changed files with 14 additions and 15 deletions

View File

@ -632,10 +632,10 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
sensitiveMediaShow.setVisibility(View.GONE); sensitiveMediaShow.setVisibility(View.GONE);
} }
protected void setupButtons(final StatusActionListener listener, final String accountId, protected void setupButtons(final StatusActionListener listener,
final String accountId,
final String statusContent, final String statusContent,
StatusDisplayOptions statusDisplayOptions) { StatusDisplayOptions statusDisplayOptions) {
avatar.setOnClickListener(v -> listener.onViewAccount(accountId)); avatar.setOnClickListener(v -> listener.onViewAccount(accountId));
replyButton.setOnClickListener(v -> { replyButton.setOnClickListener(v -> {
int position = getAdapterPosition(); int position = getAdapterPosition();
@ -645,15 +645,18 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
}); });
if (reblogButton != null) { if (reblogButton != null) {
reblogButton.setEventListener((button, buttonState) -> { reblogButton.setEventListener((button, buttonState) -> {
// return true to play animaion
int position = getAdapterPosition(); int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) { if (position != RecyclerView.NO_POSITION) {
listener.onReblog(!buttonState, position); if (statusDisplayOptions.confirmReblogs()) {
} showConfirmReblogDialog(listener, statusContent, buttonState, position);
if (statusDisplayOptions.confirmReblogs()) { return false;
showConfirmReblogDialog(listener, statusContent, buttonState, position); } else {
return false; listener.onReblog(!buttonState, position);
return true;
}
} else { } else {
return true; return false;
} }
}); });
} }

View File

@ -67,7 +67,7 @@ class ConversationsFragment : SFragment(), StatusActionListener, Injectable, Res
showBotOverlay = preferences.getBoolean("showBotOverlay", true), showBotOverlay = preferences.getBoolean("showBotOverlay", true),
useBlurhash = preferences.getBoolean("useBlurhash", true), useBlurhash = preferences.getBoolean("useBlurhash", true),
cardViewMode = CardViewMode.NONE, cardViewMode = CardViewMode.NONE,
confirmReblogs = preferences.getBoolean("confirmReblogs", true) confirmReblogs = preferences.getBoolean("confirmReblogs", false)
) )

View File

@ -118,7 +118,7 @@ class ReportStatusesFragment : Fragment(), Injectable, AdapterHandler {
showBotOverlay = false, showBotOverlay = false,
useBlurhash = preferences.getBoolean("useBlurhash", true), useBlurhash = preferences.getBoolean("useBlurhash", true),
cardViewMode = CardViewMode.NONE, cardViewMode = CardViewMode.NONE,
confirmReblogs = preferences.getBoolean("confirmReblogs", true) confirmReblogs = preferences.getBoolean("confirmReblogs", false)
) )
adapter = StatusesAdapter(statusDisplayOptions, adapter = StatusesAdapter(statusDisplayOptions,

View File

@ -82,7 +82,7 @@ class SearchStatusesFragment : SearchFragment<Pair<Status, StatusViewData.Concre
showBotOverlay = preferences.getBoolean("showBotOverlay", true), showBotOverlay = preferences.getBoolean("showBotOverlay", true),
useBlurhash = preferences.getBoolean("useBlurhash", true), useBlurhash = preferences.getBoolean("useBlurhash", true),
cardViewMode = CardViewMode.NONE, cardViewMode = CardViewMode.NONE,
confirmReblogs = preferences.getBoolean("confirmReblogs", true) confirmReblogs = preferences.getBoolean("confirmReblogs", false)
) )
searchRecyclerView.addItemDecoration(DividerItemDecoration(searchRecyclerView.context, DividerItemDecoration.VERTICAL)) searchRecyclerView.addItemDecoration(DividerItemDecoration(searchRecyclerView.context, DividerItemDecoration.VERTICAL))

View File

@ -575,10 +575,6 @@ public class TimelineFragment extends SFragment implements
@Override @Override
public void onReblog(final boolean reblog, final int position) { public void onReblog(final boolean reblog, final int position) {
final Status status = statuses.get(position).asRight(); final Status status = statuses.get(position).asRight();
doReblog(reblog, position, status);
}
private void doReblog(boolean reblog, int position, Status status) {
timelineCases.reblog(status, reblog) timelineCases.reblog(status, reblog)
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.as(autoDisposable(from(this, Lifecycle.Event.ON_DESTROY))) .as(autoDisposable(from(this, Lifecycle.Event.ON_DESTROY)))