From c7820ddac8cecd029d429d58b9b29c752ab48c88 Mon Sep 17 00:00:00 2001 From: FineFindus 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 f7acc5496..60804eccc 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.ImageView; 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{ private HideableSingleViewRecyclerAdapter bannerAdapter; private ImageView bannerIcon; private TextView bannerText; + private TextView bannerTitle; private Button bannerButton; private CheckableListItem mentionsItem, boostsItem, favoritesItem, followersItem, pollsItem; @@ -72,7 +72,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment{ 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 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment{ @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 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment{ 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 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment{ } private void onUnifiedPushClick(){ - if(getDistributor(getContext()).isEmpty()){ + if(UnifiedPush.getDistributor(getContext()).isEmpty()){ List 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 78dce7e6f..581d8ab22 100644 --- a/mastodon/src/main/res/values/strings_mo.xml +++ b/mastodon/src/main/res/values/strings_mo.xml @@ -113,6 +113,10 @@ Recent emoji cleared Show media preview in timelines Reset to default + UnifiedPush not enabled + No UnifiedPush Distributors installed. You will not receive any notifications. + UnifiedPush is not enabled. You will not receive any notifications. + Enable Muted accounts