mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-14 16:25:05 +01:00
Fix settings UI
Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
parent
7fc78b854d
commit
3a29fda42c
@ -56,6 +56,14 @@ class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getUsersLiveDataWithoutActive(): LiveData<List<User>> {
|
||||||
|
return usersDao.getUsersLiveDataWithoutActive().distinctUntilChanged().map { usersList ->
|
||||||
|
usersList.map {
|
||||||
|
it.toUser()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override suspend fun getUserWithUsernameAndServer(
|
override suspend fun getUserWithUsernameAndServer(
|
||||||
username: String,
|
username: String,
|
||||||
server: String
|
server: String
|
||||||
|
@ -32,6 +32,7 @@ interface UsersRepository {
|
|||||||
fun getUsers(): List<UserNgEntity>
|
fun getUsers(): List<UserNgEntity>
|
||||||
fun getUserWithId(id: Long): UserNgEntity
|
fun getUserWithId(id: Long): UserNgEntity
|
||||||
fun getUsersLiveData(): LiveData<List<User>>
|
fun getUsersLiveData(): LiveData<List<User>>
|
||||||
|
fun getUsersLiveDataWithoutActive(): LiveData<List<User>>
|
||||||
suspend fun getUserWithUsernameAndServer(username: String, server: String): UserNgEntity?
|
suspend fun getUserWithUsernameAndServer(username: String, server: String): UserNgEntity?
|
||||||
suspend fun updateUser(user: UserNgEntity): Int
|
suspend fun updateUser(user: UserNgEntity): Int
|
||||||
suspend fun insertUser(user: UserNgEntity): Long
|
suspend fun insertUser(user: UserNgEntity): Long
|
||||||
|
@ -60,12 +60,7 @@ open class SettingsPresenter<T : Any>(context: Context, onElementClick: ((Page,
|
|||||||
holder.itemView.background.alpha = 191
|
holder.itemView.background.alpha = 191
|
||||||
holder.itemView.userMoreOptionsView.visibility = View.INVISIBLE
|
holder.itemView.userMoreOptionsView.visibility = View.INVISIBLE
|
||||||
} else {
|
} else {
|
||||||
if (user.status == UserStatus.ACTIVE) {
|
holder.itemView.setBackgroundColor(0)
|
||||||
holder.itemView.setBackgroundColor(context.resources.getColor(R.color.colorPrimary))
|
|
||||||
holder.itemView.background.alpha = 191
|
|
||||||
} else {
|
|
||||||
holder.itemView.setBackgroundColor(0)
|
|
||||||
}
|
|
||||||
holder.itemView.userMoreOptionsView.visibility = View.VISIBLE
|
holder.itemView.userMoreOptionsView.visibility = View.VISIBLE
|
||||||
holder.itemView.userMoreOptionsView.setOnClickListener {
|
holder.itemView.userMoreOptionsView.setOnClickListener {
|
||||||
onMoreOptionsClick?.invoke(user)
|
onMoreOptionsClick?.invoke(user)
|
||||||
|
@ -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)
|
showFallbackAvatar(view.avatar_image)
|
||||||
|
|
||||||
viewModel.activeUser.observe(this@SettingsView) { user ->
|
viewModel.activeUser.observe(this@SettingsView) { user ->
|
||||||
|
@ -40,7 +40,7 @@ class SettingsViewModel constructor(
|
|||||||
private val apiErrorHandler: ApiErrorHandler,
|
private val apiErrorHandler: ApiErrorHandler,
|
||||||
private val globalService: GlobalService
|
private val globalService: GlobalService
|
||||||
) : BaseViewModel<SettingsView>(application) {
|
) : BaseViewModel<SettingsView>(application) {
|
||||||
val users = usersRepository.getUsersLiveData()
|
val users = usersRepository.getUsersLiveDataWithoutActive()
|
||||||
val activeUser = globalService.currentUserLiveData
|
val activeUser = globalService.currentUserLiveData
|
||||||
|
|
||||||
private suspend fun setUserAsActiveWithId(id: Long): Boolean {
|
private suspend fun setUserAsActiveWithId(id: Long): Boolean {
|
||||||
|
@ -39,6 +39,9 @@ abstract class UsersDao {
|
|||||||
@Query("SELECT * from users ORDER BY status DESC")
|
@Query("SELECT * from users ORDER BY status DESC")
|
||||||
abstract fun getUsersLiveData(): LiveData<List<UserNgEntity>>
|
abstract fun getUsersLiveData(): LiveData<List<UserNgEntity>>
|
||||||
|
|
||||||
|
@Query("SELECT * from users WHERE status != 2 ORDER BY status DESC")
|
||||||
|
abstract fun getUsersLiveDataWithoutActive(): LiveData<List<UserNgEntity>>
|
||||||
|
|
||||||
@Query("DELETE FROM users WHERE id = :id")
|
@Query("DELETE FROM users WHERE id = :id")
|
||||||
abstract suspend fun deleteUserWithId(id: Long)
|
abstract suspend fun deleteUserWithId(id: Long)
|
||||||
|
|
||||||
|
@ -45,25 +45,41 @@
|
|||||||
|
|
||||||
<androidx.emoji.widget.EmojiTextView
|
<androidx.emoji.widget.EmojiTextView
|
||||||
android:id="@+id/display_name_text"
|
android:id="@+id/display_name_text"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/avatar_image"
|
android:layout_below="@id/avatar_image"
|
||||||
android:layout_centerHorizontal="true"
|
android:paddingStart="32dp"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:layout_alignBaseline="@id/avatar_image"
|
||||||
android:layout_marginTop="@dimen/margin_between_elements"
|
android:layout_marginTop="@dimen/margin_between_elements"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
tools:text="Important user"
|
tools:text="Important user"
|
||||||
|
android:layout_toStartOf="@id/activeUserMoreOptions"
|
||||||
android:textColor="@color/nc_incoming_text_default" />
|
android:textColor="@color/nc_incoming_text_default" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/base_url_text"
|
android:id="@+id/base_url_text"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/display_name_text"
|
android:layout_below="@id/display_name_text"
|
||||||
|
android:paddingStart="32dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_margin="4dp"
|
android:textAlignment="center"
|
||||||
|
android:layout_toStartOf="@id/activeUserMoreOptions"
|
||||||
tools:text="nextcloud.com"
|
tools:text="nextcloud.com"
|
||||||
android:textColor="@color/nc_incoming_text_default"
|
android:textColor="@color/nc_incoming_text_default"
|
||||||
android:layout_marginBottom="8dp"/>
|
android:layout_marginBottom="8dp"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignTop="@id/display_name_text"
|
||||||
|
android:layout_alignBottom="@id/base_url_text"
|
||||||
|
android:src="@drawable/ic_baseline_more_vert_24"
|
||||||
|
android:id="@+id/activeUserMoreOptions"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_marginHorizontal="8dp"/>
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
Loading…
Reference in New Issue
Block a user