diff --git a/web/components/feed/activity-items.ts b/web/components/feed/activity-items.ts
index 8380bbcd..2b7b3902 100644
--- a/web/components/feed/activity-items.ts
+++ b/web/components/feed/activity-items.ts
@@ -7,7 +7,6 @@ import { Contract } from '../../../common/contract'
import { User } from '../../../common/user'
import { filterDefined } from '../../../common/util/array'
import { canAddComment, mapCommentsByBetId } from '../../lib/firebase/comments'
-import { fromNow } from '../../lib/util/time'
export type ActivityItem =
| DescriptionItem
@@ -61,10 +60,8 @@ export type BetGroupItem = BaseActivityItem & {
export type AnswerGroupItem = BaseActivityItem & {
type: 'answergroup'
- bets: Bet[]
- comments: Comment[]
answer: Answer
- user: User | null | undefined
+ items: ActivityItem[]
}
export type CloseItem = BaseActivityItem & {
@@ -181,13 +178,21 @@ function getAnswerGroups(
(answer) => answer.id === outcome
) as Answer
+ const answerItems = groupBets(
+ answerBets,
+ answerComments,
+ DAY_IN_MS,
+ contract,
+ user?.id,
+ true
+ )
+
return {
id: outcome,
type: 'answergroup' as const,
contract,
answer,
- bets: answerBets,
- comments: answerComments,
+ items: answerItems,
user,
}
})
diff --git a/web/components/feed/feed-items.tsx b/web/components/feed/feed-items.tsx
index 1edd78eb..56fa87e4 100644
--- a/web/components/feed/feed-items.tsx
+++ b/web/components/feed/feed-items.tsx
@@ -8,6 +8,7 @@ import {
LockClosedIcon,
UserIcon,
UsersIcon,
+ PencilAltIcon,
XIcon,
} from '@heroicons/react/solid'
import dayjs from 'dayjs'
@@ -46,7 +47,6 @@ import { Avatar } from '../avatar'
import { useAdmin } from '../../hooks/use-admin'
import { Answer } from '../../../common/answer'
import { ActivityItem } from './activity-items'
-import { User } from '../../../common/user'
export function FeedItems(props: {
contract: Contract
@@ -61,32 +61,15 @@ export function FeedItems(props: {
{items.map((item, activityItemIdx) => (
- {activityItemIdx !== items.length - 1 ? (
+ {activityItemIdx !== items.length - 1 ||
+ item.type === 'answergroup' ? (
) : null}
- {item.type === 'question' ? (
-
- ) : item.type === 'description' ? (
-
- ) : item.type === 'createanswer' ? (
-
- ) : item.type === 'comment' ? (
-
- ) : item.type === 'bet' ? (
-
- ) : item.type === 'betgroup' ? (
-
- ) : item.type === 'answergroup' ? (
-
- ) : item.type === 'close' ? (
-
- ) : item.type === 'resolve' ? (
-
- ) : null}
+
))}
@@ -98,6 +81,31 @@ export function FeedItems(props: {
)
}
+function FeedItem(props: { item: ActivityItem }) {
+ const { item } = props
+
+ switch (item.type) {
+ case 'question':
+ return
+ case 'description':
+ return
+ case 'comment':
+ return
+ case 'bet':
+ return
+ case 'createanswer':
+ return
+ case 'betgroup':
+ return
+ case 'answergroup':
+ return
+ case 'close':
+ return
+ case 'resolve':
+ return
+ }
+}
+
function FeedComment(props: {
contract: Contract
comment: Comment
@@ -106,28 +114,16 @@ function FeedComment(props: {
truncate: boolean
}) {
const { contract, comment, bet, showOutcomeLabel, truncate } = props
- const { createdTime } = contract
const { amount, outcome } = bet
- const { text, userUsername, userName, userAvatarUrl } = comment
+ const { text, userUsername, userName, userAvatarUrl, createdTime } = comment
const bought = amount >= 0 ? 'bought' : 'sold'
const money = formatMoney(Math.abs(amount))
- // const answer =
- // feedType !== 'multi' &&
- // (contract.answers?.find((answer: Answer) => answer?.id === outcome) as
- // | Answer
- // | undefined)
-
return (
<>
- {/* {answer && (
-
- {answer.text}
-
- )} */}
@@ -227,7 +223,7 @@ function FeedBet(props: {
of
>
)}
-
+
{canComment && (
// Allow user to comment in an textarea if they are the creator
@@ -421,7 +417,7 @@ export function FeedQuestion(props: {
<>
•
{contract.closeTime > Date.now() ? 'Closes' : 'Closed'}
-
+
>
)
@@ -497,7 +493,7 @@ function FeedDescription(props: { contract: Contract }) {
name={creatorName}
username={creatorUsername}
/>{' '}
- created this market
+ created this market
@@ -518,7 +514,7 @@ function FeedCreateAnswer(props: { contract: Contract; answer: Answer }) {
name={answer.name}
username={answer.username}
/>{' '}
- submitted this answer
+ submitted this answer
>
@@ -561,7 +557,7 @@ function FeedResolve(props: { contract: Contract }) {
username={creatorUsername}
/>{' '}
resolved this market to {' '}
-
+
>
@@ -586,7 +582,7 @@ function FeedClose(props: { contract: Contract }) {
Trading closed in this market{' '}
-
+
>
@@ -653,7 +649,7 @@ function FeedBetGroup(props: {
{index !== outcomes.length - 1 &&
}
))}
-
+
>
@@ -663,33 +659,50 @@ function FeedBetGroup(props: {
function FeedAnswerGroup(props: {
contract: Contract
answer: Answer
- bets: Bet[]
- comments: Comment[]
- user: User | null | undefined
+ items: ActivityItem[]
}) {
- const { contract, answer, bets, comments, user } = props
-
- const betGroups = _.groupBy(bets, (bet) => bet.outcome)
- const outcomes = Object.keys(betGroups)
-
- // Use the time of the last bet for the entire group
- const createdTime = bets[bets.length - 1].createdTime
+ const { answer, items } = props
return (
- <>
-
-
-
-
-
- >
+
+
+ {items.map((item, index) => (
+
+ {index !== items.length - 1 ? (
+
+ ) : null}
+
+
+
+
+ ))}
+
)
}