From 638bd743a5fe2319a917e6a935b10540042a9433 Mon Sep 17 00:00:00 2001
From: epenet <6771947+epenet@users.noreply.github.com>
Date: Fri, 29 Oct 2021 00:37:20 +0200
Subject: [PATCH] Use DeviceInfo in xbox (#58640)

---
 homeassistant/components/xbox/base_sensor.py  | 17 +++++++++--------
 homeassistant/components/xbox/media_player.py | 18 +++++++++---------
 homeassistant/components/xbox/remote.py       | 18 +++++++++---------
 3 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/homeassistant/components/xbox/base_sensor.py b/homeassistant/components/xbox/base_sensor.py
index c463b31d3c5..8ef0928f903 100644
--- a/homeassistant/components/xbox/base_sensor.py
+++ b/homeassistant/components/xbox/base_sensor.py
@@ -3,6 +3,7 @@ from __future__ import annotations
 
 from yarl import URL
 
+from homeassistant.helpers.entity import DeviceInfo
 from homeassistant.helpers.update_coordinator import CoordinatorEntity
 
 from . import PresenceData, XboxUpdateCoordinator
@@ -66,12 +67,12 @@ class XboxBaseSensorEntity(CoordinatorEntity):
         return self.attribute == "online"
 
     @property
-    def device_info(self):
+    def device_info(self) -> DeviceInfo:
         """Return a device description for device registry."""
-        return {
-            "identifiers": {(DOMAIN, "xbox_live")},
-            "name": "Xbox Live",
-            "manufacturer": "Microsoft",
-            "model": "Xbox Live",
-            "entry_type": "service",
-        }
+        return DeviceInfo(
+            entry_type="service",
+            identifiers={(DOMAIN, "xbox_live")},
+            manufacturer="Microsoft",
+            model="Xbox Live",
+            name="Xbox Live",
+        )
diff --git a/homeassistant/components/xbox/media_player.py b/homeassistant/components/xbox/media_player.py
index 17390f81fad..cdeb016d604 100644
--- a/homeassistant/components/xbox/media_player.py
+++ b/homeassistant/components/xbox/media_player.py
@@ -29,6 +29,7 @@ from homeassistant.components.media_player.const import (
     SUPPORT_VOLUME_STEP,
 )
 from homeassistant.const import STATE_OFF, STATE_ON, STATE_PAUSED, STATE_PLAYING
+from homeassistant.helpers.entity import DeviceInfo
 from homeassistant.helpers.update_coordinator import CoordinatorEntity
 
 from . import ConsoleData, XboxUpdateCoordinator
@@ -213,21 +214,20 @@ class XboxMediaPlayer(CoordinatorEntity, MediaPlayerEntity):
             await self.client.smartglass.launch_app(self._console.id, media_id)
 
     @property
-    def device_info(self):
+    def device_info(self) -> DeviceInfo:
         """Return a device description for device registry."""
         # Turns "XboxOneX" into "Xbox One X" for display
         matches = re.finditer(
             ".+?(?:(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|$)",
             self._console.console_type,
         )
-        model = " ".join([m.group(0) for m in matches])
-
-        return {
-            "identifiers": {(DOMAIN, self._console.id)},
-            "name": self._console.name,
-            "manufacturer": "Microsoft",
-            "model": model,
-        }
+
+        return DeviceInfo(
+            identifiers={(DOMAIN, self._console.id)},
+            manufacturer="Microsoft",
+            model=" ".join([m.group(0) for m in matches]),
+            name=self._console.name,
+        )
 
 
 def _find_media_image(images: list[Image]) -> Image | None:
diff --git a/homeassistant/components/xbox/remote.py b/homeassistant/components/xbox/remote.py
index 31e6220172a..04f25c5f632 100644
--- a/homeassistant/components/xbox/remote.py
+++ b/homeassistant/components/xbox/remote.py
@@ -20,6 +20,7 @@ from homeassistant.components.remote import (
     DEFAULT_DELAY_SECS,
     RemoteEntity,
 )
+from homeassistant.helpers.entity import DeviceInfo
 from homeassistant.helpers.update_coordinator import CoordinatorEntity
 
 from . import ConsoleData, XboxUpdateCoordinator
@@ -98,18 +99,17 @@ class XboxRemote(CoordinatorEntity, RemoteEntity):
                 await asyncio.sleep(delay)
 
     @property
-    def device_info(self):
+    def device_info(self) -> DeviceInfo:
         """Return a device description for device registry."""
         # Turns "XboxOneX" into "Xbox One X" for display
         matches = re.finditer(
             ".+?(?:(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|$)",
             self._console.console_type,
         )
-        model = " ".join([m.group(0) for m in matches])
-
-        return {
-            "identifiers": {(DOMAIN, self._console.id)},
-            "name": self._console.name,
-            "manufacturer": "Microsoft",
-            "model": model,
-        }
+
+        return DeviceInfo(
+            identifiers={(DOMAIN, self._console.id)},
+            manufacturer="Microsoft",
+            model=" ".join([m.group(0) for m in matches]),
+            name=self._console.name,
+        )
-- 
GitLab