7740841168
* Initial preview & upload logic * Refactor image & metadata selection & preview logic * Refactor image & metadata selection & preview logic - 2 * Establish metadata-modal connection * Metadata attribute manipulation * Successful metadata attribute removal & update * Successful metadata attribute addition & update * Update existing attributes success * Display image uri among metadata following the upload * Fix: buttons being displayed without an image overlay * Separate upload logic & incorporate useRefs * Clean up: removed unused imports and structures * Add radio buttons for upload service selection * Remove package-lock.json (duplicate .lock files) * Refactor upload logic & metadata modal * Utilize serviceType enum in upload logic * Utilize serviceType enum in upload logic - 2 * Implement user input for NFT.Storage & Pinata API keys * Update use an existing URI text * Remove upload_old.tsx * Fix: reset main metadata fields on metadata modal refresh * Fix: reset main metadata fields on metadata modal refresh - 2 * Make linter happy * Make linter happy - 2 * Move upload file under collections * Post-review update - 1 * Source Pinata endpoint URL from environment variables * Replace regular file arrays with states Co-authored-by: findolor <anakisci@gmail.com>
30 lines
864 B
TypeScript
30 lines
864 B
TypeScript
/* eslint-disable eslint-comments/disable-enable-pair */
|
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
import axios from 'axios'
|
|
import { PINATA_ENDPOINT_URL } from 'utils/constants'
|
|
|
|
export type UploadFileType = 'images' | 'metadata'
|
|
|
|
export const uploadToPinata = async (
|
|
fileArray: File[],
|
|
pinataApiKey: string,
|
|
pinataSecretKey: string,
|
|
fileType: UploadFileType,
|
|
): Promise<string> => {
|
|
console.log('Uploading to Pinata...')
|
|
const data = new FormData()
|
|
fileArray.forEach((file) => {
|
|
data.append('file', file, `${fileType}/${file.name}`)
|
|
})
|
|
|
|
const res = await axios.post(PINATA_ENDPOINT_URL, data, {
|
|
withCredentials: true,
|
|
headers: {
|
|
pinata_api_key: pinataApiKey,
|
|
pinata_secret_api_key: pinataSecretKey,
|
|
},
|
|
})
|
|
return res.data.IpfsHash
|
|
}
|