From 098cbf33b6a7b7e774afd03b2342acf30838863e Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Fri, 25 Nov 2022 19:42:53 +0300 Subject: [PATCH] android: Group chat items (#1423) Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> --- .../app/src/main/java/chat/simplex/app/model/ChatModel.kt | 4 ++++ .../src/main/java/chat/simplex/app/model/SimpleXAPI.kt | 7 +++++++ .../chat/simplex/app/views/chat/item/CIChatFeatureView.kt | 6 +----- .../java/chat/simplex/app/views/chat/item/ChatItemView.kt | 8 +++++--- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt b/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt index 53d300fb47..f7ded89901 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt @@ -1270,6 +1270,8 @@ sealed class CIContent: ItemContent { @Serializable @SerialName("sndConnEvent") class SndConnEventContent(val sndConnEvent: SndConnEvent): CIContent() { override val msgContent: MsgContent? get() = null } @Serializable @SerialName("rcvChatFeature") class RcvChatFeature(val feature: Feature, val enabled: FeatureEnabled): CIContent() { override val msgContent: MsgContent? get() = null } @Serializable @SerialName("sndChatFeature") class SndChatFeature(val feature: Feature, val enabled: FeatureEnabled): CIContent() { override val msgContent: MsgContent? get() = null } + @Serializable @SerialName("rcvGroupFeature") class RcvGroupFeature(val feature: Feature, val preference: GroupPreference): CIContent() { override val msgContent: MsgContent? get() = null } + @Serializable @SerialName("sndGroupFeature") class SndGroupFeature(val feature: Feature, val preference: GroupPreference): CIContent() { override val msgContent: MsgContent? get() = null } @Serializable @SerialName("rcvChatFeatureRejected") class RcvChatFeatureRejected(val feature: Feature): CIContent() { override val msgContent: MsgContent? get() = null } override val text: String get() = when (this) { @@ -1288,6 +1290,8 @@ sealed class CIContent: ItemContent { is SndConnEventContent -> sndConnEvent.text is RcvChatFeature -> "${feature.text()}: ${enabled.text}" is SndChatFeature -> "${feature.text()}: ${enabled.text}" + is RcvGroupFeature -> "${feature.text()}: ${preference.enable.text}" + is SndGroupFeature -> "${feature.text()}: ${preference.enable.text}" is RcvChatFeatureRejected -> "${feature.text()}: ${generalGetString(R.string.feature_received_prohibited)}" } } diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt index 34c25b9dc6..5b7bd726b8 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt @@ -16,6 +16,7 @@ import androidx.compose.material.icons.filled.DeleteForever import androidx.compose.material.icons.filled.KeyboardVoice import androidx.compose.material.icons.outlined.* import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight @@ -2017,6 +2018,9 @@ data class FeatureEnabled( else -> generalGetString(R.string.feature_off) } + val iconColor: Color + get() = if (forUser) SimplexGreen else if (forContact) WarningYellow else HighOrLowlight + companion object { fun enabled(user: ChatPreference, contact: ChatPreference): FeatureEnabled = when { @@ -2230,6 +2234,9 @@ enum class GroupFeatureEnabled { OFF -> generalGetString(R.string.chat_preferences_off) } + val iconColor: Color + get() = if (this == ON) SimplexGreen else HighOrLowlight + } val json = Json { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIChatFeatureView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIChatFeatureView.kt index 1a684f8804..348129cf2a 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIChatFeatureView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/CIChatFeatureView.kt @@ -15,15 +15,11 @@ import chat.simplex.app.ui.theme.* fun CIChatFeatureView( chatItem: ChatItem, feature: Feature, - enabled: FeatureEnabled? + iconColor: Color ) { Row( verticalAlignment = Alignment.CenterVertically ) { - val iconColor = if (enabled != null) { - if (enabled.forUser) SimplexGreen else if (enabled.forContact) WarningYellow else HighOrLowlight - } else Color.Red - Icon(feature.icon(true), feature.text(), Modifier.size(15.dp), tint = iconColor) Text( chatEventText(chatItem), diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/ChatItemView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/ChatItemView.kt index dab38eef13..88634d21b3 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/ChatItemView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/ChatItemView.kt @@ -170,9 +170,11 @@ fun ChatItemView( is CIContent.SndGroupEventContent -> CIEventView(cItem) is CIContent.RcvConnEventContent -> CIEventView(cItem) is CIContent.SndConnEventContent -> CIEventView(cItem) - is CIContent.RcvChatFeature -> CIChatFeatureView(cItem, c.feature, c.enabled) - is CIContent.SndChatFeature -> CIChatFeatureView(cItem, c.feature, c.enabled) - is CIContent.RcvChatFeatureRejected -> CIChatFeatureView(cItem, c.feature, null) + is CIContent.RcvChatFeature -> CIChatFeatureView(cItem, c.feature, c.enabled.iconColor) + is CIContent.SndChatFeature -> CIChatFeatureView(cItem, c.feature, c.enabled.iconColor) + is CIContent.RcvGroupFeature -> CIChatFeatureView(cItem, c.feature, c.preference.enable.iconColor) + is CIContent.SndGroupFeature -> CIChatFeatureView(cItem, c.feature, c.preference.enable.iconColor) + is CIContent.RcvChatFeatureRejected -> CIChatFeatureView(cItem, c.feature, Color.Red) } } }