diff --git a/app/src/main/java/com/nextcloud/talk/newarch/data/repository/offline/UsersRepositoryImpl.kt b/app/src/main/java/com/nextcloud/talk/newarch/data/repository/offline/UsersRepositoryImpl.kt index 873303d07..310080f71 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/data/repository/offline/UsersRepositoryImpl.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/data/repository/offline/UsersRepositoryImpl.kt @@ -56,6 +56,14 @@ class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository { } } + override fun getUsersLiveDataWithoutActive(): LiveData> { + return usersDao.getUsersLiveDataWithoutActive().distinctUntilChanged().map { usersList -> + usersList.map { + it.toUser() + } + } + } + override suspend fun getUserWithUsernameAndServer( username: String, server: String diff --git a/app/src/main/java/com/nextcloud/talk/newarch/domain/repository/offline/UsersRepository.kt b/app/src/main/java/com/nextcloud/talk/newarch/domain/repository/offline/UsersRepository.kt index 29280c2ac..2b0c34496 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/domain/repository/offline/UsersRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/domain/repository/offline/UsersRepository.kt @@ -32,6 +32,7 @@ interface UsersRepository { fun getUsers(): List fun getUserWithId(id: Long): UserNgEntity fun getUsersLiveData(): LiveData> + fun getUsersLiveDataWithoutActive(): LiveData> suspend fun getUserWithUsernameAndServer(username: String, server: String): UserNgEntity? suspend fun updateUser(user: UserNgEntity): Int suspend fun insertUser(user: UserNgEntity): Long diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/settings/SettingsPresenter.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/settings/SettingsPresenter.kt index 586811733..13a917b4f 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/settings/SettingsPresenter.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/settings/SettingsPresenter.kt @@ -60,12 +60,7 @@ open class SettingsPresenter(context: Context, onElementClick: ((Page, holder.itemView.background.alpha = 191 holder.itemView.userMoreOptionsView.visibility = View.INVISIBLE } else { - if (user.status == UserStatus.ACTIVE) { - holder.itemView.setBackgroundColor(context.resources.getColor(R.color.colorPrimary)) - holder.itemView.background.alpha = 191 - } else { - holder.itemView.setBackgroundColor(0) - } + holder.itemView.setBackgroundColor(0) holder.itemView.userMoreOptionsView.visibility = View.VISIBLE holder.itemView.userMoreOptionsView.setOnClickListener { onMoreOptionsClick?.invoke(user) diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/settings/SettingsView.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/settings/SettingsView.kt index a39107125..2f1644542 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/settings/SettingsView.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/settings/SettingsView.kt @@ -96,6 +96,12 @@ class SettingsView(private val bundle: Bundle? = null) : BaseView() { ) } + view.activeUserMoreOptions.setOnClickListener { + viewModel.activeUser.value?.let { + onMoreOptionsClick(it.toUser()) + } + } + showFallbackAvatar(view.avatar_image) viewModel.activeUser.observe(this@SettingsView) { user -> diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/settings/SettingsViewModel.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/settings/SettingsViewModel.kt index a3e790d57..117c77a80 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/settings/SettingsViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/settingsflow/settings/SettingsViewModel.kt @@ -40,7 +40,7 @@ class SettingsViewModel constructor( private val apiErrorHandler: ApiErrorHandler, private val globalService: GlobalService ) : BaseViewModel(application) { - val users = usersRepository.getUsersLiveData() + val users = usersRepository.getUsersLiveDataWithoutActive() val activeUser = globalService.currentUserLiveData private suspend fun setUserAsActiveWithId(id: Long): Boolean { diff --git a/app/src/main/java/com/nextcloud/talk/newarch/local/dao/UsersDao.kt b/app/src/main/java/com/nextcloud/talk/newarch/local/dao/UsersDao.kt index 92fd5653f..bb906a549 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/local/dao/UsersDao.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/local/dao/UsersDao.kt @@ -39,6 +39,9 @@ abstract class UsersDao { @Query("SELECT * from users ORDER BY status DESC") abstract fun getUsersLiveData(): LiveData> + @Query("SELECT * from users WHERE status != 2 ORDER BY status DESC") + abstract fun getUsersLiveDataWithoutActive(): LiveData> + @Query("DELETE FROM users WHERE id = :id") abstract suspend fun deleteUserWithId(id: Long) diff --git a/app/src/main/res/layout/settings_view.xml b/app/src/main/res/layout/settings_view.xml index 9bdf59288..b273846c3 100644 --- a/app/src/main/res/layout/settings_view.xml +++ b/app/src/main/res/layout/settings_view.xml @@ -45,25 +45,41 @@ +