Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ val MAP_DOMAINS = listOf(
)

val NOT_ACTIONABLE_DOMAINS = listOf(
"alarm_control_panel",
"binary_sensor",
"sensor",
)
Expand All @@ -45,9 +44,3 @@ fun canNavigate(entity: Entity): Boolean {
((entity.attributes["longitude"] as? Number)?.toDouble() != null)
)
}

fun alarmHasNoCode(entity: Entity): Boolean {
return entity.domain == "alarm_control_panel" &&
entity.attributes["code_format"] as? String == null &&
entity.supportsAlarmControlPanelArmAway()
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ import io.homeassistant.companion.android.common.data.websocket.impl.entities.En
import io.homeassistant.companion.android.util.vehicle.MAP_DOMAINS
import io.homeassistant.companion.android.util.vehicle.NOT_ACTIONABLE_DOMAINS
import io.homeassistant.companion.android.util.vehicle.SUPPORTED_DOMAINS
import io.homeassistant.companion.android.util.vehicle.alarmHasNoCode
import io.homeassistant.companion.android.util.vehicle.canNavigate
import io.homeassistant.companion.android.util.vehicle.getChangeServerGridItem
import io.homeassistant.companion.android.util.vehicle.getDomainList
Expand Down Expand Up @@ -174,7 +173,7 @@ class EntityGridVehicleScreen(
if (entity.isExecuting()) {
gridItem.setLoading(entity.isExecuting())
} else {
if (entity.domain !in NOT_ACTIONABLE_DOMAINS || canNavigate(entity) || alarmHasNoCode(entity)) {
if (entity.domain !in NOT_ACTIONABLE_DOMAINS || canNavigate(entity)) {
Comment thread
jpelgrom marked this conversation as resolved.
Outdated
gridItem
.setOnClickListener {
Timber.i("${entity.entityId} clicked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,14 @@ fun Entity.getCoverPosition(): EntityPosition? {
}
}

fun Entity.alarmHasNoCode(): Boolean {
return domain == "alarm_control_panel" && attributes["code_format"] as? String == null
}

fun Entity.alarmCanBeArmedWithoutCode(): Boolean {
return domain == "alarm_control_panel" && attributes["code_arm_required"] as? Boolean == true
}

fun Entity.supportsAlarmControlPanelArmAway(): Boolean {
return try {
if (domain != "alarm_control_panel") return false
Expand Down Expand Up @@ -809,7 +817,13 @@ suspend fun Entity.onPressed(integrationRepository: IntegrationRepository) {
}

"alarm_control_panel" -> {
if (state != "disarmed") "alarm_disarm" else "alarm_arm_away"
if (state == "disarmed" && supportsAlarmControlPanelArmAway() && alarmCanBeArmedWithoutCode()) {
"alarm_arm_away"
} else if (state != "disarmed" && alarmHasNoCode()) {
"alarm_disarm"
} else {
null
}
}

in EntityExt.DOMAINS_PRESS -> "press"
Expand All @@ -825,6 +839,8 @@ suspend fun Entity.onPressed(integrationRepository: IntegrationRepository) {
else -> "toggle"
}

if (action == null) return;
Comment thread Fixed

integrationRepository.callAction(
domain = this.domain,
action = action,
Expand Down