Hide tip market if creator

This commit is contained in:
Ian Philips 2022-08-30 16:42:24 -06:00
parent 7c78c59c5d
commit 9aa64bdf9e
5 changed files with 29 additions and 42 deletions

View File

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

View File

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

View File

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

View File

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

View File

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