Make topic detail visible for logged in users

pull/5418/head
Kamran Ahmed 1 year ago
parent 730af9b973
commit cabbf51150
  1. 108
      src/components/GenerateRoadmap/RoadmapTopicDetail.tsx

@ -3,7 +3,7 @@ import { useEffect, useMemo, useRef, useState } from 'react';
import { useKeydown } from '../../hooks/use-keydown'; import { useKeydown } from '../../hooks/use-keydown';
import { useOutsideClick } from '../../hooks/use-outside-click'; import { useOutsideClick } from '../../hooks/use-outside-click';
import { markdownToHtml } from '../../lib/markdown'; import { markdownToHtml } from '../../lib/markdown';
import { Ban, Cog, FileText, X } from 'lucide-react'; import {Ban, Cog, Contact, FileText, User, UserRound, X} from 'lucide-react';
import { Spinner } from '../ReactIcons/Spinner'; import { Spinner } from '../ReactIcons/Spinner';
import type { RoadmapNodeDetails } from './GenerateRoadmap'; import type { RoadmapNodeDetails } from './GenerateRoadmap';
import { getOpenAIKey, isLoggedIn, removeAuthToken } from '../../lib/jwt'; import { getOpenAIKey, isLoggedIn, removeAuthToken } from '../../lib/jwt';
@ -43,12 +43,10 @@ export function RoadmapTopicDetail(props: RoadmapTopicDetailProps) {
const generateAiRoadmapTopicContent = async () => { const generateAiRoadmapTopicContent = async () => {
setIsLoading(true); setIsLoading(true);
setError(''); setError('');
//
// if (topicLimitUsed >= topicLimit) { if (!isLoggedIn()) {
// setError('Maximum limit reached'); return;
// setIsLoading(false); }
// return;
// }
if (!roadmapId || !nodeTitle) { if (!roadmapId || !nodeTitle) {
setIsLoading(false); setIsLoading(false);
@ -133,50 +131,44 @@ export function RoadmapTopicDetail(props: RoadmapTopicDetailProps) {
tabIndex={0} tabIndex={0}
className="fixed right-0 top-0 z-40 h-screen w-full overflow-y-auto bg-white p-4 focus:outline-0 sm:max-w-[600px] sm:p-6" className="fixed right-0 top-0 z-40 h-screen w-full overflow-y-auto bg-white p-4 focus:outline-0 sm:max-w-[600px] sm:p-6"
> >
<div className="flex flex-col items-start gap-2 sm:flex-row"> {isLoggedIn() && (
<span> <div className="flex flex-col items-start gap-2 sm:flex-row">
<span <span>
className={cn( <span
'mr-0.5 inline-block rounded-xl border px-1.5 text-center text-sm tabular-nums text-gray-800', className={cn(
{ 'mr-0.5 inline-block rounded-xl border px-1.5 text-center text-sm tabular-nums text-gray-800',
'animate-pulse border-zinc-300 bg-zinc-300 text-zinc-300': {
!topicLimit, 'animate-pulse border-zinc-300 bg-zinc-300 text-zinc-300':
}, !topicLimit,
)} },
> )}
{topicLimitUsed} of {topicLimit} >
</span>{' '} {topicLimitUsed} of {topicLimit}
topics generated </span>{' '}
</span> topics generated
{!isLoggedIn() && ( </span>
<button {!openAIKey && (
className="rounded-xl border border-current px-1.5 py-0.5 text-left text-sm font-medium text-blue-500 sm:text-center" <button
onClick={showLoginPopup} className="rounded-xl border border-current px-1.5 py-0.5 text-left text-sm font-medium text-blue-500 sm:text-center"
> onClick={onConfigureOpenAI}
Generate more by <span className="font-semibold">logging in</span> >
</button> Need to generate more?{' '}
)} <span className="font-semibold">Click here.</span>
{isLoggedIn() && !openAIKey && ( </button>
<button )}
className="rounded-xl border border-current px-1.5 py-0.5 text-left text-sm font-medium text-blue-500 sm:text-center" {openAIKey && (
onClick={onConfigureOpenAI} <button
> className="flex items-center gap-1 rounded-xl border border-current px-1.5 py-0.5 text-left text-sm font-medium text-blue-500 sm:text-center"
Need to generate more?{' '} onClick={onConfigureOpenAI}
<span className="font-semibold">Click here.</span> >
</button> <Cog className="-mt-0.5 inline-block h-4 w-4" />
)} Configure OpenAI Key
{isLoggedIn() && openAIKey && ( </button>
<button )}
className="flex items-center gap-1 rounded-xl border border-current px-1.5 py-0.5 text-left text-sm font-medium text-blue-500 sm:text-center" </div>
onClick={onConfigureOpenAI} )}
>
<Cog className="-mt-0.5 inline-block h-4 w-4" />
Configure OpenAI Key
</button>
)}
</div>
{isLoading && ( {isLoggedIn() && isLoading && (
<div className="mt-6 flex w-full justify-center"> <div className="mt-6 flex w-full justify-center">
<Spinner <Spinner
outerFill="#d1d5db" outerFill="#d1d5db"
@ -186,6 +178,22 @@ export function RoadmapTopicDetail(props: RoadmapTopicDetailProps) {
</div> </div>
)} )}
{!isLoggedIn() && (
<div className="flex h-full flex-col items-center justify-center">
<Contact className="h-14 w-14 text-gray-200 mb-3.5" />
<h2 className='font-medium text-xl'>You must be logged in</h2>
<p className="text-base text-gray-400">
Sign up or login to generate topic content.
</p>
<button
className="mt-3.5 text-base font-medium text-white bg-black px-3 py-2 rounded-md w-full max-w-[300px]"
onClick={showLoginPopup}
>
Sign up / Login
</button>
</div>
)}
{!isLoading && !error && ( {!isLoading && !error && (
<> <>
<div className="mb-2"> <div className="mb-2">

Loading…
Cancel
Save