Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions apps/api/app/api/v1/users/username/[username]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ export async function GET(

return NextResponse.json({ data: user })
} catch (error) {
console.log(error) // eslint-disable-line no-console -- Log error for debugging

if (error instanceof UserNotFoundError) {
return NextResponse.json({ error: error.message }, { status: 404 })
}
Expand Down
2 changes: 1 addition & 1 deletion packages/lists/components/ListMarketRow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ export function ListMarketRow({

<ResolveMarketDialog
market={market}
open={isResolving === market.id}
open={isResolving === market.id && canResolve}
onClose={() => setResolving(undefined)}
onSuccess={onRevalidate}
/>
Expand Down
14 changes: 6 additions & 8 deletions packages/lists/components/ListPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ export function ListPage({
const { selected, setSelected } = useSelectedItems()
const [isAddMore, setIsAddMore] = useSearchParam('addMore')
const [isEditing, setIsEditing] = useSearchParam('edit')
const canEdit = user ? canModifyList({ list, user }) : false
const canAddMore = user ? canAddToList({ list, userId: user.id }) : false

const handleRevalidateBalance = async () => {
void onRevalidate?.()
Expand All @@ -48,11 +50,7 @@ export function ListPage({

return (
<Card className="flex-1">
<ListToolbar
list={list}
canEdit={user ? canModifyList({ list, user }) : false}
onInitiateEdit={() => setIsEditing('true')}
/>
<ListToolbar list={list} canEdit={canEdit} onInitiateEdit={() => setIsEditing('true')} />

<CardHeader className="pt-0 md:pt-0">
<CardTitle className="leading-relaxed">{list.title}</CardTitle>
Expand Down Expand Up @@ -110,7 +108,7 @@ export function ListPage({
</Card>
) : null}

{canAddToList({ list, userId: user?.id }) ? (
{canAddMore ? (
<div className="flex justify-end">
<Button variant="ghost" className="text-muted-foreground" size="sm" onClick={() => setIsAddMore('true')}>
<PlusIcon className="h-4 w-4" /> Add more
Expand Down Expand Up @@ -147,14 +145,14 @@ export function ListPage({
<EditListDialog
key={list.updatedAt.toString()} // reset form when list updates
list={list}
open={isEditing === 'true'}
open={isEditing === 'true' && canEdit}
onClose={() => setIsEditing(undefined)}
onSuccess={onRevalidate}
/>

<AddMoreListDialog
list={list}
open={isAddMore != null}
open={isAddMore != null && canAddMore}
onClose={() => setIsAddMore(undefined)}
onSuccess={onRevalidate}
/>
Expand Down
12 changes: 7 additions & 5 deletions packages/markets/components/MarketOverviewPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import { UserLink } from '@play-money/users/components/UserLink'
import { useUser } from '@play-money/users/context/UserContext'
import { useSelectedItems } from '../../ui/src/contexts/SelectedItemContext'
import { useSearchParam } from '../../ui/src/hooks/useSearchParam'
import { canModifyMarket, isMarketClosed } from '../rules'
import { canModifyMarket, isMarketClosed, isMarketTradable } from '../rules'
import { ExtendedMarket } from '../types'
import { EditMarketDialog } from './EditMarketDialog'
import { EditMarketOptionDialog } from './EditMarketOptionDialog'
Expand Down Expand Up @@ -68,6 +68,8 @@ export function MarketOverviewPage({
const [, setResolving] = useSearchParam('resolve')
const isCreator = user?.id === market.createdBy
const probabilities = marketOptionBalancesToProbabilities(balance?.amm)
const canEdit = user ? canModifyMarket({ market, user }) : false
const canTrade = isMarketTradable({ market })

const mostLikelyOption = market.options.reduce((prev, current) =>
(prev.probability || 0) > (current.probability || 0) ? prev : current
Expand Down Expand Up @@ -111,7 +113,7 @@ export function MarketOverviewPage({
<Card className="flex-1">
<MarketToolbar
market={market}
canEdit={user ? canModifyMarket({ market, user }) : false}
canEdit={canEdit}
onInitiateEdit={() => setIsEditing('true')}
onInitiateBoost={() => setIsBoosting('true')}
onRevalidate={handleRevalidateBalance}
Expand Down Expand Up @@ -279,20 +281,20 @@ export function MarketOverviewPage({
<EditMarketDialog
key={market.updatedAt.toString()} // reset form when market updates
market={market}
open={isEditing === 'true'}
open={isEditing === 'true' && canEdit}
onClose={() => setIsEditing(undefined)}
onSuccess={onRevalidate}
/>
<EditMarketOptionDialog
market={market}
optionId={isEditOption!}
open={isEditOption != null}
open={isEditOption != null && canEdit}
onClose={() => setIsEditOption(undefined)}
onSuccess={onRevalidate}
/>
<LiquidityBoostDialog
market={market}
open={isBoosting === 'true'}
open={isBoosting === 'true' && canTrade}
onClose={() => setIsBoosting(undefined)}
onSuccess={handleRevalidateBalance}
/>
Expand Down
2 changes: 1 addition & 1 deletion packages/markets/components/MarketSellForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ export function MarketSellForm({

const proportionateCost =
(form.getValues('amount') * (selectedPosition?.cost || 0)) / (selectedPosition?.quantity || 0)
const disabled = !selectedPosition || new Decimal(selectedPosition.quantity).toDecimalPlaces(4).lt(0)
const disabled = !selectedPosition || new Decimal(selectedPosition.quantity).toDecimalPlaces(4).lte(0)
const orderedOptions = _.orderBy(options, 'createdAt')

return (
Expand Down
4 changes: 2 additions & 2 deletions packages/markets/components/MarketToolbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -162,14 +162,14 @@ export function MarketToolbar({

<ResolveMarketDialog
market={market}
open={isResolving === 'true'}
open={isResolving === 'true' && canResolve}
onClose={() => setResolving(undefined)}
onSuccess={onRevalidate}
/>

<CancelMarketDialog
market={market}
open={isCanceling === 'true'}
open={isCanceling === 'true' && canCancel}
onClose={() => setCanceling(undefined)}
onSuccess={onRevalidate}
/>
Expand Down
9 changes: 8 additions & 1 deletion packages/markets/lib/createMarketSellTransaction.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import Decimal from 'decimal.js'
import { executeTransaction } from '@play-money/finance/lib/executeTransaction'
import { findBalanceChange } from '@play-money/finance/lib/helpers'
import { executeTrade } from './executeTrade'
import { updateMarketBalances } from './updateMarketBalances'
import { updateMarketOptionProbabilities } from './updateMarketOptionProbabilities'
Expand Down Expand Up @@ -36,6 +37,12 @@ export async function createMarketSellTransaction({
additionalLogic: async (txParams) => {
// Create or update the position before we value it
await updateMarketPosition({ ...txParams, marketId, accountId, optionId })
const primaryChange = findBalanceChange({
balanceChanges: txParams.balanceChanges,
accountId,
assetType: 'CURRENCY',
assetId: 'PRIMARY',
})!

const [balances] = await Promise.all([
updateMarketBalances({ ...txParams, marketId }),
Expand All @@ -47,7 +54,7 @@ export async function createMarketSellTransaction({
},
data: {
liquidityCount: {
decrement: amount.toNumber(),
decrement: primaryChange.change,
},
updatedAt: new Date(),
},
Expand Down
Loading
Loading