45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { Contract } from 'common/contract'
|
|
import { getBinaryProbPercent } from 'web/lib/firebase/contracts'
|
|
import { richTextToString } from 'common/util/parse'
|
|
import { contractTextDetails } from 'web/components/contract/contract-details'
|
|
import { getFormattedMappedValue } from 'common/pseudo-numeric'
|
|
import { getProbability } from 'common/calculate'
|
|
|
|
export const getOpenGraphProps = (contract: Contract) => {
|
|
const {
|
|
resolution,
|
|
question,
|
|
creatorName,
|
|
creatorUsername,
|
|
outcomeType,
|
|
creatorAvatarUrl,
|
|
description: desc,
|
|
} = contract
|
|
const probPercent =
|
|
outcomeType === 'BINARY' ? getBinaryProbPercent(contract) : undefined
|
|
|
|
const numericValue =
|
|
outcomeType === 'PSEUDO_NUMERIC'
|
|
? getFormattedMappedValue(contract)(getProbability(contract))
|
|
: undefined
|
|
|
|
const stringDesc = typeof desc === 'string' ? desc : richTextToString(desc)
|
|
|
|
const description = resolution
|
|
? `Resolved ${resolution}. ${stringDesc}`
|
|
: probPercent
|
|
? `${probPercent} chance. ${stringDesc}`
|
|
: stringDesc
|
|
|
|
return {
|
|
question,
|
|
probability: probPercent,
|
|
metadata: contractTextDetails(contract),
|
|
creatorName,
|
|
creatorUsername,
|
|
creatorAvatarUrl,
|
|
description,
|
|
numericValue,
|
|
}
|
|
}
|