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.
This commit is contained in:
FineFindus
2024-05-19 13:36:45 +02:00
parent 44e3e5faaf
commit c7820ddac8
2 changed files with 23 additions and 4 deletions

View File

@@ -1,7 +1,5 @@
package org.joinmastodon.android.fragments.settings; package org.joinmastodon.android.fragments.settings;
import static org.unifiedpush.android.connector.UnifiedPush.getDistributor;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.NotificationManager; import android.app.NotificationManager;
import android.content.Intent; import android.content.Intent;
@@ -15,6 +13,7 @@ import android.widget.ImageView;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import org.joinmastodon.android.BuildConfig;
import org.joinmastodon.android.GlobalUserPreferences; import org.joinmastodon.android.GlobalUserPreferences;
import org.joinmastodon.android.R; import org.joinmastodon.android.R;
import org.joinmastodon.android.api.PushSubscriptionManager; import org.joinmastodon.android.api.PushSubscriptionManager;
@@ -48,6 +47,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
private HideableSingleViewRecyclerAdapter bannerAdapter; private HideableSingleViewRecyclerAdapter bannerAdapter;
private ImageView bannerIcon; private ImageView bannerIcon;
private TextView bannerText; private TextView bannerText;
private TextView bannerTitle;
private Button bannerButton; private Button bannerButton;
private CheckableListItem<Void> mentionsItem, boostsItem, favoritesItem, followersItem, pollsItem; private CheckableListItem<Void> mentionsItem, boostsItem, favoritesItem, followersItem, pollsItem;
@@ -72,7 +72,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
lp=AccountSessionManager.get(accountID).getLocalPreferences(); lp=AccountSessionManager.get(accountID).getLocalPreferences();
getPushSubscription(); getPushSubscription();
useUnifiedPush=!getDistributor(getContext()).isEmpty(); useUnifiedPush=!UnifiedPush.getDistributor(getContext()).isEmpty();
onDataLoaded(List.of( 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)), 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<Void>{
@Override @Override
protected RecyclerView.Adapter<?> getAdapter(){ protected RecyclerView.Adapter<?> getAdapter(){
View banner=getActivity().getLayoutInflater().inflate(R.layout.item_settings_banner, list, false); View banner=getActivity().getLayoutInflater().inflate(R.layout.item_settings_banner, list, false);
bannerTitle=banner.findViewById(R.id.title);
bannerText=banner.findViewById(R.id.text); bannerText=banner.findViewById(R.id.text);
bannerIcon=banner.findViewById(R.id.icon); bannerIcon=banner.findViewById(R.id.icon);
bannerButton=banner.findViewById(R.id.button); bannerButton=banner.findViewById(R.id.button);
@@ -315,6 +316,20 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
bannerText.setText(R.string.notifications_disabled_in_system); bannerText.setText(R.string.notifications_disabled_in_system);
bannerButton.setText(R.string.open_system_notification_settings); bannerButton.setText(R.string.open_system_notification_settings);
bannerButton.setOnClickListener(v->openSystemNotificationSettings()); 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()){ }else if(pauseTime>System.currentTimeMillis()){
bannerAdapter.setVisible(true); bannerAdapter.setVisible(true);
bannerIcon.setImageResource(R.drawable.ic_fluent_alert_snooze_24_regular); bannerIcon.setImageResource(R.drawable.ic_fluent_alert_snooze_24_regular);
@@ -327,7 +342,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
} }
private void onUnifiedPushClick(){ private void onUnifiedPushClick(){
if(getDistributor(getContext()).isEmpty()){ if(UnifiedPush.getDistributor(getContext()).isEmpty()){
List<String> distributors = UnifiedPush.getDistributors(getContext(), new ArrayList<>()); List<String> distributors = UnifiedPush.getDistributors(getContext(), new ArrayList<>());
showUnifiedPushRegisterDialog(distributors); showUnifiedPushRegisterDialog(distributors);
return; return;

View File

@@ -113,6 +113,10 @@
<string name="mo_recent_emoji_cleared">Recent emoji cleared</string> <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_show_media_preview">Show media preview in timelines</string>
<string name="mo_notification_filter_reset">Reset to default</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--> <!-- Temporary Strings. They exist in strings_sk.xml, but are not available on Megalodon's weblate-->
<string name="mo_muted_accounts">Muted accounts</string> <string name="mo_muted_accounts">Muted accounts</string>