package Ġcom . example . hass control spro vider . ui . control Ċ Ċ import Ġandroidx . compose . foundation . layout . Spacer Ċ import Ġandroidx . compose . foundation . layout . height Ċ import Ġandroidx . compose . material . Material Theme Ċ import Ġandroidx . compose . material . Switch Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . li ved ata . observe As State Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . ui . tool ing . preview . Preview Ċ import Ġcom . example . hass control spro vider . entity . Availability Ċ import Ġcom . example . hass control spro vider . entity . H ass Switch Ċ import Ġcom . example . hass control spro vider . ui . H ass Theme Ċ import Ġjava . time . Z onedDateTime Ċ Ċ @ Composable Ċ fun ĠSwitch Control ( control : ĠLive Data < H ass Switch >, Ġon Toggle : Ġ( Boolean ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġcontrol State Ġby Ġcontrol . observe As State ( initial Switch State ) ĊĊĠĠĠ ĠControl Ġ{ ĊĠĠĠĠĠĠĠ ĠEntity Info ( control State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSwitch ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchecked Ġ= Ġcontrol State . enabled , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Checked Change Ġ= Ġon Toggle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . primary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . height ( 3 2 . dp )) ĊĠĠĠĠĠĠĠ ĠEntity Attribute ( name Ġ= Ġ" State ", Ġvalue Ġ= Ġif Ġ( control State . enabled ) Ġ" ON " Ġelse Ġ" OFF ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Preview ( name Ġ= Ġ" Switch ") Ċ @ Composable Ċ fun ĠPreview Switch Control () Ġ{ ĊĠĠĠ Ġval Ġswitch Ġ= ĠH ass Switch ( ĊĠĠĠĠĠĠĠ Ġentity Id Ġ= Ġ" switch . zig bee 2 mqtt _ permit _ join ", ĊĠĠĠĠĠĠĠ Ġavailability Ġ= ĠAvailability . AVAILABLE , ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Z ig bee 2 MQTT Ġpermit Ġjoin ", ĊĠĠĠĠĠĠĠ Ġstatus Ġ= Ġ" on ", ĊĠĠĠĠĠĠĠ Ġlast Changed Ġ= ĠZ onedDateTime . now (). minus Minutes ( 8 ), ĊĠĠĠĠĠĠĠ Ġenabled Ġ= Ġfalse ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġlive Data Ġ= ĠMutable LiveData ( switch ) ĊĊĠĠĠ ĠH ass Theme Ġ{ ĊĠĠĠĠĠĠĠ ĠSwitch Control ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Toggle Ġ= Ġ{ Ġlive Data . value Ġ= Ġlive Data . value !!. copy ( enabled Ġ= Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval Ġinitial Switch State Ġ= ĠH ass Switch ( ĊĠĠĠ Ġentity Id Ġ= Ġ"", ĊĠĠĠ Ġavailability Ġ= ĠAvailability . UN AVAILABLE , ĊĠĠĠ Ġname Ġ= Ġ"", ĊĠĠĠ Ġstatus Ġ= Ġ" un available ", ĊĠĠĠ Ġlast Changed Ġ= Ġnull , ĊĠĠĠ Ġenabled Ġ= Ġfalse Ċ )