diff options
Diffstat (limited to 'app/src/main/java/app/fedilab/android/activities')
3 files changed, 55 insertions, 1 deletions
diff --git a/app/src/main/java/app/fedilab/android/activities/ActionActivity.java b/app/src/main/java/app/fedilab/android/activities/ActionActivity.java index faa7a7ecb..aab8386c0 100644 --- a/app/src/main/java/app/fedilab/android/activities/ActionActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ActionActivity.java @@ -54,11 +54,12 @@ public class ActionActivity extends BaseBarActivity { binding.muted.setOnClickListener(v -> displayTimeline(Timeline.TimeLineEnum.MUTED_TIMELINE)); binding.blocked.setOnClickListener(v -> displayTimeline(Timeline.TimeLineEnum.BLOCKED_TIMELINE)); binding.domainBlock.setOnClickListener(v -> displayTimeline(Timeline.TimeLineEnum.BLOCKED_DOMAIN_TIMELINE)); + binding.mutedHome.setOnClickListener(v -> displayTimeline(Timeline.TimeLineEnum.MUTED_TIMELINE_HOME)); } private void displayTimeline(Timeline.TimeLineEnum type) { canGoBack = true; - if (type == Timeline.TimeLineEnum.MUTED_TIMELINE || type == Timeline.TimeLineEnum.BLOCKED_TIMELINE) { + if (type == Timeline.TimeLineEnum.MUTED_TIMELINE || type == Timeline.TimeLineEnum.BLOCKED_TIMELINE || type == Timeline.TimeLineEnum.MUTED_TIMELINE_HOME) { ThemeHelper.slideViewsToLeft(binding.buttonContainer, binding.fragmentContainer, () -> { fragmentMastodonAccount = new FragmentMastodonAccount(); @@ -114,6 +115,9 @@ public class ActionActivity extends BaseBarActivity { case BLOCKED_DOMAIN_TIMELINE: setTitle(R.string.blocked_domains); break; + case MUTED_TIMELINE_HOME: + setTitle(R.string.muted_menu_home); + break; } } diff --git a/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java b/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java index 0d4516522..0d6219316 100644 --- a/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java @@ -143,6 +143,22 @@ public class MastodonListActivity extends BaseBarActivity implements MastodonLis if (item.getItemId() == android.R.id.home) { onBackPressed(); return true; + } else if (item.getItemId() == R.id.action_user_mute_home) { + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MastodonListActivity.this, Helper.dialogStyle()); + dialogBuilder.setTitle(R.string.put_all_accounts_in_home_muted); + dialogBuilder.setPositiveButton(R.string.mute_them_all, (dialog, id) -> { + timelinesVM.getAccountsInList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, mastodonList.id, null, null, 0) + .observe(MastodonListActivity.this, accounts -> { + if (accounts != null && accounts.size() > 0) { + for (Account account : accounts) { + accountsVM.muteHome(MainActivity.currentAccount, account); + } + } + }); + dialog.dismiss(); + }); + dialogBuilder.setNegativeButton(R.string.cancel, (dialog, id) -> dialog.dismiss()); + dialogBuilder.show(); } else if (item.getItemId() == R.id.action_manage_users) { AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MastodonListActivity.this, Helper.dialogStyle()); PopupManageAccountsListBinding popupManageAccountsListBinding = PopupManageAccountsListBinding.inflate(getLayoutInflater()); diff --git a/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java b/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java index 79ac5c58d..97b13d769 100644 --- a/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java @@ -117,6 +117,7 @@ public class ProfileActivity extends BaseActivity { private String mention_str; private WellKnownNodeinfo.NodeInfo nodeInfo; private boolean checkRemotely; + private boolean homeMuted; private final BroadcastReceiver broadcast_data = new BroadcastReceiver() { @Override @@ -144,6 +145,7 @@ public class ProfileActivity extends BaseActivity { Bundle b = getIntent().getExtras(); binding.accountFollow.setEnabled(false); checkRemotely = false; + homeMuted = false; if (b != null) { account = (Account) b.getSerializable(Helper.ARG_ACCOUNT); account_id = b.getString(Helper.ARG_USER_ID, null); @@ -185,6 +187,8 @@ public class ProfileActivity extends BaseActivity { Toasty.error(ProfileActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show(); finish(); } + //Check if account is homeMuted + accountsVM.isMuted(currentAccount, account).observe(this, result -> homeMuted = result != null && result); LocalBroadcastManager.getInstance(ProfileActivity.this).registerReceiver(broadcast_data, new IntentFilter(Helper.BROADCAST_DATA)); } @@ -685,9 +689,11 @@ public class ProfileActivity extends BaseActivity { menu.findItem(R.id.action_endorse).setVisible(false); menu.findItem(R.id.action_direct_message).setVisible(false); menu.findItem(R.id.action_add_to_list).setVisible(false); + menu.findItem(R.id.action_mute_home).setVisible(false); } else { menu.findItem(R.id.action_block).setVisible(true); menu.findItem(R.id.action_mute).setVisible(true); + menu.findItem(R.id.action_mute_home).setVisible(true); menu.findItem(R.id.action_timed_mute).setVisible(true); menu.findItem(R.id.action_mention).setVisible(true); } @@ -696,6 +702,7 @@ public class ProfileActivity extends BaseActivity { if (!relationship.following) { menu.findItem(R.id.action_hide_boost).setVisible(false); menu.findItem(R.id.action_endorse).setVisible(false); + menu.findItem(R.id.action_mute_home).setVisible(false); } if (relationship.blocking) { menu.findItem(R.id.action_block).setTitle(R.string.action_unblock); @@ -713,6 +720,11 @@ public class ProfileActivity extends BaseActivity { } else { menu.findItem(R.id.action_hide_boost).setTitle(getString(R.string.show_boost, account.username)); } + if (homeMuted) { + menu.findItem(R.id.action_mute_home).setTitle(getString(R.string.unmute_home)); + } else { + menu.findItem(R.id.action_mute_home).setTitle(getString(R.string.mute_home)); + } } } return true; @@ -989,6 +1001,28 @@ public class ProfileActivity extends BaseActivity { }); builderInner.show(); } + } else if (itemId == R.id.action_mute_home) { + AlertDialog.Builder builderInner = new AlertDialog.Builder(ProfileActivity.this, Helper.dialogStyle()); + builderInner.setMessage(account.acct); + builderInner.setNeutralButton(R.string.cancel, (dialog, which) -> dialog.dismiss()); + if (homeMuted) { + builderInner.setTitle(R.string.unmute_home); + builderInner.setPositiveButton(R.string.action_unmute, (dialog, which) -> accountsVM.unmuteHome(currentAccount, account) + .observe(ProfileActivity.this, account -> { + homeMuted = false; + invalidateOptionsMenu(); + Toasty.info(ProfileActivity.this, getString(R.string.toast_unmute), Toasty.LENGTH_LONG).show(); + })); + } else { + builderInner.setTitle(R.string.mute_home); + builderInner.setPositiveButton(R.string.action_mute, (dialog, which) -> accountsVM.muteHome(currentAccount, account) + .observe(ProfileActivity.this, account -> { + homeMuted = true; + invalidateOptionsMenu(); + Toasty.info(ProfileActivity.this, getString(R.string.toast_mute), Toasty.LENGTH_LONG).show(); + })); + } + builderInner.show(); } else if (itemId == R.id.action_timed_mute) { MastodonHelper.scheduleBoost(ProfileActivity.this, MastodonHelper.ScheduleType.TIMED_MUTED, null, account, rs -> { this.relationship = rs; |