Muting/unmuting accounts
This commit is contained in:
parent
9e82b64423
commit
02ccaf4610
3 changed files with 71 additions and 8 deletions
|
@ -49,15 +49,15 @@ import java.util.List;
|
|||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
|
||||
public class AccountActivity extends BaseActivity {
|
||||
private static final String TAG = "AccountActivity"; // Volley request tag and logging tag
|
||||
|
||||
private String domain;
|
||||
private String accessToken;
|
||||
private String accountId;
|
||||
private boolean following = false;
|
||||
private boolean blocking = false;
|
||||
private boolean muting = false;
|
||||
private boolean isSelf;
|
||||
private String openInWebUrl;
|
||||
private TabLayout tabLayout;
|
||||
|
@ -72,8 +72,6 @@ public class AccountActivity extends BaseActivity {
|
|||
|
||||
SharedPreferences preferences = getSharedPreferences(
|
||||
getString(R.string.preferences_file_key), Context.MODE_PRIVATE);
|
||||
domain = preferences.getString("domain", null);
|
||||
accessToken = preferences.getString("accessToken", null);
|
||||
String loggedInAccountId = preferences.getString("loggedInAccountId", null);
|
||||
|
||||
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
|
@ -244,7 +242,7 @@ public class AccountActivity extends BaseActivity {
|
|||
@Override
|
||||
public void onResponse(Call<List<Relationship>> call, retrofit2.Response<List<Relationship>> response) {
|
||||
Relationship relationship = response.body().get(0);
|
||||
onObtainRelationshipsSuccess(relationship.following, relationship.blocking);
|
||||
onObtainRelationshipsSuccess(relationship.following, relationship.blocking, relationship.muting);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -254,11 +252,12 @@ public class AccountActivity extends BaseActivity {
|
|||
});
|
||||
}
|
||||
|
||||
private void onObtainRelationshipsSuccess(boolean following, boolean blocking) {
|
||||
private void onObtainRelationshipsSuccess(boolean following, boolean blocking, boolean muting) {
|
||||
this.following = following;
|
||||
this.blocking = blocking;
|
||||
this.muting = muting;
|
||||
|
||||
if (!following || !blocking) {
|
||||
if (!following || !blocking || !muting) {
|
||||
invalidateOptionsMenu();
|
||||
}
|
||||
|
||||
|
@ -310,10 +309,18 @@ public class AccountActivity extends BaseActivity {
|
|||
title = getString(R.string.action_block);
|
||||
}
|
||||
block.setTitle(title);
|
||||
MenuItem mute = menu.findItem(R.id.action_mute);
|
||||
if (muting) {
|
||||
title = getString(R.string.action_unmute);
|
||||
} else {
|
||||
title = getString(R.string.action_mute);
|
||||
}
|
||||
mute.setTitle(title);
|
||||
} else {
|
||||
// It shouldn't be possible to block or follow yourself.
|
||||
menu.removeItem(R.id.action_follow);
|
||||
menu.removeItem(R.id.action_block);
|
||||
menu.removeItem(R.id.action_mute);
|
||||
}
|
||||
return super.onPrepareOptionsMenu(menu);
|
||||
}
|
||||
|
@ -396,6 +403,50 @@ public class AccountActivity extends BaseActivity {
|
|||
.show();
|
||||
}
|
||||
|
||||
|
||||
private void mute(final String id) {
|
||||
Callback<Relationship> cb = new Callback<Relationship>() {
|
||||
@Override
|
||||
public void onResponse(Call<Relationship> call, Response<Relationship> response) {
|
||||
muting = response.body().muting;
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<Relationship> call, Throwable t) {
|
||||
onMuteFailure(id);
|
||||
}
|
||||
};
|
||||
|
||||
if (muting) {
|
||||
mastodonAPI.unmuteAccount(id).enqueue(cb);
|
||||
} else {
|
||||
mastodonAPI.muteAccount(id).enqueue(cb);
|
||||
}
|
||||
}
|
||||
|
||||
private void onMuteFailure(final String id) {
|
||||
int messageId;
|
||||
|
||||
if (muting) {
|
||||
messageId = R.string.error_unmuting;
|
||||
} else {
|
||||
messageId = R.string.error_muting;
|
||||
}
|
||||
|
||||
View.OnClickListener listener = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
mute(id);
|
||||
}
|
||||
};
|
||||
|
||||
Snackbar.make(findViewById(R.id.activity_account), messageId, Snackbar.LENGTH_LONG)
|
||||
.setAction(R.string.action_retry, listener)
|
||||
.show();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
|
@ -417,6 +468,10 @@ public class AccountActivity extends BaseActivity {
|
|||
block(accountId);
|
||||
return true;
|
||||
}
|
||||
case R.id.action_mute: {
|
||||
mute(accountId);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
|
|
@ -10,6 +10,10 @@
|
|||
android:title="@string/action_follow"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item android:id="@+id/action_mute"
|
||||
android:title="@string/action_mute"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item android:id="@+id/action_block"
|
||||
android:title="@string/action_block"
|
||||
app:showAsAction="never" />
|
||||
|
|
|
@ -114,7 +114,7 @@
|
|||
<string name="action_view_preferences">Preferences</string>
|
||||
<string name="action_view_favourites">Favourites</string>
|
||||
<string name="action_view_blocks">Blocked Users</string>
|
||||
<string name="action_open_in_web">Open In Web</string>
|
||||
<string name="action_open_in_web">Open in browser</string>
|
||||
<string name="action_set_time">Set</string>
|
||||
|
||||
<string name="confirmation_send">Toot!</string>
|
||||
|
@ -158,5 +158,9 @@
|
|||
<string name="login_success">Welcome back!</string>
|
||||
<string name="action_share">Share</string>
|
||||
<string name="send_status_to">Share toot URL to...</string>
|
||||
<string name="action_mute">Mute</string>
|
||||
<string name="action_unmute">Unmute</string>
|
||||
<string name="error_unmuting">That user wasn\'t unmuted.</string>
|
||||
<string name="error_muting">That user wasn\'t muted.</string>
|
||||
|
||||
</resources>
|
||||
|
|
Loading…
Reference in a new issue