diff --git a/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java index 3c07bd15b..54016f962 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java @@ -35,6 +35,7 @@ import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.models.json.generic.GenericOverall; import com.nextcloud.talk.models.json.push.PushConfigurationState; import com.nextcloud.talk.utils.ApiUtils; +import com.nextcloud.talk.utils.database.arbitrarystorage.ArbitraryStorageUtils; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.webrtc.WebSocketConnectionHelper; @@ -63,6 +64,9 @@ public class AccountRemovalWorker extends Worker { @Inject UserUtils userUtils; + @Inject + ArbitraryStorageUtils arbitraryStorageUtils; + @Inject Retrofit retrofit; @@ -143,22 +147,42 @@ public class AccountRemovalWorker extends Worker { WebSocketConnectionHelper.deleteExternalSignalingInstanceForUserEntity(userEntity.getId()); - userUtils.deleteUser(userEntity.getId()).subscribe(new CompletableObserver() { - @Override - public void onSubscribe(Disposable d) { + arbitraryStorageUtils.deleteAllEntriesForAccountIdentifier(userEntity.getId()).subscribe(new Observer() { + @Override + public void onSubscribe(Disposable d) { - } + } - @Override - public void onComplete() { + @Override + public void onNext(Object o) { + userUtils.deleteUser(userEntity.getId()).subscribe(new CompletableObserver() { + @Override + public void onSubscribe(Disposable d) { - } + } - @Override - public void onError(Throwable e) { + @Override + public void onComplete() { - } - }); + } + + @Override + public void onError(Throwable e) { + + } + }); + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } + }); } @Override diff --git a/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageUtils.java b/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageUtils.java index d46ceec9c..930cdf4aa 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/database/arbitrarystorage/ArbitraryStorageUtils.java @@ -31,11 +31,14 @@ import java.util.List; import androidx.annotation.Nullable; import io.reactivex.Completable; import io.reactivex.Observable; +import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import io.requery.Persistable; import io.requery.query.Result; import io.requery.reactivex.ReactiveEntityStore; +import io.requery.reactivex.ReactiveScalar; public class ArbitraryStorageUtils { private ReactiveEntityStore dataStore; @@ -66,4 +69,11 @@ public class ArbitraryStorageUtils { return (ArbitraryStorageEntity) findStorageQueryResult.firstOrNull(); } + + public Observable deleteAllEntriesForAccountIdentifier(long accountIdentifier) { + ReactiveScalar deleteResult = dataStore.delete(ArbitraryStorage.class).where(ArbitraryStorageEntity.ACCOUNT_IDENTIFIER.eq(accountIdentifier)).get(); + + return deleteResult.single().toObservable() + .subscribeOn(Schedulers.newThread()); + } }