From 4f435c695707fdb4bd3058bdb6d5bfeb663f78ad Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 26 Jan 2023 15:47:30 +0100 Subject: [PATCH 1/2] set disabled state if policy is none re: mastodon#520 --- .../android/fragments/SettingsFragment.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java index cc642d9a5..c3ee39781 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java @@ -107,10 +107,11 @@ public class SettingsFragment extends MastodonToolbarFragment{ items.add(new HeaderItem(R.string.settings_notifications)); items.add(notificationPolicyItem=new NotificationPolicyItem()); PushSubscription pushSubscription=getPushSubscription(); - items.add(new SwitchItem(R.string.notify_favorites, R.drawable.ic_fluent_star_24_regular, pushSubscription.alerts.favourite, i->onNotificationsChanged(PushNotification.Type.FAVORITE, i.checked))); - items.add(new SwitchItem(R.string.notify_follow, R.drawable.ic_fluent_person_add_24_regular, pushSubscription.alerts.follow, i->onNotificationsChanged(PushNotification.Type.FOLLOW, i.checked))); - items.add(new SwitchItem(R.string.notify_reblog, R.drawable.ic_fluent_arrow_repeat_all_24_regular, pushSubscription.alerts.reblog, i->onNotificationsChanged(PushNotification.Type.REBLOG, i.checked))); - items.add(new SwitchItem(R.string.notify_mention, R.drawable.ic_at_symbol, pushSubscription.alerts.mention, i->onNotificationsChanged(PushNotification.Type.MENTION, i.checked))); + boolean switchEnabled=pushSubscription.policy!=PushSubscription.Policy.NONE; + items.add(new SwitchItem(R.string.notify_favorites, R.drawable.ic_fluent_star_24_regular, pushSubscription.alerts.favourite, i->onNotificationsChanged(PushNotification.Type.FAVORITE, i.checked), switchEnabled)); + items.add(new SwitchItem(R.string.notify_follow, R.drawable.ic_fluent_person_add_24_regular, pushSubscription.alerts.follow, i->onNotificationsChanged(PushNotification.Type.FOLLOW, i.checked), switchEnabled)); + items.add(new SwitchItem(R.string.notify_reblog, R.drawable.ic_fluent_arrow_repeat_all_24_regular, pushSubscription.alerts.reblog, i->onNotificationsChanged(PushNotification.Type.REBLOG, i.checked), switchEnabled)); + items.add(new SwitchItem(R.string.notify_mention, R.drawable.ic_at_symbol, pushSubscription.alerts.mention, i->onNotificationsChanged(PushNotification.Type.MENTION, i.checked), switchEnabled)); items.add(new HeaderItem(R.string.settings_boring)); items.add(new TextItem(R.string.settings_account, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/auth/edit"))); @@ -366,7 +367,7 @@ public class SettingsFragment extends MastodonToolbarFragment{ this.onChanged=onChanged; } - public SwitchItem(@StringRes int text, int icon, boolean checked, Consumer onChanged, boolean enabled){ + public SwitchItem(@StringRes int text, @DrawableRes int icon, boolean checked, Consumer onChanged, boolean enabled){ this.text=getString(text); this.icon=icon; this.checked=checked; From a29a072e53e36cfeff88f0b98f40cb47241d6a3c Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 26 Jan 2023 15:48:10 +0100 Subject: [PATCH 2/2] unsubscribe from notifications when policy is none re: mastodon#520 --- .../joinmastodon/android/fragments/SettingsFragment.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java index c3ee39781..915109066 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java @@ -270,9 +270,13 @@ public class SettingsFragment extends MastodonToolbarFragment{ list.getAdapter().notifyItemChanged(index); } if((prevPolicy==PushSubscription.Policy.NONE)!=(policy==PushSubscription.Policy.NONE)){ + boolean newState=policy!=PushSubscription.Policy.NONE; + for(PushNotification.Type value : PushNotification.Type.values()){ + onNotificationsChanged(value, newState); + } index++; while(items.get(index) instanceof SwitchItem si){ - si.enabled=si.checked=policy!=PushSubscription.Policy.NONE; + si.enabled=si.checked=newState; RecyclerView.ViewHolder holder=list.findViewHolderForAdapterPosition(index); if(holder!=null) ((BindableViewHolder)holder).rebind();