commit - 1cee6d59aa47aca6320733ee439ce796c06dcab6
commit + b033cd4afa42d64c5b01fd35f68e79572787db8b
blob - 668ab76d41eb69e23c2fd0177e567f97c137830e
blob + 780971e96c9f2cf09b9c9c427a783f9dd6108820
--- mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsNotificationsFragment.java
+++ mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsNotificationsFragment.java
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") && useUnifiedPush){
+ }else if(BuildConfig.BUILD_TYPE.equals("fdroidRelease") && !useUnifiedPush){
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(!hasAnyUnifiedPushDistrib) {
- 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());
- }
+ bannerText.setText(R.string.mo_settings_unifiedpush_warning_disabled);
+ bannerButton.setText(R.string.mo_settings_unifiedpush_enable);
+ bannerButton.setOnClickListener(v->onUnifiedPushClick());
+ }else if(useUnifiedPush && !hasAnyUnifiedPushDistrib) {
+ bannerAdapter.setVisible(true);
+ bannerIcon.setImageResource(R.drawable.ic_fluent_warning_24_filled);
+ bannerTitle.setVisibility(View.VISIBLE);
+ bannerTitle.setText(R.string.mo_settings_unifiedpush_warning);
+ 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 if(pauseTime>System.currentTimeMillis()){
bannerAdapter.setVisible(true);
bannerIcon.setImageResource(R.drawable.ic_fluent_alert_snooze_24_regular);
unifiedPushItem.toggle();
rebindItem(unifiedPushItem);
useUnifiedPush = false;
+ updateBanner();
}
private void showUnifiedPushRegisterDialog(List<String> distributors){
unifiedPushItem.toggle();
rebindItem(unifiedPushItem);
useUnifiedPush = true;
+ updateBanner();
}).setOnCancelListener(d->rebindItem(unifiedPushItem)).show();
}
blob - f3c4f4fa8e43ad26f0d39e96d28c7287d6243c54
blob + bc64a02cc066163b613db67508f0299762d18af2
--- mastodon/src/main/java/org/joinmastodon/android/model/PushSubscription.java
+++ mastodon/src/main/java/org/joinmastodon/android/model/PushSubscription.java
public class PushSubscription extends BaseModel implements Cloneable{
public int id;
public String endpoint;
+ public Boolean standard=false;
public Alerts alerts;
public String serverKey;
public Policy policy=Policy.ALL;
return "PushSubscription{"+
"id="+id+
", endpoint='"+endpoint+'\''+
+ ", standard="+standard+
", alerts="+alerts+
", serverKey='"+serverKey+'\''+
", policy="+policy+
blob - 7497763dd43a10d6680164830091425b5b46892c
blob + cdcc4633d069822323b3d34460d9b6afda8e3530
--- mastodon/src/main/java/org/joinmastodon/android/utils/UnifiedPushHelper.java
+++ mastodon/src/main/java/org/joinmastodon/android/utils/UnifiedPushHelper.java
import androidx.annotation.NonNull;
-import org.joinmastodon.android.api.requests.oauth.GetOauthToken;
import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager;
+import org.joinmastodon.android.model.PushSubscription;
import org.unifiedpush.android.connector.UnifiedPush;
public class UnifiedPushHelper {
public static void registerAllAccounts(@NonNull Context context) {
for (AccountSession accountSession : AccountSessionManager.getInstance().getLoggedInAccounts()){
+ String vapidKey = accountSession.app.vapidKey;
// Sometimes this is null when the account's server has died (don't ask me how I know this)
- if (accountSession.app.vapidKey == null) {
+ if (vapidKey == null) {
// TODO: throw this on a translatable string and tell the user to log out and back in
Toast.makeText(context, "Error on unified push subscription: no valid vapid key for account " + accountSession.getFullUsername(), Toast.LENGTH_LONG).show();
break;
}
+ PushSubscription sub = accountSession.pushSubscription;
+ if (sub == null || sub.standard) {
+ vapidKey = vapidKey.replaceAll("=","");
+ } else {
+ // If we know the server doesn't support the _standard_ VAPID,
+ // we register without vapid
+ vapidKey = null;
+ }
UnifiedPush.register(
context,
accountSession.getID(),
- null,
- accountSession.app.vapidKey.replaceAll("=","")
+ accountSession.self.fqn,
+ vapidKey
);
}
}