Hide tip market if creator
This commit is contained in:
parent
7c78c59c5d
commit
9aa64bdf9e
|
@ -3,6 +3,6 @@ export type Like = {
|
||||||
userId: string
|
userId: string
|
||||||
type: 'contract'
|
type: 'contract'
|
||||||
createdTime: number
|
createdTime: number
|
||||||
tipTxnId?: string
|
tipTxnId?: string // only holds most recent tip txn id
|
||||||
}
|
}
|
||||||
export const LIKE_TIP_AMOUNT = 5
|
export const LIKE_TIP_AMOUNT = 5
|
||||||
|
|
|
@ -16,7 +16,7 @@ import { Contract, updateContract } from 'web/lib/firebase/contracts'
|
||||||
import { DateTimeTooltip } from '../datetime-tooltip'
|
import { DateTimeTooltip } from '../datetime-tooltip'
|
||||||
import { fromNow } from 'web/lib/util/time'
|
import { fromNow } from 'web/lib/util/time'
|
||||||
import { Avatar } from '../avatar'
|
import { Avatar } from '../avatar'
|
||||||
import React, { useState } from 'react'
|
import { useState } from 'react'
|
||||||
import { ContractInfoDialog } from './contract-info-dialog'
|
import { ContractInfoDialog } from './contract-info-dialog'
|
||||||
import { Bet } from 'common/bet'
|
import { Bet } from 'common/bet'
|
||||||
import NewContractBadge from '../new-contract-badge'
|
import NewContractBadge from '../new-contract-badge'
|
||||||
|
@ -145,7 +145,7 @@ export function ContractDetails(props: {
|
||||||
isCreator?: boolean
|
isCreator?: boolean
|
||||||
disabled?: boolean
|
disabled?: boolean
|
||||||
}) {
|
}) {
|
||||||
const { contract, bets, isCreator, disabled } = props
|
const { contract, isCreator, disabled } = props
|
||||||
const { closeTime, creatorName, creatorUsername, creatorId, groupLinks } =
|
const { closeTime, creatorName, creatorUsername, creatorId, groupLinks } =
|
||||||
contract
|
contract
|
||||||
const { volumeLabel, resolvedDate } = contractMetrics(contract)
|
const { volumeLabel, resolvedDate } = contractMetrics(contract)
|
||||||
|
@ -267,7 +267,6 @@ export function ContractDetails(props: {
|
||||||
{!disabled && (
|
{!disabled && (
|
||||||
<ContractInfoDialog
|
<ContractInfoDialog
|
||||||
contract={contract}
|
contract={contract}
|
||||||
bets={bets}
|
|
||||||
className={'hidden md:inline-flex'}
|
className={'hidden md:inline-flex'}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
@ -310,15 +309,11 @@ export function ExtraMobileContractDetails(props: {
|
||||||
!resolvedDate &&
|
!resolvedDate &&
|
||||||
contract.closeTime && (
|
contract.closeTime && (
|
||||||
<Col className={'items-center text-sm'}>
|
<Col className={'items-center text-sm'}>
|
||||||
<Row className={'text-gray-500'}>
|
<EditableCloseDate
|
||||||
<DateTimeTooltip text="Market closes:" time={contract.closeTime}>
|
closeTime={contract.closeTime}
|
||||||
<EditableCloseDate
|
contract={contract}
|
||||||
closeTime={contract.closeTime}
|
isCreator={contract.creatorId === user?.id}
|
||||||
contract={contract}
|
/>
|
||||||
isCreator={contract.creatorId === user?.id}
|
|
||||||
/>
|
|
||||||
</DateTimeTooltip>
|
|
||||||
</Row>
|
|
||||||
<Row className={'text-gray-400'}>Ends</Row>
|
<Row className={'text-gray-400'}>Ends</Row>
|
||||||
</Col>
|
</Col>
|
||||||
)
|
)
|
||||||
|
@ -387,10 +382,10 @@ function EditableCloseDate(props: {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{isEditingCloseTime ? (
|
{isEditingCloseTime ? (
|
||||||
<Row className="mr-1 items-start">
|
<Row className="z-10 mr-2 w-full shrink-0 items-start items-center gap-1">
|
||||||
<input
|
<input
|
||||||
type="date"
|
type="date"
|
||||||
className="input input-bordered"
|
className="input input-bordered shrink-0"
|
||||||
onClick={(e) => e.stopPropagation()}
|
onClick={(e) => e.stopPropagation()}
|
||||||
onChange={(e) => setCloseDate(e.target.value)}
|
onChange={(e) => setCloseDate(e.target.value)}
|
||||||
min={Date.now()}
|
min={Date.now()}
|
||||||
|
@ -398,20 +393,25 @@ function EditableCloseDate(props: {
|
||||||
/>
|
/>
|
||||||
<input
|
<input
|
||||||
type="time"
|
type="time"
|
||||||
className="input input-bordered ml-2"
|
className="input input-bordered ml-2 shrink-0"
|
||||||
onClick={(e) => e.stopPropagation()}
|
onClick={(e) => e.stopPropagation()}
|
||||||
onChange={(e) => setCloseHoursMinutes(e.target.value)}
|
onChange={(e) => setCloseHoursMinutes(e.target.value)}
|
||||||
min="00:00"
|
min="00:00"
|
||||||
value={closeHoursMinutes}
|
value={closeHoursMinutes}
|
||||||
/>
|
/>
|
||||||
|
<Button size={'xs'} color={'blue'} onClick={onSave}>
|
||||||
|
Done
|
||||||
|
</Button>
|
||||||
</Row>
|
</Row>
|
||||||
) : (
|
) : (
|
||||||
<DateTimeTooltip
|
<DateTimeTooltip
|
||||||
text={closeTime > Date.now() ? 'Trading ends:' : 'Trading ended:'}
|
text={closeTime > Date.now() ? 'Trading ends:' : 'Trading ended:'}
|
||||||
time={closeTime}
|
time={closeTime}
|
||||||
className={isCreator ? 'cursor-pointer' : ''}
|
|
||||||
>
|
>
|
||||||
<span onClick={() => isCreator && setIsEditingCloseTime(true)}>
|
<span
|
||||||
|
className={isCreator ? 'cursor-pointer' : ''}
|
||||||
|
onClick={() => isCreator && setIsEditingCloseTime(true)}
|
||||||
|
>
|
||||||
{isSameYear
|
{isSameYear
|
||||||
? dayJsCloseTime.format('MMM D')
|
? dayJsCloseTime.format('MMM D')
|
||||||
: dayJsCloseTime.format('MMM D, YYYY')}
|
: dayJsCloseTime.format('MMM D, YYYY')}
|
||||||
|
@ -419,14 +419,6 @@ function EditableCloseDate(props: {
|
||||||
</span>
|
</span>
|
||||||
</DateTimeTooltip>
|
</DateTimeTooltip>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{isCreator && isEditingCloseTime && (
|
|
||||||
<Row className={'mt-2 items-center justify-end'}>
|
|
||||||
<button className="btn btn-xs" onClick={onSave}>
|
|
||||||
Done
|
|
||||||
</button>
|
|
||||||
</Row>
|
|
||||||
)}
|
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
import { DotsHorizontalIcon } from '@heroicons/react/outline'
|
import { DotsHorizontalIcon } from '@heroicons/react/outline'
|
||||||
import clsx from 'clsx'
|
import clsx from 'clsx'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import { uniqBy } from 'lodash'
|
|
||||||
import { useState } from 'react'
|
import { useState } from 'react'
|
||||||
import { Bet } from 'common/bet'
|
|
||||||
|
|
||||||
import { Contract } from 'common/contract'
|
import { Contract } from 'common/contract'
|
||||||
import { formatMoney } from 'common/util/format'
|
import { formatMoney } from 'common/util/format'
|
||||||
|
@ -24,10 +22,9 @@ export const contractDetailsButtonClassName =
|
||||||
|
|
||||||
export function ContractInfoDialog(props: {
|
export function ContractInfoDialog(props: {
|
||||||
contract: Contract
|
contract: Contract
|
||||||
bets: Bet[]
|
|
||||||
className?: string
|
className?: string
|
||||||
}) {
|
}) {
|
||||||
const { contract, bets, className } = props
|
const { contract, className } = props
|
||||||
|
|
||||||
const [open, setOpen] = useState(false)
|
const [open, setOpen] = useState(false)
|
||||||
const [featured, setFeatured] = useState(
|
const [featured, setFeatured] = useState(
|
||||||
|
@ -41,11 +38,7 @@ export function ContractInfoDialog(props: {
|
||||||
const { createdTime, closeTime, resolutionTime, mechanism, outcomeType, id } =
|
const { createdTime, closeTime, resolutionTime, mechanism, outcomeType, id } =
|
||||||
contract
|
contract
|
||||||
|
|
||||||
const tradersCount = uniqBy(
|
const bettorsCount = contract.uniqueBettorCount ?? 'Unknown'
|
||||||
bets.filter((bet) => !bet.isAnte),
|
|
||||||
'userId'
|
|
||||||
).length
|
|
||||||
|
|
||||||
const typeDisplay =
|
const typeDisplay =
|
||||||
outcomeType === 'BINARY'
|
outcomeType === 'BINARY'
|
||||||
? 'YES / NO'
|
? 'YES / NO'
|
||||||
|
@ -140,8 +133,8 @@ export function ContractInfoDialog(props: {
|
||||||
</tr> */}
|
</tr> */}
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>Traders</td>
|
<td>Bettors</td>
|
||||||
<td>{tradersCount}</td>
|
<td>{bettorsCount}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -46,9 +46,9 @@ export const ContractOverview = (props: {
|
||||||
isCreator={isCreator}
|
isCreator={isCreator}
|
||||||
/>
|
/>
|
||||||
<Row className="justify-between gap-4">
|
<Row className="justify-between gap-4">
|
||||||
<Col className="gap-2 text-2xl text-indigo-700 md:text-3xl">
|
<div className="text-2xl text-indigo-700 md:text-3xl">
|
||||||
<Linkify text={question} />
|
<Linkify text={question} />
|
||||||
</Col>
|
</div>
|
||||||
<Row className={'hidden gap-3 xl:flex'}>
|
<Row className={'hidden gap-3 xl:flex'}>
|
||||||
{isBinary && (
|
{isBinary && (
|
||||||
<BinaryResolutionOrChance
|
<BinaryResolutionOrChance
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { ShareIcon } from '@heroicons/react/outline'
|
||||||
|
|
||||||
import { Row } from '../layout/row'
|
import { Row } from '../layout/row'
|
||||||
import { Contract } from 'web/lib/firebase/contracts'
|
import { Contract } from 'web/lib/firebase/contracts'
|
||||||
import { useState } from 'react'
|
import React, { useState } from 'react'
|
||||||
import { Button } from 'web/components/button'
|
import { Button } from 'web/components/button'
|
||||||
import { User } from 'common/user'
|
import { User } from 'common/user'
|
||||||
import { ShareModal } from './share-modal'
|
import { ShareModal } from './share-modal'
|
||||||
|
@ -49,9 +49,11 @@ export function ExtraContractActionsRow(props: {
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<FollowMarketButton contract={contract} user={user} />
|
<FollowMarketButton contract={contract} user={user} />
|
||||||
<LikeMarketButton contract={contract} user={user} />
|
{user?.id !== contract.creatorId && (
|
||||||
|
<LikeMarketButton contract={contract} user={user} />
|
||||||
|
)}
|
||||||
<Col className={'justify-center md:hidden'}>
|
<Col className={'justify-center md:hidden'}>
|
||||||
<ContractInfoDialog contract={contract} bets={bets} />
|
<ContractInfoDialog contract={contract} />
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user