don't block on tipping

This commit is contained in:
mantikoros 2022-10-01 15:06:09 -05:00
parent 0844e5620a
commit aeeb47bdbe

View File

@ -1,6 +1,6 @@
import { HeartIcon } from '@heroicons/react/outline' import { HeartIcon } from '@heroicons/react/outline'
import { Button } from 'web/components/button' import { Button } from 'web/components/button'
import React, { useMemo } from 'react' import React, { useMemo, useState } from 'react'
import { Contract } from 'common/contract' import { Contract } from 'common/contract'
import { User } from 'common/user' import { User } from 'common/user'
import { useUserLikes } from 'web/hooks/use-likes' import { useUserLikes } from 'web/hooks/use-likes'
@ -20,20 +20,27 @@ export function LikeMarketButton(props: {
user: User | null | undefined user: User | null | undefined
}) { }) {
const { contract, user } = props const { contract, user } = props
const tips = useMarketTipTxns(contract.id).filter( const tips = useMarketTipTxns(contract.id).filter(
(txn) => txn.fromId === user?.id (txn) => txn.fromId === user?.id
) )
const totalTipped = useMemo(() => { const totalTipped = useMemo(() => {
return sum(tips.map((tip) => tip.amount)) return sum(tips.map((tip) => tip.amount))
}, [tips]) }, [tips])
const likes = useUserLikes(user?.id) const likes = useUserLikes(user?.id)
const [isLiking, setIsLiking] = useState(false)
const userLikedContractIds = likes const userLikedContractIds = likes
?.filter((l) => l.type === 'contract') ?.filter((l) => l.type === 'contract')
.map((l) => l.id) .map((l) => l.id)
const onLike = async () => { const onLike = async () => {
if (!user) return firebaseLogin() if (!user) return firebaseLogin()
await likeContract(user, contract)
setIsLiking(true)
likeContract(user, contract).catch(() => setIsLiking(false))
toast(`You tipped ${contract.creatorName} ${formatMoney(LIKE_TIP_AMOUNT)}!`) toast(`You tipped ${contract.creatorName} ${formatMoney(LIKE_TIP_AMOUNT)}!`)
} }
@ -56,7 +63,8 @@ export function LikeMarketButton(props: {
'h-5 w-5 sm:h-6 sm:w-6', 'h-5 w-5 sm:h-6 sm:w-6',
totalTipped > 0 ? 'mr-2' : '', totalTipped > 0 ? 'mr-2' : '',
user && user &&
(userLikedContractIds?.includes(contract.id) || (isLiking ||
userLikedContractIds?.includes(contract.id) ||
(!likes && contract.likedByUserIds?.includes(user.id))) (!likes && contract.likedByUserIds?.includes(user.id)))
? 'fill-red-500 text-red-500' ? 'fill-red-500 text-red-500'
: '' : ''