From c7820ddac8cecd029d429d58b9b29c752ab48c88 Mon Sep 17 00:00:00 2001 From: FineFindus <FineFindus@proton.me> Date: Sun, 19 May 2024 13:36:45 +0200 Subject: [PATCH] feat: warn if UP is disabled on FDroid variant Displays a warning in the notifications settings fragment, if UnifiedPush is disabled (or cannot be enabled). The warning will be only displayed on the FDroid build variant, since other versions use FCM by default. --- .../SettingsNotificationsFragment.java | 23 +++++++++++++++---- mastodon/src/main/res/values/strings_mo.xml | 4 ++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsNotificationsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsNotificationsFragment.java index f7acc54963..60804ecccc 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsNotificationsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsNotificationsFragment.java @@ -1,7 +1,5 @@ package org.joinmastodon.android.fragments.settings; -import static org.unifiedpush.android.connector.UnifiedPush.getDistributor; - import android.app.AlertDialog; import android.app.NotificationManager; import android.content.Intent; @@ -15,6 +13,7 @@ import android.widget.RelativeLayout; import android.widget.TextView; +import org.joinmastodon.android.BuildConfig; import org.joinmastodon.android.GlobalUserPreferences; import org.joinmastodon.android.R; import org.joinmastodon.android.api.PushSubscriptionManager; @@ -48,6 +47,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{ private HideableSingleViewRecyclerAdapter bannerAdapter; private ImageView bannerIcon; private TextView bannerText; + private TextView bannerTitle; private Button bannerButton; private CheckableListItem<Void> mentionsItem, boostsItem, favoritesItem, followersItem, pollsItem; @@ -72,7 +72,7 @@ public void onCreate(Bundle savedInstanceState){ lp=AccountSessionManager.get(accountID).getLocalPreferences(); getPushSubscription(); - useUnifiedPush=!getDistributor(getContext()).isEmpty(); + useUnifiedPush=!UnifiedPush.getDistributor(getContext()).isEmpty(); onDataLoaded(List.of( pauseItem=new CheckableListItem<>(getString(R.string.pause_all_notifications), getPauseItemSubtitle(), CheckableListItem.Style.SWITCH, false, R.drawable.ic_fluent_alert_snooze_24_regular, i->onPauseNotificationsClick(false)), @@ -158,6 +158,7 @@ protected void onShown(){ @Override protected RecyclerView.Adapter<?> getAdapter(){ View banner=getActivity().getLayoutInflater().inflate(R.layout.item_settings_banner, list, false); + bannerTitle=banner.findViewById(R.id.title); bannerText=banner.findViewById(R.id.text); bannerIcon=banner.findViewById(R.id.icon); bannerButton=banner.findViewById(R.id.button); @@ -315,6 +316,20 @@ private void updateBanner(){ bannerText.setText(R.string.notifications_disabled_in_system); bannerButton.setText(R.string.open_system_notification_settings); bannerButton.setOnClickListener(v->openSystemNotificationSettings()); + }else if(BuildConfig.BUILD_TYPE.equals("fdroidRelease") && UnifiedPush.getDistributor(getContext()).isEmpty()){ + bannerAdapter.setVisible(true); + bannerIcon.setImageResource(R.drawable.ic_fluent_warning_24_filled); + bannerTitle.setVisibility(View.VISIBLE); + bannerTitle.setText(R.string.mo_settings_unifiedpush_warning); + if(UnifiedPush.getDistributors(getContext(), new ArrayList<>()).isEmpty()) { + bannerText.setText(R.string.mo_settings_unifiedpush_warning_no_distributors); + bannerButton.setText(R.string.info); + bannerButton.setOnClickListener(v->UiUtils.launchWebBrowser(getContext(), "https://unifiedpush.org/")); + } else { + bannerText.setText(R.string.mo_settings_unifiedpush_warning_disabled); + bannerButton.setText(R.string.mo_settings_unifiedpush_enable); + bannerButton.setOnClickListener(v->onUnifiedPushClick()); + } }else if(pauseTime>System.currentTimeMillis()){ bannerAdapter.setVisible(true); bannerIcon.setImageResource(R.drawable.ic_fluent_alert_snooze_24_regular); @@ -327,7 +342,7 @@ private void updateBanner(){ } private void onUnifiedPushClick(){ - if(getDistributor(getContext()).isEmpty()){ + if(UnifiedPush.getDistributor(getContext()).isEmpty()){ List<String> distributors = UnifiedPush.getDistributors(getContext(), new ArrayList<>()); showUnifiedPushRegisterDialog(distributors); return; diff --git a/mastodon/src/main/res/values/strings_mo.xml b/mastodon/src/main/res/values/strings_mo.xml index 78dce7e6fa..581d8ab22a 100644 --- a/mastodon/src/main/res/values/strings_mo.xml +++ b/mastodon/src/main/res/values/strings_mo.xml @@ -113,6 +113,10 @@ <string name="mo_recent_emoji_cleared">Recent emoji cleared</string> <string name="mo_show_media_preview">Show media preview in timelines</string> <string name="mo_notification_filter_reset">Reset to default</string> + <string name="mo_settings_unifiedpush_warning">UnifiedPush not enabled</string> + <string name="mo_settings_unifiedpush_warning_no_distributors">No UnifiedPush Distributors installed. You will not receive any notifications.</string> + <string name="mo_settings_unifiedpush_warning_disabled">UnifiedPush is not enabled. You will not receive any notifications.</string> + <string name="mo_settings_unifiedpush_enable">Enable</string> <!-- Temporary Strings. They exist in strings_sk.xml, but are not available on Megalodon's weblate--> <string name="mo_muted_accounts">Muted accounts</string>