From 1e38ca15b15090cbeaa04d25bcaad61a0a24377f Mon Sep 17 00:00:00 2001 From: Malted Date: Tue, 3 Sep 2024 11:13:42 -0400 Subject: [PATCH] New Replit progress component --- components/replit/form.js | 13 +++++++---- components/replit/progress.js | 36 ++++++++++++++++++++++++++++ pages/replit.js | 44 +++-------------------------------- 3 files changed, 48 insertions(+), 45 deletions(-) create mode 100644 components/replit/progress.js diff --git a/components/replit/form.js b/components/replit/form.js index 75d00818..093e3287 100644 --- a/components/replit/form.js +++ b/components/replit/form.js @@ -258,9 +258,8 @@ const ReplitForm = ({ cssDark }) => { > Stickers - Get free stickers Get free stickers Get free stickers Get free stickers - Get free stickers Get free stickers Get free stickers Get free stickers - Get free stickers Get free stickers{' '} + Get free stickers! The first 5,000 people to use this tool get access to + a free sticker pack, courtesy of GitHub Education! {stickers.map((sticker, idx) => { @@ -284,7 +283,13 @@ const ReplitForm = ({ cssDark }) => { /> ) })} - + diff --git a/components/replit/progress.js b/components/replit/progress.js new file mode 100644 index 00000000..4fd3adab --- /dev/null +++ b/components/replit/progress.js @@ -0,0 +1,36 @@ +import { Progress, Text, Box } from 'theme-ui' + +const ProgressComponent = ({ progress }) => { + if (!progress) return null + + const successCount = progress.successful + progress.failed.no_history + const failedCount = progress.failed.timed_out + progress.failed.failed + const processedCount = successCount + failedCount + + let title + + if (failedCount > 0) { + title = `${progress.failed.timed_out} timed out, ${progress.failed.failed} failed.` + } + + return ( + + {progress.completed ? ( + Export complete! Check your email. + ) : ( + + {processedCount} of {progress.repl_count} repls processed! + {title ? {title} : null} + + )} + + + + ) +} + +export default ProgressComponent diff --git a/pages/replit.js b/pages/replit.js index 6a390383..47785eec 100644 --- a/pages/replit.js +++ b/pages/replit.js @@ -1,19 +1,11 @@ -import { - Box, - Link, - Image, - Button, - Heading, - Text, - Card, - Progress -} from 'theme-ui' +import { Box, Link, Image, Button, Heading, Text, Card } from 'theme-ui' import Head from 'next/head' import Meta from '@hackclub/meta' import Footer from '../components/footer' import Nav from '../components/nav' import ForceTheme from '../components/force-theme' import ReplitForm from '../components/replit/form' +import Progress from '../components/replit/progress' import { useEffect, useState } from 'react' const ReplitPage = () => { @@ -219,37 +211,7 @@ const ReplitPage = () => { marginX: 'auto' }} > - {progress ? ( - - - {progress.successful} of {progress.repl_count} repls processed! - {progress.failed.timed_out + progress.failed.failed > 0 ? ( - - {' '} - (+ {progress.failed.timed_out + progress.failed.failed}{' '} - error - {progress.failed.timed_out + progress.failed.failed !== 1 - ? 's' - : null} - ) - - ) : null} - - - - - ) : null} - +