Fix: registering multi account for UnifiedPush (#907)
* Register all account when enabling UnifiedPush * Register new account to UnifiedPush if enabled
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package org.joinmastodon.android.api.session;
|
package org.joinmastodon.android.api.session;
|
||||||
|
|
||||||
|
import static org.unifiedpush.android.connector.UnifiedPush.getDistributor;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
@@ -34,6 +36,7 @@ import org.joinmastodon.android.model.EmojiCategory;
|
|||||||
import org.joinmastodon.android.model.LegacyFilter;
|
import org.joinmastodon.android.model.LegacyFilter;
|
||||||
import org.joinmastodon.android.model.Instance;
|
import org.joinmastodon.android.model.Instance;
|
||||||
import org.joinmastodon.android.model.Token;
|
import org.joinmastodon.android.model.Token;
|
||||||
|
import org.unifiedpush.android.connector.UnifiedPush;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
@@ -101,6 +104,7 @@ public class AccountSessionManager{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addAccount(Instance instance, Token token, Account self, Application app, AccountActivationInfo activationInfo){
|
public void addAccount(Instance instance, Token token, Account self, Application app, AccountActivationInfo activationInfo){
|
||||||
|
Context context = MastodonApp.context;
|
||||||
instances.put(instance.uri, instance);
|
instances.put(instance.uri, instance);
|
||||||
AccountSession session=new AccountSession(token, self, app, instance.uri, activationInfo==null, activationInfo);
|
AccountSession session=new AccountSession(token, self, app, instance.uri, activationInfo==null, activationInfo);
|
||||||
sessions.put(session.getID(), session);
|
sessions.put(session.getID(), session);
|
||||||
@@ -113,7 +117,14 @@ public class AccountSessionManager{
|
|||||||
MastodonAPIController.runInBackground(()->writeInstanceInfoFile(wrapper, instance.uri));
|
MastodonAPIController.runInBackground(()->writeInstanceInfoFile(wrapper, instance.uri));
|
||||||
|
|
||||||
updateMoreInstanceInfo(instance, instance.uri);
|
updateMoreInstanceInfo(instance, instance.uri);
|
||||||
if(PushSubscriptionManager.arePushNotificationsAvailable()){
|
if (!UnifiedPush.getDistributor(context).isEmpty()) {
|
||||||
|
UnifiedPush.registerApp(
|
||||||
|
context,
|
||||||
|
session.getID(),
|
||||||
|
new ArrayList<>(),
|
||||||
|
context.getPackageName()
|
||||||
|
);
|
||||||
|
} else if(PushSubscriptionManager.arePushNotificationsAvailable()){
|
||||||
session.getPushSubscriptionManager().registerAccountForPush(null);
|
session.getPushSubscriptionManager().registerAccountForPush(null);
|
||||||
}
|
}
|
||||||
maybeUpdateShortcuts();
|
maybeUpdateShortcuts();
|
||||||
|
|||||||
@@ -334,13 +334,15 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
UnifiedPush.unregisterApp(
|
for (AccountSession accountSession : AccountSessionManager.getInstance().getLoggedInAccounts()) {
|
||||||
getContext(),
|
UnifiedPush.unregisterApp(
|
||||||
accountID
|
getContext(),
|
||||||
);
|
accountSession.getID()
|
||||||
|
);
|
||||||
|
|
||||||
//re-register to fcm
|
//re-register to fcm
|
||||||
AccountSessionManager.getInstance().getAccount(accountID).getPushSubscriptionManager().registerAccountForPush(getPushSubscription());
|
accountSession.getPushSubscriptionManager().registerAccountForPush(getPushSubscription());
|
||||||
|
}
|
||||||
unifiedPushItem.toggle();
|
unifiedPushItem.toggle();
|
||||||
rebindItem(unifiedPushItem);
|
rebindItem(unifiedPushItem);
|
||||||
}
|
}
|
||||||
@@ -350,12 +352,14 @@ public class SettingsNotificationsFragment extends BaseSettingsFragment<Void>{
|
|||||||
(dialog, which)->{
|
(dialog, which)->{
|
||||||
String userDistrib = distributors.get(which);
|
String userDistrib = distributors.get(which);
|
||||||
UnifiedPush.saveDistributor(getContext(), userDistrib);
|
UnifiedPush.saveDistributor(getContext(), userDistrib);
|
||||||
UnifiedPush.registerApp(
|
for (AccountSession accountSession : AccountSessionManager.getInstance().getLoggedInAccounts()){
|
||||||
getContext(),
|
UnifiedPush.registerApp(
|
||||||
accountID,
|
getContext(),
|
||||||
new ArrayList<>(),
|
accountSession.getID(),
|
||||||
getContext().getPackageName()
|
new ArrayList<>(),
|
||||||
);
|
getContext().getPackageName()
|
||||||
|
);
|
||||||
|
}
|
||||||
unifiedPushItem.toggle();
|
unifiedPushItem.toggle();
|
||||||
rebindItem(unifiedPushItem);
|
rebindItem(unifiedPushItem);
|
||||||
}).setOnCancelListener(d->rebindItem(unifiedPushItem)).show();
|
}).setOnCancelListener(d->rebindItem(unifiedPushItem)).show();
|
||||||
|
|||||||
Reference in New Issue
Block a user