mirror of https://github.com/certusone/oyster.git
Some more changes
This commit is contained in:
parent
38c1d6666d
commit
e658d81eed
|
@ -529,7 +529,7 @@ export async function createMasterEdition(
|
|||
const metadataAccount = (
|
||||
await PublicKey.findProgramAddress(
|
||||
[
|
||||
Buffer.from('metadata'),
|
||||
Buffer.from(METADATA_PREFIX),
|
||||
metadataProgramId.toBuffer(),
|
||||
mintKey.toBuffer(),
|
||||
],
|
||||
|
@ -540,7 +540,7 @@ export async function createMasterEdition(
|
|||
const nameSymbolAccount = (
|
||||
await PublicKey.findProgramAddress(
|
||||
[
|
||||
Buffer.from('metadata'),
|
||||
Buffer.from(METADATA_PREFIX),
|
||||
metadataProgramId.toBuffer(),
|
||||
Buffer.from(name),
|
||||
Buffer.from(symbol),
|
||||
|
@ -552,10 +552,10 @@ export async function createMasterEdition(
|
|||
const editionAccount = (
|
||||
await PublicKey.findProgramAddress(
|
||||
[
|
||||
Buffer.from('metadata'),
|
||||
Buffer.from(METADATA_PREFIX),
|
||||
metadataProgramId.toBuffer(),
|
||||
mintKey.toBuffer(),
|
||||
Buffer.from('edition'),
|
||||
Buffer.from(EDITION),
|
||||
],
|
||||
metadataProgramId,
|
||||
)
|
||||
|
|
|
@ -1,39 +1,33 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
import {
|
||||
Row,
|
||||
Col,
|
||||
Divider,
|
||||
Button,
|
||||
InputNumber
|
||||
} from 'antd'
|
||||
import { Row, Col, Divider, Button, InputNumber } from 'antd';
|
||||
|
||||
import { Auction, Presale } from '../../types'
|
||||
import { Auction, Presale } from '../../types';
|
||||
|
||||
import './index.less'
|
||||
import { getCountdown } from '../../utils/utils'
|
||||
import './index.less';
|
||||
import { getCountdown } from '../../utils/utils';
|
||||
import { shortenAddress } from '@oyster/common';
|
||||
|
||||
export const AuctionCard = ({ auction }: { auction: Auction }) => {
|
||||
const [hours, setHours] = useState<number>(23)
|
||||
const [minutes, setMinutes] = useState<number>(59)
|
||||
const [seconds, setSeconds] = useState<number>(59)
|
||||
const [hours, setHours] = useState<number>(23);
|
||||
const [minutes, setMinutes] = useState<number>(59);
|
||||
const [seconds, setSeconds] = useState<number>(59);
|
||||
|
||||
useEffect(() => {
|
||||
const interval = setInterval(() => {
|
||||
const { hours, minutes, seconds } = getCountdown(auction.endingTS)
|
||||
const { hours, minutes, seconds } = getCountdown(auction.endingTS);
|
||||
|
||||
setHours(hours)
|
||||
setMinutes(minutes)
|
||||
setSeconds(seconds)
|
||||
}, 1000)
|
||||
return () => clearInterval(interval)
|
||||
}, [])
|
||||
setHours(hours);
|
||||
setMinutes(minutes);
|
||||
setSeconds(seconds);
|
||||
}, 1000);
|
||||
return () => clearInterval(interval);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div className="presale-card-container">
|
||||
<div className="info-header">STARTING BID</div>
|
||||
<div style={{ fontWeight: 700, fontSize: '1.6rem' }}>◎40.00</div>
|
||||
<br/>
|
||||
<br />
|
||||
<div className="info-header">AUCTION ENDS IN</div>
|
||||
<Row style={{ width: 300 }}>
|
||||
<Col span={8}>
|
||||
|
@ -49,13 +43,17 @@ export const AuctionCard = ({ auction }: { auction: Auction }) => {
|
|||
<div className="cd-label">seconds</div>
|
||||
</Col>
|
||||
</Row>
|
||||
<br/>
|
||||
<div className="info-content" style={{ color: 'rgba(255, 255, 255, 0.7)', fontSize: '0.9rem' }}>
|
||||
Any bids placed in the last 15 minutes will extend the auction for another 15 minutes.
|
||||
<br />
|
||||
<div
|
||||
className="info-content"
|
||||
style={{ color: 'rgba(255, 255, 255, 0.7)', fontSize: '0.9rem' }}
|
||||
>
|
||||
Any bids placed in the last 15 minutes will extend the auction for
|
||||
another 15 minutes.
|
||||
</div>
|
||||
<br />
|
||||
|
||||
<div className="info-line"/>
|
||||
<div className="info-line" />
|
||||
|
||||
<InputNumber
|
||||
autoFocus
|
||||
|
@ -70,29 +68,36 @@ export const AuctionCard = ({ auction }: { auction: Auction }) => {
|
|||
// }
|
||||
/>
|
||||
|
||||
<div className="info-content" style={{ color: 'rgba(255, 255, 255, 0.7)', fontSize: '0.9rem' }}>
|
||||
<div
|
||||
className="info-content"
|
||||
style={{ color: 'rgba(255, 255, 255, 0.7)', fontSize: '0.9rem' }}
|
||||
>
|
||||
Your Balance: ◎ {0.0} (${0.0})
|
||||
</div>
|
||||
|
||||
<Button
|
||||
type="primary"
|
||||
size="large"
|
||||
className="action-btn"
|
||||
style={{ marginTop: 20 }}
|
||||
>
|
||||
PLACE BID
|
||||
type="primary"
|
||||
size="large"
|
||||
className="action-btn"
|
||||
style={{ marginTop: 20 }}
|
||||
>
|
||||
PLACE BID
|
||||
</Button>
|
||||
|
||||
|
||||
</div>
|
||||
)
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
export const AuctionBidders = (auctionID: string) => {
|
||||
const bids = [];
|
||||
return <Col>
|
||||
{bids.map((bid, index) => {
|
||||
return <Row>{index+1}. {shortenAddress(bid.address)} {bi}</Row>
|
||||
})}
|
||||
</Col>
|
||||
const bids: any = [];
|
||||
return (
|
||||
<Col>
|
||||
{bids.map((bid: any, index: number) => {
|
||||
return (
|
||||
<Row>
|
||||
{index + 1}. {shortenAddress(bid.address)}
|
||||
</Row>
|
||||
);
|
||||
})}
|
||||
</Col>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -46,6 +46,7 @@ import {
|
|||
AuctionManagerSettings,
|
||||
AuctionManagerState,
|
||||
AuctionManagerStatus,
|
||||
EditionType,
|
||||
NonWinningConstraint,
|
||||
SCHEMA,
|
||||
WinningConstraint,
|
||||
|
@ -140,6 +141,7 @@ export const AuctionCreateView = () => {
|
|||
|
||||
const createAuction = async () => {
|
||||
let settings: AuctionManagerSettings;
|
||||
let winnerLimit: WinnerLimit;
|
||||
if (attributes.category == AuctionCategory.Open) {
|
||||
settings = {
|
||||
openEditionWinnerConstraint: WinningConstraint.OpenEditionGiven,
|
||||
|
@ -149,21 +151,42 @@ export const AuctionCreateView = () => {
|
|||
openEditionFixedPrice: undefined,
|
||||
};
|
||||
|
||||
const winnerLimit = new WinnerLimit({ type: WinnerLimitType.Unlimited });
|
||||
|
||||
await createAuctionManager(
|
||||
connection,
|
||||
wallet,
|
||||
settings,
|
||||
winnerLimit,
|
||||
new BN((attributes.auctionDuration || 1) * 60),
|
||||
new BN((attributes.gapTime || 1) * 60),
|
||||
[attributes.items[0]],
|
||||
new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
|
||||
);
|
||||
winnerLimit = new WinnerLimit({ type: WinnerLimitType.Unlimited });
|
||||
} else if (attributes.category == AuctionCategory.Single) {
|
||||
settings = {
|
||||
openEditionWinnerConstraint: WinningConstraint.NoOpenEdition,
|
||||
openEditionNonWinningConstraint: NonWinningConstraint.NoOpenEdition,
|
||||
winningConfigs: [
|
||||
{
|
||||
safetyDepositBoxIndex: 0,
|
||||
amount: 1,
|
||||
hasAuthority: false,
|
||||
editionType: attributes.items[0].masterEdition
|
||||
? EditionType.MasterEdition
|
||||
: EditionType.NA,
|
||||
},
|
||||
],
|
||||
openEditionConfig: undefined,
|
||||
openEditionFixedPrice: undefined,
|
||||
};
|
||||
winnerLimit = new WinnerLimit({
|
||||
type: WinnerLimitType.Capped,
|
||||
usize: new BN(1),
|
||||
});
|
||||
} else {
|
||||
throw new Error('Not supported');
|
||||
}
|
||||
|
||||
await createAuctionManager(
|
||||
connection,
|
||||
wallet,
|
||||
settings,
|
||||
winnerLimit,
|
||||
new BN((attributes.auctionDuration || 1) * 60),
|
||||
new BN((attributes.gapTime || 1) * 60),
|
||||
[attributes.items[0]],
|
||||
new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
|
||||
);
|
||||
};
|
||||
|
||||
const categoryStep = (
|
||||
|
|
Loading…
Reference in New Issue