UNPKG

react-native-priv-sdk

Version:

Official MyCover.ai SDK. Supercharge your product with MyCover AI Insurance offerings. Create embedded insurance offerings or full white label insurance applications that excite your customers.

236 lines (199 loc) • 7.88 kB
// import ApiService from '../api/api_service'; // Import ApiService import ApiEndpoints from '../../constants/ApiEndpoints'; // Import API endpoints // import * as FileSystem from 'expo-file-system'; // For file handling import GenericResponse from '../api/GenericResponse'; import type { FileData } from '../../screens/purchase/form/components/CustomImagePicker'; // import RNFS from 'react-native-fs'; // import RNFetchBlob from 'react-native-blob-util'; // import RNFS from 'react-native-fs'; // import RNFetchBlob from 'react-native-blob-util'; import axios from 'axios'; import globalObject from '../../store/globalObject'; import { getApiServiceV1 } from '../../utils/getApiService'; // const global = useGlobalStore((state: GlobalStore) => state); interface IFIleRepository { uploadFile( file: FileData, fileType?: string, isCompressed?: boolean, isInspectionLoading?: number, setIsInspectionLoading?: (data: number) => void ): Promise<GenericResponse>; } // const apiService = new ApiService('https://staging.api.mycover.ai/v1',globalObject.publicKey??'', true); const apiService = getApiServiceV1( true); class FileRepository implements IFIleRepository { async uploadFile( file: FileData, fileType?: string, // loadStore?: LoadStore, isCompressed?: boolean, _isInspectionLoading?: number, setIsInspectionLoading?: (data: number) => void ): Promise<GenericResponse> { // const newLoadStore = useLoadStore.getState(); // Access the loadStore directly const formData = new FormData(); let fileUri = file.uri; formData.append('file', { uri: `file://${fileUri}`, // fileType == 'video' ? `file://${fileUri}` : file.uri, name: 'testttt', //file.uri.split('/').pop(), type: fileType == 'video' || fileType == 'document' ? 'image/jpeg' : 'image/jpeg', }); const res = await apiService.postForm(ApiEndpoints.uploadFile, formData, { onUploadProgress: (progress) => { // if (loadStore) { // loadStore.setUploadProgress(progress); // } const scaledProgress = Math.ceil(80 + progress * 0.2); if (setIsInspectionLoading) { if (isCompressed) { const scaledProgress = Math.ceil(80 + progress * 0.2); setIsInspectionLoading(scaledProgress || 0); console.log('Upload Progress (80-100):', scaledProgress); } else { setIsInspectionLoading(progress || 0); } } // if (loadStore) { // if (isCompressed) { // loadStore.setUploadProgress(scaledProgress); // } else { // loadStore.setUploadProgress(progress); // } // } console.log('Upload Progress (80-100):', scaledProgress); }, }); return new GenericResponse(res); } async uploadVideoFile( file: FileData, fileType?: string ): Promise<GenericResponse> { const formData = new FormData(); let fileUri = file.uri; formData.append('file', { uri: fileType == 'image' ? `file://${fileUri}` : file.uri, name: file.uri.split('/').pop(), type: fileType == 'video' || fileType == 'document' ? 'image/jpeg' : 'image/jpeg', }); console.log(`file://${fileUri}`); const res = await axios.postForm(ApiEndpoints.uploadFile, formData, { headers: { 'Authorization': `Bearer ${ globalObject.publicKey ?? 'MCAPUBK_TEST|1acf339a-d36f-47e7-8e1b-fd0b76b61b0c' }`, 'Accept': 'application/json', 'Content-Type': 'multipart/form-data', }, // onUploadProgress: progressEvent => { // // Ensure total and loaded are available before calculating progress // if (progressEvent.total && progressEvent.loaded) { // const progress = Math.round( // (progressEvent.loaded * 100) / progressEvent.total, // ); // const scaledProgress = Math.ceil(80 + progress * 0.2); // if (loadStore) { // loadStore.setUploadProgress(scaledProgress); // Update the progress in the store // } // console.log('Upload Progress (80-100):', scaledProgress); // } else { // // Handle the case where total is undefined // console.warn('Unable to track progress: total size is undefined'); // } // }, }); // mentioned the family does not know and the wife knew what if both // is the company liable to pay if the family was not informed return new GenericResponse(res); } // async uploadVideoFile( // file: FileData, // fileType?: string, // onSendProgress?: (progressEvent: ProgressEvent) => void, // ): Promise<GenericResponse> { // log.info('test', file); // log.info('fileType', fileType); // const formData = new FormData(); // formData.append('file', { // uri: data.file.uri, // name: data.file.uri.split('/').pop(), // type: 'image/jpeg', // }); // formData.append('file', { // uri: file.uri, // name: file.name, // type: mime.getType(file.name), // }); // const res = await apiService.post( // ApiEndpoints.submitAutoInspection, // formData, // { // headers: {'Content-Type': 'multipart/form-data'}, // useToken: true, // }, // ); // const formData = new FormData(); // formData.append('file', { // uri: data.file.uri, // name: data.file.uri.split('/').pop(), // type: 'image/jpeg', // }); // formData.append('action', data.action); // formData.append('vehicle_section', data.vehicleSection); // formData.append('bypass', 'true'); // if (data.claimId) formData.append('claim_id', data.claimId); // if (data.policyId) formData.append('policy_id', data.policyId); // // if (data.bypass) formData.append('bypass', true); // const res = await apiService.postForm( // ApiEndpoints.verifyImageAI, // formData, // // { // // headers: { 'Content-Type': 'multipart/form-data' }, // // useToken: true, // // } // ); // return new GenericResponse(res); // } // const uploadNewFile = async (file: FileData, fileType: string): Promise<any> => { // const formData = new FormData(); // // Ensure the URI is properly formatted // let fileUri = file.uri.startsWith('file://') ? file.uri : `file://${file.uri}`; // // Set MIME type based on fileType // const mimeType = fileType === 'video' ? 'video/mp4' : // fileType === 'image' ? 'image/jpeg' : // fileType === 'document' ? 'application/pdf' : 'image/jpeg'; // // Construct the FormData with the correct fields for Axios // formData.append('file', { // uri: fileUri, // The file URI (with file:// prefix) // name: file.name || 'file.mp4', // Ensure the file has a proper name // type: mimeType, // Correct MIME type // }); // // Append additional data to FormData // formData.append('fileType', fileType); // // Send the file using Axios // try { // const response = await axios.post('https://your-api-endpoint.com/upload', formData, { // headers: { // 'Content-Type': 'multipart/form-data', // Ensure multipart data // }, // onUploadProgress: (progressEvent) => { // const progress = Math.round((progressEvent.loaded * 100) / progressEvent.total); // console.log(`Upload Progress: ${progress}%`); // }, // }); // return response.data; // Handle the response // } catch (error) { // console.error('File upload error:', error); // throw error; // } // }; } export default FileRepository;