From 1c8487a7e73a6828b8ea1ca354e5675cb6ad6d6d Mon Sep 17 00:00:00 2001 From: Manu <4445816+tr4nt0r@users.noreply.github.com> Date: Sun, 19 Oct 2025 08:44:11 +0200 Subject: [PATCH] Fix wrong `in game` sensor state in Xbox integration (#154799) --- homeassistant/components/xbox/coordinator.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/xbox/coordinator.py b/homeassistant/components/xbox/coordinator.py index bf5393d19177..daa6fc8b5357 100644 --- a/homeassistant/components/xbox/coordinator.py +++ b/homeassistant/components/xbox/coordinator.py @@ -2,7 +2,6 @@ from __future__ import annotations -from contextlib import suppress from dataclasses import dataclass from datetime import timedelta import logging @@ -154,10 +153,14 @@ class XboxUpdateCoordinator(DataUpdateCoordinator[XboxData]): def _build_presence_data(person: Person) -> PresenceData: """Build presence data from a person.""" active_app: PresenceDetail | None = None - with suppress(StopIteration): - active_app = next( - presence for presence in person.presence_details if presence.is_primary - ) + + active_app = next( + (presence for presence in person.presence_details if presence.is_primary), + None, + ) + in_game = ( + active_app is not None and active_app.is_game and active_app.state == "Active" + ) return PresenceData( xuid=person.xuid, @@ -166,7 +169,7 @@ def _build_presence_data(person: Person) -> PresenceData: online=person.presence_state == "Online", status=person.presence_text, in_party=person.multiplayer_summary.in_party > 0, - in_game=active_app is not None and active_app.is_game, + in_game=in_game, in_multiplayer=person.multiplayer_summary.in_multiplayer_session, gamer_score=person.gamer_score, gold_tenure=person.detail.tenure,