[surepetcare] Check for null before updating pet location channels (#11235)

fixes #11234

Signed-off-by: Maarten Blokker <maarten.blokker@outlook.com>
This commit is contained in:
Maarten Blokker 2021-09-19 11:40:16 +02:00 committed by GitHub
parent 0c021ec795
commit ebd268a42e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -164,6 +164,21 @@ public class SurePetcarePetHandler extends SurePetcareBaseObjectHandler {
if (loc.since != null) {
updateState(PET_CHANNEL_LOCATION_CHANGED, new DateTimeType(loc.since));
}
if (loc.deviceId != null) {
SurePetcareDevice device = petcareAPI.getDevice(loc.deviceId.toString());
if (device != null) {
updateState(PET_CHANNEL_LOCATION_CHANGED_THROUGH, new StringType(device.name));
}
} else if (loc.userId != null) {
SurePetcareHousehold household = petcareAPI.getHousehold(pet.householdId.toString());
if (household != null) {
Long userId = loc.userId;
household.users.stream().map(user -> user.user).filter(user -> userId.equals(user.userId))
.forEach(user -> updateState(PET_CHANNEL_LOCATION_CHANGED_THROUGH,
new StringType(user.userName)));
}
}
}
updateState(PET_CHANNEL_DATE_OF_BIRTH, pet.dateOfBirth == null ? UnDefType.UNDEF
: new DateTimeType(pet.dateOfBirth.atStartOfDay(ZoneId.systemDefault())));
@ -175,20 +190,6 @@ public class SurePetcarePetHandler extends SurePetcareBaseObjectHandler {
updateState(PET_CHANNEL_TAG_IDENTIFIER, new StringType(tag.tag));
}
}
if (pet.status.activity.deviceId != null) {
SurePetcareDevice device = petcareAPI.getDevice(pet.status.activity.deviceId.toString());
if (device != null) {
updateState(PET_CHANNEL_LOCATION_CHANGED_THROUGH, new StringType(device.name));
}
} else if (pet.status.activity.userId != null) {
SurePetcareHousehold household = petcareAPI.getHousehold(pet.householdId.toString());
if (household != null) {
Long userId = pet.status.activity.userId;
household.users.stream().map(user -> user.user).filter(user -> userId.equals(user.userId))
.forEach(user -> updateState(PET_CHANNEL_LOCATION_CHANGED_THROUGH,
new StringType(user.userName)));
}
}
SurePetcarePetFeeding feeding = pet.status.feeding;
if (feeding != null) {
SurePetcareDevice device = petcareAPI.getDevice(feeding.deviceId.toString());