Merge pull request #416 from FineFindus/refactor/remote-interaction
refactor: deduplicate remote interactions
This commit is contained in:
@@ -200,18 +200,10 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
|
|||||||
|
|
||||||
private void onReplyClick(View v){
|
private void onReplyClick(View v){
|
||||||
if(item.status.preview) return;
|
if(item.status.preview) return;
|
||||||
if(item.status.isRemote){
|
applyInteraction(v, status -> {
|
||||||
UiUtils.lookupStatus(v.getContext(),
|
UiUtils.opacityIn(v);
|
||||||
item.status, item.accountID, null,
|
openComposeView(status, item.accountID);
|
||||||
status -> {
|
});
|
||||||
UiUtils.opacityIn(v);
|
|
||||||
openComposeView(status, item.accountID);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
UiUtils.opacityIn(v);
|
|
||||||
openComposeView(item.status, item.accountID);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean onReplyLongClick(View v) {
|
private boolean onReplyLongClick(View v) {
|
||||||
@@ -243,22 +235,13 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
|
|||||||
onBoostLongClick(v);
|
onBoostLongClick(v);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(item.status.isRemote){
|
applyInteraction(v, status -> {
|
||||||
UiUtils.lookupStatus(v.getContext(),
|
if(status == null)
|
||||||
item.status, item.accountID, null,
|
return;
|
||||||
status -> {
|
boost.setSelected(!status.reblogged);
|
||||||
if(status == null)
|
vibrateForAction(boost, !status.reblogged);
|
||||||
return;
|
AccountSessionManager.getInstance().getAccount(item.accountID).getStatusInteractionController().setReblogged(status, !status.reblogged, null, r->boostConsumer(v, r));
|
||||||
boost.setSelected(!status.reblogged);
|
});
|
||||||
vibrateForAction(boost, !status.reblogged);
|
|
||||||
AccountSessionManager.getInstance().getAccount(item.accountID).getStatusInteractionController().setReblogged(status, !status.reblogged, null, r->boostConsumer(v, r));
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
boost.setSelected(!item.status.reblogged);
|
|
||||||
vibrateForAction(boost, !item.status.reblogged);
|
|
||||||
AccountSessionManager.getInstance().getAccount(item.accountID).getStatusInteractionController().setReblogged(item.status, !item.status.reblogged, null, r->boostConsumer(v, r));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void boostConsumer(View v, Status r) {
|
private void boostConsumer(View v, Status r) {
|
||||||
@@ -275,22 +258,12 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
|
|||||||
|
|
||||||
Consumer<StatusPrivacy> doReblog = (visibility) -> {
|
Consumer<StatusPrivacy> doReblog = (visibility) -> {
|
||||||
UiUtils.opacityOut(v);
|
UiUtils.opacityOut(v);
|
||||||
if(item.status.isRemote){
|
applyInteraction(v,status -> {
|
||||||
UiUtils.lookupStatus(v.getContext(),
|
|
||||||
item.status, item.accountID, null,
|
|
||||||
status -> {
|
|
||||||
session.getStatusInteractionController()
|
|
||||||
.setReblogged(status, !status.reblogged, visibility, r->boostConsumer(v, r));
|
|
||||||
boost.setSelected(status.reblogged);
|
|
||||||
dialog.dismiss();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
session.getStatusInteractionController()
|
session.getStatusInteractionController()
|
||||||
.setReblogged(item.status, !item.status.reblogged, visibility, r->boostConsumer(v, r));
|
.setReblogged(status, !status.reblogged, visibility, r->boostConsumer(v, r));
|
||||||
boost.setSelected(item.status.reblogged);
|
boost.setSelected(status.reblogged);
|
||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
}
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
View separator = menu.findViewById(R.id.separator);
|
View separator = menu.findViewById(R.id.separator);
|
||||||
@@ -364,33 +337,18 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
|
|||||||
|
|
||||||
private void onFavoriteClick(View v){
|
private void onFavoriteClick(View v){
|
||||||
if(item.status.preview) return;
|
if(item.status.preview) return;
|
||||||
if(item.status.isRemote){
|
applyInteraction(v, status -> {
|
||||||
UiUtils.lookupStatus(v.getContext(),
|
if(status == null)
|
||||||
item.status, item.accountID, null,
|
return;
|
||||||
status -> {
|
favorite.setSelected(!status.favourited);
|
||||||
if(status == null)
|
vibrateForAction(favorite, !status.favourited);
|
||||||
return;
|
AccountSessionManager.getInstance().getAccount(item.accountID).getStatusInteractionController().setFavorited(status, !status.favourited, r->{
|
||||||
favorite.setSelected(!status.favourited);
|
if (status.favourited && !GlobalUserPreferences.reduceMotion && !GlobalUserPreferences.likeIcon) {
|
||||||
vibrateForAction(favorite, !status.favourited);
|
v.startAnimation(spin);
|
||||||
AccountSessionManager.getInstance().getAccount(item.accountID).getStatusInteractionController().setFavorited(status, !status.favourited, r->{
|
}
|
||||||
if (status.favourited && !GlobalUserPreferences.reduceMotion && !GlobalUserPreferences.likeIcon) {
|
UiUtils.opacityIn(v);
|
||||||
v.startAnimation(spin);
|
bindText(favorites, r.favouritesCount);
|
||||||
}
|
});
|
||||||
UiUtils.opacityIn(v);
|
|
||||||
bindText(favorites, r.favouritesCount);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
favorite.setSelected(!item.status.favourited);
|
|
||||||
vibrateForAction(favorite, !item.status.favourited);
|
|
||||||
AccountSessionManager.getInstance().getAccount(item.accountID).getStatusInteractionController().setFavorited(item.status, !item.status.favourited, r->{
|
|
||||||
if (item.status.favourited && !GlobalUserPreferences.reduceMotion && !GlobalUserPreferences.likeIcon) {
|
|
||||||
v.startAnimation(spin);
|
|
||||||
}
|
|
||||||
UiUtils.opacityIn(v);
|
|
||||||
bindText(favorites, r.favouritesCount);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -411,26 +369,16 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
|
|||||||
|
|
||||||
private void onBookmarkClick(View v){
|
private void onBookmarkClick(View v){
|
||||||
if(item.status.preview) return;
|
if(item.status.preview) return;
|
||||||
if(item.status.isRemote){
|
applyInteraction(v,
|
||||||
UiUtils.lookupStatus(v.getContext(),
|
status -> {
|
||||||
item.status, item.accountID, null,
|
if(status == null)
|
||||||
status -> {
|
return;
|
||||||
if(status == null)
|
bookmark.setSelected(!status.bookmarked);
|
||||||
return;
|
vibrateForAction(bookmark, !status.bookmarked);
|
||||||
bookmark.setSelected(!status.bookmarked);
|
AccountSessionManager.getInstance().getAccount(item.accountID).getStatusInteractionController().setBookmarked(status, !status.bookmarked, r->{
|
||||||
vibrateForAction(bookmark, !status.bookmarked);
|
UiUtils.opacityIn(v);
|
||||||
AccountSessionManager.getInstance().getAccount(item.accountID).getStatusInteractionController().setBookmarked(status, !status.bookmarked, r->{
|
});
|
||||||
UiUtils.opacityIn(v);
|
});
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
bookmark.setSelected(!item.status.bookmarked);
|
|
||||||
vibrateForAction(bookmark, !item.status.bookmarked);
|
|
||||||
AccountSessionManager.getInstance().getAccount(item.accountID).getStatusInteractionController().setBookmarked(item.status, !item.status.bookmarked, r->{
|
|
||||||
UiUtils.opacityIn(v);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean onBookmarkLongClick(View v) {
|
private boolean onBookmarkLongClick(View v) {
|
||||||
@@ -474,6 +422,17 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void applyInteraction(View v, Consumer<Status> interactionConsumer) {
|
||||||
|
if(!item.status.isRemote){
|
||||||
|
interactionConsumer.accept(item.status);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UiUtils.lookupStatus(v.getContext(),
|
||||||
|
item.status, item.accountID, null,
|
||||||
|
interactionConsumer
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
private static void vibrateForAction(View view, boolean isPositive) {
|
private static void vibrateForAction(View view, boolean isPositive) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
view.performHapticFeedback(isPositive ? HapticFeedbackConstants.CONFIRM : HapticFeedbackConstants.REJECT);
|
view.performHapticFeedback(isPositive ? HapticFeedbackConstants.CONFIRM : HapticFeedbackConstants.REJECT);
|
||||||
|
|||||||
Reference in New Issue
Block a user