From b6c8181e9973d47a9fe09640b9927d48569c9dad Mon Sep 17 00:00:00 2001 From: GeunaNa <155413929+rabyeoljji@users.noreply.github.com> Date: Thu, 5 Dec 2024 21:11:11 +0900 Subject: [PATCH] feat: system view (#297) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 시스템 화면 - not found * feat: system error view * feat: 퀴즈 생성 로딩 페이지 => 라우트 이동 없이 구현 --- public/images/network-error.png | Bin 0 -> 53911 bytes src/app/(routes)/quiz/[id]/page.tsx | 6 +- src/app/(routes)/quiz/layout.tsx | 12 ---- src/app/(routes)/quiz/page.tsx | 26 -------- src/app/error.tsx | 57 ++++++++++++++++++ src/app/not-found.tsx | 31 ++++++---- .../quiz/screen/ai-creating-quiz/index.tsx | 8 +-- .../quiz/screen/intro-and-quiz-view.tsx | 8 +-- src/features/quiz/screen/intro/index.tsx | 2 +- src/features/quiz/utils/index.ts | 5 +- .../write/pages/write-document-page.tsx | 57 ++++++++++++++---- 11 files changed, 133 insertions(+), 79 deletions(-) create mode 100644 public/images/network-error.png delete mode 100644 src/app/(routes)/quiz/layout.tsx delete mode 100644 src/app/(routes)/quiz/page.tsx create mode 100644 src/app/error.tsx diff --git a/public/images/network-error.png b/public/images/network-error.png new file mode 100644 index 0000000000000000000000000000000000000000..c2ea4d2805f8d723ced4326fbd5f484e603e4ab4 GIT binary patch literal 53911 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 literal 0 HcmV?d00001 diff --git a/src/app/(routes)/quiz/[id]/page.tsx b/src/app/(routes)/quiz/[id]/page.tsx index 4249ecbf..4a2e7aa1 100644 --- a/src/app/(routes)/quiz/[id]/page.tsx +++ b/src/app/(routes)/quiz/[id]/page.tsx @@ -8,10 +8,8 @@ interface Props { id: string } searchParams: { - quizType: 'today' | 'document' | 'collection' + quizType: 'today' | 'document' | 'collection' | 'create' createdAt: string - // 문제 생성일 경우 - isFirst?: boolean // 문서 퀴즈일 경우 documentName?: string directoryEmoji?: string @@ -26,7 +24,6 @@ const QuizDetailPage = async ({ params, searchParams }: Props) => { const { quizType, createdAt, - isFirst, documentName, directoryEmoji, collectionId, @@ -59,7 +56,6 @@ const QuizDetailPage = async ({ params, searchParams }: Props) => { = ({ children }) => { - return
{children}
-} - -export default Layout diff --git a/src/app/(routes)/quiz/page.tsx b/src/app/(routes)/quiz/page.tsx deleted file mode 100644 index 5eafcd0c..00000000 --- a/src/app/(routes)/quiz/page.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import AiCreatingQuiz from '@/features/quiz/screen/ai-creating-quiz' - -interface Props { - searchParams: { - documentId: string - documentName: string - directoryEmoji: string - } -} - -// quiz-set-id 없이 /quiz로만 오면 document에서 퀴즈를 생성하는 것으로 판단 -const QuizPage = ({ searchParams }: Props) => { - const { documentId, documentName, directoryEmoji } = searchParams - - return ( - <> - - - ) -} - -export default QuizPage diff --git a/src/app/error.tsx b/src/app/error.tsx new file mode 100644 index 00000000..9252ff4f --- /dev/null +++ b/src/app/error.tsx @@ -0,0 +1,57 @@ +'use client' + +import Icon from '@/shared/components/custom/icon' +import { Button } from '@/shared/components/ui/button' +import Text from '@/shared/components/ui/text' +import { NextPageContext } from 'next' +import Image from 'next/image' +import React from 'react' + +interface Props { + statusCode: number +} + +function Error({ statusCode }: Props) { + if (statusCode === 500) + return ( +
+ +
+ + 네트워크 문제로
연결이 지연되고 있습니다 +
+ + 네트워크 연결 상태를 확인하신 후,
+ 새로고침 버튼을 눌러주세요 +
+
+
+
+ +
+
+
+ ) +} + +Error.getInitialProps = ({ res, err }: NextPageContext) => { + if ( + err && + (err.message?.includes('NetworkError') || + err.message?.includes('Failed to fetch') || + err.message?.includes('ECONNREFUSED')) + ) { + return { statusCode: 500 } + } + const statusCode = res?.statusCode || err?.statusCode || 404 + return { statusCode } +} + +export default Error diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx index a406c242..4bb56233 100644 --- a/src/app/not-found.tsx +++ b/src/app/not-found.tsx @@ -1,23 +1,27 @@ 'use client' +import Text from '@/shared/components/ui/text' import { useRouter } from 'next/navigation' export default function NotFound() { const router = useRouter() return ( -
- +
+
-
페이지를 찾을 수 없습니다.
-
- 존재하지 않는 주소를 입력했거나, 요청하신 페이지의 주소가 변경, 삭제되어 찾을 수 없습니다. -
+ 페이지를 찾을 수 없습니다. + + 존재하지 않는 주소를 입력했거나, 요청하신 페이지의
주소가 변경, 삭제되어 찾을 수 + 없습니다. +
-
Q
-
다음 중 이동을 원하는 페이지는?
+ + Q. + + 다음 중 이동을 원하는 페이지는?
-
+ {order} -
-
{label}
+ + {label} ) } diff --git a/src/features/quiz/screen/ai-creating-quiz/index.tsx b/src/features/quiz/screen/ai-creating-quiz/index.tsx index 7a2063df..bebc3625 100644 --- a/src/features/quiz/screen/ai-creating-quiz/index.tsx +++ b/src/features/quiz/screen/ai-creating-quiz/index.tsx @@ -66,9 +66,7 @@ const AiCreatingQuiz = ({ documentId, documentName, directoryEmoji }: Props) => router.push( '/quiz/' + data.quizSetId + - '?quizType=document' + - '&' + - 'isFirst=true' + + '?quizType=create' + '&' + `createdAt=${data.createdAt}` + '&' + @@ -82,10 +80,10 @@ const AiCreatingQuiz = ({ documentId, documentName, directoryEmoji }: Props) => return ( <> -
+
{quizIsReady ? ( -
+
diff --git a/src/features/quiz/screen/intro-and-quiz-view.tsx b/src/features/quiz/screen/intro-and-quiz-view.tsx index 0b1a7579..accfbc7a 100644 --- a/src/features/quiz/screen/intro-and-quiz-view.tsx +++ b/src/features/quiz/screen/intro-and-quiz-view.tsx @@ -5,10 +5,9 @@ import QuizView from './quiz-view' import QuizIntro from './intro' interface Props { - quizType: 'today' | 'document' | 'collection' + quizType: 'today' | 'document' | 'collection' | 'create' quizzes: QuizWithMetadata[] createdAt: string - isFirst: boolean | undefined documentInfo?: { name: string; directoryEmoji: string } collectionInfo?: { name: string; emoji: string } } @@ -17,7 +16,6 @@ const IntroAndQuizView = ({ quizType, quizzes, createdAt, - isFirst, documentInfo, collectionInfo, }: Props) => { @@ -34,7 +32,7 @@ const IntroAndQuizView = ({ if (!finishedIntro) { return ( + return } export default IntroAndQuizView diff --git a/src/features/quiz/screen/intro/index.tsx b/src/features/quiz/screen/intro/index.tsx index 8968a220..3896b7ca 100644 --- a/src/features/quiz/screen/intro/index.tsx +++ b/src/features/quiz/screen/intro/index.tsx @@ -7,7 +7,7 @@ import CollectionQuizIntro from './components/collection-quiz-intro' import { formatDateKorean } from '@/shared/utils/date' interface Props { - quizType: 'today' | 'document' | 'collection' + quizType: 'today' | 'document' | 'collection' | 'create' createdAt: string documentInfo?: { name: string; directoryEmoji: string } collectionInfo?: { name: string; emoji: string } diff --git a/src/features/quiz/utils/index.ts b/src/features/quiz/utils/index.ts index 4838128a..c014ff18 100644 --- a/src/features/quiz/utils/index.ts +++ b/src/features/quiz/utils/index.ts @@ -33,7 +33,7 @@ export const getAnswerText = (answer: string) => { return answer } -export const getQuizSetTypeEnum = (quizSetType: 'today' | 'document' | 'collection') => { +export const getQuizSetTypeEnum = (quizSetType: 'today' | 'document' | 'collection' | 'create') => { let enumQuizType: QuizSetType switch (quizSetType) { @@ -46,6 +46,9 @@ export const getQuizSetTypeEnum = (quizSetType: 'today' | 'document' | 'collecti case 'collection': enumQuizType = 'COLLECTION_QUIZ_SET' break + case 'create': + enumQuizType = 'FIRST_QUIZ_SET' + break } return enumQuizType diff --git a/src/features/write/pages/write-document-page.tsx b/src/features/write/pages/write-document-page.tsx index eba30306..c8976602 100644 --- a/src/features/write/pages/write-document-page.tsx +++ b/src/features/write/pages/write-document-page.tsx @@ -1,6 +1,6 @@ 'use client' -import { useState } from 'react' +import { useEffect, useState } from 'react' import TitleInput from '../components/title-input' import Icon from '@/shared/components/custom/icon' import Text from '@/shared/components/ui/text' @@ -10,6 +10,7 @@ import { useCreateDocument } from '@/requests/document/hooks' import { MAX_CHARACTERS, MIN_CHARACTERS } from '@/features/document/config' import { useDirectoryContext } from '@/features/directory/contexts/directory-context' import CreateQuizDrawer from '../components/create-quiz-drawer' +import AiCreatingQuiz from '@/features/quiz/screen/ai-creating-quiz' import { useRouter } from 'next/navigation' const Editor = dynamic(() => import('../components/editor'), { @@ -22,6 +23,8 @@ const WriteDocumentPage = () => { const { selectedDirectory, selectDirectoryId, globalDirectoryId } = useDirectoryContext() const [title, setTitle] = useState('') const [content, setContent] = useState('') + const [documentId, setDocumentId] = useState(null) + const [showCreatePopup, setShowCreatePopup] = useState(false) const { mutate: createDocumentMutate } = useCreateDocument() @@ -46,22 +49,52 @@ const WriteDocumentPage = () => { }, { onSuccess: ({ id }) => { - router.push( - '/quiz' + - '?documentId=' + - id + - '&' + - 'documentName=' + - title + - '&' + - 'directoryEmoji=' + - selectedDirectory.emoji - ) + setDocumentId(id) + setShowCreatePopup(true) }, } ) } + useEffect(() => { + const handlePopState = (event: PopStateEvent) => { + // ai 퀴즈 생성 팝업이 열려 있는 상태에서는 뒤로 가기 이벤트를 확인 + if (showCreatePopup) { + event.preventDefault() + window.history.pushState(null, '', window.location.href) + const userConfirm = window.confirm( + '현재 화면에서 나가시겠습니까? 지금 나가더라도 AI 퀴즈 생성이 중단되지는 않습니다.' + ) + if (userConfirm && documentId) { + router.push(`/document/${documentId}`) + } + } + } + + if (showCreatePopup) { + window.history.pushState(null, '', window.location.href) + window.addEventListener('popstate', handlePopState) + } + + return () => { + window.removeEventListener('popstate', handlePopState) + } + }, [showCreatePopup, router, documentId]) + + if (documentId !== null && showCreatePopup) { + return ( +
+
+ +
+
+ ) + } + return (
setTitle(value)} />