Fix multiplication with feesPerImage

This commit is contained in:
ekzyis 2023-10-26 02:52:13 +02:00
parent d8511ba6d2
commit 30a413e494
4 changed files with 22 additions and 16 deletions

View File

@ -4,8 +4,10 @@ import { datePivot } from '../../lib/time'
export default { export default {
Query: { Query: {
imageFees: async (parent, { s3Keys }, { models, me }) => { imageFees: async (parent, { s3Keys }, { models, me }) => {
const { fees, unpaid, size24h, sizeNow } = await imageFees(s3Keys, { models, me }) const imgFees = await imageFees(s3Keys, { models, me })
return { fees, unpaid, size24h, sizeNow } delete imgFees.queries
// add defaults so we can be sure these properties always exist in the frontend
return Object.assign({ fees: 0, unpaid: 0, feesPerImage: 0, size24h: 0, sizeNow: 0 }, imgFees)
} }
} }
} }
@ -43,8 +45,9 @@ export async function imageFees (s3Keys, { models, me }) {
if (!me) { if (!me) {
// anons pay for every new image 100 sats // anons pay for every new image 100 sats
const fees = unpaid * 100 const feesPerImage = 100
return { queries: queries(ANON_USER_ID, unpaidS3Keys, fees), fees, unpaid } const fees = feesPerImage * unpaid
return { queries: queries(ANON_USER_ID, unpaidS3Keys, fees), fees, feesPerImage, unpaid }
} }
// check how much stacker uploaded in last 24 hours // check how much stacker uploaded in last 24 hours
@ -69,17 +72,18 @@ export async function imageFees (s3Keys, { models, me }) {
const MB = 1024 * 1024 // factor for bytes -> megabytes const MB = 1024 * 1024 // factor for bytes -> megabytes
// 10 MB per 24 hours are free. fee is also 0 if there are no incoming images (obviously) // 10 MB per 24 hours are free. fee is also 0 if there are no incoming images (obviously)
let fees let feesPerImage
if (!sizeNow || size <= 10 * MB) { if (!sizeNow || size <= 10 * MB) {
fees = 0 feesPerImage = 0
} else if (size <= 25 * MB) { } else if (size <= 25 * MB) {
fees = 10 * unpaid feesPerImage = 10
} else if (size <= 50 * MB) { } else if (size <= 50 * MB) {
fees = 100 * unpaid feesPerImage = 100
} else if (size <= 100 * MB) { } else if (size <= 100 * MB) {
fees = 1000 * unpaid feesPerImage = 1000
} else { } else {
fees = 10000 * unpaid feesPerImage = 10000
} }
return { queries: queries(me.id, unpaidS3Keys, fees), fees, unpaid, size24h, sizeNow } const fees = feesPerImage * unpaid
return { queries: queries(me.id, unpaidS3Keys, fees * unpaid), fees, feesPerImage, unpaid, size24h, sizeNow }
} }

View File

@ -3,9 +3,10 @@ import { gql } from 'graphql-tag'
export default gql` export default gql`
type ImageFees { type ImageFees {
fees: Int! fees: Int!
unpaid: Int unpaid: Int!
sizeNow: Int feesPerImage: Int!
size24h: Int sizeNow: Int!
size24h: Int!
} }
extend type Query { extend type Query {
imageFees(s3Keys: [Int]!): ImageFees! imageFees(s3Keys: [Int]!): ImageFees!

View File

@ -27,7 +27,7 @@ function Receipt ({ cost, repetition, imageFees, baseFee, parentId, boost }) {
</tr>} </tr>}
{imageFees.fees > 0 && {imageFees.fees > 0 &&
<tr> <tr>
<td>+ {imageFees.unpaid} x {numWithUnits(imageFees.fees, { abbreviate: false })}</td> <td>+ {imageFees.unpaid} x {numWithUnits(imageFees.feesPerImage, { abbreviate: false })}</td>
<td align='right' className='font-weight-light'>image fee</td> <td align='right' className='font-weight-light'>image fee</td>
</tr>} </tr>}
{boost > 0 && {boost > 0 &&
@ -113,7 +113,7 @@ function EditReceipt ({ cost, paidSats, imageFees, boost, parentId }) {
</tr> </tr>
{imageFees.fees > 0 && {imageFees.fees > 0 &&
<tr> <tr>
<td>+ {imageFees.unpaid} x {numWithUnits(imageFees.fees, { abbreviate: false })}</td> <td>+ {imageFees.unpaid} x {numWithUnits(imageFees.feesPerImage, { abbreviate: false })}</td>
<td align='right' className='font-weight-light'>image fee</td> <td align='right' className='font-weight-light'>image fee</td>
</tr>} </tr>}
{boost > 0 && {boost > 0 &&

View File

@ -109,6 +109,7 @@ export function MarkdownInput ({ label, topLevel, groupClassName, onChange, onKe
imageFees(s3Keys: $s3Keys) { imageFees(s3Keys: $s3Keys) {
fees fees
unpaid unpaid
feesPerImage
size24h size24h
sizeNow sizeNow
} }