more changes for free response/multiple choice
This commit is contained in:
parent
e1f10fb712
commit
c7de9eb321
|
@ -11,6 +11,8 @@ import { ResolveConfirmationButton } from '../confirmation-button'
|
||||||
import { removeUndefinedProps } from 'common/util/object'
|
import { removeUndefinedProps } from 'common/util/object'
|
||||||
|
|
||||||
export function AnswerResolvePanel(props: {
|
export function AnswerResolvePanel(props: {
|
||||||
|
isAdmin: boolean
|
||||||
|
isCreator: boolean
|
||||||
contract: FreeResponseContract | MultipleChoiceContract
|
contract: FreeResponseContract | MultipleChoiceContract
|
||||||
resolveOption: 'CHOOSE' | 'CHOOSE_MULTIPLE' | 'CANCEL' | undefined
|
resolveOption: 'CHOOSE' | 'CHOOSE_MULTIPLE' | 'CANCEL' | undefined
|
||||||
setResolveOption: (
|
setResolveOption: (
|
||||||
|
@ -18,7 +20,14 @@ export function AnswerResolvePanel(props: {
|
||||||
) => void
|
) => void
|
||||||
chosenAnswers: { [answerId: string]: number }
|
chosenAnswers: { [answerId: string]: number }
|
||||||
}) {
|
}) {
|
||||||
const { contract, resolveOption, setResolveOption, chosenAnswers } = props
|
const {
|
||||||
|
contract,
|
||||||
|
resolveOption,
|
||||||
|
setResolveOption,
|
||||||
|
chosenAnswers,
|
||||||
|
isAdmin,
|
||||||
|
isCreator,
|
||||||
|
} = props
|
||||||
const answers = Object.keys(chosenAnswers)
|
const answers = Object.keys(chosenAnswers)
|
||||||
|
|
||||||
const [isSubmitting, setIsSubmitting] = useState(false)
|
const [isSubmitting, setIsSubmitting] = useState(false)
|
||||||
|
@ -76,7 +85,14 @@ export function AnswerResolvePanel(props: {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Col className="gap-4 rounded">
|
<Col className="gap-4 rounded">
|
||||||
<div>Resolve your market</div>
|
<Row className="justify-between">
|
||||||
|
<div>Resolve your market</div>
|
||||||
|
{isAdmin && !isCreator && (
|
||||||
|
<span className="rounded bg-red-200 p-1 text-xs text-red-600">
|
||||||
|
ADMIN
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
</Row>
|
||||||
<Col className="gap-4 sm:flex-row sm:items-center">
|
<Col className="gap-4 sm:flex-row sm:items-center">
|
||||||
<ChooseCancelSelector
|
<ChooseCancelSelector
|
||||||
className="sm:!flex-row sm:items-center"
|
className="sm:!flex-row sm:items-center"
|
||||||
|
|
|
@ -24,10 +24,12 @@ import { Linkify } from 'web/components/linkify'
|
||||||
import { BuyButton } from 'web/components/yes-no-selector'
|
import { BuyButton } from 'web/components/yes-no-selector'
|
||||||
import { UserLink } from 'web/components/user-link'
|
import { UserLink } from 'web/components/user-link'
|
||||||
import { Button } from 'web/components/button'
|
import { Button } from 'web/components/button'
|
||||||
|
import { useAdmin } from 'web/hooks/use-admin'
|
||||||
|
|
||||||
export function AnswersPanel(props: {
|
export function AnswersPanel(props: {
|
||||||
contract: FreeResponseContract | MultipleChoiceContract
|
contract: FreeResponseContract | MultipleChoiceContract
|
||||||
}) {
|
}) {
|
||||||
|
const isAdmin = useAdmin()
|
||||||
const { contract } = props
|
const { contract } = props
|
||||||
const { creatorId, resolution, resolutions, totalBets, outcomeType } =
|
const { creatorId, resolution, resolutions, totalBets, outcomeType } =
|
||||||
contract
|
contract
|
||||||
|
@ -154,10 +156,12 @@ export function AnswersPanel(props: {
|
||||||
<CreateAnswerPanel contract={contract} />
|
<CreateAnswerPanel contract={contract} />
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{user?.id === creatorId && !resolution && (
|
{(user?.id === creatorId || isAdmin) && !resolution && (
|
||||||
<>
|
<>
|
||||||
<Spacer h={2} />
|
<Spacer h={2} />
|
||||||
<AnswerResolvePanel
|
<AnswerResolvePanel
|
||||||
|
isAdmin={isAdmin}
|
||||||
|
isCreator={user?.id === creatorId}
|
||||||
contract={contract}
|
contract={contract}
|
||||||
resolveOption={resolveOption}
|
resolveOption={resolveOption}
|
||||||
setResolveOption={setResolveOption}
|
setResolveOption={setResolveOption}
|
||||||
|
|
|
@ -14,11 +14,12 @@ import { Row } from './layout/row'
|
||||||
|
|
||||||
export function NumericResolutionPanel(props: {
|
export function NumericResolutionPanel(props: {
|
||||||
isAdmin: boolean
|
isAdmin: boolean
|
||||||
|
isCreator: boolean
|
||||||
creator: User
|
creator: User
|
||||||
contract: NumericContract | PseudoNumericContract
|
contract: NumericContract | PseudoNumericContract
|
||||||
className?: string
|
className?: string
|
||||||
}) {
|
}) {
|
||||||
const { contract, className, isAdmin } = props
|
const { contract, className, isAdmin, isCreator } = props
|
||||||
const { min, max, outcomeType } = contract
|
const { min, max, outcomeType } = contract
|
||||||
|
|
||||||
const [outcomeMode, setOutcomeMode] = useState<
|
const [outcomeMode, setOutcomeMode] = useState<
|
||||||
|
@ -86,7 +87,7 @@ export function NumericResolutionPanel(props: {
|
||||||
className
|
className
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{isAdmin && (
|
{isAdmin && !isCreator && (
|
||||||
<span className="absolute right-4 top-4 rounded bg-red-200 p-1 text-xs text-red-600">
|
<span className="absolute right-4 top-4 rounded bg-red-200 p-1 text-xs text-red-600">
|
||||||
ADMIN
|
ADMIN
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -13,11 +13,12 @@ import { BinaryContract, resolution } from 'common/contract'
|
||||||
|
|
||||||
export function ResolutionPanel(props: {
|
export function ResolutionPanel(props: {
|
||||||
isAdmin: boolean
|
isAdmin: boolean
|
||||||
|
isCreator: boolean
|
||||||
creator: User
|
creator: User
|
||||||
contract: BinaryContract
|
contract: BinaryContract
|
||||||
className?: string
|
className?: string
|
||||||
}) {
|
}) {
|
||||||
const { contract, className, isAdmin } = props
|
const { contract, className, isAdmin, isCreator } = props
|
||||||
|
|
||||||
// const earnedFees =
|
// const earnedFees =
|
||||||
// contract.mechanism === 'dpm-2'
|
// contract.mechanism === 'dpm-2'
|
||||||
|
@ -68,7 +69,7 @@ export function ResolutionPanel(props: {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Col className={clsx('relative rounded-md bg-white px-8 py-6', className)}>
|
<Col className={clsx('relative rounded-md bg-white px-8 py-6', className)}>
|
||||||
{isAdmin && (
|
{isAdmin && !isCreator && (
|
||||||
<span className="absolute right-4 top-4 rounded bg-red-200 p-1 text-xs text-red-600">
|
<span className="absolute right-4 top-4 rounded bg-red-200 p-1 text-xs text-red-600">
|
||||||
ADMIN
|
ADMIN
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -146,12 +146,14 @@ export function ContractPageSidebar(props: {
|
||||||
<NumericResolutionPanel
|
<NumericResolutionPanel
|
||||||
isAdmin={isAdmin}
|
isAdmin={isAdmin}
|
||||||
creator={user}
|
creator={user}
|
||||||
|
isCreator={isCreator}
|
||||||
contract={contract}
|
contract={contract}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<ResolutionPanel
|
<ResolutionPanel
|
||||||
isAdmin={isAdmin}
|
isAdmin={isAdmin}
|
||||||
creator={user}
|
creator={user}
|
||||||
|
isCreator={isCreator}
|
||||||
contract={contract}
|
contract={contract}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user