package fi.schro.data import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable interface AccessoryInfoRepository { suspend fun getAccessoryInfo(): AccessoryInfo suspend fun updateAccessoryInfo(infoChange: AccessoryInfo): AccessoryInfo } class AccessoryInfoRepositoryImpl: AccessoryInfoRepository { private var accessoryInfo = AccessoryInfo( productName = "Elgato Key Light", hardwareBoardType = 53, firmwareBuildNumber = 192, firmwareVersion = "1.0.3", serialNumber = "XXXXXXXXXXXX", displayName = "Emulated Key Light", features = listOf(AccessoryFeature.LIGHTS) ) override suspend fun getAccessoryInfo(): AccessoryInfo { return accessoryInfo } override suspend fun updateAccessoryInfo(infoChange: AccessoryInfo): AccessoryInfo { //only display name can be changed accessoryInfo = accessoryInfo.copy( displayName = infoChange.displayName ?: accessoryInfo.displayName ) return getAccessoryInfo() } } @Serializable data class AccessoryInfo( @SerialName("productName") val productName: String? = null, @SerialName("hardwareBoardType") val hardwareBoardType: Int? = null, @SerialName("firmwareBuildNumber") val firmwareBuildNumber: Int? = null, @SerialName("firmwareVersion") val firmwareVersion: String? = null, @SerialName("serialNumber") val serialNumber: String? = null, @SerialName("displayName") val displayName: String? = null, @SerialName("features") val features: List? = null, ) @Serializable enum class AccessoryFeature { @SerialName("lights") LIGHTS }