itizawa 6 лет назад
Родитель
Сommit
99fafd04b7

+ 3 - 6
src/client/js/components/Me/ImageCropModal.jsx

@@ -48,10 +48,7 @@ class ImageCropModal extends React.Component {
           reject(new Error('Canvas is empty'));
           reject(new Error('Canvas is empty'));
           return;
           return;
         }
         }
-        blob.name = fileName;
-        window.URL.revokeObjectURL(this.fileUrl);
-        this.fileUrl = window.URL.createObjectURL(blob);
-        resolve(this.fileUrl);
+        resolve(blob);
       }, 'image/jpeg');
       }, 'image/jpeg');
     });
     });
   }
   }
@@ -59,8 +56,8 @@ class ImageCropModal extends React.Component {
   async crop() {
   async crop() {
     // crop immages
     // crop immages
     if (this.state.imageRef && this.state.crop.width && this.state.crop.height) {
     if (this.state.imageRef && this.state.crop.width && this.state.crop.height) {
-      const croppedImageUrl = await this.getCroppedImg(this.state.imageRef, this.state.crop, '/images/icons/user');
-      this.props.onCropCompleted(croppedImageUrl);
+      const croppedImage = await this.getCroppedImg(this.state.imageRef, this.state.crop, '/images/icons/user');
+      this.props.onCropCompleted(croppedImage);
     }
     }
   }
   }
 
 

+ 2 - 3
src/client/js/components/Me/ProfileImageSettings.jsx

@@ -56,11 +56,10 @@ class ProfileImageSettings extends React.Component {
     }
     }
   }
   }
 
 
-  async onCropCompleted(croppedImageUrl) {
+  async onCropCompleted(croppedImage) {
     const { t, personalContainer } = this.props;
     const { t, personalContainer } = this.props;
-    personalContainer.setState({ croppedImageUrl });
     try {
     try {
-      await personalContainer.uploadAttachment(croppedImageUrl);
+      await personalContainer.uploadAttachment(croppedImage);
       toastSuccess(t('toaster.update_successed', { target: t('Upload Image') }));
       toastSuccess(t('toaster.update_successed', { target: t('Upload Image') }));
     }
     }
     catch (err) {
     catch (err) {

+ 6 - 2
src/client/js/services/PersonalContainer.js

@@ -182,9 +182,13 @@ export default class PersonalContainer extends Container {
   /**
   /**
    * Upload image
    * Upload image
    */
    */
-  async uploadAttachment() {
+  async uploadAttachment(file) {
     try {
     try {
-      // TODO GW-1218 create api
+      const formData = new FormData();
+      formData.append('file', file);
+      formData.append('_csrf', this.appContainer.csrfToken);
+      const response = await this.appContainer.apiPost('/attachments.uploadProfileImage', formData);
+      this.setState({ uploadedPictureSrc: response.attachment.filePathProxied });
     }
     }
     catch (err) {
     catch (err) {
       this.setState({ retrieveError: err });
       this.setState({ retrieveError: err });