1
0
Fork 0
spacetraders/nodejs/lib/contracts.js

39 lines
1.2 KiB
JavaScript

import * as dbContracts from '../database/contracts.js';
import * as api from './api.js';
import * as dbShips from '../database/ships.js';
import * as libShips from '../lib/ships.js';
export async function accept(ctx) {
const contract = dbContracts.getContract(ctx.id);
if (contract.accepted) {
return;
}
await api.send({endpoint: `/my/contracts/${ctx.id}/accept`, method: 'POST'});
contract.accepted = true;
dbContracts.setContract(contract);
}
export async function contracts() {
const contracts = await api.send({endpoint: '/my/contracts', page: 1});
contracts.forEach(contract => dbContracts.setContract(contract));
return contracts;
}
export async function deliver(ctx) {
await libShips.dock(ctx);
const response = await api.send({ endpoint: `/my/contracts/${ctx.contract}/deliver`, method: 'POST', payload: {
shipSymbol: ctx.symbol,
tradeSymbol: ctx.good,
units: ctx.units,
}});
if (response.error !== undefined) {
throw response;
}
dbShips.setShipCargo(ctx.symbol, response.data.cargo);
// TODO update contract delivered units
// TODO track credits
}
export async function fulfill(ctx) {
return await api.send({ endpoint: `/my/contracts/${ctx.contract}/fulfill`, method: 'POST'});
}