mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 03:59:35 +01:00
Migrate PushUtils from requery to room
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
parent
285b9cff03
commit
bcb728a0d1
@ -29,18 +29,15 @@ import android.text.TextUtils;
|
||||
import android.util.Base64;
|
||||
import android.util.Log;
|
||||
|
||||
import com.bluelinelabs.logansquare.LoganSquare;
|
||||
import com.nextcloud.talk.R;
|
||||
import com.nextcloud.talk.api.NcApi;
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||
import com.nextcloud.talk.data.user.model.User;
|
||||
import com.nextcloud.talk.events.EventStatus;
|
||||
import com.nextcloud.talk.models.SignatureVerification;
|
||||
import com.nextcloud.talk.models.database.UserEntity;
|
||||
import com.nextcloud.talk.models.json.push.PushConfigurationState;
|
||||
import com.nextcloud.talk.models.json.push.PushRegistrationOverall;
|
||||
import com.nextcloud.talk.users.UserManager;
|
||||
import com.nextcloud.talk.utils.database.user.UserUtils;
|
||||
import com.nextcloud.talk.utils.preferences.AppPreferences;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
@ -71,6 +68,7 @@ import javax.inject.Inject;
|
||||
|
||||
import autodagger.AutoInjector;
|
||||
import io.reactivex.Observer;
|
||||
import io.reactivex.SingleObserver;
|
||||
import io.reactivex.annotations.NonNull;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
@ -79,9 +77,6 @@ import io.reactivex.schedulers.Schedulers;
|
||||
public class PushUtils {
|
||||
private static final String TAG = "PushUtils";
|
||||
|
||||
@Inject
|
||||
UserUtils userUtils;
|
||||
|
||||
@Inject
|
||||
UserManager userManager;
|
||||
|
||||
@ -238,21 +233,20 @@ public class PushUtils {
|
||||
+ devicePublicKeyBase64
|
||||
+ "\n-----END PUBLIC KEY-----\n";
|
||||
|
||||
if (userUtils.anyUserExists()) {
|
||||
for (Object userEntityObject : userUtils.getUsers()) {
|
||||
UserEntity userEntity = (UserEntity) userEntityObject;
|
||||
List<User> users = userManager.getUsers().blockingGet();
|
||||
|
||||
if (!userEntity.getScheduledForDeletion()) {
|
||||
for (User user : users) {
|
||||
if (!user.getScheduledForDeletion()) {
|
||||
Map<String, String> nextcloudRegisterPushMap = new HashMap<>();
|
||||
nextcloudRegisterPushMap.put("format", "json");
|
||||
nextcloudRegisterPushMap.put("pushTokenHash", pushTokenHash);
|
||||
nextcloudRegisterPushMap.put("devicePublicKey", devicePublicKeyBase64);
|
||||
nextcloudRegisterPushMap.put("proxyServer", proxyServer);
|
||||
|
||||
registerDeviceWithNextcloud(ncApi, nextcloudRegisterPushMap, token, userEntity);
|
||||
registerDeviceWithNextcloud(ncApi, nextcloudRegisterPushMap, token, user);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "push token was empty when trying to register at nextcloud server");
|
||||
@ -262,12 +256,12 @@ public class PushUtils {
|
||||
private void registerDeviceWithNextcloud(NcApi ncApi,
|
||||
Map<String, String> nextcloudRegisterPushMap,
|
||||
String token,
|
||||
UserEntity userEntity) {
|
||||
String credentials = ApiUtils.getCredentials(userEntity.getUsername(), userEntity.getToken());
|
||||
User user) {
|
||||
String credentials = ApiUtils.getCredentials(user.getUsername(), user.getToken());
|
||||
|
||||
ncApi.registerDeviceForNotificationsWithNextcloud(
|
||||
credentials,
|
||||
ApiUtils.getUrlNextcloudPush(userEntity.getBaseUrl()),
|
||||
ApiUtils.getUrlNextcloudPush(user.getBaseUrl()),
|
||||
nextcloudRegisterPushMap)
|
||||
.subscribe(new Observer<PushRegistrationOverall>() {
|
||||
@Override
|
||||
@ -288,12 +282,12 @@ public class PushUtils {
|
||||
proxyMap.put("userPublicKey",
|
||||
pushRegistrationOverall.getOcs().getData().getPublicKey());
|
||||
|
||||
registerDeviceWithPushProxy(ncApi, proxyMap, userEntity);
|
||||
registerDeviceWithPushProxy(ncApi, proxyMap, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
eventBus.post(new EventStatus(userEntity.getId(),
|
||||
eventBus.post(new EventStatus(user.getId(),
|
||||
EventStatus.EventType.PUSH_REGISTRATION, false));
|
||||
}
|
||||
|
||||
@ -304,7 +298,7 @@ public class PushUtils {
|
||||
});
|
||||
}
|
||||
|
||||
private void registerDeviceWithPushProxy(NcApi ncApi, Map<String, String> proxyMap, UserEntity userEntity) {
|
||||
private void registerDeviceWithPushProxy(NcApi ncApi, Map<String, String> proxyMap, User user) {
|
||||
ncApi.registerDeviceForNotificationsWithPushProxy(ApiUtils.getUrlPushProxy(), proxyMap)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.subscribe(new Observer<Void>() {
|
||||
@ -317,7 +311,7 @@ public class PushUtils {
|
||||
public void onNext(@NonNull Void aVoid) {
|
||||
try {
|
||||
Log.d(TAG, "pushToken successfully registered at pushproxy.");
|
||||
createOrUpdateUser(proxyMap, userEntity);
|
||||
createOrUpdateUser(proxyMap, user);
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "IOException while updating user", e);
|
||||
}
|
||||
@ -325,7 +319,7 @@ public class PushUtils {
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
eventBus.post(new EventStatus(userEntity.getId(),
|
||||
eventBus.post(new EventStatus(user.getId(),
|
||||
EventStatus.EventType.PUSH_REGISTRATION, false));
|
||||
}
|
||||
|
||||
@ -336,7 +330,7 @@ public class PushUtils {
|
||||
});
|
||||
}
|
||||
|
||||
private void createOrUpdateUser(Map<String, String> proxyMap, UserEntity userEntity) throws IOException {
|
||||
private void createOrUpdateUser(Map<String, String> proxyMap, User user) throws IOException {
|
||||
PushConfigurationState pushConfigurationState = new PushConfigurationState();
|
||||
pushConfigurationState.setPushToken(proxyMap.get("pushToken"));
|
||||
pushConfigurationState.setDeviceIdentifier(proxyMap.get("deviceIdentifier"));
|
||||
@ -344,38 +338,27 @@ public class PushUtils {
|
||||
pushConfigurationState.setUserPublicKey(proxyMap.get("userPublicKey"));
|
||||
pushConfigurationState.setUsesRegularPass(Boolean.FALSE);
|
||||
|
||||
userUtils.createOrUpdateUser(null,
|
||||
null,
|
||||
null,
|
||||
userEntity.getDisplayName(),
|
||||
LoganSquare.serialize(pushConfigurationState),
|
||||
null,
|
||||
null,
|
||||
userEntity.getId(),
|
||||
null,
|
||||
null,
|
||||
null)
|
||||
.subscribe(new Observer<UserEntity>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
// unused atm
|
||||
}
|
||||
user.setPushConfigurationState(pushConfigurationState);
|
||||
userManager.saveUser(user).subscribe(new SingleObserver<Integer>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
// unused atm
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull UserEntity userEntity) {
|
||||
eventBus.post(new EventStatus(userEntity.getId(), EventStatus.EventType.PUSH_REGISTRATION, true));
|
||||
}
|
||||
@Override
|
||||
public void onSuccess(Integer integer) {
|
||||
eventBus.post(new EventStatus(UserIdUtils.INSTANCE.getIdForUser(user),
|
||||
EventStatus.EventType.PUSH_REGISTRATION,
|
||||
true));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
eventBus.post(new EventStatus(userEntity.getId(), EventStatus.EventType.PUSH_REGISTRATION, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
// unused atm
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
eventBus.post(new EventStatus(UserIdUtils.INSTANCE.getIdForUser(user),
|
||||
EventStatus.EventType.PUSH_REGISTRATION,
|
||||
false));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Key readKeyFromString(boolean readPublicKey, String keyString) {
|
||||
|
Loading…
Reference in New Issue
Block a user