From 35b98320ff04336950276b8124fec13f5633631a Mon Sep 17 00:00:00 2001 From: Mohammad Ranjbar Z Date: Thu, 9 May 2024 10:40:07 +0330 Subject: [PATCH] Consider recurring mini donations ( streams) related to #1483 --- src/givethIoService.ts | 14 ++- src/types/general.ts | 207 +++++++++++++++++++++-------------------- 2 files changed, 120 insertions(+), 101 deletions(-) diff --git a/src/givethIoService.ts b/src/givethIoService.ts index e6c959f..53b350e 100644 --- a/src/givethIoService.ts +++ b/src/givethIoService.ts @@ -101,6 +101,10 @@ export const getEligibleDonations = async ( bottomRankInRound isReferrerGivbackEligible referrerWallet + recurringDonation { + id + txHash + } project { slug verified @@ -206,7 +210,10 @@ export const getEligibleDonations = async ( projectLink: `https://giveth.io/project/${item.project.slug}`, isReferrerGivbackEligible: item.isReferrerGivbackEligible, - referrerWallet: item.referrerWallet + referrerWallet: item.referrerWallet, + + parentRecurringDonationId: item?.recurringDonation?.id, + parentRecurringDonationTxHash: item?.recurringDonation?.txHash } }); @@ -234,7 +241,10 @@ export const getEligibleDonations = async ( projectLink: `https://giveth.io/project/${item.project.slug}`, isReferrerGivbackEligible: item.isReferrerGivbackEligible, - referrerWallet: item.referrerWallet + referrerWallet: item.referrerWallet, + + parentRecurringDonationId: item?.recurringDonation?.id, + parentRecurringDonationTxHash: item?.recurringDonation?.txHash } }); return eligible ? diff --git a/src/types/general.ts b/src/types/general.ts index 74c530c..ffec42a 100644 --- a/src/types/general.ts +++ b/src/types/general.ts @@ -1,124 +1,133 @@ import moment from "moment"; export interface FormattedDonation { - amount: string, - currency: string, - createdAt: string, - valueUsd: number, - givbackFactor: number, - projectRank ?: number, - bottomRankInRound ?: number, - givbacksRound ?: number, - giverAddress: string, - txHash: string, - network: string, - source: string, - giverName: string - giverEmail?: string, - projectLink?: string, - niceTokens?: string, - info?: string, - - isReferrerGivbackEligible ?:boolean, - referrerWallet ?:string - referrer ?: boolean, - referred ?: boolean + amount: string, + currency: string, + createdAt: string, + valueUsd: number, + givbackFactor: number, + projectRank?: number, + bottomRankInRound?: number, + givbacksRound?: number, + giverAddress: string, + txHash: string, + network: string, + source: string, + giverName: string + giverEmail?: string, + projectLink?: string, + niceTokens?: string, + info?: string, + + isReferrerGivbackEligible?: boolean, + referrerWallet?: string + referrer?: boolean, + referred?: boolean, + parentRecurringDonationId?: string, + parentRecurringDonationTxHash?: string, + + } export interface GivethIoDonation { - amount: string, - currency: string, - createdAt: string, - valueUsd: number, - givbackFactor: number, - projectRank ?: number, - powerRound ?: number, - bottomRankInRound ?: number, - giverAddress: string, - transactionId: string, - transactionNetworkId: number, - fromWalletAddress: string, - toWalletAddress: string - chainType: string - source: string, - user: { - name: string, - email: string - } - project: { - slug: string - listed: boolean, - verified: boolean, - projectPower: { - powerRank: number - } + amount: string, + currency: string, + createdAt: string, + valueUsd: number, + givbackFactor: number, + projectRank?: number, + powerRound?: number, + bottomRankInRound?: number, + giverAddress: string, + transactionId: string, + transactionNetworkId: number, + fromWalletAddress: string, + toWalletAddress: string + chainType: string + source: string, + user: { + name: string, + email: string + } + + recurringDonation ?: { + id: string, + txHash: string + } + project: { + slug: string + listed: boolean, + verified: boolean, + projectPower: { + powerRank: number } + } - // giverName: string - // giverEmail: string, - status: string, - isProjectVerified: boolean, - isReferrerGivbackEligible ?:boolean, - referrerWallet ?:string + // giverName: string + // giverEmail: string, + status: string, + isProjectVerified: boolean, + isReferrerGivbackEligible?: boolean, + referrerWallet?: string } export interface DonationResponse { - giverAddress: string, - giverEmail: string, - giverName: string, - totalDonationsUsdValue?: number, - totalDonationsUsdValueAfterGivFactor: number, - givback: number, - givbackUsdValue?: string, - share: number, - niceEarned?: number - - totalReferralDeductedUsdValue?: number - totalReferralDeductedUsdValueAfterGivFactor?: number - - totalReferralAddedUsdValue?: number - totalReferralAddedUsdValueAfterGivFactor?: number + giverAddress: string, + giverEmail: string, + giverName: string, + totalDonationsUsdValue?: number, + totalDonationsUsdValueAfterGivFactor: number, + givback: number, + givbackUsdValue?: string, + share: number, + niceEarned?: number + + totalReferralDeductedUsdValue?: number + totalReferralDeductedUsdValueAfterGivFactor?: number + + totalReferralAddedUsdValue?: number + totalReferralAddedUsdValueAfterGivFactor?: number } export interface MinimalDonation { - giverAddress: string, - giverEmail: string, - giverName: string, - valueUsd: string, - niceTokens?: number, - share?: number, - totalDonationsUsdValue: number - totalDonationsUsdValueAfterGivFactor: number - - totalReferralDeductedUsdValue?: number - totalReferralDeductedUsdValueAfterGivFactor?: number - - totalReferralAddedUsdValue?: number - totalReferralAddedUsdValueAfterGivFactor?: number + giverAddress: string, + giverEmail: string, + giverName: string, + valueUsd: string, + niceTokens?: number, + share?: number, + totalDonationsUsdValue: number + totalDonationsUsdValueAfterGivFactor: number + + totalReferralDeductedUsdValue?: number + totalReferralDeductedUsdValueAfterGivFactor?: number + + totalReferralAddedUsdValue?: number + totalReferralAddedUsdValueAfterGivFactor?: number } export interface GivbackFactorParams { - topPowerRank: number; - minimumFactor: number; - maximumFactor: number; + topPowerRank: number; + minimumFactor: number; + maximumFactor: number; } export interface Project { - id: string, - title: string, - slug: string, - verified: boolean, - link ?: string, - projectPower: { - totalPower: number, - powerRank: number, - round: number - } + id: string, + title: string, + slug: string, + verified: boolean, + link?: string, + projectPower: { + totalPower: number, + powerRank: number, + round: number + } } export interface GIVbacksRound { - round: number, - start: string, - end: string + round: number, + start: string, + end: string }