@@ -8,6 +8,7 @@ const crypto = require('crypto');
8
8
const Joi = require ( 'joi' ) ;
9
9
const Handlebars = require ( 'handlebars' ) ;
10
10
const axios = require ( 'axios' ) ;
11
+ const { merge} = require ( 'lodash' ) ;
11
12
12
13
const origin = 'https://axios-http.com/' ;
13
14
//const origin = 'http://127.0.0.1:8080/';
@@ -436,13 +437,13 @@ const processGithub = async (sponsor, repo = 'axios-sponsor', file = 'sponsor.js
436
437
437
438
438
439
const renderTooltip = async ( sponsor ) => {
439
- let { icon, isActive, displayName, tier, lastTransactionAmount, price, description, website, benefits, video, autoUTMLinks, links} = sponsor ;
440
+ let { icon, isActive, displayName, tier, tierId , lastTransactionAmount, price, description, website, benefits, video, autoUTMLinks, links} = sponsor ;
440
441
441
442
const iconSrc = icon && ( await downloadImage ( icon ) ) ;
442
443
443
444
const iconHTML = iconSrc ? `<img class="sponsor-icon" src="/${ iconSrc } " alt="${ html . escape ( displayName ) } "/>` : '' ;
444
445
445
- const renderedTier = isActive && tier . toLowerCase ( ) === 'backer' ? `${ price || lastTransactionAmount || 0 } $ a month` : tier ;
446
+ const renderedTier = isActive && ( tierId === 'backer' || sponsor . tierPrice < sponsor . originalTierPrice ) ? `${ price || lastTransactionAmount || 0 } $ a month` : tier ;
446
447
447
448
let tooltip = `<h2 class="caption">${ iconHTML } <span>${ html . escape ( displayName ) } (${ sponsor . totalAmountDonated || 0 } $${ ' <sup class="tier">' + renderedTier + '</sup>' } )</span></h2> ` ;
448
449
@@ -502,7 +503,7 @@ const findTier = (price, tiers) => {
502
503
price && Object . entries ( tiers ) . forEach ( ( [ tier , data ] ) => {
503
504
if ( data . price <= price && max < price ) {
504
505
max = data . price ;
505
- found = tier ;
506
+ found = data . name || tier ;
506
507
}
507
508
} ) ;
508
509
@@ -537,9 +538,15 @@ const processSponsors = async (collectiveSponsors, sponsorsConfig = './data/spon
537
538
const { period = 31 } = tierData || { } ;
538
539
const isActiveSubscription = tierData && passed <= period ;
539
540
540
- sponsor . isActive = ! ! ( isActiveSubscription && lastTransactionAmount > 0 && totalAmountDonated ) ;
541
+ if ( tier ) {
542
+ sponsor . isActive = ! ! ( isActiveSubscription && lastTransactionAmount > 0 && totalAmountDonated ) ;
543
+ } else {
544
+ sponsor . isActive = undefined ;
545
+ }
541
546
542
- mergedSponsors [ sponsor . login ] = { ...sponsor } ;
547
+ if ( ! mergedSponsors [ sponsor . login ] || sponsor . isActive ) {
548
+ mergedSponsors [ sponsor . login ] = { ...sponsor } ;
549
+ }
543
550
} ) ;
544
551
545
552
// merge sponsors from sponsors.json
@@ -550,7 +557,6 @@ const processSponsors = async (collectiveSponsors, sponsorsConfig = './data/spon
550
557
login,
551
558
...collective ,
552
559
...local ,
553
- localConfig : { ...local } ,
554
560
manualBilling : ! ! ( local . lastTransactionAt && local . lastTransactionAmount || local . endDate )
555
561
}
556
562
} ) ;
@@ -559,39 +565,44 @@ const processSponsors = async (collectiveSponsors, sponsorsConfig = './data/spon
559
565
560
566
// normalize sponsors config
561
567
Object . entries ( mergedSponsors ) . forEach ( ( [ login , sponsor ] ) => {
562
- if ( ! sponsor . tier ) {
563
- sponsor . tier = 'backer' ;
564
- }
565
568
566
- let { isActive, tier, lastTransactionAmount = 0 , lastTransactionAt, manualBilling, localConfig} = sponsor ;
569
+ let { lastTransactionAmount = 0 , lastTransactionAt, manualBilling} = sponsor ;
570
+
571
+ const sponsorTiers = merge ( { } , tiers , sponsor . tiers ) ;
567
572
568
- const tierLower = tier . toLowerCase ( ) ;
573
+ if ( lastTransactionAmount ) {
574
+ sponsor . tier = findTier ( lastTransactionAmount , sponsorTiers ) ;
575
+ }
569
576
570
- const tierData = tiers [ tierLower ] ;
577
+ const tierId = sponsor . tier ? sponsor . tier ?. toLowerCase ( ) : null ;
578
+ const tierData = tierId && sponsorTiers [ tierId ] ;
571
579
572
- if ( ! tierData ) {
573
- console . log ( `Unknown tier [${ tier } ]` ) ;
580
+ if ( tierId && ! tierData ) {
581
+ console . log ( `Unknown tier [${ sponsor . tier } ]` ) ;
574
582
}
575
583
576
584
const { price, benefits, period = PERIOD } = tierData || { } ;
577
585
586
+ if ( sponsor . isActive == null ) {
587
+ sponsor . isActive = tierData && days ( lastTransactionAt ) <= period && sponsor . lastTransactionAmount >= price ;
588
+ }
589
+
578
590
console . log ( sponsor . login ) ;
579
591
580
- const isBacker = tierLower === 'backer' ;
592
+ const originalTierPrice = tiers [ tierId ] ?. price ;
581
593
582
- sponsor . tierId = tierLower ;
583
- sponsor . tierPrice = isBacker && isActive && lastTransactionAmount ? lastTransactionAmount : price ;
594
+ const isCustomTier = ! ! ( tierData && price !== originalTierPrice ) ;
595
+ sponsor . tierId = tierId ;
596
+ sponsor . tier = sponsor . tier + ( lastTransactionAmount > originalTierPrice ? '+' : '' )
597
+ sponsor . tierPrice = price ;
598
+ sponsor . originalTierPrice = originalTierPrice ;
599
+ sponsor . isCustomTier = isCustomTier ;
584
600
sponsor . totalAmountDonated = sponsor . totalAmountDonated || lastTransactionAmount || 0 ;
585
601
586
- sponsor . associatedTierId = tierLower ;
587
-
588
602
589
- let assoc ;
590
603
591
- if ( localConfig ?. isActive === false ) {
592
- sponsor . isActive = false ;
593
- } else if ( tier && ( manualBilling || tierLower === 'backer' ) ) {
594
- if ( sponsor . endDate || lastTransactionAmount >= price ) {
604
+ if ( sponsor . tier && manualBilling ) {
605
+ if ( sponsor . endDate || lastTransactionAmount >= price ) {
595
606
const pricePerSec = price / ( period * DAY ) ;
596
607
const timePaid = lastTransactionAmount / pricePerSec
597
608
const endDate = sponsor . endDate = sponsor . endDate || + ( new Date ( lastTransactionAt ) ) + timePaid * 1000 ;
@@ -608,11 +619,6 @@ const processSponsors = async (collectiveSponsors, sponsorsConfig = './data/spon
608
619
sponsor . boost = sponsor . boost || 1 ;
609
620
}
610
621
611
- if ( isActive && isBacker && ! localConfig ?. tier && ( assoc = findTier ( lastTransactionAmount , tiers ) ) ) {
612
- const tier = assoc . toLowerCase ( ) ;
613
- tier !== 'backer' && ( sponsor . associatedTierId = tier ) ;
614
- }
615
-
616
622
sponsor . isActive = sponsor . isActive === true ;
617
623
618
624
sponsor . benefits = {
0 commit comments