* 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
 | 
						|
}
 |