@videosdk.live/react-native-sdk
Version:
<h1 align="center"> <img src="https://static.videosdk.live/videosdk_logo_website_black.png"/><br/> <p align="center"> Video SDK React Native App <br/> <a href="https://videosdk.live/">videosdk.live</a> </p> </h1>
67 lines (54 loc) • 1.95 kB
JavaScript
import { useMeeting } from '@videosdk.live/react-sdk';
import axios from 'axios';
import { Buffer } from 'buffer';
const useFile = () => {
const mMeeting = useMeeting();
const uploadBase64File = async ({ base64Data, token, fileName }) => {
try {
if (!base64Data || !token || !fileName) {
throw new Error("please provide base64Data, token and fileName");
}
const url = `https://${mMeeting.meeting.baseUrl}/base64-upload?roomId=${mMeeting.meetingId}`;
const requestBody = {
fileName: fileName,
base64Data,
};
const apiResponse = await fetch(url, {
method: 'POST',
body: JSON.stringify(requestBody),
headers: {
'Content-Type': 'application/json',
Authorization: token,
},
})
const responseData = await apiResponse.json();
return responseData.url;
} catch (error) {
console.error('Error while Uploading Base64 File::', error);
}
};
const fetchBase64File = async ({ url, token }) => {
try {
if (!url || !token) {
throw new Error("please provide url and token");
}
const res = await axios(
{
method: 'get',
url: url,
responseType: 'arraybuffer',
headers:
{
Authorization: token
}
}
);
const base64 = Buffer.from(res.data, 'binary').toString('base64');
return base64;
} catch (error) {
console.error('Error while fetching Base64 File::', error);
}
};
return { uploadBase64File, fetchBase64File }
}
export default useFile;