fix for unlocking all lessons in course when the course has been purchased

This commit is contained in:
austinkelsay 2024-11-05 15:56:12 -06:00
parent 816d0eba91
commit 31af64e36a
No known key found for this signature in database
GPG Key ID: 44CB4EC6D9F2FA02
4 changed files with 8 additions and 6 deletions

View File

@ -210,7 +210,7 @@ const DocumentDetails = ({ processedEvent, topics, title, summary, image, price,
</div>
) : (
<div className="w-full flex flex-row justify-end gap-2">
{course && <GenericButton size={isMobileView ? 'small' : 'large'} outlined icon="pi pi-external-link" onClick={() => window.open(`/course/${course}`, '_blank')} label={isMobileView ? "Course" : "Open Course"} tooltip="This is a lesson in a course" tooltipOptions={{ position: 'top' }} />}
{course && <GenericButton size={isMobileView ? 'small' : null} outlined icon="pi pi-external-link" onClick={() => window.open(`/course/${course}`, '_blank')} label={isMobileView ? "Course" : "Open Course"} tooltip="This is a lesson in a course" tooltipOptions={{ position: 'top' }} />}
<GenericButton
size={isMobileView ? 'small' : 'large'}
tooltip={isMobileView ? null : "View Nostr Note"}

View File

@ -220,7 +220,7 @@ const VideoDetails = ({ processedEvent, topics, title, summary, image, price, au
</div>
) : (
<div className="w-full flex flex-row justify-end gap-2">
{course && <GenericButton size={isMobileView ? 'small' : 'large'} outlined icon="pi pi-external-link" onClick={() => window.open(`/course/${course}`, '_blank')} label={isMobileView ? "Course" : "Open Course"} tooltip="This is a lesson in a course" tooltipOptions={{ position: 'top' }} />}
{course && <GenericButton size={isMobileView ? 'small' : null} outlined icon="pi pi-external-link" onClick={() => window.open(`/course/${course}`, '_blank')} label={isMobileView ? "Course" : "Open Course"} tooltip="This is a lesson in a course" tooltipOptions={{ position: 'top' }} />}
<GenericButton
size={isMobileView ? 'small' : 'large'}
tooltip={isMobileView ? null : "View Nostr Note"}

View File

@ -12,7 +12,7 @@ const appConfig = {
"wss://relay.devs.tools/"
],
// ganon "468f729dd409053dac5e7470622c3996aad88db6ed1de9165cb1921b5ab4fd5e",
authorPubkeys: ["8cb60e215678879cda0bef4d5b3fc1a5c5925d2adb5d8c4fa7b7d03b5f2deaea", "676c02247668d5b18479be3d1a80933044256f3fbd03640a8c234684e641b6d6", "f33c8a9617cb15f705fc70cd461cfd6eaf22f9e24c33eabad981648e5ec6f741", "c67cd3e1a83daa56cff16f635db2fdb9ed9619300298d4701a58e68e84098345", "468f729dd409053dac5e7470622c3996aad88db6ed1de9165cb1921b5ab4fd5e"],
authorPubkeys: ["8cb60e215678879cda0bef4d5b3fc1a5c5925d2adb5d8c4fa7b7d03b5f2deaea", "676c02247668d5b18479be3d1a80933044256f3fbd03640a8c234684e641b6d6", "f33c8a9617cb15f705fc70cd461cfd6eaf22f9e24c33eabad981648e5ec6f741", "c67cd3e1a83daa56cff16f635db2fdb9ed9619300298d4701a58e68e84098345"],
customLightningAddresses: [
{
// todo remove need for lowercase

View File

@ -30,8 +30,9 @@ const Details = () => {
useEffect(() => {
axios.get('/api/lessons').then(res => {
if (res.data) {
console.log("res.data", res.data);
res.data.forEach(lesson => {
setLessons(prev => [...prev, lesson?.resourceId]);
setLessons(prev => [...prev, { resourceId: lesson?.resourceId, courseId: lesson?.courseId || null }]);
});
}
}).catch(err => {
@ -102,7 +103,8 @@ const Details = () => {
if (parsedEvent.price || (isAuthor && event.kind === 30402)) {
const shouldDecrypt = isAuthor ||
session?.user?.role?.subscribed ||
session?.user?.purchased?.some(purchase => purchase.resourceId === parsedEvent.d);
session?.user?.purchased?.some(purchase => purchase.resourceId === parsedEvent.d) ||
lessons.some(lesson => lesson.resourceId === parsedEvent.d && session?.user?.purchased?.some(purchase => purchase.courseId === lesson.courseId));
if (shouldDecrypt) {
const decrypted = await decryptContent(event.content);
@ -152,7 +154,7 @@ const Details = () => {
price={event.price}
author={author}
paidResource={!!event.price}
isLesson={lessons.includes(event.d)}
isLesson={lessons.some(lesson => lesson.resourceId === event.d)}
nAddress={nAddress}
decryptedContent={decryptedContent}
handlePaymentSuccess={handlePaymentSuccess}