diff --git a/mastodon/build.gradle b/mastodon/build.gradle index 89dd34207..ac1d53c62 100644 --- a/mastodon/build.gradle +++ b/mastodon/build.gradle @@ -164,7 +164,7 @@ dependencies { implementation 'com.github.bottom-software-foundation:bottom-java:2.1.0' annotationProcessor 'org.parceler:parceler:1.1.12' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3' - implementation 'com.github.UnifiedPush:android-connector:2.1.1' + implementation 'org.unifiedpush.android:connector:3.0.2' androidTestImplementation 'androidx.test:core:1.5.0' androidTestImplementation 'androidx.test.ext:junit:1.1.5' diff --git a/mastodon/src/main/java/org/joinmastodon/android/UnifiedPushNotificationReceiver.java b/mastodon/src/main/java/org/joinmastodon/android/UnifiedPushNotificationReceiver.java index 4760fd111..dd648d7ea 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/UnifiedPushNotificationReceiver.java +++ b/mastodon/src/main/java/org/joinmastodon/android/UnifiedPushNotificationReceiver.java @@ -9,10 +9,14 @@ import org.joinmastodon.android.api.session.AccountSession; import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.model.Notification; import org.joinmastodon.android.model.PaginatedResponse; +import org.unifiedpush.android.connector.FailedReason; import org.unifiedpush.android.connector.MessagingReceiver; +import org.unifiedpush.android.connector.data.PushEndpoint; +import org.unifiedpush.android.connector.data.PushMessage; import java.util.List; +import kotlin.text.Charsets; import me.grishka.appkit.api.Callback; import me.grishka.appkit.api.ErrorResponse; @@ -24,16 +28,16 @@ public class UnifiedPushNotificationReceiver extends MessagingReceiver{ } @Override - public void onNewEndpoint(@NotNull Context context, @NotNull String endpoint, @NotNull String instance) { + public void onNewEndpoint(@NotNull Context context, @NotNull PushEndpoint endpoint, @NotNull String instance) { // Called when a new endpoint be used for sending push messages - Log.d(TAG, "onNewEndpoint: New Endpoint " + endpoint + " for "+ instance); + Log.d(TAG, "onNewEndpoint: New Endpoint " + endpoint.getUrl() + " for "+ instance); AccountSession account = AccountSessionManager.getInstance().tryGetAccount(instance); if (account != null) - account.getPushSubscriptionManager().registerAccountForPush(null, endpoint); + account.getPushSubscriptionManager().registerAccountForPush(null, endpoint.getUrl()); } @Override - public void onRegistrationFailed(@NotNull Context context, @NotNull String instance) { + public void onRegistrationFailed(@NotNull Context context, @NotNull FailedReason reason, @NotNull String instance) { // called when the registration is not possible, eg. no network Log.d(TAG, "onRegistrationFailed: " + instance); //re-register for gcm @@ -53,7 +57,8 @@ public class UnifiedPushNotificationReceiver extends MessagingReceiver{ } @Override - public void onMessage(@NotNull Context context, @NotNull byte[] message, @NotNull String instance) { + public void onMessage(@NotNull Context context, @NotNull PushMessage message, @NotNull String instance) { + Log.d(TAG, "New message for " + instance); // Called when a new message is received. The message contains the full POST body of the push message AccountSession account = AccountSessionManager.getInstance().tryGetAccount(instance); diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSessionManager.java b/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSessionManager.java index 58252c51a..62a6dd9db 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSessionManager.java +++ b/mastodon/src/main/java/org/joinmastodon/android/api/session/AccountSessionManager.java @@ -127,12 +127,12 @@ public class AccountSessionManager{ MastodonAPIController.runInBackground(()->writeInstanceInfoFile(wrapper, instance.uri)); updateMoreInstanceInfo(instance, instance.uri); - if (!UnifiedPush.getDistributor(context).isEmpty()) { - UnifiedPush.registerApp( + if (UnifiedPush.getAckDistributor(context) != null) { + UnifiedPush.register( context, session.getID(), - new ArrayList<>(), - context.getPackageName() + null, + null ); } else if(PushSubscriptionManager.arePushNotificationsAvailable()){ session.getPushSubscriptionManager().registerAccountForPush(null); 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 60804eccc..c6c2997b5 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 @@ -72,7 +72,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment{ lp=AccountSessionManager.get(accountID).getLocalPreferences(); getPushSubscription(); - useUnifiedPush=!UnifiedPush.getDistributor(getContext()).isEmpty(); + useUnifiedPush=UnifiedPush.getAckDistributor(getContext()) != null; 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)), @@ -94,7 +94,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment{ )); //only enable when distributors, who can receive notifications, are available - unifiedPushItem.isEnabled=!UnifiedPush.getDistributors(getContext(), new ArrayList<>()).isEmpty(); + unifiedPushItem.isEnabled=!UnifiedPush.getDistributors(getContext()).isEmpty(); if (!unifiedPushItem.isEnabled) { unifiedPushItem.subtitleRes=R.string.sk_settings_unifiedpush_no_distributor_body; } @@ -316,12 +316,12 @@ 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()){ + }else if(BuildConfig.BUILD_TYPE.equals("fdroidRelease") && UnifiedPush.getAckDistributor(getContext()) != null){ 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()) { + if(UnifiedPush.getDistributors(getContext()).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/")); @@ -342,14 +342,14 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment{ } private void onUnifiedPushClick(){ - if(UnifiedPush.getDistributor(getContext()).isEmpty()){ - List distributors = UnifiedPush.getDistributors(getContext(), new ArrayList<>()); + if(UnifiedPush.getAckDistributor(getContext()) == null){ + List distributors = UnifiedPush.getDistributors(getContext()); showUnifiedPushRegisterDialog(distributors); return; } for (AccountSession accountSession : AccountSessionManager.getInstance().getLoggedInAccounts()) { - UnifiedPush.unregisterApp( + UnifiedPush.unregister( getContext(), accountSession.getID() ); @@ -367,11 +367,11 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment{ String userDistrib = distributors.get(which); UnifiedPush.saveDistributor(getContext(), userDistrib); for (AccountSession accountSession : AccountSessionManager.getInstance().getLoggedInAccounts()){ - UnifiedPush.registerApp( + UnifiedPush.register( getContext(), accountSession.getID(), - new ArrayList<>(), - getContext().getPackageName() + null, + null ); } unifiedPushItem.toggle(); diff --git a/settings.gradle b/settings.gradle index a4a0c6201..09a0c536e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,12 +2,6 @@ pluginManagement { repositories { google() mavenCentral() - maven { - url "https://www.jitpack.io" - content { - includeModule 'com.github.UnifiedPush', 'android-connector' - } - } mavenLocal() } } @@ -17,7 +11,12 @@ dependencyResolutionManagement { google() mavenCentral() mavenLocal() - maven { url 'https://jitpack.io' } + maven { + url 'https://jitpack.io' + content { + includeModule 'com.github.bottom-software-foundation', 'bottom-java' + } + } } } rootProject.name = "Moshidon"