diff --git a/app/src/main/java/com/nextcloud/talk/data/user/UsersDao.kt b/app/src/main/java/com/nextcloud/talk/data/user/UsersDao.kt index d4e333163..565d980f1 100644 --- a/app/src/main/java/com/nextcloud/talk/data/user/UsersDao.kt +++ b/app/src/main/java/com/nextcloud/talk/data/user/UsersDao.kt @@ -29,6 +29,7 @@ import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Update import com.nextcloud.talk.data.user.model.UserEntity +import com.nextcloud.talk.models.json.push.PushConfigurationState import io.reactivex.Maybe import io.reactivex.Observable import io.reactivex.Single @@ -89,6 +90,9 @@ abstract class UsersDao { ) abstract fun setUserAsActiveWithId(id: Long): Int + @Query("Update User SET pushConfigurationState = :state WHERE id == :id") + abstract fun updatePushState(id: Long, state: PushConfigurationState): Single + companion object { const val TAG = "UsersDao" } diff --git a/app/src/main/java/com/nextcloud/talk/data/user/UsersRepository.kt b/app/src/main/java/com/nextcloud/talk/data/user/UsersRepository.kt index e5bdcc3f2..e8470b59f 100644 --- a/app/src/main/java/com/nextcloud/talk/data/user/UsersRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/data/user/UsersRepository.kt @@ -23,6 +23,7 @@ package com.nextcloud.talk.data.user import com.nextcloud.talk.data.user.model.User +import com.nextcloud.talk.models.json.push.PushConfigurationState import io.reactivex.Maybe import io.reactivex.Observable import io.reactivex.Single @@ -42,4 +43,5 @@ interface UsersRepository { fun insertUser(user: User): Long fun setUserAsActiveWithId(id: Long): Single fun deleteUser(user: User): Int + fun updatePushState(id: Long, state: PushConfigurationState): Single } diff --git a/app/src/main/java/com/nextcloud/talk/data/user/UsersRepositoryImpl.kt b/app/src/main/java/com/nextcloud/talk/data/user/UsersRepositoryImpl.kt index 35faca8a0..d6723d7ee 100644 --- a/app/src/main/java/com/nextcloud/talk/data/user/UsersRepositoryImpl.kt +++ b/app/src/main/java/com/nextcloud/talk/data/user/UsersRepositoryImpl.kt @@ -23,6 +23,7 @@ package com.nextcloud.talk.data.user import com.nextcloud.talk.data.user.model.User +import com.nextcloud.talk.models.json.push.PushConfigurationState import io.reactivex.Maybe import io.reactivex.Observable import io.reactivex.Single @@ -86,4 +87,8 @@ class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository { override fun deleteUser(user: User): Int { return usersDao.deleteUser(UserMapper.toEntity(user)) } + + override fun updatePushState(id: Long, state: PushConfigurationState): Single { + return usersDao.updatePushState(id, state) + } } diff --git a/app/src/main/java/com/nextcloud/talk/users/UserManager.kt b/app/src/main/java/com/nextcloud/talk/users/UserManager.kt index 814eeb895..2fb2acd12 100644 --- a/app/src/main/java/com/nextcloud/talk/users/UserManager.kt +++ b/app/src/main/java/com/nextcloud/talk/users/UserManager.kt @@ -230,6 +230,10 @@ class UserManager internal constructor(private val userRepository: UsersReposito return user } + fun updatePushState(id: Long, state: PushConfigurationState): Single { + return userRepository.updatePushState(id, state) + } + companion object { const val TAG = "UserManager" } 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 70b2179a1..1032bda91 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java @@ -338,8 +338,7 @@ public class PushUtils { pushConfigurationState.setUserPublicKey(proxyMap.get("userPublicKey")); pushConfigurationState.setUsesRegularPass(Boolean.FALSE); - user.setPushConfigurationState(pushConfigurationState); - userManager.saveUser(user).subscribe(new SingleObserver() { + userManager.updatePushState(user.getId(), pushConfigurationState).subscribe(new SingleObserver() { @Override public void onSubscribe(Disposable d) { // unused atm