6ef2beed8f
* Create and use `betAmount` and `betOutcome` fields on comments * Be robust to ridiculous bet IDs on dev
45 lines
1.0 KiB
TypeScript
45 lines
1.0 KiB
TypeScript
import type { JSONContent } from '@tiptap/core'
|
|
|
|
export type AnyCommentType = OnContract | OnGroup
|
|
|
|
// Currently, comments are created after the bet, not atomically with the bet.
|
|
// They're uniquely identified by the pair contractId/betId.
|
|
export type Comment<T extends AnyCommentType = AnyCommentType> = {
|
|
id: string
|
|
replyToCommentId?: string
|
|
userId: string
|
|
|
|
/** @deprecated - content now stored as JSON in content*/
|
|
text?: string
|
|
content: JSONContent
|
|
createdTime: number
|
|
|
|
// Denormalized, for rendering comments
|
|
userName: string
|
|
userUsername: string
|
|
userAvatarUrl?: string
|
|
} & T
|
|
|
|
type OnContract = {
|
|
commentType: 'contract'
|
|
contractId: string
|
|
answerOutcome?: string
|
|
betId?: string
|
|
|
|
// denormalized from contract
|
|
contractSlug: string
|
|
contractQuestion: string
|
|
|
|
// denormalized from bet
|
|
betAmount?: number
|
|
betOutcome?: string
|
|
}
|
|
|
|
type OnGroup = {
|
|
commentType: 'group'
|
|
groupId: string
|
|
}
|
|
|
|
export type ContractComment = Comment<OnContract>
|
|
export type GroupComment = Comment<OnGroup>
|