Skip to content

Commit

Permalink
feat: warn if UP is disabled on FDroid variant
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
FineFindus committed May 19, 2024
1 parent 44e3e5f commit c7820dd
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand All @@ -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)),
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand All @@ -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;
Expand Down
4 changes: 4 additions & 0 deletions mastodon/src/main/res/values/strings_mo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down

0 comments on commit c7820dd

Please sign in to comment.