Skip to content

Commit cb08637

Browse files
committed
refactor
1 parent 7d65ef1 commit cb08637

2 files changed

Lines changed: 61 additions & 57 deletions

File tree

presentation/src/main/java/org/monogram/presentation/features/chats/currentChat/ChatContent.kt

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,6 +610,61 @@ fun ChatContent(
610610
animationSpec = if (shouldAnimateContentEntrance) tween(300) else snap(),
611611
label = "ContentOffset"
612612
)
613+
614+
val canWriteText by remember(state.isAdmin, state.permissions.canSendBasicMessages) {
615+
derivedStateOf { state.isAdmin || state.permissions.canSendBasicMessages }
616+
}
617+
val canSendPhotos by remember(state.isAdmin, state.permissions.canSendPhotos) {
618+
derivedStateOf { state.isAdmin || state.permissions.canSendPhotos }
619+
}
620+
val canSendVideos by remember(state.isAdmin, state.permissions.canSendVideos) {
621+
derivedStateOf { state.isAdmin || state.permissions.canSendVideos }
622+
}
623+
val canSendDocuments by remember(state.isAdmin, state.permissions.canSendDocuments) {
624+
derivedStateOf { state.isAdmin || state.permissions.canSendDocuments }
625+
}
626+
val canSendAudios by remember(state.isAdmin, state.permissions.canSendAudios) {
627+
derivedStateOf { state.isAdmin || state.permissions.canSendAudios }
628+
}
629+
val canUseMediaPicker by remember(canSendPhotos, canSendVideos) {
630+
derivedStateOf { canSendPhotos || canSendVideos }
631+
}
632+
val canUseDocumentPicker by remember(canSendDocuments, canSendAudios) {
633+
derivedStateOf { canSendDocuments || canSendAudios }
634+
}
635+
val canSendPolls by remember(state.isAdmin, state.permissions.canSendPolls) {
636+
derivedStateOf { state.isAdmin || state.permissions.canSendPolls }
637+
}
638+
val canOpenAttachSheet by remember(
639+
canUseMediaPicker,
640+
canUseDocumentPicker,
641+
canSendPolls,
642+
state.attachMenuBots
643+
) {
644+
derivedStateOf { canUseMediaPicker || canUseDocumentPicker || canSendPolls || state.attachMenuBots.isNotEmpty() }
645+
}
646+
val canSendStickers by remember(state.isAdmin, state.permissions.canSendOtherMessages) {
647+
derivedStateOf { state.isAdmin || state.permissions.canSendOtherMessages }
648+
}
649+
val canSendVoice by remember(state.isAdmin, state.permissions.canSendVoiceNotes) {
650+
derivedStateOf { state.isAdmin || state.permissions.canSendVoiceNotes }
651+
}
652+
val canSendVideoNotes by remember(state.isAdmin, state.permissions.canSendVideoNotes) {
653+
derivedStateOf { state.isAdmin || state.permissions.canSendVideoNotes }
654+
}
655+
val canSendAnything by remember(
656+
canWriteText,
657+
canOpenAttachSheet,
658+
canSendStickers,
659+
canSendVoice,
660+
canSendVideoNotes,
661+
canSendPolls
662+
) {
663+
derivedStateOf {
664+
canWriteText || canOpenAttachSheet || canSendStickers || canSendVoice || canSendVideoNotes || canSendPolls
665+
}
666+
}
667+
613668
val messageListState = remember(
614669
state.chatId,
615670
state.currentTopicId,
@@ -630,6 +685,7 @@ fun ChatContent(
630685
state.isChannel,
631686
state.isAdmin,
632687
state.canWrite,
688+
canSendAnything,
633689
state.highlightedMessageId,
634690
state.fontSize,
635691
state.letterSpacing,
@@ -666,6 +722,7 @@ fun ChatContent(
666722
isChannel = state.isChannel,
667723
isAdmin = state.isAdmin,
668724
canWrite = state.canWrite,
725+
canSendAnything = canSendAnything,
669726
highlightedMessageId = state.highlightedMessageId,
670727
fontSize = state.fontSize,
671728
letterSpacing = state.letterSpacing,

presentation/src/main/java/org/monogram/presentation/features/chats/currentChat/chatContent/ChatContentList.kt

Lines changed: 4 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ data class ChatMessageListUiState(
114114
val isChannel: Boolean,
115115
val isAdmin: Boolean,
116116
val canWrite: Boolean,
117+
val canSendAnything: Boolean,
117118
val highlightedMessageId: Long?,
118119
val fontSize: Float,
119120
val letterSpacing: Float,
@@ -677,60 +678,6 @@ private fun MessageBubbleSwitcher(
677678
newerMsg?.suppressRootReply(state.rootMessage?.id)
678679
}
679680

680-
val canWriteText by remember(state.isAdmin, state.permissions.canSendBasicMessages) {
681-
derivedStateOf { state.isAdmin || state.permissions.canSendBasicMessages }
682-
}
683-
val canSendPhotos by remember(state.isAdmin, state.permissions.canSendPhotos) {
684-
derivedStateOf { state.isAdmin || state.permissions.canSendPhotos }
685-
}
686-
val canSendVideos by remember(state.isAdmin, state.permissions.canSendVideos) {
687-
derivedStateOf { state.isAdmin || state.permissions.canSendVideos }
688-
}
689-
val canSendDocuments by remember(state.isAdmin, state.permissions.canSendDocuments) {
690-
derivedStateOf { state.isAdmin || state.permissions.canSendDocuments }
691-
}
692-
val canSendAudios by remember(state.isAdmin, state.permissions.canSendAudios) {
693-
derivedStateOf { state.isAdmin || state.permissions.canSendAudios }
694-
}
695-
val canUseMediaPicker by remember(canSendPhotos, canSendVideos) {
696-
derivedStateOf { canSendPhotos || canSendVideos }
697-
}
698-
val canUseDocumentPicker by remember(canSendDocuments, canSendAudios) {
699-
derivedStateOf { canSendDocuments || canSendAudios }
700-
}
701-
val canSendPolls by remember(state.isAdmin, state.permissions.canSendPolls) {
702-
derivedStateOf { state.isAdmin || state.permissions.canSendPolls }
703-
}
704-
val canOpenAttachSheet by remember(
705-
canUseMediaPicker,
706-
canUseDocumentPicker,
707-
canSendPolls,
708-
state.attachMenuBots
709-
) {
710-
derivedStateOf { canUseMediaPicker || canUseDocumentPicker || canSendPolls || state.attachMenuBots.isNotEmpty() }
711-
}
712-
val canSendStickers by remember(state.isAdmin, state.permissions.canSendOtherMessages) {
713-
derivedStateOf { state.isAdmin || state.permissions.canSendOtherMessages }
714-
}
715-
val canSendVoice by remember(state.isAdmin, state.permissions.canSendVoiceNotes) {
716-
derivedStateOf { state.isAdmin || state.permissions.canSendVoiceNotes }
717-
}
718-
val canSendVideoNotes by remember(state.isAdmin, state.permissions.canSendVideoNotes) {
719-
derivedStateOf { state.isAdmin || state.permissions.canSendVideoNotes }
720-
}
721-
val canSendAnything by remember(
722-
canWriteText,
723-
canOpenAttachSheet,
724-
canSendStickers,
725-
canSendVoice,
726-
canSendVideoNotes,
727-
canSendPolls
728-
) {
729-
derivedStateOf {
730-
canWriteText || canOpenAttachSheet || canSendStickers || canSendVoice || canSendVideoNotes || canSendPolls
731-
}
732-
}
733-
734681
when (sanitizedItem) {
735682
is GroupedMessageItem.Single -> {
736683
if (sanitizedItem.message.content is MessageContent.Service) {
@@ -827,7 +774,7 @@ private fun MessageBubbleSwitcher(
827774
onCommentsClick = { component.onCommentsClick(it) },
828775
toProfile = toProfile,
829776
onViaBotClick = onViaBotClick,
830-
canReply = state.canWrite && !isSelectionMode && canSendAnything,
777+
canReply = state.canWrite && !isSelectionMode && state.canSendAnything,
831778
onReplySwipe = { component.onReplyMessage(it) },
832779
onYouTubeClick = { component.onOpenYouTube(it) },
833780
onInstantViewClick = { component.onOpenInstantView(it) },
@@ -932,7 +879,7 @@ private fun MessageBubbleSwitcher(
932879
onPositionChange = { _, pos, size -> onMessagePositionChange(pos, size) },
933880
toProfile = toProfile,
934881
onViaBotClick = onViaBotClick,
935-
canReply = state.canWrite && !isSelectionMode && (!isTopicClosed || state.isAdmin) && canSendAnything,
882+
canReply = state.canWrite && !isSelectionMode && (!isTopicClosed || state.isAdmin) && state.canSendAnything,
936883
onReplySwipe = { component.onReplyMessage(it) },
937884
swipeEnabled = !isSelectionMode,
938885
downloadUtils = downloadUtils,
@@ -1000,7 +947,7 @@ private fun MessageBubbleSwitcher(
1000947
onCommentsClick = { component.onCommentsClick(it) },
1001948
toProfile = toProfile,
1002949
onViaBotClick = onViaBotClick,
1003-
canReply = state.canWrite && !isSelectionMode && (!isTopicClosed || state.isAdmin) && canSendAnything,
950+
canReply = state.canWrite && !isSelectionMode && (!isTopicClosed || state.isAdmin) && state.canSendAnything,
1004951
onReplySwipe = { component.onReplyMessage(it) },
1005952
swipeEnabled = !isSelectionMode,
1006953
downloadUtils = downloadUtils,

0 commit comments

Comments
 (0)