Skip to content

Commit

Permalink
lint fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidBruant committed Mar 31, 2020
1 parent 1975ee5 commit adc846a
Show file tree
Hide file tree
Showing 2 changed files with 292 additions and 166 deletions.
125 changes: 70 additions & 55 deletions packages/zoe/src/contracts/operaConcertTicket.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { makeZoeHelpers, defaultAcceptanceMsg } from './helpers/zoeHelpers';

/* eslint-disable no-use-before-define */
import harden from '@agoric/harden';
import produceIssuer from '@agoric/ertp';
import { makeZoeHelpers } from './helpers/zoeHelpers';

/*
Roles in the arrangement:
Expand All @@ -19,82 +20,96 @@ import produceIssuer from '@agoric/ertp';
*/

export const makeContract = harden(async zoe => {

const zoeService = zoe.getZoeService();

// Create the internal ticket mint
const { issuer, mint, amountMath } = produceIssuer('Opera tickets', 'set');
await zoe.addNewIssuer(issuer, 'Ticket');

// create Zoe helpers after zoe.addNewIssuer because of https://github.com/Agoric/agoric-sdk/issues/802
const { rejectOffer, swap } = makeZoeHelpers(zoe);

const {
rejectOffer,
checkIfProposal,
swap,
canTradeWith,
getActiveOffers,
assertKeywords,
} = makeZoeHelpers(zoe);

const {
terms: { show, start, count, expectedAmountPerTicket },
issuerKeywordRecord: {Money: moneyIssuer}
terms: { show, start, count, expectedAmountPerTicket },
issuerKeywordRecord: { Money: moneyIssuer },
} = zoe.getInstanceRecord();

const availableTicketDescriptionByNumber = new Map(Array(count)
.fill()
.map((_, i) => [i+1, harden({ show, start, number: i + 1 })]))

const salesPayouts = new Set()

const availableTicketDescriptionByNumber = new Map(
Array(count)
.fill()
.map((_, i) => [i + 1, harden({ show, start, number: i + 1 })]),
);

const salesPayouts = new Set();

const auditoriumSeat = harden({
async getSalesPayment(){
const salesPaymentsP = Promise.all([...salesPayouts])
.then(payouts => Promise.all(payouts.map(payout => payout.Money)))

return salesPaymentsP.then(salesPayments => moneyIssuer.combine(salesPayments));
}
})
async getSalesPayment() {
const salesPaymentsP = Promise.all([...salesPayouts]).then(payouts =>
Promise.all(payouts.map(payout => payout.Money)),
);

return salesPaymentsP.then(salesPayments =>
moneyIssuer.combine(salesPayments),
);
},
});
const auditoriumInvite = zoe.makeInvite(auditoriumSeat);

const makeBuyerInvite = () => {
const seat = harden({
performExchange: async () => {
const moneyInviteHandle = inviteHandle;
const moneyOffer = zoe.getOffer(moneyInviteHandle)
const moneyOffer = zoe.getOffer(moneyInviteHandle);
const moneyWant = moneyOffer.proposal.want.Ticket;

const ticketNumbers = moneyWant.extent.map(e => e.number)
const ticketNumbers = moneyWant.extent.map(e => e.number);

const unavailableTicketNumbers = ticketNumbers.filter(number => (!availableTicketDescriptionByNumber.has(number)))
const unavailableTicketNumbers = ticketNumbers.filter(
number => !availableTicketDescriptionByNumber.has(number),
);

if(unavailableTicketNumbers.length >= 1){
return rejectOffer(inviteHandle, `Some tickets (${unavailableTicketNumbers.join(', ')}) are not available anymore`)
if (unavailableTicketNumbers.length >= 1) {
return rejectOffer(
inviteHandle,
`Some tickets (${unavailableTicketNumbers.join(
', ',
)}) are not available anymore`,
);
}

const ticketsAmount = amountMath.make(
harden(ticketNumbers.map(number => availableTicketDescriptionByNumber.get(number)))
)
harden(
ticketNumbers.map(number =>
availableTicketDescriptionByNumber.get(number),
),
),
);

// create an zoe invite...
const {invite, inviteHandle: ticketInviteHandle} = zoe.makeInvite()
const { invite, inviteHandle: ticketInviteHandle } = zoe.makeInvite();
// ...and redeem it right away
const {payout} = await zoeService.redeem(
invite,
harden({
want: {Money: moneyIssuer.getAmountMath().make(expectedAmountPerTicket.extent*ticketNumbers.length)},
give: {Ticket: ticketsAmount}
}),
harden({Ticket: mint.mintPayment(ticketsAmount)}) // mint and pass to Zoe right away
)

salesPayouts.add(payout)

swap(ticketInviteHandle, moneyInviteHandle)

// swap may throw. It we're here, swap was successful
for(const number of ticketNumbers)
availableTicketDescriptionByNumber.delete(number)
return zoeService
.redeem(
invite,
harden({
want: {
Money: moneyIssuer
.getAmountMath()
.make(expectedAmountPerTicket.extent * ticketNumbers.length),
},
give: { Ticket: ticketsAmount },
}),
harden({ Ticket: mint.mintPayment(ticketsAmount) }), // mint and pass to Zoe right away
)
.then(({ payout }) => {
salesPayouts.add(payout);

swap(ticketInviteHandle, moneyInviteHandle);

// swap may throw. It we're here, swap was successful
for (const number of ticketNumbers)
availableTicketDescriptionByNumber.delete(number);
});
},
});
const { invite, inviteHandle } = zoe.makeInvite(seat);
Expand All @@ -103,15 +118,15 @@ export const makeContract = harden(async zoe => {

return harden({
invite: auditoriumInvite,
publicAPI: {
publicAPI: {
makeBuyerInvite,
getTicketIssuer(){
getTicketIssuer() {
return issuer;
},
// This function returns a Map<TicketNumber, TicketExtent>
getAvailableTickets(){
getAvailableTickets() {
return new Map(availableTicketDescriptionByNumber);
}
},
},
});
});
Loading

0 comments on commit adc846a

Please sign in to comment.