(function() {
  'use strict';
  window.Whisper = window.Whisper || {};

  /*
    * Render an avatar identicon to an svg for use in a notification.
    */
  Whisper.IdenticonSVGView = Whisper.View.extend({
    templateName: 'identicon-svg',
    initialize: function(options) {
      this.render_attributes = options;
      this.render_attributes.color = COLORS[this.render_attributes.color];
    },
    getSVGUrl: function() {
      var html = this.render().$el.html();
      var svg = new Blob([html], { type: 'image/svg+xml;charset=utf-8' });
      return URL.createObjectURL(svg);
    },
    getDataUrl: function() {
      var svgurl = this.getSVGUrl();
      return new Promise(function(resolve) {
        var img = document.createElement('img');
        img.onload = function() {
          var canvas = loadImage.scale(img, {
            canvas: true,
            maxWidth: 100,
            maxHeight: 100,
          });
          var ctx = canvas.getContext('2d');
          ctx.drawImage(img, 0, 0);
          URL.revokeObjectURL(svgurl);
          resolve(canvas.toDataURL('image/png'));
        };

        img.src = svgurl;
      });
    },
  });

  var COLORS = {
    red: '#EF5350',
    pink: '#EC407A',
    purple: '#AB47BC',
    deep_purple: '#7E57C2',
    indigo: '#5C6BC0',
    blue: '#2196F3',
    light_blue: '#03A9F4',
    cyan: '#00BCD4',
    teal: '#009688',
    green: '#4CAF50',
    light_green: '#7CB342',
    orange: '#FF9800',
    deep_orange: '#FF5722',
    amber: '#FFB300',
    blue_grey: '#607D8B',
  };
})();