more changes for free response/multiple choice

This commit is contained in:
ingawei 2022-09-14 17:44:30 -07:00
parent e1f10fb712
commit c7de9eb321
5 changed files with 31 additions and 7 deletions

View File

@ -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"

View File

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

View File

@ -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>

View File

@ -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>

View File

@ -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}
/> />
))} ))}