From 107a1bf154e7c68e02bc0273e1ede15a87b472ef Mon Sep 17 00:00:00 2001 From: AdityaSalunkhe21 Date: Thu, 6 Feb 2025 10:48:44 +0530 Subject: [PATCH] Revert to old uploadToPinata() --- package.json | 3 +-- src/app/api/flux/route.ts | 1 - src/app/api/lock/route.ts | 2 +- src/utils/create-lock.ts | 29 +------------------------ src/utils/uploadToPinata.ts | 43 ++++++++++--------------------------- 5 files changed, 14 insertions(+), 64 deletions(-) diff --git a/package.json b/package.json index 99aebb9..1412614 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,7 @@ "@coral-xyz/anchor": "^0.30.1", "@fal-ai/client": "^1.2.1", "@google/generative-ai": "^0.21.0", - "@pinata/sdk": "^2.1.0", - "@solana/spl-token": "^0.3.11", + "@solana/spl-token": "^0.3.8", "@solana/web3.js": "^1.78.4", "big.js": "^6.2.2", "bn.js": "^5.2.0", diff --git a/src/app/api/flux/route.ts b/src/app/api/flux/route.ts index 95a7082..afd9193 100644 --- a/src/app/api/flux/route.ts +++ b/src/app/api/flux/route.ts @@ -88,7 +88,6 @@ export async function POST(req: NextRequest): Promise { // Extract the image URL from the response const imageUrl = result.data?.images?.[0]?.url - console.log(imageUrl); if (!imageUrl) { console.error('No image URL in response:', result) diff --git a/src/app/api/lock/route.ts b/src/app/api/lock/route.ts index fdd607a..3cf0f84 100644 --- a/src/app/api/lock/route.ts +++ b/src/app/api/lock/route.ts @@ -64,4 +64,4 @@ export async function GET(req: NextRequest) { console.error('API route error:', error); return NextResponse.json({ error: "Internal server error" }, { status: 500 }); } -} \ No newline at end of file +} diff --git a/src/utils/create-lock.ts b/src/utils/create-lock.ts index ac8748d..b7a05ab 100644 --- a/src/utils/create-lock.ts +++ b/src/utils/create-lock.ts @@ -34,33 +34,6 @@ const provider = new anchor.AnchorProvider( anchor.setProvider(provider); -export async function getMTMBalance (senderKeypair: anchor.web3.Keypair): Promise { - const mintPublicKey = new PublicKey(WSOL_MINT); - const publicKey = senderKeypair.publicKey; - const tokenAccounts = await connection.getTokenAccountsByOwner(publicKey, { mint: mintPublicKey }); - - let balance = new BN(0); - for (const tokenAccount of tokenAccounts.value) { - const accountInfo = await connection.getParsedAccountInfo( - tokenAccount.pubkey, - "confirmed" - ); - - if (!accountInfo.value || Buffer.isBuffer(accountInfo.value.data)) { - console.warn( - `Token account ${tokenAccount.pubkey.toBase58()} data is not parsed.` - ); - continue; - } - - const tokenAmount = - (accountInfo.value.data as any).parsed?.info?.tokenAmount?.amount || "0"; - balance = balance.add(new BN(tokenAmount)); - } - - return balance; -}; - export async function createLock(tokenLockerKeypair: anchor.web3.Keypair, recipientPubKey: anchor.web3.PublicKey, duration: BN, balance: BN): Promise { if (balance.eq(new BN(0))) { @@ -82,7 +55,7 @@ export async function createLock(tokenLockerKeypair: anchor.web3.Keypair, recipi numberOfPeriod: new BN(1), // Only release tokens once recipient: recipientPubKey, updateRecipientMode: 0, - cancelMode: 1, + cancelMode: 1, // Only creator can cancel the lock tokenProgram: TOKEN_PROGRAM_ID, }); diff --git a/src/utils/uploadToPinata.ts b/src/utils/uploadToPinata.ts index 3061d58..92c6a09 100644 --- a/src/utils/uploadToPinata.ts +++ b/src/utils/uploadToPinata.ts @@ -1,49 +1,28 @@ -import PinataClient from "@pinata/sdk" +import { PinataSDK } from 'pinata-web3'; import 'dotenv/config'; import assert from 'assert'; + import { FluxGenerationResult } from '../services/fluxService'; -import axios from 'axios'; -import FormData from 'form-data'; -assert(process.env.PINATA_API_KEY, "PINATA_API_KEY is required"); -assert(process.env.PINATA_SECRET_KEY, "PINATA_SECRET_KEY is required"); -assert(process.env.PINATA_JWT, "PINATA_SECRET_KEY is required"); -assert(process.env.PINATA_GATEWAY); +assert(process.env.PINATA_JWT, "PINATA_JWT is required"); +assert(process.env.PINATA_GATEWAY, "PINATA_GATEWAY is required"); -const pinata = new PinataClient({ - pinataApiKey: process.env.PINATA_API_KEY, - pinataSecretApiKey: process.env.PINATA_SECRET_KEY, - pinataJWTKey: process.env.PINATA_JWT +const pinata = new PinataSDK({ + pinataJwt: process.env.PINATA_JWT, + pinataGateway: process.env.PINATA_GATEWAY, }); - export async function uploadToPinata(imageUrl: string): Promise { try { - const response = await axios.get(imageUrl, { - responseType: 'arraybuffer' - }); + const upload = await pinata.upload.url(imageUrl); - // Create form data - const formData = new FormData(); - formData.append('file', Buffer.from(response.data), { - filename: `image-${Date.now()}.jpg`, - contentType: 'image/jpeg', - }); - - // Use the correct Pinata method for file upload - const result = await pinata.pinFileToIPFS(formData); - - if (!result.IpfsHash) { - throw new Error('IPFS hash not received from Pinata'); - } - - const publicURL = `${process.env.PINATA_GATEWAY}/ipfs/${result.IpfsHash}`; + const publicURL = await pinata.gateways.convert(upload.IpfsHash); return { imageUrl: publicURL }; } catch (error) { - console.error('Error uploading to Pinata:', error); + console.error('Error uploading to Pinata:', error) return { error: error instanceof Error ? error.message : 'Upload failed' }; } -} \ No newline at end of file +}