From c9a8f5b0573dadef85a23795baf5099049ab66af Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Thu, 8 Mar 2018 19:27:35 +0100 Subject: [PATCH] Update push job Signed-off-by: Mario Danic --- .../AccountVerificationController.java | 2 +- .../talk/controllers/CallsListController.java | 1 + .../com/nextcloud/talk/utils/PushUtils.java | 164 +++++++++++------- 3 files changed, 102 insertions(+), 65 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java index bd1b2e79f..39c0ee0d8 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/AccountVerificationController.java @@ -268,6 +268,7 @@ public class AccountVerificationController extends BaseController { private void dispose(@Nullable Disposable disposable) { if (disposable != null && !disposable.isDisposed()) { disposable.dispose(); + disposable = null; } else if (disposable == null) { if (roomsQueryDisposable != null && !roomsQueryDisposable.isDisposed()) { roomsQueryDisposable.dispose(); @@ -290,7 +291,6 @@ public class AccountVerificationController extends BaseController { } } - disposable = null; } @Override diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallsListController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallsListController.java index d94542848..747ec4540 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallsListController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallsListController.java @@ -368,6 +368,7 @@ public class CallsListController extends BaseController implements SearchView.On private void dispose(@Nullable Disposable disposable) { if (disposable != null && !disposable.isDisposed()) { disposable.dispose(); + disposable = null; } else if (disposable == null && roomsQueryDisposable != null && !roomsQueryDisposable.isDisposed()) { roomsQueryDisposable.dispose(); diff --git a/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java b/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java index 1d053b9ea..ef4afa393 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java @@ -32,6 +32,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication; 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.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; @@ -61,7 +62,8 @@ import java.util.Map; import javax.inject.Inject; import autodagger.AutoInjector; -import io.reactivex.functions.Consumer; +import io.reactivex.Observer; +import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import okhttp3.JavaNetCookieJar; import okhttp3.OkHttpClient; @@ -267,72 +269,106 @@ public class PushUtils { ApiUtils.getCredentials(userEntity.getUsername(), userEntity.getToken()), ApiUtils.getUrlNextcloudPush(userEntity.getBaseUrl()), queryMap) .subscribeOn(Schedulers.newThread()) - .subscribe(pushRegistrationOverall -> { - Map proxyMap = new HashMap<>(); - proxyMap.put("pushToken", token); - proxyMap.put("deviceIdentifier", pushRegistrationOverall.getOcs().getData(). - getDeviceIdentifier()); - proxyMap.put("deviceIdentifierSignature", pushRegistrationOverall.getOcs() - .getData().getSignature()); - proxyMap.put("userPublicKey", pushRegistrationOverall.getOcs() - .getData().getPublicKey()); - - - ncApi.registerDeviceForNotificationsWithProxy(ApiUtils.getCredentials - (userEntity.getUsername(), userEntity.getToken()), - ApiUtils.getUrlPushProxy(), proxyMap) - .subscribeOn(Schedulers.newThread()) - .subscribe(new Consumer() { - @Override - public void accept(Void aVoid) throws Exception { - - PushConfigurationState pushConfigurationState = - new PushConfigurationState(); - pushConfigurationState.setPushToken(token); - pushConfigurationState.setDeviceIdentifier( - pushRegistrationOverall.getOcs() - .getData().getDeviceIdentifier()); - pushConfigurationState.setDeviceIdentifierSignature( - pushRegistrationOverall - .getOcs().getData().getSignature()); - pushConfigurationState.setUserPublicKey( - pushRegistrationOverall.getOcs() - .getData().getPublicKey()); - pushConfigurationState.setUsesRegularPass(false); - - userUtils.createOrUpdateUser(null, - null, null, - userEntity.getDisplayName(), - LoganSquare.serialize(pushConfigurationState), null, - null, userEntity.getId(), null) - .subscribe(new Consumer() { - @Override - public void accept(UserEntity userEntity) throws Exception { - // all went well - } - }, new Consumer() { - @Override - public void accept(Throwable throwable) throws Exception { - } - }); - - - } - }, new Consumer() { - @Override - public void accept(Throwable throwable) throws Exception { - // something went wrong - } - }); - - - }, new Consumer() { + .subscribe(new Observer() { @Override - public void accept(Throwable throwable) throws Exception { - // TODO: If 400, we're using regular token + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(PushRegistrationOverall pushRegistrationOverall) { + Map proxyMap = new HashMap<>(); + proxyMap.put("pushToken", token); + proxyMap.put("deviceIdentifier", pushRegistrationOverall.getOcs().getData(). + getDeviceIdentifier()); + proxyMap.put("deviceIdentifierSignature", pushRegistrationOverall.getOcs() + .getData().getSignature()); + proxyMap.put("userPublicKey", pushRegistrationOverall.getOcs() + .getData().getPublicKey()); + + + ncApi.registerDeviceForNotificationsWithProxy(ApiUtils.getCredentials + (userEntity.getUsername(), userEntity.getToken()), + ApiUtils.getUrlPushProxy(), proxyMap) + .subscribeOn(Schedulers.newThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(Void aVoid) { + PushConfigurationState pushConfigurationState = + new PushConfigurationState(); + pushConfigurationState.setPushToken(token); + pushConfigurationState.setDeviceIdentifier( + pushRegistrationOverall.getOcs() + .getData().getDeviceIdentifier()); + pushConfigurationState.setDeviceIdentifierSignature( + pushRegistrationOverall + .getOcs().getData().getSignature()); + pushConfigurationState.setUserPublicKey( + pushRegistrationOverall.getOcs() + .getData().getPublicKey()); + pushConfigurationState.setUsesRegularPass(false); + + try { + userUtils.createOrUpdateUser(null, + null, null, + userEntity.getDisplayName(), + LoganSquare.serialize(pushConfigurationState), null, + null, userEntity.getId(), null) + .subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { + + } + + @Override + public void onNext(UserEntity userEntity) { + + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + } catch (IOException e) { + Log.e(TAG, "IOException while updating user"); + } + + + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + } }); - } } }