60f68b178d
* Fold type, fold page, query for fold contracts * Tsconfig: target esnext, nounused locals: false * Store tags in field on contract. Script to update contract tags * Show tags on fold page * Load all fold comments server-side to serve better feed * Fix the annoying firebase already initialized error! * Add links to /edit and /leaderboards for fold * Page with list of folds * UI for creating a fold * Create a fold * Edit fold page
53 lines
1.2 KiB
TypeScript
53 lines
1.2 KiB
TypeScript
import { calcStartPool } from './antes'
|
|
|
|
import { Contract } from './contract'
|
|
import { User } from './user'
|
|
import { parseTags } from './util/parse'
|
|
|
|
export function getNewContract(
|
|
id: string,
|
|
slug: string,
|
|
creator: User,
|
|
question: string,
|
|
description: string,
|
|
initialProb: number,
|
|
ante?: number,
|
|
closeTime?: number
|
|
) {
|
|
const { sharesYes, sharesNo, poolYes, poolNo, phantomYes, phantomNo } =
|
|
calcStartPool(initialProb, ante)
|
|
|
|
const contract: Contract = {
|
|
id,
|
|
slug,
|
|
outcomeType: 'BINARY',
|
|
|
|
creatorId: creator.id,
|
|
creatorName: creator.name,
|
|
creatorUsername: creator.username,
|
|
creatorAvatarUrl: creator.avatarUrl,
|
|
|
|
question: question.trim(),
|
|
description: description.trim(),
|
|
tags: parseTags(`${question} ${description}`),
|
|
visibility: 'public',
|
|
|
|
mechanism: 'dpm-2',
|
|
phantomShares: { YES: phantomYes, NO: phantomNo },
|
|
pool: { YES: poolYes, NO: poolNo },
|
|
totalShares: { YES: sharesYes, NO: sharesNo },
|
|
totalBets: { YES: poolYes, NO: poolNo },
|
|
isResolved: false,
|
|
|
|
createdTime: Date.now(),
|
|
lastUpdatedTime: Date.now(),
|
|
|
|
volume24Hours: 0,
|
|
volume7Days: 0,
|
|
}
|
|
|
|
if (closeTime) contract.closeTime = closeTime
|
|
|
|
return contract
|
|
}
|