allow edit of pending items (#1431)
This commit is contained in:
parent
1641b58e55
commit
450c969dfc
@ -13,7 +13,13 @@ export async function getCost ({ id, boost = 0, uploadIds }, { me, models }) {
|
|||||||
// or more boost
|
// or more boost
|
||||||
const old = await models.item.findUnique({ where: { id: parseInt(id) } })
|
const old = await models.item.findUnique({ where: { id: parseInt(id) } })
|
||||||
const { totalFeesMsats } = await uploadFees(uploadIds, { models, me })
|
const { totalFeesMsats } = await uploadFees(uploadIds, { models, me })
|
||||||
return BigInt(totalFeesMsats) + satsToMsats(boost - old.boost)
|
const cost = BigInt(totalFeesMsats) + satsToMsats(boost - old.boost)
|
||||||
|
|
||||||
|
if (cost > 0 && old.invoiceActionState && old.invoiceActionState !== 'PAID') {
|
||||||
|
throw new Error('creation invoice not paid')
|
||||||
|
}
|
||||||
|
|
||||||
|
return cost
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function perform (args, context) {
|
export async function perform (args, context) {
|
||||||
|
@ -1328,10 +1328,6 @@ export const updateItem = async (parent, { sub: subName, forward, hash, hmac, ..
|
|||||||
throw new GqlInputError('item is deleted')
|
throw new GqlInputError('item is deleted')
|
||||||
}
|
}
|
||||||
|
|
||||||
if (old.invoiceActionState && old.invoiceActionState !== 'PAID') {
|
|
||||||
throw new GqlInputError('cannot edit unpaid item')
|
|
||||||
}
|
|
||||||
|
|
||||||
// author can edit their own item (except anon)
|
// author can edit their own item (except anon)
|
||||||
const meId = Number(me?.id ?? USER_ID.anon)
|
const meId = Number(me?.id ?? USER_ID.anon)
|
||||||
const authorEdit = !!me && Number(old.userId) === meId
|
const authorEdit = !!me && Number(old.userId) === meId
|
||||||
|
@ -65,6 +65,29 @@ export default function ItemInfo ({
|
|||||||
const meSats = (me ? item.meSats : item.meAnonSats) || 0
|
const meSats = (me ? item.meSats : item.meAnonSats) || 0
|
||||||
|
|
||||||
const EditInfo = () => {
|
const EditInfo = () => {
|
||||||
|
if (canEdit) {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<span> \ </span>
|
||||||
|
<span
|
||||||
|
className='text-reset pointer fw-bold'
|
||||||
|
onClick={() => onEdit ? onEdit() : router.push(`/items/${item.id}/edit`)}
|
||||||
|
>
|
||||||
|
<span>{editText || 'edit'} </span>
|
||||||
|
{(!item.invoice?.actionState || item.invoice?.actionState === 'PAID') &&
|
||||||
|
<Countdown
|
||||||
|
date={editThreshold}
|
||||||
|
onComplete={() => { setCanEdit(false) }}
|
||||||
|
/>}
|
||||||
|
</span>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
const PaymentInfo = () => {
|
||||||
const waitForQrPayment = useQrPayment()
|
const waitForQrPayment = useQrPayment()
|
||||||
if (item.deletedAt) return null
|
if (item.deletedAt) return null
|
||||||
|
|
||||||
@ -90,18 +113,6 @@ export default function ItemInfo ({
|
|||||||
)
|
)
|
||||||
onClick = () => waitForQrPayment({ id: item.invoice?.id }, null, { cancelOnClose: false }).catch(console.error)
|
onClick = () => waitForQrPayment({ id: item.invoice?.id }, null, { cancelOnClose: false }).catch(console.error)
|
||||||
}
|
}
|
||||||
} else if (canEdit) {
|
|
||||||
Component = () => (
|
|
||||||
<>
|
|
||||||
<span>{editText || 'edit'} </span>
|
|
||||||
<Countdown
|
|
||||||
date={editThreshold}
|
|
||||||
onComplete={() => {
|
|
||||||
setCanEdit(false)
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</>)
|
|
||||||
onClick = () => onEdit ? onEdit() : router.push(`/items/${item.id}/edit`)
|
|
||||||
} else {
|
} else {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@ -207,6 +218,7 @@ export default function ItemInfo ({
|
|||||||
showActionDropdown &&
|
showActionDropdown &&
|
||||||
<>
|
<>
|
||||||
<EditInfo />
|
<EditInfo />
|
||||||
|
<PaymentInfo />
|
||||||
<ActionDropdown>
|
<ActionDropdown>
|
||||||
<CopyLinkDropdownItem item={item} />
|
<CopyLinkDropdownItem item={item} />
|
||||||
<InfoDropdownItem item={item} />
|
<InfoDropdownItem item={item} />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user