Render identicons in notifications
Render an svg, then canvas, then data url. Fixes #325 // FREEBIEpull/749/head
parent
3bd9108f6e
commit
0ebdf08ceb
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* vim: ts=4:sw=4:expandtab
|
||||
*/
|
||||
(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;
|
||||
},
|
||||
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: 44, maxHeight: 44
|
||||
});
|
||||
var ctx = canvas.getContext('2d');
|
||||
ctx.drawImage(img, 0, 0);
|
||||
URL.revokeObjectURL(svgurl);
|
||||
resolve(canvas.toDataURL("image/png"));
|
||||
};
|
||||
|
||||
img.src = svgurl;
|
||||
});
|
||||
}
|
||||
});
|
||||
})();
|
Loading…
Reference in New Issue