@rubysdk/secret-client
Version:
RubySDK Secret Network client utilities for data, token and escrow operations
80 lines • 2.93 kB
JavaScript
;
// uploadToIPFS.ts
'use client';
Object.defineProperty(exports, "__esModule", { value: true });
exports.IPFSUpload = void 0;
const UsePinata_1 = require("@/lib/hooks/UsePinata");
const react_toastify_1 = require("react-toastify");
const client_1 = require("../client");
const IPFSUpload = ({ aesKey, iv, setFileState, setImage, setVideo, setAudio, setPdf, setPreviewUrl, }) => {
const uploadToIPFS = async (fileData, fileType) => {
try {
if (!aesKey || !iv) {
throw new Error('AES key not provided');
}
// Encrypt file data
const encryptedData = (0, client_1.encryptWithAes)(aesKey, iv, fileData);
// Upload encrypted data to IPFS
const ipfsHash = await (0, UsePinata_1.pinataUpload)(encryptedData);
// Set the appropriate state based on file type
// console.log(fileType)
switch (fileType) {
case 'image':
setImage(ipfsHash);
break;
case 'video':
setVideo(ipfsHash);
break;
case 'audio':
setAudio(ipfsHash);
break;
case 'pdf':
setPdf(ipfsHash);
break;
default:
throw new Error('Unsupported file type');
}
// Update FileState
setFileState((prevState) => ({
...prevState,
[fileType]: ipfsHash,
}));
// Generate PDF preview URL if applicable
if (fileType === 'pdf') {
const pdfBlob = await fetch(fileData).then((res) => res.blob());
const pdfUrl = URL.createObjectURL(pdfBlob);
setFileState((prevState) => ({
...prevState,
pdfPreviewUrl: pdfUrl,
}));
}
// toast.success(`${fileType} uploaded.`, {
// position: 'top-right',
// autoClose: 1000,
// hideProgressBar: false,
// closeOnClick: true,
// pauseOnHover: true,
// draggable: true,
// })
}
catch (error) {
console.error('Error uploading file:', error);
react_toastify_1.toast.error(`Failed to upload file: ${error instanceof Error ? error.message : 'Unknown error'}`, {
position: 'top-right',
autoClose: 1000,
hideProgressBar: false,
closeOnClick: true,
pauseOnHover: true,
draggable: true,
});
setPreviewUrl(null);
}
finally {
}
};
return {
uploadToIPFS,
};
};
exports.IPFSUpload = IPFSUpload;
//# sourceMappingURL=uploadToIPFS.js.map