Skip to content
This repository was archived by the owner on Oct 28, 2024. It is now read-only.

Commit e75d350

Browse files
committed
implement soft-blocking
#297
1 parent e9cfe3d commit e75d350

File tree

5 files changed

+47
-0
lines changed

5 files changed

+47
-0
lines changed

mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java

+7
Original file line numberDiff line numberDiff line change
@@ -569,6 +569,7 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
569569
menu.findItem(R.id.block).setTitle(getString(relationship.blocking ? R.string.unblock_user : R.string.block_user, account.getShortUsername()));
570570
menu.findItem(R.id.report).setTitle(getString(R.string.report_user, account.getShortUsername()));
571571
menu.findItem(R.id.manage_user_lists).setVisible(relationship.following);
572+
menu.findItem(R.id.soft_block).setVisible(relationship.followedBy && !relationship.following);
572573
if(relationship.following) {
573574
MenuItem hideBoosts = menu.findItem(R.id.hide_boosts);
574575
hideBoosts.setTitle(getString(relationship.showingReblogs ? R.string.hide_boosts_from_user : R.string.show_boosts_from_user, account.getShortUsername()));
@@ -596,6 +597,8 @@ public boolean onOptionsItemSelected(MenuItem item){
596597
confirmToggleMuted();
597598
}else if(id==R.id.block){
598599
confirmToggleBlocked();
600+
}else if(id==R.id.soft_block){
601+
confirmSoftBlockUser();
599602
}else if(id==R.id.report){
600603
Bundle args=new Bundle();
601604
args.putString("account", accountID);
@@ -902,6 +905,10 @@ private void confirmToggleBlocked(){
902905
UiUtils.confirmToggleBlockUser(getActivity(), accountID, account, relationship.blocking, this::updateRelationship);
903906
}
904907

908+
private void confirmSoftBlockUser(){
909+
UiUtils.confirmSoftBlockUser(getActivity(), accountID, account, this::updateRelationship);
910+
}
911+
905912
private void updateRelationship(Relationship r){
906913
relationship=r;
907914
updateRelationship();

mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/BaseAccountListFragment.java

+3
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@ public boolean onLongClick(float x, float y){
294294
menu.findItem(R.id.block).setTitle(getString(relationship.blocking ? R.string.unblock_user : R.string.block_user, account.getShortUsername()));
295295
menu.findItem(R.id.report).setTitle(getString(R.string.report_user, account.getShortUsername()));
296296
menu.findItem(R.id.manage_user_lists).setTitle(getString(R.string.sk_lists_with_user, account.getShortUsername())).setVisible(relationship.following);
297+
menu.findItem(R.id.soft_block).setVisible(relationship.followedBy && !relationship.following);
297298
MenuItem hideBoosts=menu.findItem(R.id.hide_boosts);
298299
MenuItem manageUserLists=menu.findItem(R.id.manage_user_lists);
299300
if(relationship.following){
@@ -349,6 +350,8 @@ private boolean onContextMenuItemSelected(MenuItem item){
349350
UiUtils.confirmToggleMuteUser(getActivity(), accountID, account, relationship.muting, this::updateRelationship);
350351
}else if(id==R.id.block){
351352
UiUtils.confirmToggleBlockUser(getActivity(), accountID, account, relationship.blocking, this::updateRelationship);
353+
}else if(id==R.id.soft_block){
354+
UiUtils.confirmSoftBlockUser(getActivity(), accountID, account, this::updateRelationship);
352355
}else if(id==R.id.report){
353356
Bundle args=new Bundle();
354357
args.putString("account", accountID);

mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java

+32
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,38 @@ public void onError(ErrorResponse error){
388388
});
389389
}
390390

391+
public static void confirmSoftBlockUser(Activity activity, String accountID, Account account, Consumer<Relationship> resultCallback){
392+
showConfirmationAlert(activity,
393+
activity.getString(R.string.sk_remove_follower),
394+
activity.getString(R.string.sk_remove_follower_confirm, account.displayName),
395+
activity.getString(R.string.sk_do_remove_follower),
396+
R.drawable.ic_fluent_person_delete_24_regular,
397+
() -> new SetAccountBlocked(account.id, true).setCallback(new Callback<>() {
398+
@Override
399+
public void onSuccess(Relationship relationship) {
400+
new SetAccountBlocked(account.id, false).setCallback(new Callback<>() {
401+
@Override
402+
public void onSuccess(Relationship relationship) {
403+
Toast.makeText(activity, R.string.sk_remove_follower_success, Toast.LENGTH_SHORT).show();
404+
resultCallback.accept(relationship);
405+
}
406+
407+
@Override
408+
public void onError(ErrorResponse error) {
409+
error.showToast(activity);
410+
resultCallback.accept(relationship);
411+
}
412+
}).exec(accountID);
413+
}
414+
415+
@Override
416+
public void onError(ErrorResponse error) {
417+
error.showToast(activity);
418+
}
419+
}).exec(accountID)
420+
);
421+
}
422+
391423
public static void confirmToggleBlockDomain(Activity activity, String accountID, String domain, boolean currentlyBlocked, Runnable resultCallback){
392424
showConfirmationAlert(activity, activity.getString(currentlyBlocked ? R.string.confirm_unblock_domain_title : R.string.confirm_block_domain_title),
393425
activity.getString(currentlyBlocked ? R.string.confirm_unblock : R.string.confirm_block, domain),

mastodon/src/main/res/menu/profile.xml

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<item android:id="@+id/mute" android:title="@string/mute_user" android:icon="@drawable/ic_fluent_speaker_off_24_regular"/>
55
<item android:id="@+id/block" android:title="@string/block_user" android:icon="@drawable/ic_fluent_person_prohibited_24_regular"/>
66
<item android:id="@+id/report" android:title="@string/report_user" android:icon="@drawable/ic_fluent_warning_24_regular"/>
7+
<item android:id="@+id/soft_block" android:title="@string/sk_remove_follower" android:icon="@drawable/ic_fluent_person_delete_24_regular"/>
78
<item android:id="@+id/block_domain" android:title="@string/block_domain" android:icon="@drawable/ic_fluent_shield_prohibited_24_regular"/>
89
<item android:id="@+id/hide_boosts" android:title="@string/hide_boosts_from_user" android:icon="@drawable/ic_fluent_arrow_repeat_all_off_24_regular"/>
910
<item android:id="@+id/manage_user_lists" android:title="@string/sk_lists_with_user" android:icon="@drawable/ic_fluent_people_list_24_regular"/>

mastodon/src/main/res/values/strings_sk.xml

+4
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,8 @@
144144
<string name="sk_timeline_local">Local</string>
145145
<string name="sk_timeline_federated">Federation</string>
146146
<string name="sk_recent_searches_placeholder">Type something to start searching</string>
147+
<string name="sk_remove_follower">Remove as follower</string>
148+
<string name="sk_remove_follower_confirm">Remove %s as a follower by blocking and immediately unblocking them?</string>
149+
<string name="sk_do_remove_follower">Remove</string>
150+
<string name="sk_remove_follower_success">Successfully removed follower</string>
147151
</resources>

0 commit comments

Comments
 (0)