Skip to content

Commit 0f93127

Browse files
authored
APP-980-Chat config changes for admin + colors (#99)
* APP-980-Change ChatConfig to allow for primary color override as well as admin access to edits/deletes * iOS Chat send button color * Room Edit fixes
1 parent 386ecc2 commit 0f93127

18 files changed

Lines changed: 116 additions & 70 deletions
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import androidx.compose.ui.graphics.Color
2+
import androidx.core.graphics.toColorInt
3+
4+
fun String.parseHexColor(): Color {
5+
return Color(this.toColorInt())
6+
}

sdks/kotlin/src/main/java/com/ditto/dittochat/Configs.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ data class ChatConfig(
55
val retentionPolicy: ChatRetentionPolicy = ChatRetentionPolicy(days = 30),
66
val usersCollection: String = "users",
77
val userId: String? = "ditto-system-user-id",
8-
val acceptLargeImages: Boolean = true
8+
val acceptLargeImages: Boolean = true,
9+
val primaryColor: String? = null,
10+
val hasAdminPrivileges: Boolean = false
911
)
1012

1113
data class ChatRetentionPolicy(

sdks/kotlin/src/main/java/com/ditto/dittochat/DittoChat.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ interface DittoChat {
1313
fun setCurrentUser(config: UserConfig)
1414

1515
val publicRoomsFlow: kotlinx.coroutines.flow.Flow<List<Room>>
16+
val dittoChatConfig: ChatConfig
1617

1718
val localStore: LocalData
1819
val p2pStore: DittoData
@@ -24,6 +25,7 @@ interface DittoChat {
2425
}
2526

2627
class DittoChatImpl(
28+
override val dittoChatConfig: ChatConfig,
2729
override val localStore: LocalData,
2830
override val p2pStore: DittoData
2931
) : DittoChat {

sdks/kotlin/src/main/java/com/ditto/dittochat/ui/ChatInputView.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ fun ChatInputBar(
2020
text: String,
2121
onTextChange: (String) -> Unit,
2222
onSendClick: () -> Unit,
23-
onCameraClick: () -> Unit
23+
onCameraClick: () -> Unit,
24+
primaryColor: Color
2425
) {
2526
Surface(
2627
modifier = Modifier.fillMaxWidth(),
@@ -53,7 +54,7 @@ fun ChatInputBar(
5354
.size(40.dp)
5455
.padding(4.dp)
5556
.clip(CircleShape)
56-
.background(MaterialTheme.colorScheme.primary)
57+
.background(primaryColor)
5758
) {
5859
Icon(
5960
Icons.Default.Send,

sdks/kotlin/src/main/java/com/ditto/dittochat/ui/ChatScreen.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@ import androidx.compose.ui.draw.clip
1919
import androidx.compose.ui.graphics.Color
2020
import androidx.compose.ui.text.style.TextAlign
2121
import androidx.compose.ui.unit.dp
22+
import androidx.core.graphics.toColorInt
2223
import androidx.hilt.navigation.compose.hiltViewModel
2324
import com.ditto.dittochat.DittoChat
2425
import com.ditto.dittochat.DittoData
2526
import kotlinx.coroutines.launch
27+
import parseHexColor
2628

2729
@OptIn(ExperimentalMaterial3Api::class)
2830
@Composable
@@ -84,7 +86,10 @@ fun ChatScreen(
8486
text = inputText,
8587
onTextChange = viewModel::updateInputText,
8688
onSendClick = viewModel::sendMessage,
87-
onCameraClick = { imagePicker.launch("image/*") }
89+
onCameraClick = { imagePicker.launch("image/*") },
90+
primaryColor =
91+
viewModel.dittoChat.dittoChatConfig.primaryColor?.parseHexColor()
92+
?: MaterialTheme.colorScheme.primary
8893
)
8994
}
9095
}
@@ -105,7 +110,9 @@ fun ChatScreen(
105110
currentUserId = currentUser?.id,
106111
onEditClick = { viewModel.startEditMessage(it) },
107112
onDeleteClick = { viewModel.deleteMessage(it) },
108-
onImageClick = { viewModel.showAttachment(it) }
113+
onImageClick = { viewModel.showAttachment(it) },
114+
hasAdminPrivileges = viewModel.dittoChat.dittoChatConfig.hasAdminPrivileges,
115+
primaryColor = viewModel.dittoChat.dittoChatConfig.primaryColor
109116
)
110117
}
111118
}

sdks/kotlin/src/main/java/com/ditto/dittochat/ui/ChatScreenViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import kotlinx.coroutines.withContext
1818
// ChatScreenViewModel.kt
1919
class ChatScreenViewModel(
2020
private val dittoData: DittoData,
21-
private val dittoChat: DittoChat
21+
internal val dittoChat: DittoChat
2222
) {
2323

2424
private val _room = MutableStateFlow<Room?>(null)

sdks/kotlin/src/main/java/com/ditto/dittochat/ui/Dialogs.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import androidx.hilt.navigation.compose.hiltViewModel
1212
fun CreateRoomDialog(
1313
onDismiss: () -> Unit,
1414
onCreate: (String) -> Unit,
15-
viewModel: RoomEditViewModel = hiltViewModel()
15+
viewModel: RoomEditViewModel
1616
) {
1717
val roomName by viewModel.roomName.collectAsState()
1818
val isCreating by viewModel.isCreating.collectAsState()

sdks/kotlin/src/main/java/com/ditto/dittochat/ui/DittoChatModule.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,20 @@ object DittoChatModule {
4141

4242
internal fun provideDittoChat(
4343
localStore: LocalData,
44-
p2pStore: DittoData
44+
p2pStore: DittoData,
45+
dittoChatConfig: ChatConfig
4546
): DittoChat {
46-
return DittoChatImpl(localStore, p2pStore)
47+
return DittoChatImpl(dittoChatConfig, localStore, p2pStore)
4748
}
4849

49-
fun provideDittoChatUI(ditto: Ditto, localData: LocalData): DittoChatUI {
50+
fun provideDittoChatUI(ditto: Ditto, localData: LocalData, dittoChatConfig: ChatConfig): DittoChatUI {
5051
return DittoChatUI(provideDittoChat(
5152
localData,
5253
provideDittoDataInterface(
5354
localData,
5455
ditto
55-
)
56+
),
57+
dittoChatConfig
5658
))
5759
}
5860
}

sdks/kotlin/src/main/java/com/ditto/dittochat/ui/DittoChatNavigation.kt

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

sdks/kotlin/src/main/java/com/ditto/dittochat/ui/DittoChatUI.kt

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
11
package com.ditto.dittochat.ui
22

3-
import android.content.Context
43
import androidx.compose.runtime.Composable
5-
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
6-
import androidx.navigation.NavHostController
7-
import androidx.navigation.compose.rememberNavController
8-
import com.ditto.dittochat.ChatConfig
94
import com.ditto.dittochat.DittoChat
10-
import com.ditto.dittochat.DittoChatImpl
11-
import com.ditto.dittochat.DittoData
125
import com.ditto.dittochat.UserConfig
136

147
class DittoChatUI(
@@ -18,11 +11,13 @@ class DittoChatUI(
1811
@Composable
1912
fun RoomsListView(
2013
viewModel: RoomsListScreenViewModel,
14+
editViewModel: RoomEditViewModel,
2115
navigateToChat: (String) -> Unit,
2216
) {
2317
RoomsListScreen(
2418
onNavigateToChat = navigateToChat,
25-
viewModel = viewModel
19+
viewModel = viewModel,
20+
roomEditViewModel = editViewModel,
2621
)
2722
}
2823

0 commit comments

Comments
 (0)