Skip to content

Commit 063ba48

Browse files
fix(#234): cache get_next_feed result to avoid repeated datetime computations (#247)
Co-authored-by: Jamie Jones <29973406+jjjonesjr33@users.noreply.github.com>
1 parent c78c69e commit 063ba48

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

custom_components/petlibro/devices/feeders/granary_smart_feeder.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ def __init__(self, *args, **kwargs):
1616
"""Initialize the feeder with default values."""
1717
super().__init__(*args, **kwargs)
1818
self._manual_feed_quantity = None # Default to None initially
19+
self._cached_get_next_feed = None
1920

2021
async def refresh(self):
2122
"""Refresh the device data from the API."""
23+
self._cached_get_next_feed = None
2224
try:
2325
await super().refresh() # Call the refresh method from Device
2426

@@ -285,6 +287,8 @@ def get_next_feed(self) -> dict:
285287
"utc_time": datetime,
286288
}
287289
"""
290+
if self._cached_get_next_feed is not None:
291+
return self._cached_get_next_feed
288292
now_utc = dt_util.now(dt_util.UTC)
289293
next_feed = {}
290294

@@ -323,6 +327,7 @@ def get_next_feed(self) -> dict:
323327
"id": feed["id"],
324328
"utc_time": candidate_dt_utc,
325329
}
330+
self._cached_get_next_feed = next_feed
326331
return next_feed
327332

328333
@property

0 commit comments

Comments
 (0)