refactor: project props

This commit is contained in:
Artur
2024-10-09 13:34:46 -03:00
parent cbfa1aa1fc
commit 5e239ac201
12 changed files with 155 additions and 192 deletions

View File

@@ -13,15 +13,15 @@ date: '2023-06-08'
staticXMRaddress: '87LZA8XLDvhVKLi974MaxUANcvkWdL6n986R7WNgKLXY16y31t69Z8228EWcg8THQq3tuAWfQ7Np35Tt3AhPrjzcNbm8Jr5'
goal: 29260
isFunded: true
numdonationsxmr: 27
totaldonationsinfiatxmr: 29260
totaldonationsxmr: 220
numdonationsbtc: 0
totaldonationsinfiatbtc: 0
totaldonationsbtc: 0
fiatnumdonations: 0
fiattotaldonationsinfiat: 0
fiattotaldonations: 0
numDonationsXMR: 27
totalDonationsXMRInFiat: 29260
totalDonationsXMR: 220
numDonationsBTC: 0
totalDonationsBTCInFiat: 0
totalDonationsBTC: 0
numDonationsFiat: 0
totalDonationsFiat: 0
---
### Funded Goal: 220 XMR (86 XMR contributed from MAGIC Monero Fund general fund)

View File

@@ -13,15 +13,15 @@ date: '2023-06-08'
staticXMRaddress: '87LZA8XLDvhVKLi974MaxUANcvkWdL6n986R7WNgKLXY16y31t69Z8228EWcg8THQq3tuAWfQ7Np35Tt3AhPrjzcNbm8Jr5'
goal: 29260
isFunded: true
numdonationsxmr: 27
totaldonationsinfiatxmr: 29260
totaldonationsxmr: 220
numdonationsbtc: 0
totaldonationsinfiatbtc: 0
totaldonationsbtc: 0
fiatnumdonations: 0
fiattotaldonationsinfiat: 0
fiattotaldonations: 0
numDonationsXMR: 27
totalDonationsXMRInFiat: 29260
totalDonationsXMR: 220
numDonationsBTC: 0
totalDonationsBTCInFiat: 0
totalDonationsBTC: 0
numDonationsFiat: 0
totalDonationsFiat: 0
---
### Funded Goal: 220 XMR (86 XMR contributed from MAGIC Monero Fund general fund)

View File

@@ -14,15 +14,15 @@ type: 'Other Free and Open Source Project'
staticXMRaddress: '8454MvGDuZPFP1WKSMcgbRJqV1sXHz7Z3KyURMpkoLXR3CJUZiebjymjQGc6YvTWqhFZEtJwELbcgFHZ9qGPwPsF7fWLWPT'
goal: 28800
isFunded: true
numdonationsxmr: 43
totaldonationsinfiatxmr: 28800
totaldonationsxmr: 226.1
numdonationsbtc: 0
totaldonationsinfiatbtc: 0
totaldonationsbtc: 0
fiatnumdonations: 0
fiattotaldonationsinfiat: 0
fiattotaldonations: 0
numDonationsXMR: 43
totalDonationsXMRInFiat: 28800
totalDonationsXMR: 226.1
numDonationsBTC: 0
totalDonationsBTCInFiat: 0
totalDonationsBTC: 0
numDonationsFiat: 0
totalDonationsFiat: 0
---
### Funded goal: 28,800 USD

View File

@@ -13,15 +13,15 @@ date: '2023-06-08'
staticXMRaddress: '87LZA8XLDvhVKLi974MaxUANcvkWdL6n986R7WNgKLXY16y31t69Z8228EWcg8THQq3tuAWfQ7Np35Tt3AhPrjzcNbm8Jr5'
goal: 29260
isFunded: true
numdonationsxmr: 27
totaldonationsinfiatxmr: 29260
totaldonationsxmr: 220
numdonationsbtc: 0
totaldonationsinfiatbtc: 0
totaldonationsbtc: 0
fiatnumdonations: 0
fiattotaldonationsinfiat: 0
fiattotaldonations: 0
numDonationsXMR: 27
totalDonationsXMRInFiat: 29260
totalDonationsXMR: 220
numDonationsBTC: 0
totalDonationsBTCInFiat: 0
totalDonationsBTC: 0
numDonationsFiat: 0
totalDonationsFiat: 0
---
### Funded Goal: 220 XMR (86 XMR contributed from MAGIC Monero Fund general fund)

View File

@@ -13,15 +13,15 @@ socialLinks:
type: 'Other Free and Open Source Project'
goal: 24000
isFunded: true
numdonationsxmr: 66
totaldonationsinfiatxmr: 18861
totaldonationsxmr: 125.74
numdonationsbtc: 0
totaldonationsinfiatbtc: 0
totaldonationsbtc: 0
fiatnumdonations: 8
fiattotaldonationsinfiat: 5139
fiattotaldonations: 5139
numDonationsXMR: 66
totalDonationsXMRInFiat: 18861
totalDonationsXMR: 125.74
numDonationsBTC: 0
totalDonationsBTCInFiat: 0
totalDonationsBTC: 0
numDonationsFiat: 8
totalDonationsFiat: 5139
---
### Funded Goal: 24,000 USD (5,000 USD contributed from the MAGIC Monero Fund general fund)

View File

@@ -13,15 +13,15 @@ socialLinks:
type: 'Other Free and Open Source Project'
goal: 12000
isFunded: true
numdonationsxmr: 1
totaldonationsinfiatxmr: 12000
totaldonationsxmr: 80
numdonationsbtc: 0
totaldonationsinfiatbtc: 0
totaldonationsbtc: 0
fiatnumdonations: 0
fiattotaldonationsinfiat: 0
fiattotaldonations: 0
numDonationsXMR: 1
totalDonationsXMRInFiat: 12000
totalDonationsXMR: 80
numDonationsBTC: 0
totalDonationsBTCInFiat: 0
totalDonationsBTC: 0
numDonationsFiat: 0
totalDonationsFiat: 0
---
### Funded Goal: 12,000 USD (12,000 USD contributed from MAGIC Monero Fund general fund)

View File

@@ -13,15 +13,15 @@ date: '2023-06-08'
staticXMRaddress: '87LZA8XLDvhVKLi974MaxUANcvkWdL6n986R7WNgKLXY16y31t69Z8228EWcg8THQq3tuAWfQ7Np35Tt3AhPrjzcNbm8Jr5'
goal: 29260
isFunded: true
numdonationsxmr: 27
totaldonationsinfiatxmr: 29260
totaldonationsxmr: 220
numdonationsbtc: 0
totaldonationsinfiatbtc: 0
totaldonationsbtc: 0
fiatnumdonations: 0
fiattotaldonationsinfiat: 0
fiattotaldonations: 0
numDonationsXMR: 27
totalDonationsXMRInFiat: 29260
totalDonationsXMR: 220
numDonationsBTC: 0
totalDonationsBTCInFiat: 0
totalDonationsBTC: 0
numDonationsFiat: 0
totalDonationsFiat: 0
---
### Funded Goal: 220 XMR (86 XMR contributed from MAGIC Monero Fund general fund)

View File

@@ -234,19 +234,19 @@ export async function getServerSideProps({ params, resolvedUrl }: GetServerSideP
const donationStats = {
xmr: {
count: project.isFunded ? project.numdonationsxmr : 0,
amount: project.isFunded ? project.totaldonationsxmr : 0,
fiatAmount: project.isFunded ? project.totaldonationsinfiatxmr : 0,
count: project.isFunded ? project.numDonationsXMR : 0,
amount: project.isFunded ? project.totalDonationsXMR : 0,
fiatAmount: project.isFunded ? project.totalDonationsXMRInFiat : 0,
},
btc: {
count: project.isFunded ? project.numdonationsbtc : 0,
amount: project.isFunded ? project.totaldonationsbtc : 0,
fiatAmount: project.isFunded ? project.totaldonationsinfiatbtc : 0,
count: project.isFunded ? project.numDonationsBTC : 0,
amount: project.isFunded ? project.totalDonationsBTC : 0,
fiatAmount: project.isFunded ? project.totalDonationsBTCInFiat : 0,
},
usd: {
count: project.isFunded ? project.fiatnumdonations : 0,
amount: project.isFunded ? project.fiattotaldonations : 0,
fiatAmount: project.isFunded ? project.fiattotaldonationsinfiat : 0,
count: project.isFunded ? project.numDonationsFiat : 0,
amount: project.isFunded ? project.totalDonationsFiat : 0,
fiatAmount: project.isFunded ? project.totalDonationsFiat : 0,
},
}

View File

@@ -180,9 +180,9 @@ async function handle(
const targetAmountUsd = project.goal
const allDonationsSumUsd =
project.totaldonationsinfiatbtc +
project.totaldonationsinfiatxmr +
project.fiattotaldonationsinfiat
project.totalDonationsBTCInFiat +
project.totalDonationsXMRInFiat +
project.totalDonationsFiat
const remainingAmountBtc = (project.goal - allDonationsSumUsd) / (rates.BTC || 0)
const remainingAmountXmr = (project.goal - allDonationsSumUsd) / (rates.XMR || 0)
@@ -204,12 +204,12 @@ async function handle(
address_btc: bitcoinAddress,
address_xmr: moneroAddress,
raised_amount_percent:
((project.totaldonationsinfiatxmr +
project.totaldonationsinfiatbtc +
project.fiattotaldonationsinfiat) /
((project.totalDonationsBTCInFiat +
project.totalDonationsXMRInFiat +
project.totalDonationsFiat) /
project.goal) *
100,
contributions: project.numdonationsbtc + project.numdonationsxmr + project.fiatnumdonations,
contributions: project.numDonationsBTC + project.numDonationsXMR + project.numDonationsFiat,
}
})
)

View File

@@ -4,6 +4,7 @@ import { env } from '../env.mjs'
export const funds: Record<FundSlug, ProjectItem & { slug: FundSlug }> = {
monero: {
fund: 'monero',
slug: 'monero',
nym: 'MagicMonero',
website: 'https://monerofund.org',
@@ -20,18 +21,17 @@ export const funds: Record<FundSlug, ProjectItem & { slug: FundSlug }> = {
// The attributes below can be ignored
date: '',
goal: 100000,
fund: 'monero',
fiatnumdonations: 0,
fiattotaldonations: 0,
fiattotaldonationsinfiat: 0,
numdonationsbtc: 0,
numdonationsxmr: 0,
totaldonationsbtc: 0,
totaldonationsinfiatbtc: 0,
totaldonationsinfiatxmr: 0,
totaldonationsxmr: 0,
numDonationsBTC: 0,
numDonationsXMR: 0,
numDonationsFiat: 0,
totalDonationsBTC: 0,
totalDonationsXMR: 0,
totalDonationsFiat: 0,
totalDonationsBTCInFiat: 0,
totalDonationsXMRInFiat: 0,
},
firo: {
fund: 'firo',
slug: 'firo',
nym: 'MagicFiro',
website: 'https://monerofund.org',
@@ -47,18 +47,17 @@ export const funds: Record<FundSlug, ProjectItem & { slug: FundSlug }> = {
// The attributes below can be ignored
date: '',
goal: 100000,
fund: 'firo',
fiatnumdonations: 0,
fiattotaldonations: 0,
fiattotaldonationsinfiat: 0,
numdonationsbtc: 0,
numdonationsxmr: 0,
totaldonationsbtc: 0,
totaldonationsinfiatbtc: 0,
totaldonationsinfiatxmr: 0,
totaldonationsxmr: 0,
numDonationsBTC: 0,
numDonationsXMR: 0,
numDonationsFiat: 0,
totalDonationsBTC: 0,
totalDonationsXMR: 0,
totalDonationsFiat: 0,
totalDonationsBTCInFiat: 0,
totalDonationsXMRInFiat: 0,
},
privacyguides: {
fund: 'privacyguides',
slug: 'privacyguides',
nym: 'MagicPrivacyGuides',
website: 'https://monerofund.org',
@@ -74,18 +73,17 @@ export const funds: Record<FundSlug, ProjectItem & { slug: FundSlug }> = {
// The attributes below can be ignored
date: '',
goal: 100000,
fund: 'privacyguides',
fiatnumdonations: 0,
fiattotaldonations: 0,
fiattotaldonationsinfiat: 0,
numdonationsbtc: 0,
numdonationsxmr: 0,
totaldonationsbtc: 0,
totaldonationsinfiatbtc: 0,
totaldonationsinfiatxmr: 0,
totaldonationsxmr: 0,
numDonationsBTC: 0,
numDonationsXMR: 0,
numDonationsFiat: 0,
totalDonationsBTC: 0,
totalDonationsXMR: 0,
totalDonationsFiat: 0,
totalDonationsBTCInFiat: 0,
totalDonationsXMRInFiat: 0,
},
general: {
fund: 'general',
slug: 'general',
nym: 'MagicGeneral',
website: 'https://monerofund.org',
@@ -101,16 +99,14 @@ export const funds: Record<FundSlug, ProjectItem & { slug: FundSlug }> = {
// The attributes below can be ignored
date: '',
goal: 100000,
fund: 'general',
fiatnumdonations: 0,
fiattotaldonations: 0,
fiattotaldonationsinfiat: 0,
numdonationsbtc: 0,
numdonationsxmr: 0,
totaldonationsbtc: 0,
totaldonationsinfiatbtc: 0,
totaldonationsinfiatxmr: 0,
totaldonationsxmr: 0,
numDonationsBTC: 0,
numDonationsXMR: 0,
numDonationsFiat: 0,
totalDonationsBTC: 0,
totalDonationsXMR: 0,
totalDonationsFiat: 0,
totalDonationsBTCInFiat: 0,
totalDonationsXMRInFiat: 0,
},
}

View File

@@ -16,31 +16,6 @@ const directories: Record<FundSlug, string> = {
general: join(process.cwd(), 'docs/general/projects'),
}
const FIELDS = [
'fund',
'title',
'summary',
'slug',
'content',
'coverImage',
'nym',
'date',
'goal',
'website',
'socialLinks',
'staticXMRaddress',
'isFunded',
'numdonationsxmr',
'totaldonationsinfiatxmr',
'totaldonationsxmr',
'numdonationsbtc',
'totaldonationsinfiatbtc',
'totaldonationsbtc',
'fiatnumdonations',
'fiattotaldonationsinfiat',
'fiattotaldonations',
]
const projectSlugsByFund: Record<FundSlug, string[]> = {
monero: fs.readdirSync(directories.monero),
firo: fs.readdirSync(directories.firo),
@@ -54,40 +29,34 @@ export function getSingleFile(path: string) {
}
export function getProjectBySlug(slug: string, fundSlug: FundSlug) {
const fields = FIELDS
const realSlug = slug.replace(/\.md$/, '')
const fullPath = join(directories[fundSlug], `${sanitize(realSlug)}.md`)
const fileContents = fs.readFileSync(fullPath, 'utf8')
const { data, content } = matter(fileContents)
const items: any = {
numdonationsxmr: 0,
totaldonationsinfiatxmr: 0,
totaldonationsxmr: 0,
numdonationsbtc: 0,
totaldonationsinfiatbtc: 0,
totaldonationsbtc: 0,
fiatnumdonations: 0,
fiattotaldonationsinfiat: 0,
fiattotaldonations: 0,
const project: ProjectItem = {
fund: data.fund,
slug: realSlug,
title: data.title,
summary: data.summary,
content: content,
coverImage: data.coverImage,
nym: data.nym,
date: data.date,
website: data.website,
socialLinks: data.socialLinks,
goal: data.goal,
numDonationsBTC: 0,
numDonationsXMR: 0,
numDonationsFiat: 0,
totalDonationsBTC: 0,
totalDonationsXMR: 0,
totalDonationsFiat: 0,
totalDonationsBTCInFiat: 0,
totalDonationsXMRInFiat: 0,
}
// Ensure only the minimal needed data is exposed
fields.forEach((field) => {
if (field === 'slug') {
items[field] = realSlug
}
if (field === 'content') {
items[field] = content
}
if (typeof data[field] !== 'undefined') {
items[field] = data[field]
}
})
return items as ProjectItem
return project
}
export async function getProjects(fundSlug?: FundSlug) {
@@ -130,29 +99,28 @@ export async function getProjects(fundSlug?: FundSlug) {
donations.forEach((donation) => {
if (donation.cryptoCode === 'XMR') {
project.numdonationsxmr += 1
project.totaldonationsxmr += donation.netCryptoAmount || 0
project.totaldonationsinfiatxmr += donation.netFiatAmount
project.numDonationsXMR += 1
project.totalDonationsXMR += donation.netCryptoAmount || 0
project.totalDonationsXMRInFiat += donation.netFiatAmount
}
if (donation.cryptoCode === 'BTC') {
project.numdonationsbtc += 1
project.totaldonationsbtc += donation.netCryptoAmount || 0
project.totaldonationsinfiatbtc += donation.netFiatAmount
project.numDonationsBTC += 1
project.totalDonationsBTC += donation.netCryptoAmount || 0
project.totalDonationsBTCInFiat += donation.netFiatAmount
}
if (donation.cryptoCode === null) {
project.fiatnumdonations += 1
project.fiattotaldonations += donation.netFiatAmount
project.fiattotaldonationsinfiat += donation.netFiatAmount
project.numDonationsFiat += 1
project.totalDonationsFiat += donation.netFiatAmount
}
})
// Make isFunded true if goal has been reached
const donationsSum =
((project.totaldonationsinfiatxmr +
project.totaldonationsinfiatbtc +
project.fiattotaldonationsinfiat) /
((project.totalDonationsXMRInFiat +
project.totalDonationsBTCInFiat +
project.totalDonationsFiat) /
project.goal) *
100

View File

@@ -14,15 +14,14 @@ export type ProjectItem = {
staticXMRaddress?: string
goal: number
isFunded?: boolean
numdonationsxmr: number
totaldonationsinfiatxmr: number
totaldonationsxmr: number
numdonationsbtc: number
totaldonationsinfiatbtc: number
totaldonationsbtc: number
fiatnumdonations: number
fiattotaldonationsinfiat: number
fiattotaldonations: number
numDonationsBTC: number
numDonationsXMR: number
numDonationsFiat: number
totalDonationsBTC: number
totalDonationsXMR: number
totalDonationsFiat: number
totalDonationsBTCInFiat: number
totalDonationsXMRInFiat: number
}
export type PayReq = {