Add confirmation for favourite and bookmark actions (#2245)
* Add confirmation for favourite and bookmark actions * Favourite confirmation american spelling and default values * Remove bookmarking confirmation * Update app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com> Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>
This commit is contained in:
parent
651b35267f
commit
c37ccbb6e8
14 changed files with 51 additions and 5 deletions
|
|
@ -651,11 +651,19 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
|
|||
}
|
||||
|
||||
favouriteButton.setEventListener((button, buttonState) -> {
|
||||
// return true to play animaion
|
||||
int position = getBindingAdapterPosition();
|
||||
if (position != RecyclerView.NO_POSITION) {
|
||||
listener.onFavourite(!buttonState, position);
|
||||
if (statusDisplayOptions.confirmFavourites()) {
|
||||
showConfirmFavouriteDialog(listener, statusContent, buttonState, position);
|
||||
return false;
|
||||
} else {
|
||||
listener.onFavourite(!buttonState, position);
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
bookmarkButton.setEventListener((button, buttonState) -> {
|
||||
|
|
@ -703,6 +711,23 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder {
|
|||
.show();
|
||||
}
|
||||
|
||||
private void showConfirmFavouriteDialog(StatusActionListener listener,
|
||||
String statusContent,
|
||||
boolean buttonState,
|
||||
int position) {
|
||||
int okButtonTextId = buttonState ? R.string.action_unfavourite : R.string.action_favourite;
|
||||
new AlertDialog.Builder(favouriteButton.getContext())
|
||||
.setMessage(statusContent)
|
||||
.setPositiveButton(okButtonTextId, (__, ___) -> {
|
||||
listener.onFavourite(!buttonState, position);
|
||||
if (!buttonState) {
|
||||
// Play animation only when it's favourite, not unfavourite
|
||||
favouriteButton.playAnimation();
|
||||
}
|
||||
})
|
||||
.show();
|
||||
}
|
||||
|
||||
public void setupWithStatus(StatusViewData.Concrete status, final StatusActionListener listener,
|
||||
StatusDisplayOptions statusDisplayOptions) {
|
||||
this.setupWithStatus(status, listener, statusDisplayOptions, null);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue