${editTimestamp()}
`) + editor?.commands.focus('end') + insertContent(editor, `${editTimestamp()}
`) }} > Edit description @@ -127,7 +128,7 @@ function EditQuestion(props: { function joinContent(oldContent: ContentType, newContent: string) { const editor = new Editor({ content: oldContent, extensions: exhibitExts }) - appendToEditor(editor, newContent) + insertContent(editor, newContent) return editor.getJSON() } diff --git a/web/components/contract/contract-details.tsx b/web/components/contract/contract-details.tsx index 90b5f3d1..081b035d 100644 --- a/web/components/contract/contract-details.tsx +++ b/web/components/contract/contract-details.tsx @@ -33,7 +33,7 @@ import { Col } from 'web/components/layout/col' import { ContractGroupsList } from 'web/components/groups/contract-groups-list' import { SiteLink } from 'web/components/site-link' import { groupPath } from 'web/lib/firebase/groups' -import { appendToEditor } from '../editor/utils' +import { insertContent } from '../editor/utils' export type ShowTime = 'resolve-date' | 'close-date' @@ -149,7 +149,7 @@ export function ContractDetails(props: { const groupInfo = (Close date updated to ${formattedCloseDate}
` ) diff --git a/web/components/contract/contract-tabs.tsx b/web/components/contract/contract-tabs.tsx index 5aee7899..eb455df0 100644 --- a/web/components/contract/contract-tabs.tsx +++ b/web/components/contract/contract-tabs.tsx @@ -8,18 +8,17 @@ import { Spacer } from '../layout/spacer' import { Tabs } from '../layout/tabs' import { Col } from '../layout/col' import { CommentTipMap } from 'web/hooks/use-tip-txns' -import { LiquidityProvision } from 'common/liquidity-provision' import { useComments } from 'web/hooks/use-comments' +import { useLiquidity } from 'web/hooks/use-liquidity' export function ContractTabs(props: { contract: Contract user: User | null | undefined bets: Bet[] - liquidityProvisions: LiquidityProvision[] comments: Comment[] tips: CommentTipMap }) { - const { contract, user, bets, tips, liquidityProvisions } = props + const { contract, user, bets, tips } = props const { outcomeType } = contract const userBets = user && bets.filter((bet) => bet.userId === user.id) @@ -27,6 +26,9 @@ export function ContractTabs(props: { (bet) => !bet.isAnte && !bet.isRedemption && bet.amount !== 0 ) + const liquidityProvisions = + useLiquidity(contract.id)?.filter((l) => !l.isAnte && l.amount > 0) ?? [] + // Load comments here, so the badge count will be correct const updatedComments = useComments(contract.id) const comments = updatedComments ?? props.comments diff --git a/web/components/editor.tsx b/web/components/editor.tsx index 0807faf8..74f608aa 100644 --- a/web/components/editor.tsx +++ b/web/components/editor.tsx @@ -22,8 +22,14 @@ import { mentionSuggestion } from './editor/mention-suggestion' import { DisplayMention } from './editor/mention' import Iframe from 'common/util/tiptap-iframe' import TiptapTweet from './editor/tiptap-tweet' -import { CodeIcon, PhotographIcon } from '@heroicons/react/solid' import { EmbedModal } from './editor/embed-modal' +import { + CodeIcon, + PhotographIcon, + PresentationChartLineIcon, +} from '@heroicons/react/solid' +import { MarketModal } from './editor/market-modal' +import { insertContent } from './editor/utils' const DisplayImage = Image.configure({ HTMLAttributes: { @@ -103,7 +109,7 @@ export function useTextEditor(props: { // If the pasted content is iframe code, directly inject it const text = event.clipboardData?.getData('text/plain').trim() ?? '' if (isValidIframe(text)) { - editor.chain().insertContent(text).run() + insertContent(editor, text) return true // Prevent the code from getting pasted as text } @@ -130,6 +136,7 @@ export function TextEditor(props: { }) { const { editor, upload, children } = props const [iframeOpen, setIframeOpen] = useState(false) + const [marketOpen, setMarketOpen] = useState(false) return ( <> @@ -139,16 +146,15 @@ export function TextEditor(props: {