"""Support for tracking a Nissan Leaf."""
import logging

from homeassistant.helpers.dispatcher import dispatcher_connect
from homeassistant.util import slugify

from . import DATA_LEAF, DATA_LOCATION, SIGNAL_UPDATE_LEAF

_LOGGER = logging.getLogger(__name__)

ICON_CAR = "mdi:car"


def setup_scanner(hass, config, see, discovery_info=None):
    """Set up the Nissan Leaf tracker."""
    if discovery_info is None:
        return False

    def see_vehicle():
        """Handle the reporting of the vehicle position."""
        for vin, datastore in hass.data[DATA_LEAF].items():
            host_name = datastore.leaf.nickname
            dev_id = "nissan_leaf_{}".format(slugify(host_name))
            if not datastore.data[DATA_LOCATION]:
                _LOGGER.debug("No position found for vehicle %s", vin)
                return
            _LOGGER.debug(
                "Updating device_tracker for %s with position %s",
                datastore.leaf.nickname,
                datastore.data[DATA_LOCATION].__dict__,
            )
            attrs = {"updated_on": datastore.last_location_response}
            see(
                dev_id=dev_id,
                host_name=host_name,
                gps=(
                    datastore.data[DATA_LOCATION].latitude,
                    datastore.data[DATA_LOCATION].longitude,
                ),
                attributes=attrs,
                icon=ICON_CAR,
            )

    dispatcher_connect(hass, SIGNAL_UPDATE_LEAF, see_vehicle)

    return True
