diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt index 21de3d37fe..c6928a5595 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt @@ -820,6 +820,7 @@ class ConversationInfoActivity : binding.archiveConversationTextHint.text = resources.getString(R.string.unarchive_hint) } } + viewModel.getRoom(conversationUser, conversationToken) } if (conversation!!.hasArchived) { diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index 1485a0018e..ae3e4242c4 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -455,8 +455,20 @@ class ConversationsListActivity : newItems.add(i) } } + + val archiveFilterOn = filterState[FilterConversationFragment.ARCHIVE] ?: false + if (archiveFilterOn && newItems.isEmpty()) { + binding.noArchivedConversationLayout.visibility = View.VISIBLE + } else { + binding.noArchivedConversationLayout.visibility = View.GONE + } + adapter!!.updateDataSet(newItems, true) setFilterableItems(newItems) + if (archiveFilterOn) { + // Never a notification from archived conversations + binding.newMentionPopupBubble.visibility = View.GONE + } updateFilterConversationButtonColor() } diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt index 3149e153b9..8bf06bf703 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt @@ -26,6 +26,7 @@ import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.api.NcApiCoroutines import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.conversation.RenameConversationDialogFragment +import com.nextcloud.talk.conversationinfo.viewmodel.ConversationInfoViewModel import com.nextcloud.talk.conversationlist.ConversationsListActivity import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.databinding.DialogConversationOperationsBinding @@ -68,6 +69,9 @@ class ConversationsListBottomDialog( @Inject lateinit var viewThemeUtils: ViewThemeUtils + @Inject + lateinit var conversationInfoViewModel: ConversationInfoViewModel + @Inject lateinit var userManager: UserManager @@ -189,6 +193,16 @@ class ConversationsListBottomDialog( dismiss() } + binding.conversationArchiveText.text = if (conversation.hasArchived) { + this.activity.resources.getString(R.string.unarchive_conversation) + } else { + this.activity.resources.getString(R.string.archive_conversation) + } + + binding.conversationArchive.setOnClickListener { + handleArchiving() + } + binding.conversationOperationRename.setOnClickListener { renameConversation() } @@ -202,6 +216,33 @@ class ConversationsListBottomDialog( } } + private fun handleArchiving() { + val currentUser = userManager.currentUser.blockingGet() + val token = conversation.token + lifecycleScope.launch { + if (conversation.hasArchived) { + conversationInfoViewModel.unarchiveConversation(currentUser, token) + activity.showSnackbar( + String.format( + context.resources.getString(R.string.unarchived_conversation), + conversation.displayName + ) + ) + dismiss() + } else { + conversationInfoViewModel.archiveConversation(currentUser, token) + activity.showSnackbar( + String.format( + context.resources.getString(R.string.archived_conversation), + conversation.displayName + ) + ) + dismiss() + } + } + activity.fetchRooms() + } + @Suppress("Detekt.TooGenericExceptionCaught") @SuppressLint("StringFormatInvalid", "TooGenericExceptionCaught") private fun addConversationToFavorites() { diff --git a/app/src/main/res/layout/activity_conversation_info.xml b/app/src/main/res/layout/activity_conversation_info.xml index f1c830ca33..9da666b8bf 100644 --- a/app/src/main/res/layout/activity_conversation_info.xml +++ b/app/src/main/res/layout/activity_conversation_info.xml @@ -410,7 +410,6 @@ android:orientation="horizontal" android:background="?android:attr/selectableItemBackground"> - - - - - - - - - - - - - + + + + + + + + + + tools:visibility="gone"> + + + + + + + + + + + + + + %1$s is out of office today Replacement: Resend + No conversations archived + Archived %1$s + Unarchived %1$s