diff --git a/api/resolvers/image.js b/api/resolvers/image.js index db16de97..dd13e125 100644 --- a/api/resolvers/image.js +++ b/api/resolvers/image.js @@ -4,8 +4,8 @@ import { datePivot } from '../../lib/time' export default { Query: { imageFees: async (parent, { s3Keys }, { models, me }) => { - const [, fees] = await imageFees(s3Keys, { models, me }) - return fees + const { fees, unpaid, size24h, sizeNow } = await imageFees(s3Keys, { models, me }) + return { fees, unpaid, size24h, sizeNow } } } } @@ -39,12 +39,12 @@ export async function imageFees (s3Keys, { models, me }) { const unpaidS3Keys = (await models.upload.findMany({ select: { id: true }, where: { id: { in: s3Keys }, paid: false } })).map(({ id }) => id) const unpaid = unpaidS3Keys.length - if (!unpaid) return [itemId => [], 0] + if (!unpaid) return { queries: itemId => [], fees: 0 } if (!me) { // anons pay for every new image 100 sats const fees = unpaid * 100 - return [queries(ANON_USER_ID, unpaidS3Keys, fees), fees] + return { queries: queries(ANON_USER_ID, unpaidS3Keys, fees), fees, unpaid } } // check how much stacker uploaded in last 24 hours @@ -81,5 +81,5 @@ export async function imageFees (s3Keys, { models, me }) { } else { fees = 10000 * unpaid } - return [queries(me.id, unpaidS3Keys, fees), fees] + return { queries: queries(me.id, unpaidS3Keys, fees), fees, unpaid, size24h, sizeNow } } diff --git a/api/resolvers/item.js b/api/resolvers/item.js index 74f1cf91..f7140c9e 100644 --- a/api/resolvers/item.js +++ b/api/resolvers/item.js @@ -1091,7 +1091,7 @@ export const updateItem = async (parent, { sub: subName, forward, options, ...it item = { subName, userId: me.id, ...item } const fwdUsers = await getForwardUsers(models, forward) - const [imgQueriesFn, imgFees] = await imageFeesFromText(item.text, { models, me }) + const { queries: imgQueriesFn, fees: imgFees } = await imageFeesFromText(item.text, { models, me }) item = await serializeInvoicable( [ models.$queryRawUnsafe(`${SELECT} FROM update_item($1::JSONB, $2::JSONB, $3::JSONB) AS "Item"`, @@ -1128,7 +1128,7 @@ export const createItem = async (parent, { forward, options, ...item }, { me, mo item.url = removeTracking(item.url) } - const [imgQueriesFn, imgFees] = await imageFeesFromText(item.text, { models, me }) + const { queries: imgQueriesFn, fees: imgFees } = await imageFeesFromText(item.text, { models, me }) const enforceFee = (me ? undefined : (item.parentId ? ANON_COMMENT_FEE : (ANON_POST_FEE + (item.boost || 0)))) + imgFees item = await serializeInvoicable( models.$queryRawUnsafe( diff --git a/api/typeDefs/image.js b/api/typeDefs/image.js index cdecc787..172a3dbb 100644 --- a/api/typeDefs/image.js +++ b/api/typeDefs/image.js @@ -1,7 +1,13 @@ import { gql } from 'graphql-tag' export default gql` + type ImageFees { + fees: Int! + unpaid: Int + sizeNow: Int + size24h: Int + } extend type Query { - imageFees(s3Keys: [Int]!): Int! + imageFees(s3Keys: [Int]!): ImageFees! } ` diff --git a/components/fee-button.js b/components/fee-button.js index f09c65ab..641b76ab 100644 --- a/components/fee-button.js +++ b/components/fee-button.js @@ -22,7 +22,7 @@ function Receipt ({ cost, repetition, imageFees, baseFee, parentId, boost }) { {imageFees &&