mirror of https://github.com/certusone/oyster.git
feat: storage
This commit is contained in:
parent
07be6c35ef
commit
90644ea681
|
@ -27,7 +27,7 @@ export function MetaProvider({ children = null as any }) {
|
||||||
accounts.forEach(meta => {
|
accounts.forEach(meta => {
|
||||||
try{
|
try{
|
||||||
const metadata = decodeMetadata(meta.account.data);
|
const metadata = decodeMetadata(meta.account.data);
|
||||||
if(isValidHttpUrl(metadata.uri)) {
|
if(isValidHttpUrl(metadata.uri) && metadata.uri.indexOf('arweave') >= 0) {
|
||||||
const account: ParsedAccount<Metadata> = {
|
const account: ParsedAccount<Metadata> = {
|
||||||
pubkey: meta.pubkey,
|
pubkey: meta.pubkey,
|
||||||
account: meta.account,
|
account: meta.account,
|
||||||
|
@ -51,11 +51,19 @@ export function MetaProvider({ children = null as any }) {
|
||||||
} else {
|
} else {
|
||||||
const metadata = mintToMetadata.get(key);
|
const metadata = mintToMetadata.get(key);
|
||||||
if(metadata && metadata.info.uri) {
|
if(metadata && metadata.info.uri) {
|
||||||
extendedMetadataFetch.set(key, fetch(metadata.info.uri).catch(() => {
|
extendedMetadataFetch.set(key, fetch(metadata.info.uri).then(async _ => {
|
||||||
|
try {
|
||||||
|
metadata.info.extended = await _.json();
|
||||||
|
if(metadata.info.extended.image) {
|
||||||
|
metadata.info.extended.image = `${metadata.info.uri}/${metadata.info.extended.image}`;
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
mintToMetadata.delete(key);
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
mintToMetadata.delete(key);
|
mintToMetadata.delete(key);
|
||||||
return undefined;
|
return undefined;
|
||||||
}).then(_ => {
|
|
||||||
metadata.info.extended = _;
|
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,9 @@ import {
|
||||||
programIds,
|
programIds,
|
||||||
sendTransactions,
|
sendTransactions,
|
||||||
sendTransaction,
|
sendTransaction,
|
||||||
|
notify,
|
||||||
} from '@oyster/common';
|
} from '@oyster/common';
|
||||||
|
import React from 'react';
|
||||||
import { MintLayout, Token } from '@solana/spl-token';
|
import { MintLayout, Token } from '@solana/spl-token';
|
||||||
import { WalletAdapter } from '@solana/wallet-base';
|
import { WalletAdapter } from '@solana/wallet-base';
|
||||||
import {
|
import {
|
||||||
|
@ -155,10 +157,11 @@ export const mintNFT = async (
|
||||||
const updateInstructions: TransactionInstruction[] = [];
|
const updateInstructions: TransactionInstruction[] = [];
|
||||||
const updateSigners: Account[] = [];
|
const updateSigners: Account[] = [];
|
||||||
|
|
||||||
|
const arweaveLink = `https://arweave.net/${metadataFile.transactionId}`;
|
||||||
await updateMetadata(
|
await updateMetadata(
|
||||||
metadata.symbol,
|
metadata.symbol,
|
||||||
metadata.name,
|
metadata.name,
|
||||||
`https://arweave.net/${metadataFile.transactionId}`,
|
arweaveLink,
|
||||||
mintKey,
|
mintKey,
|
||||||
wallet.publicKey,
|
wallet.publicKey,
|
||||||
updateInstructions,
|
updateInstructions,
|
||||||
|
@ -173,6 +176,12 @@ export const mintNFT = async (
|
||||||
true,
|
true,
|
||||||
'singleGossip',
|
'singleGossip',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
notify({
|
||||||
|
message: 'Art created on Solana',
|
||||||
|
description: <a href={arweaveLink} target="_blank" >Arweave Link</a>,
|
||||||
|
type: 'success',
|
||||||
|
});
|
||||||
}
|
}
|
||||||
console.log('Result', result);
|
console.log('Result', result);
|
||||||
res(result);
|
res(result);
|
|
@ -22,6 +22,19 @@ header.ant-layout-header.App-Bar {
|
||||||
filter: drop-shadow(0px 2px 6px rgba(0, 0, 0, 0.1));
|
filter: drop-shadow(0px 2px 6px rgba(0, 0, 0, 0.1));
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
|
.ant-card-body {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: flex-start;
|
||||||
|
padding: 24px;
|
||||||
|
|
||||||
|
/* gradients/metal */
|
||||||
|
background: #282828;
|
||||||
|
box-shadow: inset 0px 4px 20px rgba(0, 0, 0, 0.3);
|
||||||
|
border-radius: 0px 0px 8px 8px;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
footer.ant-layout-footer {
|
footer.ant-layout-footer {
|
||||||
|
|
Loading…
Reference in New Issue