Handle Mobile App registrations for device names containing of only emoji (#36957)

This commit is contained in:
Tom Brien 2020-06-21 17:12:15 +01:00 committed by GitHub
parent d88efe405e
commit 29f128eaad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 1 deletions

View File

@ -3,6 +3,7 @@ import secrets
from typing import Dict from typing import Dict
from aiohttp.web import Request, Response from aiohttp.web import Request, Response
import emoji
from nacl.secret import SecretBox from nacl.secret import SecretBox
import voluptuous as vol import voluptuous as vol
@ -10,6 +11,7 @@ from homeassistant.components.http import HomeAssistantView
from homeassistant.components.http.data_validator import RequestDataValidator from homeassistant.components.http.data_validator import RequestDataValidator
from homeassistant.const import CONF_WEBHOOK_ID, HTTP_CREATED from homeassistant.const import CONF_WEBHOOK_ID, HTTP_CREATED
from homeassistant.helpers import config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.util import slugify
from .const import ( from .const import (
ATTR_APP_DATA, ATTR_APP_DATA,
@ -75,6 +77,20 @@ class RegistrationsView(HomeAssistantView):
data[CONF_USER_ID] = request["hass_user"].id data[CONF_USER_ID] = request["hass_user"].id
if slugify(data[ATTR_DEVICE_NAME], separator=""):
# if slug is not empty and would not only be underscores
# use DEVICE_NAME
pass
elif emoji.emoji_count(data[ATTR_DEVICE_NAME]):
# If otherwise empty string contains emoji
# use descriptive name of the first emoji
data[ATTR_DEVICE_NAME] = emoji.demojize(
emoji.emoji_lis(data[ATTR_DEVICE_NAME])[0]["emoji"]
).replace(":", "")
else:
# Fallback to DEVICE_ID
data[ATTR_DEVICE_NAME] = data[ATTR_DEVICE_ID]
await hass.async_create_task( await hass.async_create_task(
hass.config_entries.flow.async_init( hass.config_entries.flow.async_init(
DOMAIN, data=data, context={"source": "registration"} DOMAIN, data=data, context={"source": "registration"}

View File

@ -3,7 +3,7 @@
"name": "Mobile App", "name": "Mobile App",
"config_flow": true, "config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/mobile_app", "documentation": "https://www.home-assistant.io/integrations/mobile_app",
"requirements": ["PyNaCl==1.3.0"], "requirements": ["PyNaCl==1.3.0", "emoji==0.5.4"],
"dependencies": ["http", "webhook", "person"], "dependencies": ["http", "webhook", "person"],
"after_dependencies": ["cloud", "camera"], "after_dependencies": ["cloud", "camera"],
"codeowners": ["@robbiet480"], "codeowners": ["@robbiet480"],

View File

@ -11,6 +11,7 @@ ciso8601==2.1.3
cryptography==2.9.2 cryptography==2.9.2
defusedxml==0.6.0 defusedxml==0.6.0
distro==1.5.0 distro==1.5.0
emoji==0.5.4
hass-nabucasa==0.34.6 hass-nabucasa==0.34.6
home-assistant-frontend==20200620.0 home-assistant-frontend==20200620.0
importlib-metadata==1.6.0;python_version<'3.8' importlib-metadata==1.6.0;python_version<'3.8'

View File

@ -528,6 +528,9 @@ eliqonline==1.2.2
# homeassistant.components.elkm1 # homeassistant.components.elkm1
elkm1-lib==0.7.18 elkm1-lib==0.7.18
# homeassistant.components.mobile_app
emoji==0.5.4
# homeassistant.components.emulated_roku # homeassistant.components.emulated_roku
emulated_roku==0.2.1 emulated_roku==0.2.1

View File

@ -244,6 +244,9 @@ elgato==0.2.0
# homeassistant.components.elkm1 # homeassistant.components.elkm1
elkm1-lib==0.7.18 elkm1-lib==0.7.18
# homeassistant.components.mobile_app
emoji==0.5.4
# homeassistant.components.emulated_roku # homeassistant.components.emulated_roku
emulated_roku==0.2.1 emulated_roku==0.2.1