UNPKG

@rubysdk/secret-client

Version:

RubySDK Secret Network client utilities for data, token and escrow operations

80 lines 2.93 kB
"use strict"; // 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