Skip to content

Commit 6843842

Browse files
Merge pull request #6031 from nextcloud/chore/noid/roomEditComposable
⚒️🎨 Migrate room info edit to Composable
2 parents 248bf2f + d49a530 commit 6843842

14 files changed

Lines changed: 855 additions & 690 deletions

app/src/androidTest/java/com/nextcloud/talk/data/database/dao/ChatMessagesDaoTest.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,14 @@ class ChatMessagesDaoTest {
102102
// Having a conversation token, we can also get a conversation directly
103103
val conversation1GotByToken = conversationsDao.getConversationForUser(
104104
account1.id,
105-
conversation1.token!!
105+
conversation1.token
106106
).first()
107107

108108
assertEquals(conversation1, conversation1GotByToken)
109109

110110
// Lets insert some messages to the conversations
111111
chatMessagesDao.upsertChatMessagesAndDeleteTemp(
112+
conversation1.internalId,
112113
listOf(
113114
createChatMessageEntity(conversation1.internalId, "hello"),
114115
createChatMessageEntity(conversation1.internalId, "here"),
@@ -118,6 +119,7 @@ class ChatMessagesDaoTest {
118119
)
119120
)
120121
chatMessagesDao.upsertChatMessagesAndDeleteTemp(
122+
conversation2.internalId,
121123
listOf(
122124
createChatMessageEntity(conversation2.internalId, "first message in conversation 2")
123125
)

app/src/main/java/com/nextcloud/talk/api/NcApiCoroutines.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,9 @@ interface NcApiCoroutines {
294294
@Query("threadId") threadId: Int?
295295
): ChatOverall
296296

297+
@GET
298+
suspend fun getRoom(@Header("Authorization") authorization: String, @Url url: String): RoomOverall
299+
297300
@GET
298301
suspend fun getNoteToSelfRoom(@Header("Authorization") authorization: String, @Url url: String): RoomOverall
299302

app/src/main/java/com/nextcloud/talk/conversation/RenameConversationDialogFragment.kt

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ import android.view.ViewGroup
2020
import androidx.appcompat.app.AlertDialog
2121
import androidx.core.content.res.ResourcesCompat
2222
import androidx.fragment.app.DialogFragment
23+
import androidx.lifecycle.Lifecycle
2324
import androidx.lifecycle.ViewModelProvider
25+
import androidx.lifecycle.lifecycleScope
26+
import androidx.lifecycle.repeatOnLifecycle
2427
import autodagger.AutoInjector
2528
import com.google.android.material.dialog.MaterialAlertDialogBuilder
2629
import com.google.android.material.snackbar.Snackbar
@@ -33,6 +36,7 @@ import com.nextcloud.talk.databinding.DialogRenameConversationBinding
3336
import com.nextcloud.talk.events.ConversationsListFetchDataEvent
3437
import com.nextcloud.talk.ui.theme.ViewThemeUtils
3538
import com.vanniktech.emoji.EmojiPopup
39+
import kotlinx.coroutines.launch
3640
import org.greenrobot.eventbus.EventBus
3741
import javax.inject.Inject
3842

@@ -168,15 +172,15 @@ class RenameConversationDialogFragment : DialogFragment() {
168172
}
169173

170174
private fun setupStateObserver() {
171-
viewModel.renameRoomUiState.observe(viewLifecycleOwner) { state ->
172-
when (state) {
173-
is ConversationInfoEditViewModel.RenameRoomUiState.None -> {
174-
}
175-
is ConversationInfoEditViewModel.RenameRoomUiState.Success -> {
176-
handleSuccess()
177-
}
178-
is ConversationInfoEditViewModel.RenameRoomUiState.Error -> {
179-
showError()
175+
viewLifecycleOwner.lifecycleScope.launch {
176+
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
177+
viewModel.uiState.collect { state ->
178+
if (state.navigateBack) {
179+
handleSuccess()
180+
} else if (state.userMessage != null) {
181+
showError()
182+
viewModel.messageShown()
183+
}
180184
}
181185
}
182186
}

app/src/main/java/com/nextcloud/talk/conversationinfo/ConversationInfoActivity.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,14 @@ class ConversationInfoActivity : BaseActivity() {
178178
}
179179
}
180180

181+
private val editConversationResult = registerForActivityResult(
182+
ActivityResultContracts.StartActivityForResult()
183+
) { result ->
184+
if (result.resultCode == RESULT_OK) {
185+
viewModel.getRoom(conversationUser, conversationToken)
186+
}
187+
}
188+
181189
override fun onCreate(savedInstanceState: Bundle?) {
182190
super.onCreate(savedInstanceState)
183191
NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this)
@@ -558,7 +566,7 @@ class ConversationInfoActivity : BaseActivity() {
558566

559567
val intent = Intent(this, ConversationInfoEditActivity::class.java)
560568
intent.putExtras(bundle)
561-
startActivity(intent)
569+
editConversationResult.launch(intent)
562570
}
563571
return true
564572
}

0 commit comments

Comments
 (0)