FIX: cropAvatar
This commit is contained in:
parent
8d967d9065
commit
566b267981
|
@ -17,12 +17,12 @@ export default Em.Component.extend(UploadMixin, {
|
||||||
// indeed, the server gives us back the url to the file we've just uploaded
|
// indeed, the server gives us back the url to the file we've just uploaded
|
||||||
// often, this file is not a square, so we need to crop it properly
|
// often, this file is not a square, so we need to crop it properly
|
||||||
// this will also capture the first frame of animated avatars when they're not allowed
|
// this will also capture the first frame of animated avatars when they're not allowed
|
||||||
Discourse.Utilities.cropAvatar(upload.url, upload.original_filename).then(avatarTemplate => {
|
Discourse.Utilities.cropAvatar(upload.url).then(avatarTemplate => {
|
||||||
this.set("uploadedAvatarTemplate", avatarTemplate);
|
this.set("uploadedAvatarTemplate", avatarTemplate);
|
||||||
|
|
||||||
// indicates the users is using an uploaded avatar (must happen after cropping, otherwise
|
// indicates the users is using an uploaded avatar (must happen after cropping, otherwise
|
||||||
// we will attempt to load an invalid avatar and cache a redirect to old one, uploadedAvatarTemplate
|
// we will attempt to load an invalid avatar and cache a redirect to old one, uploadedAvatarTemplate
|
||||||
// trumps over custom avatar upload id)
|
// trumps over custom_avatar_upload_id)
|
||||||
this.set("custom_avatar_upload_id", upload.id);
|
this.set("custom_avatar_upload_id", upload.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,6 @@ import { categoryBadgeHTML } from 'discourse/helpers/category-link';
|
||||||
// Modal for editing / creating a category
|
// Modal for editing / creating a category
|
||||||
export default ObjectController.extend(ModalFunctionality, {
|
export default ObjectController.extend(ModalFunctionality, {
|
||||||
foregroundColors: ['FFFFFF', '000000'],
|
foregroundColors: ['FFFFFF', '000000'],
|
||||||
categoryUploadUrl: '/uploads',
|
|
||||||
editingPermissions: false,
|
editingPermissions: false,
|
||||||
selectedTab: null,
|
selectedTab: null,
|
||||||
saving: false,
|
saving: false,
|
||||||
|
|
|
@ -310,11 +310,11 @@ Discourse.Utilities = {
|
||||||
|
|
||||||
@method cropAvatar
|
@method cropAvatar
|
||||||
@param {String} url The url of the avatar
|
@param {String} url The url of the avatar
|
||||||
@param {String} fileType The file type of the uploaded file
|
|
||||||
@returns {Promise} a promise that will eventually be the cropped avatar.
|
@returns {Promise} a promise that will eventually be the cropped avatar.
|
||||||
**/
|
**/
|
||||||
cropAvatar: function(url, fileType) {
|
cropAvatar: function(url) {
|
||||||
if (Discourse.SiteSettings.allow_animated_avatars && fileType === "image/gif") {
|
const extension = /\.(\w{2,})$/.exec(url)[1];
|
||||||
|
if (Discourse.SiteSettings.allow_animated_avatars && extension === "gif") {
|
||||||
// can't crop animated gifs... let the browser stretch the gif
|
// can't crop animated gifs... let the browser stretch the gif
|
||||||
return Ember.RSVP.resolve(url);
|
return Ember.RSVP.resolve(url);
|
||||||
} else {
|
} else {
|
||||||
|
@ -344,7 +344,7 @@ Discourse.Utilities = {
|
||||||
// draw the image into the canvas
|
// draw the image into the canvas
|
||||||
canvas.getContext("2d").drawImage(img, x, y, dimension, dimension, 0, 0, size, size);
|
canvas.getContext("2d").drawImage(img, x, y, dimension, dimension, 0, 0, size, size);
|
||||||
// retrieve the image from the canvas
|
// retrieve the image from the canvas
|
||||||
resolve(canvas.toDataURL(fileType));
|
resolve(canvas.toDataURL("image/" + extension));
|
||||||
};
|
};
|
||||||
// launch the onload event
|
// launch the onload event
|
||||||
image.src = url;
|
image.src = url;
|
||||||
|
|
|
@ -177,7 +177,7 @@ module("Discourse.Utilities.cropAvatar with animated avatars", {
|
||||||
asyncTestDiscourse("cropAvatar", function() {
|
asyncTestDiscourse("cropAvatar", function() {
|
||||||
expect(1);
|
expect(1);
|
||||||
|
|
||||||
utils.cropAvatar("/path/to/avatar.gif", "image/gif").then(function(avatarTemplate) {
|
utils.cropAvatar("/path/to/avatar.gif").then(function(avatarTemplate) {
|
||||||
equal(avatarTemplate, "/path/to/avatar.gif", "returns the url to the gif when animated gif are enabled");
|
equal(avatarTemplate, "/path/to/avatar.gif", "returns the url to the gif when animated gif are enabled");
|
||||||
start();
|
start();
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue