Accept string descriptions in market POST api
This commit is contained in:
parent
7db3f045a5
commit
98c22251fb
|
@ -504,6 +504,7 @@ Parameters:
|
||||||
- `outcomeType`: Required. One of `BINARY`, `FREE_RESPONSE`, or `NUMERIC`.
|
- `outcomeType`: Required. One of `BINARY`, `FREE_RESPONSE`, or `NUMERIC`.
|
||||||
- `question`: Required. The headline question for the market.
|
- `question`: Required. The headline question for the market.
|
||||||
- `description`: Required. A long description describing the rules for the market.
|
- `description`: Required. A long description describing the rules for the market.
|
||||||
|
- Note: string descriptions do **not** turn into links, mentions, formatted text. Instead, rich text descriptions must be in [TipTap json](https://tiptap.dev/guide/output#option-1-json).
|
||||||
- `closeTime`: Required. The time at which the market will close, represented as milliseconds since the epoch.
|
- `closeTime`: Required. The time at which the market will close, represented as milliseconds since the epoch.
|
||||||
- `tags`: Optional. An array of string tags for the market.
|
- `tags`: Optional. An array of string tags for the market.
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ const descScehma: z.ZodType<JSONContent> = z.lazy(() =>
|
||||||
|
|
||||||
const bodySchema = z.object({
|
const bodySchema = z.object({
|
||||||
question: z.string().min(1).max(MAX_QUESTION_LENGTH),
|
question: z.string().min(1).max(MAX_QUESTION_LENGTH),
|
||||||
description: descScehma.optional(),
|
description: descScehma.or(z.string()).optional(),
|
||||||
tags: z.array(z.string().min(1).max(MAX_TAG_LENGTH)).optional(),
|
tags: z.array(z.string().min(1).max(MAX_TAG_LENGTH)).optional(),
|
||||||
closeTime: zTimestamp().refine(
|
closeTime: zTimestamp().refine(
|
||||||
(date) => date.getTime() > new Date().getTime(),
|
(date) => date.getTime() > new Date().getTime(),
|
||||||
|
@ -166,13 +166,27 @@ export const createmarket = newEndpoint({}, async (req, auth) => {
|
||||||
ante || 0
|
ante || 0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// convert string descriptions into JSONContent
|
||||||
|
const newDescription =
|
||||||
|
typeof description === 'string'
|
||||||
|
? {
|
||||||
|
type: 'doc',
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
type: 'paragraph',
|
||||||
|
content: [{ type: 'text', text: description }],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
: description ?? {}
|
||||||
|
|
||||||
const contract = getNewContract(
|
const contract = getNewContract(
|
||||||
contractRef.id,
|
contractRef.id,
|
||||||
slug,
|
slug,
|
||||||
user,
|
user,
|
||||||
question,
|
question,
|
||||||
outcomeType,
|
outcomeType,
|
||||||
description ?? {},
|
newDescription,
|
||||||
initialProb ?? 0,
|
initialProb ?? 0,
|
||||||
ante,
|
ante,
|
||||||
closeTime.getTime(),
|
closeTime.getTime(),
|
||||||
|
|
Loading…
Reference in New Issue
Block a user