Download Public Keys that qualify for the following Prizes:
diff --git a/frontend/src/app/features/leaderboard/leaderboard-page/leaderboard-page.component.ts b/frontend/src/app/features/leaderboard/leaderboard-page/leaderboard-page.component.ts index f865a4d74e..550c29022f 100644 --- a/frontend/src/app/features/leaderboard/leaderboard-page/leaderboard-page.component.ts +++ b/frontend/src/app/features/leaderboard/leaderboard-page/leaderboard-page.component.ts @@ -41,6 +41,7 @@ import { LeaderboardService } from '@leaderboard/leaderboard.service'; export class LeaderboardPageComponent extends StoreDispatcher implements OnInit, AfterViewInit { isExpanded = false; showBanner: boolean = false; + canDownloadCSV = localStorage.getItem('download_leaderboard') === 'true'; private readonly SCROLL_THRESHOLD = 100; @ViewChild('scrollContainer') private scrollContainer!: ElementRef; @@ -90,4 +91,8 @@ export class LeaderboardPageComponent extends StoreDispatcher implements OnInit, downloadMostProducedBlocks(): void { this.leaderboardService.downloadMostProducedBlocks(); } + + downloadAll(): void { + this.leaderboardService.downloadAll(); + } } diff --git a/frontend/src/app/features/leaderboard/leaderboard.routing.ts b/frontend/src/app/features/leaderboard/leaderboard.routing.ts index 69b819e42c..1a72308dba 100644 --- a/frontend/src/app/features/leaderboard/leaderboard.routing.ts +++ b/frontend/src/app/features/leaderboard/leaderboard.routing.ts @@ -29,7 +29,7 @@ const routes: Routes = [ }, { path: '**', - redirectTo: '', + redirectTo: 'leaderboard', }, ]; diff --git a/frontend/src/app/features/leaderboard/leaderboard.service.ts b/frontend/src/app/features/leaderboard/leaderboard.service.ts index 793d6732d1..15ec034013 100644 --- a/frontend/src/app/features/leaderboard/leaderboard.service.ts +++ b/frontend/src/app/features/leaderboard/leaderboard.service.ts @@ -4,6 +4,7 @@ import { HeartbeatSummary } from '@shared/types/leaderboard/heartbeat-summary.ty import { collection, collectionData, CollectionReference, Firestore, getDocs } from '@angular/fire/firestore'; import { WebNodeService } from '@core/services/web-node.service'; import { getElapsedTimeInMinsAndHours } from '@shared/helpers/date.helper'; +import { ONE_THOUSAND, toReadableDate } from '@openmina/shared'; @Injectable({ providedIn: 'root', @@ -35,7 +36,7 @@ export class LeaderboardService { return ({ publicKey: score['publicKey'], blocksProduced: score['blocksProduced'], - isActive: score['lastUpdated'] > Date.now() - 120000, + isActive: score['lastHeartbeat'] * ONE_THOUSAND > (Date.now() - 12000), uptimePercentage: this.getUptimePercentage(score['score'], this.maxScoreRightNow), uptimePrize: false, blocksPrize: false, @@ -232,4 +233,50 @@ export class LeaderboardService { URL.revokeObjectURL(url); } + + async downloadAll(): Promise