58 lines
1.8 KiB
Kotlin
58 lines
1.8 KiB
Kotlin
package core.domain.model
|
|
|
|
import com.google.gson.annotations.SerializedName
|
|
|
|
data class ServerConfigModel(
|
|
@SerializedName("stories") val stories: StoriesConfig = StoriesConfig(),
|
|
@SerializedName("messages") val messages: MessagesConfig = MessagesConfig(),
|
|
@SerializedName("chats") val chats: ChatsConfig = ChatsConfig(),
|
|
@SerializedName("webRtc") val webRtc: WebRtcConfig = WebRtcConfig()
|
|
) {
|
|
// Helper to keep the presentation layer simple
|
|
val features: FeaturesConfig
|
|
get() = FeaturesConfig(
|
|
stories = stories.enabled,
|
|
polls = messages.allowPolls,
|
|
calls = webRtc.enabled && webRtc.enableVoiceCalls,
|
|
groups = true // Static for now as chats config doesn't have a simple toggle
|
|
)
|
|
|
|
val limits: LimitsConfig
|
|
get() = LimitsConfig(
|
|
maxFileSize = messages.maxFileSize,
|
|
maxGroupMembers = chats.maxGroupParticipants
|
|
)
|
|
}
|
|
|
|
data class StoriesConfig(
|
|
@SerializedName("enabled") val enabled: Boolean = true
|
|
)
|
|
|
|
data class MessagesConfig(
|
|
@SerializedName("maxFileSize") val maxFileSize: Long = 100 * 1024 * 1024,
|
|
@SerializedName("allowPolls") val allowPolls: Boolean = true
|
|
)
|
|
|
|
data class ChatsConfig(
|
|
@SerializedName("maxGroupParticipants") val maxGroupParticipants: Int = 200
|
|
)
|
|
|
|
data class WebRtcConfig(
|
|
@SerializedName("enabled") val enabled: Boolean = true,
|
|
@SerializedName("enableVoiceCalls") val enableVoiceCalls: Boolean = true,
|
|
@SerializedName("enableVideoCalls") val enableVideoCalls: Boolean = true
|
|
)
|
|
|
|
// DTOs to maintain compatibility with existing UI code if possible
|
|
data class FeaturesConfig(
|
|
val stories: Boolean,
|
|
val polls: Boolean,
|
|
val calls: Boolean,
|
|
val groups: Boolean
|
|
)
|
|
|
|
data class LimitsConfig(
|
|
val maxFileSize: Long,
|
|
val maxGroupMembers: Int
|
|
)
|