@@ -115,18 +115,44 @@ protected void onApplianceDescriptionChangeEvent(List<DeviceDescriptionChange> d
115115 case DRYER_DRYING_TARGET_KEY -> updateEnumOptionDescriptionIfLinked (CHANNEL_DRYER_DRYING_TARGET , key );
116116 case DRYER_WRINKLE_GUARD_KEY -> updateEnumOptionDescriptionIfLinked (CHANNEL_DRYER_WRINKLE_GUARD , key );
117117 case ROOT_OPTION_LIST_KEY , LAUNDRY_CARE_OPTION_LIST_KEY -> {
118- updateReadonlyEnumOptionDescriptionIfLinked (CHANNEL_LAUNDRY_CARE_PROCESS_PHASE , key );
119- updateEnumOptionDescriptionIfLinked (CHANNEL_WASHER_TEMPERATURE , key );
120- updateEnumOptionDescriptionIfLinked (CHANNEL_WASHER_SPIN_SPEED , key );
121- updateEnumOptionDescriptionIfLinked (CHANNEL_WASHER_RINSE_PLUS , key );
122- updateEnumOptionDescriptionIfLinked (CHANNEL_WASHER_STAINS , key );
123- updateEnumOptionDescriptionIfLinked (CHANNEL_DRYER_DRYING_TARGET , key );
124- updateEnumOptionDescriptionIfLinked (CHANNEL_DRYER_WRINKLE_GUARD , key );
118+ getDeviceDescriptionServiceOptional ().ifPresent (deviceDescriptionService -> {
119+ if (!keyFoundInList (deviceDescriptionChanges , LAUNDRY_CARE_PROCESS_PHASE_KEY )
120+ && optionKeyExists (deviceDescriptionService , LAUNDRY_CARE_PROCESS_PHASE_KEY )) {
121+ updateReadonlyEnumOptionDescriptionIfLinked (CHANNEL_LAUNDRY_CARE_PROCESS_PHASE ,
122+ LAUNDRY_CARE_PROCESS_PHASE_KEY );
123+ } else if (!keyFoundInList (deviceDescriptionChanges , DRYER_PROCESS_PHASE_KEY )
124+ && optionKeyExists (deviceDescriptionService , DRYER_PROCESS_PHASE_KEY )) {
125+ updateReadonlyEnumOptionDescriptionIfLinked (CHANNEL_LAUNDRY_CARE_PROCESS_PHASE ,
126+ DRYER_PROCESS_PHASE_KEY );
127+ }
128+ });
129+ if (!keyFoundInList (deviceDescriptionChanges , WASHER_TEMPERATURE_KEY )) {
130+ updateEnumOptionDescriptionIfLinked (CHANNEL_WASHER_TEMPERATURE , WASHER_TEMPERATURE_KEY );
131+ }
132+ if (!keyFoundInList (deviceDescriptionChanges , WASHER_SPIN_SPEED_KEY )) {
133+ updateEnumOptionDescriptionIfLinked (CHANNEL_WASHER_SPIN_SPEED , WASHER_SPIN_SPEED_KEY );
134+ }
135+ if (!keyFoundInList (deviceDescriptionChanges , WASHER_RINSE_PLUS_KEY )) {
136+ updateEnumOptionDescriptionIfLinked (CHANNEL_WASHER_RINSE_PLUS , WASHER_RINSE_PLUS_KEY );
137+ }
138+ if (!keyFoundInList (deviceDescriptionChanges , WASHER_STAINS_KEY )) {
139+ updateEnumOptionDescriptionIfLinked (CHANNEL_WASHER_STAINS , WASHER_STAINS_KEY );
140+ }
141+ if (!keyFoundInList (deviceDescriptionChanges , DRYER_DRYING_TARGET_KEY )) {
142+ updateEnumOptionDescriptionIfLinked (CHANNEL_DRYER_DRYING_TARGET , DRYER_DRYING_TARGET_KEY );
143+ }
144+ if (!keyFoundInList (deviceDescriptionChanges , DRYER_WRINKLE_GUARD_KEY )) {
145+ updateEnumOptionDescriptionIfLinked (CHANNEL_DRYER_WRINKLE_GUARD , DRYER_WRINKLE_GUARD_KEY );
146+ }
125147 }
126148 }
127149 });
128150 }
129151
152+ private boolean keyFoundInList (List <DeviceDescriptionChange > deviceDescriptionChanges , String key ) {
153+ return deviceDescriptionChanges .stream ().map (c -> c .key ()).filter (k -> k .equals (key )).findFirst ().isPresent ();
154+ }
155+
130156 @ Override
131157 protected void onApplianceValueEvent (Value value , Resource resource ) {
132158 super .onApplianceValueEvent (value , resource );
0 commit comments