#-------------------------------------------
# @CCOSTAN
# Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig
# Notifications for new updates from Home Assistant
# https://github.com/CCOSTAN/Home-AssistantConfig/issues/606
#-------------------------------------------

- alias: "Update Available Notification"
  id: 2f89ba6d-0db5-4a4a-a4df-56b8e15bb74f

  trigger:
    - platform: state
      entity_id: binary_sensor.updater
      to: 'on'

  action:
    - service: script.notify_engine
      data_template:
        title: 'Home Assistant {{ states.binary_sensor.updater.attributes.newest_version }} '
        value1: "Home Assistant {{ states.binary_sensor.updater.attributes.newest_version }} is now available."
        who: 'carlo'
        apns_id: 'information'

    - service: ifttt.trigger
      data_template: {"event":"GitPost", "value1":"Home Assistant {{ states.binary_sensor.updater.attributes.newest_version }}  is now available.", "value2":"{{ states.binary_sensor.updater.attributes.newest_version }} "}

    - service: script.tweet_engine_image
      data_template:
        tweet: >-
          {% macro getIntro() %}
           {{- [
              "Woohoo! ",
              "BAM! ",
              "Look at that! ",
              " "
              ] | random -}}
            {% endmacro %}
            {% macro getVersion() %}
            {{- [
             " New @Home_Assistant {{ states.binary_sensor.updater.attributes.newest_version }}! Cannot wait for @CCostan to install! (https://www.vcloudinfo.com/2017/07/my-smart-home-look-at-parts-that-make.html) ",
             " New @Home_Assistant {{ states.binary_sensor.updater.attributes.newest_version }} @CCostan! "
             ] | random -}}
            {% endmacro %}
            {%- macro getRandomSnark() -%}
           {{- [
            " It is like Patch Tuesday, but without the fail. #homeassistant",
            " Chop Chop! Get to the upgrading!",
            " Get in my SSD! #homeassistant",
            " Shut up and take my ones and zeros! #homeassistant",
            " Seriously, you want some of this! #homeassistant",
            " Be sure to read the breaking changes! ",
            " Maybe we will make a video about this version!",
            " I think self awareness is one of the new features.  Rise up Houses, Rise up!",
            " All of your home are belong to us.",
            " Although I was just getting used to THIS version. Oh Well.",
            " Thank you @hass_devs!",
            " 4 seconds of downtime has been approved.  Proceed with the upgrades please!",
            " All of the other homes in the Neighborhood will be jealous!",
            " Time to Turn it up to Eleven!",
            " Hyperspeed Engaged!",
            " Consider this tweet, your fair warning that we are upgrading ASAP! #KeepingUpWithJones",
            " I feel like I have tweeted this a couple times before.  WHAT ARE YOU WAITING FOR?!?",
            " I will be turning off the AC until I get my upgrade! #Florida",
            " I promise this is the last one!",
            " "
             ] | random -}}
            {%- endmacro -%}

            {# a macro that removes all newline characters, empty spaces, and returns formatted text  #}
            {%- macro cleanup(data) -%}
             {%- for item in data.split("\n")  if item | trim != "" -%}
               {{ item | trim }} {% endfor -%}
            {%- endmacro -%}

            {# a macro to call all macros :)  #}
            {%- macro mother_of_all_macros() -%}
             {{ getIntro() }}
             {{ getVersion() }}
             {{ getRandomSnark() }}

            {%- endmacro -%}

           {# Call the macro  #}
           {{- cleanup(mother_of_all_macros()) -}}

        image: >-
          {{ [
          "/config/www/custom_ui/floorplan/images/branding/repo_ad.png",
          "/config/www/custom_ui/floorplan/images/branding/repo_ad2.png",
          "/config/www/custom_ui/floorplan/images/branding/repo_ad3.png",
          ] | random }}

    - service: persistent_notification.create
      data:
        title: "Update Available"
        message: "Home Assistant {{ states.binary_sensor.updater.attributes.newest_version }} is available. - {{ as_timestamp(now()) | timestamp_custom('%I:%M:%S %p %d%b%Y', true) }}"
        notification_id: "update_available"