From d115835606a1756d303d343cfc2a934100bfc73f Mon Sep 17 00:00:00 2001 From: Michelle Tang Date: Fri, 1 Nov 2024 16:28:45 -0400 Subject: [PATCH] Fix various UI bugs for chat folders. --- .../app/chats/ChatsSettingsFragment.kt | 2 +- .../app/chats/folders/ChatFoldersViewModel.kt | 3 +- .../chats/folders/CreateFoldersFragment.kt | 63 +++++++++---------- .../securesms/database/ChatFolderTables.kt | 3 +- .../res/layout/conversation_list_fragment.xml | 50 +++++++-------- 5 files changed, 56 insertions(+), 65 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsFragment.kt index 65a262b598..c70541d41b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/ChatsSettingsFragment.kt @@ -62,7 +62,7 @@ class ChatsSettingsFragment : DSLSettingsFragment(R.string.preferences_chats__ch sectionHeaderPref(R.string.ChatsSettingsFragment__chat_folders) - if (state.folderCount == 0) { + if (state.folderCount == 1) { clickPref( title = DSLSettingsText.from(R.string.ChatsSettingsFragment__add_chat_folder), onClick = { diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersViewModel.kt index 8ffb6c79ae..23936d22bf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/ChatFoldersViewModel.kt @@ -327,8 +327,7 @@ class ChatFoldersViewModel : ViewModel() { val originalFolder = state.value.originalFolder return if (currentFolder.id == -1L) { - currentFolder.name.isNotEmpty() && - (currentFolder.includedRecipients.isNotEmpty() || currentFolder.showIndividualChats || currentFolder.showGroupChats) + currentFolder.includedRecipients.isNotEmpty() || currentFolder.showIndividualChats || currentFolder.showGroupChats } else { originalFolder != currentFolder || originalFolder.includedRecipients != currentFolder.includedRecipients || diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/CreateFoldersFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/CreateFoldersFragment.kt index 5ede362e10..2a2422010d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/CreateFoldersFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/chats/folders/CreateFoldersFragment.kt @@ -364,42 +364,35 @@ fun CreateFolderScreen( } } - if (hasChanges && isNewFolder) { - Buttons.MediumTonal( - onClick = { onCreateConfirmed() }, - modifier = modifier - .align(Alignment.BottomEnd) - .padding(end = 16.dp, bottom = 16.dp) - ) { - Text(text = stringResource(R.string.CreateFoldersFragment__create)) - } - } else if (!isNewFolder) { - Buttons.MediumTonal( - colors = ButtonDefaults.filledTonalButtonColors( - contentColor = if (state.currentFolder.name.isEmpty()) { - MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f) - } else { - MaterialTheme.colorScheme.onSurface - }, - containerColor = if (state.currentFolder.name.isEmpty()) { - MaterialTheme.colorScheme.surfaceVariant - } else { - MaterialTheme.colorScheme.primaryContainer - }, - disabledContainerColor = MaterialTheme.colorScheme.surfaceVariant - ), - enabled = hasChanges, - onClick = { - if (state.currentFolder.name.isEmpty()) { - onShowToast() - } else { - onCreateConfirmed() - } + Buttons.MediumTonal( + colors = ButtonDefaults.filledTonalButtonColors( + contentColor = if (state.currentFolder.name.isEmpty()) { + MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f) + } else { + MaterialTheme.colorScheme.onSurface }, - modifier = modifier - .align(Alignment.BottomEnd) - .padding(end = 16.dp, bottom = 16.dp) - ) { + containerColor = if (state.currentFolder.name.isEmpty()) { + MaterialTheme.colorScheme.surfaceVariant + } else { + MaterialTheme.colorScheme.primaryContainer + }, + disabledContainerColor = MaterialTheme.colorScheme.surfaceVariant + ), + enabled = hasChanges, + onClick = { + if (state.currentFolder.name.isEmpty()) { + onShowToast() + } else { + onCreateConfirmed() + } + }, + modifier = modifier + .align(Alignment.BottomEnd) + .padding(end = 16.dp, bottom = 16.dp) + ) { + if (isNewFolder) { + Text(text = stringResource(R.string.CreateFoldersFragment__create)) + } else { Text(text = stringResource(R.string.CreateFoldersFragment__save)) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ChatFolderTables.kt b/app/src/main/java/org/thoughtcrime/securesms/database/ChatFolderTables.kt index aa00d9f844..0f09ef7d68 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ChatFolderTables.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ChatFolderTables.kt @@ -234,13 +234,12 @@ class ChatFolderTables(context: Context?, databaseHelper: SignalDatabase?) : Dat } /** - * Returns the number of user-made folders + * Returns the number of folders a user has, including the default 'All Chats' */ fun getFolderCount(): Int { return readableDatabase .count() .from(ChatFolderTable.TABLE_NAME) - .where("${ChatFolderTable.FOLDER_TYPE} != ${ChatFolderRecord.FolderType.ALL.value}") .run() .readToSingleInt() } diff --git a/app/src/main/res/layout/conversation_list_fragment.xml b/app/src/main/res/layout/conversation_list_fragment.xml index 45ab831aa0..63fd81aebf 100644 --- a/app/src/main/res/layout/conversation_list_fragment.xml +++ b/app/src/main/res/layout/conversation_list_fragment.xml @@ -9,29 +9,6 @@ android:background="?android:windowBackground" tools:viewBindingIgnore="true"> - - - - - - + app:layout_constraintTop_toTopOf="parent" /> + + + + + + + app:layout_constraintTop_toBottomOf="@id/banner_barrier">