Skip to content

Commit 6d425ad

Browse files
Merge pull request #6008 from nextcloud/style/noid/convListModalBottomSheet
⚒️🎨 Migrate to ModalBottomSheet Composable
2 parents fc7923d + 937eb95 commit 6d425ad

46 files changed

Lines changed: 2690 additions & 2887 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/src/main/java/com/nextcloud/talk/adapters/ReactionItemClickListener.kt

Lines changed: 0 additions & 11 deletions
This file was deleted.

app/src/main/java/com/nextcloud/talk/adapters/ReactionsAdapter.kt

Lines changed: 0 additions & 29 deletions
This file was deleted.

app/src/main/java/com/nextcloud/talk/adapters/ReactionsViewHolder.kt

Lines changed: 0 additions & 48 deletions
This file was deleted.

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

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.nextcloud.talk.models.json.participants.TalkBanOverall
2222
import com.nextcloud.talk.models.json.profile.ProfileOverall
2323
import com.nextcloud.talk.models.json.reactions.ReactionsOverall
2424
import com.nextcloud.talk.models.json.status.StatusOverall
25+
import com.nextcloud.talk.models.json.status.predefined.PredefinedStatusOverall
2526
import com.nextcloud.talk.models.json.testNotification.TestNotificationOverall
2627
import com.nextcloud.talk.models.json.threads.ThreadOverall
2728
import com.nextcloud.talk.models.json.threads.ThreadsOverall
@@ -333,6 +334,48 @@ interface NcApiCoroutines {
333334
@GET
334335
suspend fun status(@Header("Authorization") authorization: String, @Url url: String): StatusOverall
335336

337+
@FormUrlEncoded
338+
@PUT
339+
suspend fun setStatusType(
340+
@Header("Authorization") authorization: String,
341+
@Url url: String,
342+
@Field("statusType") statusType: String
343+
): GenericOverall
344+
345+
@GET
346+
suspend fun getPredefinedStatuses(
347+
@Header("Authorization") authorization: String,
348+
@Url url: String
349+
): PredefinedStatusOverall
350+
351+
@GET
352+
suspend fun backupStatus(@Header("Authorization") authorization: String, @Url url: String): StatusOverall
353+
354+
@DELETE
355+
suspend fun statusDeleteMessage(@Header("Authorization") authorization: String, @Url url: String): GenericOverall
356+
357+
@FormUrlEncoded
358+
@PUT
359+
suspend fun setPredefinedStatusMessage(
360+
@Header("Authorization") authorization: String,
361+
@Url url: String,
362+
@Field("messageId") messageId: String,
363+
@Field("clearAt") clearAt: Long?
364+
): GenericOverall
365+
366+
@FormUrlEncoded
367+
@PUT
368+
suspend fun setCustomStatusMessage(
369+
@Header("Authorization") authorization: String,
370+
@Url url: String,
371+
@Field("statusIcon") statusIcon: String?,
372+
@Field("message") message: String,
373+
@Field("clearAt") clearAt: Long?
374+
): GenericOverall
375+
376+
@DELETE
377+
suspend fun revertStatus(@Header("Authorization") authorization: String, @Url url: String): GenericOverall
378+
336379
@FormUrlEncoded
337380
@POST
338381
suspend fun pinMessage(
@@ -404,4 +447,17 @@ interface NcApiCoroutines {
404447
@Url url: String,
405448
@Query("reaction") reaction: String?
406449
): ReactionsOverall
450+
451+
// Url is: /api/{apiVersion}/chat/{token}/read
452+
@FormUrlEncoded
453+
@POST
454+
suspend fun setChatReadMarker(
455+
@Header("Authorization") authorization: String,
456+
@Url url: String,
457+
@Field("lastReadMessage") lastReadMessage: Int?
458+
): GenericOverall
459+
460+
// Url is: /api/{apiVersion}/chat/{token}/read
461+
@DELETE
462+
suspend fun markRoomAsUnread(@Header("Authorization") authorization: String, @Url url: String): GenericOverall
407463
}

app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ import androidx.compose.runtime.CompositionLocalProvider
6868
import androidx.compose.runtime.SideEffect
6969
import androidx.compose.runtime.getValue
7070
import androidx.compose.runtime.mutableStateOf
71+
import androidx.compose.runtime.produceState
7172
import androidx.compose.runtime.setValue
7273
import androidx.compose.ui.platform.ComposeView
7374
import androidx.coordinatorlayout.widget.CoordinatorLayout
@@ -159,7 +160,7 @@ import com.nextcloud.talk.ui.dialog.FileAttachmentPreviewFragment
159160
import com.nextcloud.talk.ui.dialog.GetPinnedOptionsDialog
160161
import com.nextcloud.talk.ui.dialog.MessageActionsDialog
161162
import com.nextcloud.talk.ui.dialog.SaveToStorageDialogFragment
162-
import com.nextcloud.talk.ui.dialog.ShowReactionsDialog
163+
import com.nextcloud.talk.chat.ui.ShowReactionsModalBottomSheet
163164
import com.nextcloud.talk.ui.dialog.TempMessageActionsDialog
164165
import com.nextcloud.talk.ui.theme.LocalMessageUtils
165166
import com.nextcloud.talk.ui.theme.LocalOpenGraphFetcher
@@ -630,6 +631,24 @@ class ChatActivity :
630631
listState = listState
631632
)
632633
}
634+
635+
val reactionsSheetMessageId by chatViewModel.reactionsSheetMessageId.collectAsStateWithLifecycle()
636+
val reactionsSheetMessage by produceState<ChatMessage?>(null, reactionsSheetMessageId) {
637+
value = reactionsSheetMessageId?.let { id -> chatViewModel.getMessageById(id).first() }
638+
}
639+
reactionsSheetMessage?.let { msg ->
640+
conversationUser?.let { user ->
641+
ShowReactionsModalBottomSheet(
642+
chatMessage = msg,
643+
user = user,
644+
roomToken = roomToken,
645+
hasReactPermission = participantPermissions.hasReactPermission(),
646+
ncApiCoroutines = ncApiCoroutines,
647+
onDeleteReaction = { emoji -> chatViewModel.deleteReaction(roomToken, msg, emoji) },
648+
onDismiss = { chatViewModel.dismissReactionsSheet() }
649+
)
650+
}
651+
}
633652
}
634653
}
635654
}
@@ -724,10 +743,7 @@ class ChatActivity :
724743
}
725744

726745
private fun openReactionsDialog(messageId: Int) {
727-
lifecycleScope.launch {
728-
val chatMessage = chatViewModel.getMessageById(messageId.toLong()).first()
729-
onLongClickReactions(chatMessage)
730-
}
746+
chatViewModel.showReactionsSheet(messageId.toLong())
731747
}
732748

733749
private fun getMessageInputFragment(): MessageInputFragment {
@@ -3237,17 +3253,6 @@ class ChatActivity :
32373253
openThread(chatMessage.jsonMessageId.toLong())
32383254
}
32393255

3240-
fun onLongClickReactions(chatMessage: ChatMessage) {
3241-
ShowReactionsDialog(
3242-
this,
3243-
roomToken,
3244-
chatMessage,
3245-
conversationUser,
3246-
participantPermissions.hasReactPermission(),
3247-
ncApiCoroutines
3248-
).show()
3249-
}
3250-
32513256
fun onMessageClick(message: ChatMessage) {
32523257
val now = SystemClock.elapsedRealtime()
32533258
if (now - lastMessageClickTime < ViewConfiguration.getDoubleTapTimeout() &&

0 commit comments

Comments
 (0)