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 {
Query: {
imageFees: async (parent, { s3Keys }, { models, me }) => {
const { fees, unpaid, size24h, sizeNow } = await imageFees(s3Keys, { models, me })
return { fees, unpaid, size24h, sizeNow }
const imgFees = await imageFees(s3Keys, { models, me })
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) {
// anons pay for every new image 100 sats
const fees = unpaid * 100
return { queries: queries(ANON_USER_ID, unpaidS3Keys, fees), fees, unpaid }
const feesPerImage = 100
const fees = feesPerImage * unpaid
return { queries: queries(ANON_USER_ID, unpaidS3Keys, fees), fees, feesPerImage, unpaid }
}
// 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
// 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) {
fees = 0
feesPerImage = 0
} else if (size <= 25 * MB) {
fees = 10 * unpaid
feesPerImage = 10
} else if (size <= 50 * MB) {
fees = 100 * unpaid
feesPerImage = 100
} else if (size <= 100 * MB) {
fees = 1000 * unpaid
feesPerImage = 1000
} 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`
type ImageFees {
fees: Int!
unpaid: Int
sizeNow: Int
size24h: Int
unpaid: Int!
feesPerImage: Int!
sizeNow: Int!
size24h: Int!
}
extend type Query {
imageFees(s3Keys: [Int]!): ImageFees!

View File

@ -27,7 +27,7 @@ function Receipt ({ cost, repetition, imageFees, baseFee, parentId, boost }) {
</tr>}
{imageFees.fees > 0 &&
<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>
</tr>}
{boost > 0 &&
@ -113,7 +113,7 @@ function EditReceipt ({ cost, paidSats, imageFees, boost, parentId }) {
</tr>
{imageFees.fees > 0 &&
<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>
</tr>}
{boost > 0 &&

View File

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