fix: reject unconfigured scene device fallbacks
This commit is contained in:
+6
-12
@@ -84,9 +84,6 @@ import com.flagship.abox.manager.domain.SocketPowerState
|
||||
import com.flagship.abox.manager.domain.infrared.RemoteKeyBinding
|
||||
import com.flagship.abox.manager.domain.infrared.VirtualRemote
|
||||
|
||||
private const val DEFAULT_SOCKET_DEVICE_NAME = "Zigbee插座控制器"
|
||||
private const val DEFAULT_TH_DEVICE_NAME = "温湿度传感器"
|
||||
private const val DEFAULT_IR_DEVICE_NAME = "红外控制器"
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
@@ -774,7 +771,7 @@ private fun AddTriggerDialog(
|
||||
onAdd: (type: Int, deviceName: String, time: String, temp: Double, hum: Double, op: ComparisonOperator) -> Unit,
|
||||
) {
|
||||
var selectedType by remember { mutableIntStateOf(0) }
|
||||
var deviceName by remember { mutableStateOf(DEFAULT_TH_DEVICE_NAME) }
|
||||
var deviceName by remember { mutableStateOf("") }
|
||||
var timeInput by remember { mutableStateOf("07:30") }
|
||||
var tempThreshold by remember { mutableDoubleStateOf(28.0) }
|
||||
var humThreshold by remember { mutableDoubleStateOf(40.0) }
|
||||
@@ -855,9 +852,9 @@ private fun AddConditionDialog(
|
||||
onAddTimeRange: (String, String) -> Unit,
|
||||
) {
|
||||
var selectedType by remember { mutableIntStateOf(0) }
|
||||
var tempDeviceName by remember { mutableStateOf(DEFAULT_TH_DEVICE_NAME) }
|
||||
var humDeviceName by remember { mutableStateOf(DEFAULT_TH_DEVICE_NAME) }
|
||||
var socketDeviceName by remember { mutableStateOf(DEFAULT_SOCKET_DEVICE_NAME) }
|
||||
var tempDeviceName by remember { mutableStateOf("") }
|
||||
var humDeviceName by remember { mutableStateOf("") }
|
||||
var socketDeviceName by remember { mutableStateOf("") }
|
||||
var operator by remember { mutableStateOf(ComparisonOperator.GREATER_THAN) }
|
||||
var tempVal by remember { mutableDoubleStateOf(26.0) }
|
||||
var humVal by remember { mutableDoubleStateOf(50.0) }
|
||||
@@ -997,7 +994,7 @@ private fun AddActionDialog(
|
||||
val defaultNotifyTitle = stringResource(R.string.scene_default_notify_title)
|
||||
val defaultNotifyMsg = stringResource(R.string.scene_default_notify_msg)
|
||||
|
||||
var socketName by remember { mutableStateOf(DEFAULT_SOCKET_DEVICE_NAME) }
|
||||
var socketName by remember { mutableStateOf("") }
|
||||
var socketPower by remember { mutableStateOf(SocketPowerState.ON) }
|
||||
|
||||
var selectedRemoteIndex by remember { mutableIntStateOf(0) }
|
||||
@@ -1056,7 +1053,6 @@ private fun AddActionDialog(
|
||||
1 -> {
|
||||
if (availableRemotes.isEmpty()) {
|
||||
Text(stringResource(R.string.scene_no_virtual_remotes))
|
||||
OutlinedTextField(value = selectedButtonId, onValueChange = { selectedButtonId = it }, label = { Text(stringResource(R.string.scene_remote_button_slot_label)) }, singleLine = true)
|
||||
} else {
|
||||
Text(stringResource(R.string.scene_select_virtual_remote))
|
||||
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||
@@ -1107,7 +1103,7 @@ private fun AddActionDialog(
|
||||
confirmButton = {
|
||||
val canConfirm = when (actionType) {
|
||||
0 -> socketName.isNotBlank()
|
||||
1 -> selectedButtonId.isNotBlank()
|
||||
1 -> availableRemotes.isNotEmpty() && selectedButtonId.isNotBlank()
|
||||
3 -> notifyTitle.isNotBlank()
|
||||
else -> true
|
||||
}
|
||||
@@ -1119,8 +1115,6 @@ private fun AddActionDialog(
|
||||
val remote = availableRemotes.getOrNull(selectedRemoteIndex)
|
||||
if (remote != null) {
|
||||
onAddRemote(remote.id.value, remote.displayName, selectedButtonId, selectedButtonName)
|
||||
} else {
|
||||
onAddRemote("default-ir", DEFAULT_IR_DEVICE_NAME, selectedButtonId, selectedButtonName)
|
||||
}
|
||||
}
|
||||
2 -> onAddDelay(delaySeconds)
|
||||
|
||||
Reference in New Issue
Block a user