mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-04 13:07:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* global axios */
 | 
						|
 | 
						|
/**
 | 
						|
 * Constants and Configuration
 | 
						|
 */
 | 
						|
 | 
						|
// Version for the API endpoint.
 | 
						|
const API_VERSION = 'v1';
 | 
						|
 | 
						|
// Default headers to be used in the axios request.
 | 
						|
const HEADERS = {
 | 
						|
  'Content-Type': 'multipart/form-data',
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * Uploads a file to the server.
 | 
						|
 *
 | 
						|
 * This function sends a POST request to a given API endpoint and uploads the specified file.
 | 
						|
 * The function uses FormData to wrap the file and axios to send the request.
 | 
						|
 *
 | 
						|
 * @param {File} file - The file to be uploaded. It should be a File object (typically coming from a file input element).
 | 
						|
 * @param {string} accountId - The account ID.
 | 
						|
 * @returns {Promise} A promise that resolves with the server's response when the upload is successful, or rejects if there's an error.
 | 
						|
 */
 | 
						|
export async function uploadFile(file, accountId) {
 | 
						|
  if (!accountId) {
 | 
						|
    accountId = window.location.pathname.split('/')[3];
 | 
						|
  }
 | 
						|
 | 
						|
  // Append the file to the FormData instance under the key 'attachment'.
 | 
						|
  let formData = new FormData();
 | 
						|
  formData.append('attachment', file);
 | 
						|
 | 
						|
  const { data } = await axios.post(
 | 
						|
    `/api/${API_VERSION}/accounts/${accountId}/upload`,
 | 
						|
    formData,
 | 
						|
    { headers: HEADERS }
 | 
						|
  );
 | 
						|
 | 
						|
  return {
 | 
						|
    fileUrl: data.file_url,
 | 
						|
    blobKey: data.blob_key,
 | 
						|
    blobId: data.blob_id,
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Uploads an image from an external URL.
 | 
						|
 *
 | 
						|
 * @param {string} url - The external URL of the image.
 | 
						|
 * @param {string} accountId - The account ID.
 | 
						|
 * @returns {Promise} A promise that resolves with the server's response.
 | 
						|
 */
 | 
						|
export async function uploadExternalImage(url, accountId) {
 | 
						|
  if (!accountId) {
 | 
						|
    accountId = window.location.pathname.split('/')[3];
 | 
						|
  }
 | 
						|
 | 
						|
  const { data } = await axios.post(
 | 
						|
    `/api/${API_VERSION}/accounts/${accountId}/upload`,
 | 
						|
    { external_url: url },
 | 
						|
    { headers: { 'Content-Type': 'application/json' } }
 | 
						|
  );
 | 
						|
 | 
						|
  return {
 | 
						|
    fileUrl: data.file_url,
 | 
						|
    blobKey: data.blob_key,
 | 
						|
    blobId: data.blob_id,
 | 
						|
  };
 | 
						|
}
 |