From bcf6c9bf9aa66e7dcfc593128867d0834e22e520 Mon Sep 17 00:00:00 2001 From: austinkelsay Date: Fri, 27 Sep 2024 13:33:27 -0500 Subject: [PATCH] Improvements to subscription page --- src/components/profile/UserProfile.js | 16 ++- src/components/profile/UserSettings.js | 16 ++- .../profile/progress/UserProgress.js | 40 +++--- .../profile/subscription/UserSubscription.js | 121 ++++++++++-------- 4 files changed, 110 insertions(+), 83 deletions(-) diff --git a/src/components/profile/UserProfile.js b/src/components/profile/UserProfile.js index 100aa3a..594eb14 100644 --- a/src/components/profile/UserProfile.js +++ b/src/components/profile/UserProfile.js @@ -94,12 +94,16 @@ const UserProfile = () => { {nip19.npubEncode(user.pubkey)} -

- Lightning Address: {user.lightningAddress.name}@plebdevs.com -

-

- NIP-05: {user.nip05.name}@plebdevs.com -

+ {user?.lightningAddress && ( +

+ Lightning Address: {user.lightningAddress.name}@plebdevs.com +

+ )} + {user?.nip05 && ( +

+ NIP-05: {user.nip05.name}@plebdevs.com +

+ )} {/* */} diff --git a/src/components/profile/UserSettings.js b/src/components/profile/UserSettings.js index 044c881..3bca702 100644 --- a/src/components/profile/UserSettings.js +++ b/src/components/profile/UserSettings.js @@ -181,12 +181,16 @@ const UserSettings = () => { {nip19.npubEncode(user.pubkey)} -

- Lightning Address: {user.lightningAddress.name}@plebdevs.com -

-

- NIP-05: {user.nip05.name}@plebdevs.com -

+ {user?.lightningAddress && ( +

+ Lightning Address: {user.lightningAddress.name}@plebdevs.com +

+ )} + {user?.nip05 && ( +

+ NIP-05: {user.nip05.name}@plebdevs.com +

+ )}

Connect Your Lightning Wallet

diff --git a/src/components/profile/progress/UserProgress.js b/src/components/profile/progress/UserProgress.js index b28c653..1e2fe13 100644 --- a/src/components/profile/progress/UserProgress.js +++ b/src/components/profile/progress/UserProgress.js @@ -3,6 +3,23 @@ import { ProgressBar } from 'primereact/progressbar'; import { Accordion, AccordionTab } from 'primereact/accordion'; import { useSession } from 'next-auth/react'; +const allTasks = [ + { status: 'Create Account', completed: true, tier: 'Pleb', courseId: null }, + { + status: 'PlebDevs Starter (Coming Soon)', + completed: false, + tier: 'New Dev', + courseId: null, + subTasks: [ + { status: 'Connect GitHub', completed: false }, + { status: 'Create First GitHub Repo', completed: false }, + { status: 'Push Commit', completed: false } + ] + }, + { status: 'PlebDevs Course 1', completed: false, tier: 'Junior Dev', courseId: 'd20e2e9b-5123-4a91-b27f-d75ea1d5811e' }, + { status: 'PlebDevs Course 2', completed: false, tier: 'Plebdev', courseId: 'aa3b1641-ad2b-4ef4-9f0f-38951ae307b7' }, +]; + const UserProgress = () => { const [progress, setProgress] = useState(0); const [currentTier, setCurrentTier] = useState('Pleb'); @@ -15,30 +32,17 @@ const UserProgress = () => { useEffect(() => { if (session?.user) { const user = session.user; - const ids = user?.userCourses.map(course => course?.completed ? course.courseId : null).filter(id => id !== null); + const ids = user?.userCourses?.map(course => course?.completed ? course.courseId : null).filter(id => id !== null); + if (ids && ids.length > 0) { setCompletedCourses(ids); generateTasks(ids); + } else { + generateTasks([]); + } } }, [session]); const generateTasks = (completedCourseIds) => { - const allTasks = [ - { status: 'Create Account', completed: true, tier: 'Pleb', courseId: null }, - { - status: 'PlebDevs Starter (Coming Soon)', - completed: false, - tier: 'New Dev', - courseId: null, - subTasks: [ - { status: 'Connect GitHub', completed: false }, - { status: 'Create First GitHub Repo', completed: false }, - { status: 'Push Commit', completed: false } - ] - }, - { status: 'PlebDevs Course 1', completed: false, tier: 'Junior Dev', courseId: 'd20e2e9b-5123-4a91-b27f-d75ea1d5811e' }, - { status: 'PlebDevs Course 2', completed: false, tier: 'Plebdev', courseId: 'aa3b1641-ad2b-4ef4-9f0f-38951ae307b7' }, - ]; - const updatedTasks = allTasks.map(task => ({ ...task, completed: task.courseId === null || completedCourseIds.includes(task.courseId), diff --git a/src/components/profile/subscription/UserSubscription.js b/src/components/profile/subscription/UserSubscription.js index 47eec83..bb93643 100644 --- a/src/components/profile/subscription/UserSubscription.js +++ b/src/components/profile/subscription/UserSubscription.js @@ -137,25 +137,12 @@ const UserSubscription = () => { console.log(subscribed) }, [subscribed]) - const subscriptionCardTitle = ( -
- Plebdevs Subscription - {subscribed && ( - menu.current.toggle(e)} - > - )} - -
- ); - return (
{windowWidth < 768 && (

Subscription Management

)} - +
{subscribed && (
@@ -173,51 +160,79 @@ const UserSubscription = () => {
)} - - - - {isProcessing ? ( -
-
- Processing subscription... -
- ) : ( -
-
-

Unlock Premium Benefits

-

Subscribe now and elevate your development journey!

+
+ {!subscribed && ( + + {isProcessing ? ( +
+
+ Processing subscription...
-
-
- - Access ALL current and future PlebDevs content + ) : ( +
+
+

Unlock Premium Benefits

+

Subscribe now and elevate your development journey!

-
- - Personal mentorship & guidance and access to exclusive 1:1 booking calendar +
+
+ + Access ALL current and future PlebDevs content +
+
+ + Personal mentorship & guidance and access to exclusive 1:1 booking calendar +
+
+ + Claim your own personal plebdevs.com Lightning Address +
+
+ Nostr + Claim your own personal plebdevs.com Nostr NIP-05 identity +
+
+ + I WILL MAKE SURE YOU WIN HARD AND LEVEL UP AS A DEV!
-
- - Claim your own personal plebdevs.com Lightning Address -
-
- Nostr - Claim your own personal plebdevs.com Nostr NIP-05 identity
+
-
- - I WILL MAKE SURE YOU WIN HARD AND LEVEL UP AS A DEV! + )} + + )} + {subscribed && ( + <> + + {isProcessing ? ( +
+
+ Processing subscription... +
+ ) : ( +
+
+ setCalendlyVisible(true)} /> + setNip05Visible(true)} /> + } onClick={() => setLightningAddressVisible(true)} /> +
+
+ )} +
+ +
+ setRenewSubscriptionVisible(true)} /> + setCancelSubscriptionVisible(true)} />
- -
- )} - + + + )}