mirror of
https://github.com/MAGICGrants/campaign-site.git
synced 2026-01-09 12:27:59 -05:00
refactor: project props
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
96
utils/md.ts
96
utils/md.ts
@@ -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
|
||||
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user