From 0d21e81b82821a06ee19b180184b1557dbc27104 Mon Sep 17 00:00:00 2001 From: Sven van Heugten Date: Wed, 14 Jan 2026 19:55:58 +0100 Subject: [PATCH] Introduce a global remoteControlledLights value --- NightLight.Core.Tests/LightArbitraries.fs | 13 +++---------- NightLight.Core/Models.fs | 3 +++ NightLight.Core/NightLightStateMachine.fs | 6 ++---- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/NightLight.Core.Tests/LightArbitraries.fs b/NightLight.Core.Tests/LightArbitraries.fs index 026e0b1..d1de91a 100644 --- a/NightLight.Core.Tests/LightArbitraries.fs +++ b/NightLight.Core.Tests/LightArbitraries.fs @@ -15,25 +15,18 @@ type ArbitraryNonRemotelyControlledLight = type ArbitraryLeftRemotelyControlledLight = static member Light() = - lights + remoteControlledLights |> Seq.filter _.ControlledWithRemote.IsRemoteLeft |> Gen.elements |> Arb.fromGen type ArbitraryRightRemotelyControlledLight = static member Light() = - lights + remoteControlledLights |> Seq.filter _.ControlledWithRemote.IsRemoteRight |> Gen.elements |> Arb.fromGen type ArbitraryRemotelyControlledLight = static member Light() = - lights - |> Seq.filter (fun light -> - match light.ControlledWithRemote with - | RemoteLeft -> true - | RemoteRight -> true - | NonRemote -> false) - |> Gen.elements - |> Arb.fromGen + remoteControlledLights |> Gen.elements |> Arb.fromGen diff --git a/NightLight.Core/Models.fs b/NightLight.Core/Models.fs index 1b1237d..989b2c6 100644 --- a/NightLight.Core/Models.fs +++ b/NightLight.Core/Models.fs @@ -73,4 +73,7 @@ let lights = Bulb = IkeaBulb ControlledWithRemote = RemoteLeft } ] +let remoteControlledLights = + lights |> Seq.filter (not << _.ControlledWithRemote.IsNonRemote) + let remoteControlFriendlyName = DeviceFriendlyName "FjÀrrkontroll" diff --git a/NightLight.Core/NightLightStateMachine.fs b/NightLight.Core/NightLightStateMachine.fs index f85212d..c04ea1f 100644 --- a/NightLight.Core/NightLightStateMachine.fs +++ b/NightLight.Core/NightLightStateMachine.fs @@ -33,9 +33,6 @@ type NightLightStateMachine private (maybeTime: DateTime option, lightToState: M result { let maybePartOfDay = maybeTime |> Option.map getPartOfDay - let remoteControlledLights = - lights |> Seq.filter (not << _.ControlledWithRemote.IsNonRemote) - let updateLightStateForRemoteControlledLights desiredLightState = remoteControlledLights |> Seq.fold (fun acc key -> Map.add key desiredLightState acc) lightToState @@ -61,7 +58,8 @@ type NightLightStateMachine private (maybeTime: DateTime option, lightToState: M | PressedLeft -> updateLightStateForRemoteControlledLights Off |> Map.add - (lights |> Seq.find (fun light -> light.ControlledWithRemote = RemoteLeft)) + (remoteControlledLights + |> Seq.find (fun light -> light.ControlledWithRemote = RemoteLeft)) On NightLightStateMachine(maybeTime, newLightToState),