Update push job

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2018-03-08 19:27:35 +01:00
parent b6bc764a5f
commit c9a8f5b057
3 changed files with 102 additions and 65 deletions

View File

@ -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

View File

@ -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();

View File

@ -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,7 +269,14 @@ public class PushUtils {
ApiUtils.getCredentials(userEntity.getUsername(), userEntity.getToken()),
ApiUtils.getUrlNextcloudPush(userEntity.getBaseUrl()), queryMap)
.subscribeOn(Schedulers.newThread())
.subscribe(pushRegistrationOverall -> {
.subscribe(new Observer<PushRegistrationOverall>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(PushRegistrationOverall pushRegistrationOverall) {
Map<String, String> proxyMap = new HashMap<>();
proxyMap.put("pushToken", token);
proxyMap.put("deviceIdentifier", pushRegistrationOverall.getOcs().getData().
@ -282,10 +291,14 @@ public class PushUtils {
(userEntity.getUsername(), userEntity.getToken()),
ApiUtils.getUrlPushProxy(), proxyMap)
.subscribeOn(Schedulers.newThread())
.subscribe(new Consumer<Void>() {
.subscribe(new Observer<Void>() {
@Override
public void accept(Void aVoid) throws Exception {
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Void aVoid) {
PushConfigurationState pushConfigurationState =
new PushConfigurationState();
pushConfigurationState.setPushToken(token);
@ -300,39 +313,62 @@ public class PushUtils {
.getData().getPublicKey());
pushConfigurationState.setUsesRegularPass(false);
try {
userUtils.createOrUpdateUser(null,
null, null,
userEntity.getDisplayName(),
LoganSquare.serialize(pushConfigurationState), null,
null, userEntity.getId(), null)
.subscribe(new Consumer<UserEntity>() {
.subscribe(new Observer<UserEntity>() {
@Override
public void accept(UserEntity userEntity) throws Exception {
// all went well
public void onSubscribe(Disposable d) {
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
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");
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
// something went wrong
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
// TODO: If 400, we're using regular token
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
}
}