Update UnifiedPush lib

This commit is contained in:
sim 2025-01-14 16:00:54 +01:00
parent 082de410e0
commit 376653cb3f
5 changed files with 31 additions and 27 deletions

View file

@ -164,7 +164,7 @@ dependencies {
implementation 'com.github.bottom-software-foundation:bottom-java:2.1.0' implementation 'com.github.bottom-software-foundation:bottom-java:2.1.0'
annotationProcessor 'org.parceler:parceler:1.1.12' annotationProcessor 'org.parceler:parceler:1.1.12'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3' 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:core:1.5.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.ext:junit:1.1.5'

View file

@ -9,10 +9,14 @@ import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.model.Notification; import org.joinmastodon.android.model.Notification;
import org.joinmastodon.android.model.PaginatedResponse; import org.joinmastodon.android.model.PaginatedResponse;
import org.unifiedpush.android.connector.FailedReason;
import org.unifiedpush.android.connector.MessagingReceiver; 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 java.util.List;
import kotlin.text.Charsets;
import me.grishka.appkit.api.Callback; import me.grishka.appkit.api.Callback;
import me.grishka.appkit.api.ErrorResponse; import me.grishka.appkit.api.ErrorResponse;
@ -24,16 +28,16 @@ public class UnifiedPushNotificationReceiver extends MessagingReceiver{
} }
@Override @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 // 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); AccountSession account = AccountSessionManager.getInstance().tryGetAccount(instance);
if (account != null) if (account != null)
account.getPushSubscriptionManager().registerAccountForPush(null, endpoint); account.getPushSubscriptionManager().registerAccountForPush(null, endpoint.getUrl());
} }
@Override @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 // called when the registration is not possible, eg. no network
Log.d(TAG, "onRegistrationFailed: " + instance); Log.d(TAG, "onRegistrationFailed: " + instance);
//re-register for gcm //re-register for gcm
@ -53,7 +57,8 @@ public class UnifiedPushNotificationReceiver extends MessagingReceiver{
} }
@Override @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 // Called when a new message is received. The message contains the full POST body of the push message
AccountSession account = AccountSessionManager.getInstance().tryGetAccount(instance); AccountSession account = AccountSessionManager.getInstance().tryGetAccount(instance);

View file

@ -127,12 +127,12 @@ public class AccountSessionManager{
MastodonAPIController.runInBackground(()->writeInstanceInfoFile(wrapper, instance.uri)); MastodonAPIController.runInBackground(()->writeInstanceInfoFile(wrapper, instance.uri));
updateMoreInstanceInfo(instance, instance.uri); updateMoreInstanceInfo(instance, instance.uri);
if (!UnifiedPush.getDistributor(context).isEmpty()) { if (UnifiedPush.getAckDistributor(context) != null) {
UnifiedPush.registerApp( UnifiedPush.register(
context, context,
session.getID(), session.getID(),
new ArrayList<>(), null,
context.getPackageName() null
); );
} else if(PushSubscriptionManager.arePushNotificationsAvailable()){ } else if(PushSubscriptionManager.arePushNotificationsAvailable()){
session.getPushSubscriptionManager().registerAccountForPush(null); session.getPushSubscriptionManager().registerAccountForPush(null);

View file

@ -72,7 +72,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
lp=AccountSessionManager.get(accountID).getLocalPreferences(); lp=AccountSessionManager.get(accountID).getLocalPreferences();
getPushSubscription(); getPushSubscription();
useUnifiedPush=!UnifiedPush.getDistributor(getContext()).isEmpty(); useUnifiedPush=UnifiedPush.getAckDistributor(getContext()) != null;
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)),
@ -94,7 +94,7 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
)); ));
//only enable when distributors, who can receive notifications, are available //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) { if (!unifiedPushItem.isEnabled) {
unifiedPushItem.subtitleRes=R.string.sk_settings_unifiedpush_no_distributor_body; unifiedPushItem.subtitleRes=R.string.sk_settings_unifiedpush_no_distributor_body;
} }
@ -316,12 +316,12 @@ 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()){ }else if(BuildConfig.BUILD_TYPE.equals("fdroidRelease") && UnifiedPush.getAckDistributor(getContext()) != null){
bannerAdapter.setVisible(true); bannerAdapter.setVisible(true);
bannerIcon.setImageResource(R.drawable.ic_fluent_warning_24_filled); bannerIcon.setImageResource(R.drawable.ic_fluent_warning_24_filled);
bannerTitle.setVisibility(View.VISIBLE); bannerTitle.setVisibility(View.VISIBLE);
bannerTitle.setText(R.string.mo_settings_unifiedpush_warning); 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); bannerText.setText(R.string.mo_settings_unifiedpush_warning_no_distributors);
bannerButton.setText(R.string.info); bannerButton.setText(R.string.info);
bannerButton.setOnClickListener(v->UiUtils.launchWebBrowser(getContext(), "https://unifiedpush.org/")); bannerButton.setOnClickListener(v->UiUtils.launchWebBrowser(getContext(), "https://unifiedpush.org/"));
@ -342,14 +342,14 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
} }
private void onUnifiedPushClick(){ private void onUnifiedPushClick(){
if(UnifiedPush.getDistributor(getContext()).isEmpty()){ if(UnifiedPush.getAckDistributor(getContext()) == null){
List<String> distributors = UnifiedPush.getDistributors(getContext(), new ArrayList<>()); List<String> distributors = UnifiedPush.getDistributors(getContext());
showUnifiedPushRegisterDialog(distributors); showUnifiedPushRegisterDialog(distributors);
return; return;
} }
for (AccountSession accountSession : AccountSessionManager.getInstance().getLoggedInAccounts()) { for (AccountSession accountSession : AccountSessionManager.getInstance().getLoggedInAccounts()) {
UnifiedPush.unregisterApp( UnifiedPush.unregister(
getContext(), getContext(),
accountSession.getID() accountSession.getID()
); );
@ -367,11 +367,11 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
String userDistrib = distributors.get(which); String userDistrib = distributors.get(which);
UnifiedPush.saveDistributor(getContext(), userDistrib); UnifiedPush.saveDistributor(getContext(), userDistrib);
for (AccountSession accountSession : AccountSessionManager.getInstance().getLoggedInAccounts()){ for (AccountSession accountSession : AccountSessionManager.getInstance().getLoggedInAccounts()){
UnifiedPush.registerApp( UnifiedPush.register(
getContext(), getContext(),
accountSession.getID(), accountSession.getID(),
new ArrayList<>(), null,
getContext().getPackageName() null
); );
} }
unifiedPushItem.toggle(); unifiedPushItem.toggle();

View file

@ -2,12 +2,6 @@ pluginManagement {
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
maven {
url "https://www.jitpack.io"
content {
includeModule 'com.github.UnifiedPush', 'android-connector'
}
}
mavenLocal() mavenLocal()
} }
} }
@ -17,7 +11,12 @@ dependencyResolutionManagement {
google() google()
mavenCentral() mavenCentral()
mavenLocal() mavenLocal()
maven { url 'https://jitpack.io' } maven {
url 'https://jitpack.io'
content {
includeModule 'com.github.bottom-software-foundation', 'bottom-java'
}
}
} }
} }
rootProject.name = "Moshidon" rootProject.name = "Moshidon"