mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-04 04:57:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import {
 | 
						|
  MAXIMUM_FILE_UPLOAD_SIZE,
 | 
						|
  MAXIMUM_FILE_UPLOAD_SIZE_TWILIO_SMS_CHANNEL,
 | 
						|
} from 'shared/constants/messages';
 | 
						|
import { checkFileSizeLimit } from 'shared/helpers/FileHelper';
 | 
						|
import { DirectUpload } from 'activestorage';
 | 
						|
 | 
						|
export default {
 | 
						|
  methods: {
 | 
						|
    onFileUpload(file) {
 | 
						|
      if (this.globalConfig.directUploadsEnabled) {
 | 
						|
        this.onDirectFileUpload(file);
 | 
						|
      } else {
 | 
						|
        this.onIndirectFileUpload(file);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    onDirectFileUpload(file) {
 | 
						|
      const MAXIMUM_SUPPORTED_FILE_UPLOAD_SIZE = this.isATwilioSMSChannel
 | 
						|
        ? MAXIMUM_FILE_UPLOAD_SIZE_TWILIO_SMS_CHANNEL
 | 
						|
        : MAXIMUM_FILE_UPLOAD_SIZE;
 | 
						|
 | 
						|
      if (!file) {
 | 
						|
        return;
 | 
						|
      }
 | 
						|
      if (checkFileSizeLimit(file, MAXIMUM_SUPPORTED_FILE_UPLOAD_SIZE)) {
 | 
						|
        const upload = new DirectUpload(
 | 
						|
          file.file,
 | 
						|
          `/api/v1/accounts/${this.accountId}/conversations/${this.currentChat.id}/direct_uploads`,
 | 
						|
          {
 | 
						|
            directUploadWillCreateBlobWithXHR: xhr => {
 | 
						|
              xhr.setRequestHeader(
 | 
						|
                'api_access_token',
 | 
						|
                this.currentUser.access_token
 | 
						|
              );
 | 
						|
            },
 | 
						|
          }
 | 
						|
        );
 | 
						|
 | 
						|
        upload.create((error, blob) => {
 | 
						|
          if (error) {
 | 
						|
            this.showAlert(error);
 | 
						|
          } else {
 | 
						|
            this.attachFile({ file, blob });
 | 
						|
          }
 | 
						|
        });
 | 
						|
      } else {
 | 
						|
        this.showAlert(
 | 
						|
          this.$t('CONVERSATION.FILE_SIZE_LIMIT', {
 | 
						|
            MAXIMUM_SUPPORTED_FILE_UPLOAD_SIZE,
 | 
						|
          })
 | 
						|
        );
 | 
						|
      }
 | 
						|
    },
 | 
						|
    onIndirectFileUpload(file) {
 | 
						|
      const MAXIMUM_SUPPORTED_FILE_UPLOAD_SIZE = this.isATwilioSMSChannel
 | 
						|
        ? MAXIMUM_FILE_UPLOAD_SIZE_TWILIO_SMS_CHANNEL
 | 
						|
        : MAXIMUM_FILE_UPLOAD_SIZE;
 | 
						|
      if (!file) {
 | 
						|
        return;
 | 
						|
      }
 | 
						|
      if (checkFileSizeLimit(file, MAXIMUM_SUPPORTED_FILE_UPLOAD_SIZE)) {
 | 
						|
        this.attachFile({ file });
 | 
						|
      } else {
 | 
						|
        this.showAlert(
 | 
						|
          this.$t('CONVERSATION.FILE_SIZE_LIMIT', {
 | 
						|
            MAXIMUM_SUPPORTED_FILE_UPLOAD_SIZE,
 | 
						|
          })
 | 
						|
        );
 | 
						|
      }
 | 
						|
    },
 | 
						|
  },
 | 
						|
};
 |