From 45099ae3eb8a650f90bf6e3b9ad1fcffdb57f03f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=B1=EC=97=B4?= Date: Sun, 8 Dec 2024 22:48:04 +0900 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20AboutEditor=EC=97=90?= =?UTF-8?q?=EC=84=9C=20server=20action=EC=9D=84=20=EC=A3=BC=EC=9E=85?= =?UTF-8?q?=EB=B0=9B=EA=B2=8C=20=EC=88=98=EC=A0=95=20(#285)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- actions/about.ts | 10 +- actions/academics.ts | 2 +- actions/news.ts | 2 +- actions/notice.ts | 2 +- actions/people.ts | 2 +- actions/recruitment.ts | 2 +- actions/research.ts | 2 +- actions/seminar.ts | 2 +- app/[locale]/10-10-project/manager/page.tsx | 2 +- app/[locale]/about/components/AboutEditor.tsx | 147 +++++++----------- app/[locale]/about/contact/edit/page.tsx | 28 +++- app/[locale]/about/contact/page.tsx | 2 +- .../about/directions/DirectionsDetails.tsx | 2 +- .../about/directions/LocationGuide.tsx | 2 +- .../about/directions/edit/DirectionEditor.tsx | 2 +- app/[locale]/about/directions/page.tsx | 2 +- .../about/facilities/FacilitiesList.tsx | 2 +- app/[locale]/about/facilities/create/page.tsx | 6 +- .../about/facilities/edit/FacilityEditor.tsx | 6 +- app/[locale]/about/facilities/page.tsx | 2 +- .../about/future-careers/CareerStat.tsx | 2 +- .../components/CareerStatEditor.tsx | 2 +- .../edit/CareerDescriptionEditor.tsx | 2 +- app/[locale]/about/future-careers/page.tsx | 2 +- .../stat/edit/CareerStatEditPageContent.tsx | 2 +- app/[locale]/about/greetings/edit/page.tsx | 28 +++- app/[locale]/about/greetings/page.tsx | 4 +- app/[locale]/about/history/edit/page.tsx | 28 +++- app/[locale]/about/history/page.tsx | 2 +- app/[locale]/about/overview/edit/page.tsx | 28 +++- app/[locale]/about/overview/page.tsx | 4 +- app/[locale]/about/page.tsx | 2 +- .../about/student-clubs/ClubDetails.tsx | 2 +- .../student-clubs/components/ClubEditor.tsx | 6 +- app/[locale]/about/student-clubs/page.tsx | 2 +- .../components/guide/GuideEditor.tsx | 4 +- .../scholarship/ScholarshipDetail.tsx | 2 +- .../scholarship/ScholarshipPreview.tsx | 2 +- .../components/timeline/TimelineEditor.tsx | 4 +- .../graduate/course-changes/create/page.tsx | 2 +- .../graduate/course-changes/edit/page.tsx | 2 +- .../graduate/course-changes/page.tsx | 2 +- .../academics/graduate/courses/page.tsx | 2 +- .../academics/graduate/guide/edit/page.tsx | 2 +- .../academics/graduate/guide/page.tsx | 2 +- .../graduate/scholarship/[id]/edit/page.tsx | 2 +- .../graduate/scholarship/[id]/page.tsx | 2 +- .../graduate/scholarship/create/page.tsx | 2 +- .../graduate/scholarship/edit/page.tsx | 2 +- .../academics/graduate/scholarship/page.tsx | 2 +- app/[locale]/academics/page.tsx | 2 +- .../course-changes/create/page.tsx | 2 +- .../course-changes/edit/page.tsx | 2 +- .../undergraduate/course-changes/page.tsx | 2 +- .../academics/undergraduate/courses/page.tsx | 2 +- .../undergraduate/curriculum/create/page.tsx | 2 +- .../edit/CurriculumEditPageContent.tsx | 2 +- .../undergraduate/curriculum/page.tsx | 2 +- .../edit/DegreeRequirementsEditor.tsx | 6 +- .../degree-requirements/edit/page.tsx | 2 +- .../degree-requirements/page.tsx | 2 +- .../create/page.tsx | 2 +- .../edit/GeneralStudiesEditPageContent.tsx | 2 +- .../general-studies-requirements/page.tsx | 2 +- .../undergraduate/guide/edit/page.tsx | 2 +- .../academics/undergraduate/guide/page.tsx | 2 +- .../scholarship/[id]/edit/page.tsx | 2 +- .../undergraduate/scholarship/[id]/page.tsx | 2 +- .../undergraduate/scholarship/create/page.tsx | 2 +- .../undergraduate/scholarship/edit/page.tsx | 2 +- .../undergraduate/scholarship/page.tsx | 2 +- .../helper/important/ImportantListRow.tsx | 2 +- .../admin/helper/slide/SlideListRow.tsx | 2 +- app/[locale]/admin/page.tsx | 2 +- .../graduate/regular-admission/page.tsx | 2 +- .../international/exchange/page.tsx | 2 +- .../international/graduate/page.tsx | 2 +- .../international/scholarships/page.tsx | 2 +- .../international/undergraduate/page.tsx | 2 +- app/[locale]/admissions/page.tsx | 2 +- .../undergraduate/early-admission/page.tsx | 2 +- .../undergraduate/regular-admission/page.tsx | 2 +- .../FacultyRecruitmentEditPageContent.tsx | 6 +- .../community/faculty-recruitment/page.tsx | 2 +- .../community/news/[id]/NewsViewer.tsx | 2 +- .../news/[id]/edit/EditNewsPageContent.tsx | 2 +- app/[locale]/community/news/[id]/page.tsx | 2 +- .../community/news/components/NewsEditor.tsx | 6 +- .../news/components/NewsPageContent.tsx | 2 +- .../community/news/components/NewsRow.tsx | 2 +- app/[locale]/community/news/create/page.tsx | 2 +- app/[locale]/community/news/page.tsx | 2 +- .../community/notice/[id]/NoticeViewer.tsx | 2 +- .../[id]/edit/EditNoticePageContent.tsx | 2 +- app/[locale]/community/notice/[id]/page.tsx | 2 +- .../notice/components/EditButtons.tsx | 2 +- .../notice/components/NoticeEditor.tsx | 4 +- .../notice/components/NoticeListRow.tsx | 2 +- app/[locale]/community/notice/create/page.tsx | 2 +- app/[locale]/community/notice/page.tsx | 2 +- app/[locale]/community/page.tsx | 2 +- .../[id]/edit/EditSeminarPageContent.tsx | 2 +- app/[locale]/community/seminar/[id]/page.tsx | 2 +- .../seminar/components/AdminFeatures.tsx | 2 +- .../seminar/components/SeminarEditor.tsx | 6 +- .../seminar/components/SeminarRow.tsx | 2 +- .../community/seminar/create/page.tsx | 2 +- app/[locale]/community/seminar/page.tsx | 2 +- app/[locale]/components/NewsSection.tsx | 2 +- app/[locale]/components/NoticeSection.tsx | 2 +- app/[locale]/components/useCarousel.ts | 4 +- app/[locale]/layout.tsx | 2 +- app/[locale]/page.tsx | 2 +- .../[id]/EmeritusFacultyMemberPageContent.tsx | 2 +- app/[locale]/people/emeritus-faculty/page.tsx | 2 +- .../faculty/[id]/FacultyMemberPageContent.tsx | 2 +- .../[id]/edit/FacultyEditPageContent.tsx | 2 +- .../faculty/components/FacultyEditor.tsx | 4 +- .../create/FacultyCreatePageContent.tsx | 2 +- app/[locale]/people/faculty/page.tsx | 2 +- app/[locale]/people/page.tsx | 2 +- .../staff/[id]/StaffMemberPageContent.tsx | 2 +- .../staff/[id]/edit/StaffEditPageContent.tsx | 2 +- .../people/staff/components/StaffEditor.tsx | 4 +- app/[locale]/people/staff/create/page.tsx | 2 +- app/[locale]/people/staff/page.tsx | 2 +- .../centers/ResearchCenterDetails.tsx | 2 +- .../components/ResearchCenterEditor.tsx | 6 +- app/[locale]/research/centers/page.tsx | 2 +- .../research/groups/ResearchGroupDetails.tsx | 2 +- .../research/groups/ResearchGroupLabs.tsx | 2 +- .../groups/components/ResearchGroupEditor.tsx | 6 +- app/[locale]/research/groups/page.tsx | 2 +- .../research/labs/ResearchLabListRow.tsx | 2 +- .../labs/[id]/ResearchLabDetailContent.tsx | 2 +- .../research/labs/[id]/ResesarchLabInfo.tsx | 2 +- .../labs/components/ResearchLabEditor.tsx | 6 +- app/[locale]/research/labs/page.tsx | 2 +- app/[locale]/research/page.tsx | 2 +- .../research/top-conference-list/page.tsx | 2 +- .../reservations/introduction/page.tsx | 2 +- app/[locale]/reservations/page.tsx | 2 +- app/[locale]/search/AboutSection.tsx | 2 +- app/[locale]/search/AcademicSection.tsx | 2 +- app/[locale]/search/AdmissionSection.tsx | 2 +- app/[locale]/search/CommunitySection.tsx | 2 +- app/[locale]/search/MemberSection.tsx | 2 +- app/[locale]/search/ResearchSection.tsx | 2 +- app/[locale]/search/helper/BasicRow.tsx | 2 +- app/[locale]/search/helper/NoticeRow.tsx | 2 +- app/[locale]/search/page.tsx | 2 +- components/form/File.tsx | 6 +- components/form/types.ts | 11 +- components/layout/footer/constants.ts | 2 +- .../layout/footer/useFooterDesignMode.ts | 2 +- components/layout/header/MobileNavButton.tsx | 2 +- components/layout/navbar/MobileNav.tsx | 2 +- components/layout/navbar/MobileNavDetail.tsx | 2 +- components/layout/navbar/NavbarDetail.tsx | 2 +- components/layout/navbar/NavbarRoot.tsx | 2 +- components/layout/navbar/NavtreeRow.tsx | 2 +- .../pageLayout/MajorCategoryPageLayout.tsx | 2 +- components/layout/pageLayout/PageTitle.tsx | 2 +- components/layout/pageLayout/SubNavbar.tsx | 2 +- {utils => constants}/segmentNode.ts | 0 contexts/NavbarContext.tsx | 2 +- eslint.config.mjs | 9 ++ package-lock.json | 17 ++ package.json | 1 + server.mjs | 1 + utils/formData.ts | 35 ++++- utils/hooks/useCurrentSegmentNode.ts | 2 +- utils/metadata.ts | 2 +- utils/page.ts | 2 +- utils/serverActionError.ts | 20 +++ 175 files changed, 433 insertions(+), 312 deletions(-) rename {utils => constants}/segmentNode.ts (100%) diff --git a/actions/about.ts b/actions/about.ts index cfdf1a4a6..276a7070d 100644 --- a/actions/about.ts +++ b/actions/about.ts @@ -25,9 +25,6 @@ import { FETCH_TAG_HISTORY, FETCH_TAG_OVERVIEW, } from '@/constants/network'; -import { redirectKo } from '@/i18n/routing'; -import { FutureCareers } from '@/types/about'; -import { getPath } from '@/utils/page'; import { contact, directions, @@ -37,7 +34,11 @@ import { history, overview, studentClubs, -} from '@/utils/segmentNode'; +} from '@/constants/segmentNode'; +import { redirectKo } from '@/i18n/routing'; +import { FutureCareers } from '@/types/about'; +import { getPath } from '@/utils/page'; +import { decodeFormDataFileName } from '@/utils/string'; import { withErrorHandler } from './errorHandler'; @@ -46,6 +47,7 @@ import { withErrorHandler } from './errorHandler'; const overviewPath = getPath(overview); export const putOverviewAction = withErrorHandler(async (formData: FormData) => { + decodeFormDataFileName(formData, 'newAttachments'); await putOverview(formData); revalidateTag(FETCH_TAG_OVERVIEW); redirectKo(overviewPath); diff --git a/actions/academics.ts b/actions/academics.ts index b878cdde1..67b923a62 100644 --- a/actions/academics.ts +++ b/actions/academics.ts @@ -38,7 +38,7 @@ import { } from '@/types/academics'; import { WithLanguage } from '@/types/language'; import { getPath } from '@/utils/page'; -import { graduateScholarship, undergraduateScholarship } from '@/utils/segmentNode'; +import { graduateScholarship, undergraduateScholarship } from '@/constants/segmentNode'; import { decodeFormDataFileName } from '@/utils/string'; import { withErrorHandler } from './errorHandler'; diff --git a/actions/news.ts b/actions/news.ts index ae5661d79..38c9d6933 100644 --- a/actions/news.ts +++ b/actions/news.ts @@ -7,7 +7,7 @@ import { deleteNews, patchNews } from '@/apis/v1/news/[id]'; import { FETCH_TAG_NEWS } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { news } from '@/utils/segmentNode'; +import { news } from '@/constants/segmentNode'; import { decodeFormDataFileName } from '@/utils/string'; const newsPath = getPath(news); diff --git a/actions/notice.ts b/actions/notice.ts index 3d8d9b3eb..7ffbadc89 100644 --- a/actions/notice.ts +++ b/actions/notice.ts @@ -8,7 +8,7 @@ import { FETCH_TAG_NOTICE } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { errorToStr } from '@/utils/error'; import { getPath } from '@/utils/page'; -import { notice } from '@/utils/segmentNode'; +import { notice } from '@/constants/segmentNode'; import { decodeFormDataFileName } from '@/utils/string'; const noticePath = getPath(notice); diff --git a/actions/people.ts b/actions/people.ts index 823a8d995..ba84e9d79 100644 --- a/actions/people.ts +++ b/actions/people.ts @@ -11,7 +11,7 @@ import { redirect } from '@/i18n/routing'; import { Language, WithLanguage } from '@/types/language'; import { FacultyStatus } from '@/types/people'; import { getPath } from '@/utils/page'; -import { emeritusFaculty, faculty, staff } from '@/utils/segmentNode'; +import { emeritusFaculty, faculty, staff } from '@/constants/segmentNode'; import { withErrorHandler } from './errorHandler'; diff --git a/actions/recruitment.ts b/actions/recruitment.ts index 456038bd4..c32238286 100644 --- a/actions/recruitment.ts +++ b/actions/recruitment.ts @@ -6,7 +6,7 @@ import { putFacultyRecruitment } from '@/apis/v1/recruit'; import { FETCH_TAG_RECRUITMENT } from '@/constants/network'; import { redirect } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { facultyRecruitment } from '@/utils/segmentNode'; +import { facultyRecruitment } from '@/constants/segmentNode'; import { withErrorHandler } from './errorHandler'; diff --git a/actions/research.ts b/actions/research.ts index 57835dca1..3167a02ba 100644 --- a/actions/research.ts +++ b/actions/research.ts @@ -15,7 +15,7 @@ import { FETCH_TAG_CENTER, FETCH_TAG_GROUP, FETCH_TAG_LAB } from '@/constants/ne import { redirectKo } from '@/i18n/routing'; import { WithLanguage } from '@/types/language'; import { getPath } from '@/utils/page'; -import { researchCenters, researchGroups, researchLabs } from '@/utils/segmentNode'; +import { researchCenters, researchGroups, researchLabs } from '@/constants/segmentNode'; import { decodeFormDataFileName } from '@/utils/string'; import { withErrorHandler } from './errorHandler'; diff --git a/actions/seminar.ts b/actions/seminar.ts index af5db1c8b..426dfc156 100644 --- a/actions/seminar.ts +++ b/actions/seminar.ts @@ -7,7 +7,7 @@ import { deleteSeminar, patchSeminar } from '@/apis/v1/seminar/[id]'; import { FETCH_TAG_SEMINAR } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { seminar } from '@/utils/segmentNode'; +import { seminar } from '@/constants/segmentNode'; import { decodeFormDataFileName } from '@/utils/string'; const seminarPath = getPath(seminar); diff --git a/app/[locale]/10-10-project/manager/page.tsx b/app/[locale]/10-10-project/manager/page.tsx index 831309e6f..a0b43acd9 100644 --- a/app/[locale]/10-10-project/manager/page.tsx +++ b/app/[locale]/10-10-project/manager/page.tsx @@ -1,7 +1,7 @@ import HTMLViewer from '@/components/form/html/HTMLViewer'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { getPath } from '@/utils/page'; -import { greetings } from '@/utils/segmentNode'; +import { greetings } from '@/constants/segmentNode'; export default async function TenTenManager() { return ( diff --git a/app/[locale]/about/components/AboutEditor.tsx b/app/[locale]/about/components/AboutEditor.tsx index 3059071bb..15fff2c17 100644 --- a/app/[locale]/about/components/AboutEditor.tsx +++ b/app/[locale]/about/components/AboutEditor.tsx @@ -3,115 +3,80 @@ import { useState } from 'react'; import { FormProvider, useForm } from 'react-hook-form'; -import { - putContactAction, - putGreetingsAction, - putHistoryAction, - putOverviewAction, -} from '@/actions/about'; import Fieldset from '@/components/form/Fieldset'; import Form from '@/components/form/Form'; import LanguagePicker from '@/components/form/LanguagePicker'; -import { PostEditorFile, PostEditorImage } from '@/components/form/types'; -import PageLayout from '@/components/layout/pageLayout/PageLayout'; +import { EditorFile, EditorImage } from '@/components/form/types'; import { useRouter } from '@/i18n/routing'; -import { AboutContent } from '@/types/about'; -import { Language, WithLanguage } from '@/types/language'; -import { errorToStr } from '@/utils/error'; +import { Language } from '@/types/language'; import { contentToFormData, getAttachmentDeleteIds } from '@/utils/formData'; -import { getPath } from '@/utils/page'; -import { contact, greetings, history, overview, SegmentNode } from '@/utils/segmentNode'; -import { handleServerAction } from '@/utils/serverActionError'; -import { errorToast, successToast } from '@/utils/toast'; +import { handleServerResponse } from '@/utils/serverActionError'; -interface Props { - data: WithLanguage; - node: SegmentNode; - showAttachments?: boolean; -} - -interface FormData { +export interface AboutFormData { htmlKo: string; htmlEn: string; - image: PostEditorImage; - files: PostEditorFile[]; + image: EditorImage; + files: EditorFile[]; } -export default function AboutEditor({ data, node, showAttachments = false }: Props) { +interface Props { + cancelPath: string; + defaultValues: AboutFormData; + onSubmit: (formData: FormData) => Promise; + showAttachments?: boolean; +} + +export default function AboutEditor({ + cancelPath, + defaultValues, + onSubmit: _onSubmit, + showAttachments = false, +}: Props) { const router = useRouter(); - const formMethods = useForm({ - defaultValues: { - htmlKo: data.ko.description, - htmlEn: data.en.description, - image: data.ko.imageURL ? { type: 'UPLOADED_IMAGE', url: data.ko.imageURL } : null, - files: data.ko.attachments.map((attachment) => ({ file: attachment, type: 'UPLOADED_FILE' })), - }, - }); + const formMethods = useForm({ defaultValues }); const { handleSubmit } = formMethods; - const [language, setLanguage] = useState('ko'); - const onCancel = () => router.push(getPath(node)); + const onCancel = () => router.push(cancelPath); const onSubmit = handleSubmit(async ({ htmlKo, htmlEn, image, files }) => { - try { - const submitAction = ABOUT_SUBMIT_ACTION[node.segment]; - - const requestObject = { - ko: { - description: htmlKo, - deleteIds: getAttachmentDeleteIds(files, data.ko.attachments), - }, - en: { - description: htmlEn, - deleteIds: getAttachmentDeleteIds(files, data.en.attachments), - }, - removeImage: data.ko.imageURL !== null && image === null, - }; - - const formData = contentToFormData('EDIT', { requestObject, image, attachments: files }); - - handleServerAction(submitAction(formData)); - successToast(`${node.name}을(를) 수정했습니다.`); - } catch (e) { - errorToast(errorToStr(e)); - } + console.log(files, defaultValues); + const requestObject = { + ko: { description: htmlKo, deleteIds: getAttachmentDeleteIds(files, defaultValues.files) }, + en: { description: htmlEn, deleteIds: [] }, + removeImage: defaultValues.image !== null && image === null, + }; + + const formData = contentToFormData('EDIT', { requestObject, image, attachments: files }); + const resp = await _onSubmit(formData); + handleServerResponse(resp, { successMessage: '수정 완료되었습니다.' }); }); return ( - - -
- - - - {language === 'ko' && } - {language === 'en' && } - - - - - - - - {showAttachments && ( - - - - )} - - - -
-
+ +
+ + + + {language === 'ko' && } + {language === 'en' && } + + + + + + + + {showAttachments && ( + + + + )} + + + +
); } - -const ABOUT_SUBMIT_ACTION = { - [overview.segment]: putOverviewAction, - [greetings.segment]: putGreetingsAction, - [history.segment]: putHistoryAction, - [contact.segment]: putContactAction, -}; diff --git a/app/[locale]/about/contact/edit/page.tsx b/app/[locale]/about/contact/edit/page.tsx index a02f1bb6f..c52e62294 100644 --- a/app/[locale]/about/contact/edit/page.tsx +++ b/app/[locale]/about/contact/edit/page.tsx @@ -1,10 +1,32 @@ +import { putContactAction } from '@/actions/about'; import { getContact } from '@/apis/v1/about/contact'; -import { contact } from '@/utils/segmentNode'; +import PageLayout from '@/components/layout/pageLayout/PageLayout'; +import { contact } from '@/constants/segmentNode'; +import { getEditorFile, getEditorImage } from '@/utils/formData'; +import { getPath } from '@/utils/page'; -import AboutEditor from '../../components/AboutEditor'; +import AboutEditor, { AboutFormData } from '../../components/AboutEditor'; + +const path = getPath(contact); export default async function ContactEditPage() { const [koData, enData] = await Promise.all([getContact('ko'), getContact('en')]); - return ; + const defaultValues: AboutFormData = { + htmlKo: koData.description, + htmlEn: enData.description, + image: getEditorImage(koData.imageURL), + files: getEditorFile(koData.attachments), + }; + + return ( + + + + ); } diff --git a/app/[locale]/about/contact/page.tsx b/app/[locale]/about/contact/page.tsx index 987acc0e5..e46b80034 100644 --- a/app/[locale]/about/contact/page.tsx +++ b/app/[locale]/about/contact/page.tsx @@ -8,7 +8,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { contact } from '@/utils/segmentNode'; +import { contact } from '@/constants/segmentNode'; interface ContactPageProps { params: Promise<{ locale: Language }>; diff --git a/app/[locale]/about/directions/DirectionsDetails.tsx b/app/[locale]/about/directions/DirectionsDetails.tsx index 04645c71e..8c9caae82 100644 --- a/app/[locale]/about/directions/DirectionsDetails.tsx +++ b/app/[locale]/about/directions/DirectionsDetails.tsx @@ -3,7 +3,7 @@ import LoginVisible from '@/components/common/LoginVisible'; import HTMLViewer from '@/components/form/html/HTMLViewer'; import { Direction } from '@/types/about'; import { getPath } from '@/utils/page'; -import { directions } from '@/utils/segmentNode'; +import { directions } from '@/constants/segmentNode'; import { replaceSpaceWithDash } from '@/utils/string'; const directionsPath = getPath(directions); diff --git a/app/[locale]/about/directions/LocationGuide.tsx b/app/[locale]/about/directions/LocationGuide.tsx index 2f94a08c3..d7014c210 100644 --- a/app/[locale]/about/directions/LocationGuide.tsx +++ b/app/[locale]/about/directions/LocationGuide.tsx @@ -2,7 +2,7 @@ import { useTranslations } from 'next-intl'; import { Link } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { staff } from '@/utils/segmentNode'; +import { staff } from '@/constants/segmentNode'; const staffPath = getPath(staff); diff --git a/app/[locale]/about/directions/edit/DirectionEditor.tsx b/app/[locale]/about/directions/edit/DirectionEditor.tsx index 14cbef355..81c99a713 100644 --- a/app/[locale]/about/directions/edit/DirectionEditor.tsx +++ b/app/[locale]/about/directions/edit/DirectionEditor.tsx @@ -14,7 +14,7 @@ import { Direction } from '@/types/about'; import { Language, WithLanguage } from '@/types/language'; import { errorToStr } from '@/utils/error'; import { getPath } from '@/utils/page'; -import { directions } from '@/utils/segmentNode'; +import { directions } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast, successToast } from '@/utils/toast'; diff --git a/app/[locale]/about/directions/page.tsx b/app/[locale]/about/directions/page.tsx index e3aeb14a5..7a5aac8ae 100644 --- a/app/[locale]/about/directions/page.tsx +++ b/app/[locale]/about/directions/page.tsx @@ -9,7 +9,7 @@ import { Language } from '@/types/language'; import { findItemBySearchParam } from '@/utils/findSelectedItem'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { directions } from '@/utils/segmentNode'; +import { directions } from '@/constants/segmentNode'; import DirectionsDetails from './DirectionsDetails'; import LocationGuide from './LocationGuide'; diff --git a/app/[locale]/about/facilities/FacilitiesList.tsx b/app/[locale]/about/facilities/FacilitiesList.tsx index ff14cbe3e..c8e3489f0 100644 --- a/app/[locale]/about/facilities/FacilitiesList.tsx +++ b/app/[locale]/about/facilities/FacilitiesList.tsx @@ -9,7 +9,7 @@ import Distance from '@/public/image/distance.svg'; import { Facility } from '@/types/about'; import { errorToStr } from '@/utils/error'; import { getPath } from '@/utils/page'; -import { facilities } from '@/utils/segmentNode'; +import { facilities } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast, successToast } from '@/utils/toast'; diff --git a/app/[locale]/about/facilities/create/page.tsx b/app/[locale]/about/facilities/create/page.tsx index 91ff24ee3..67dc22553 100644 --- a/app/[locale]/about/facilities/create/page.tsx +++ b/app/[locale]/about/facilities/create/page.tsx @@ -6,7 +6,7 @@ import { FormProvider, useForm } from 'react-hook-form'; import { postFacilityAction, putFacilityAction } from '@/actions/about'; import Fieldset from '@/components/form/Fieldset'; import LanguagePicker from '@/components/form/LanguagePicker'; -import { PostEditorImage } from '@/components/form/types'; +import { EditorImage } from '@/components/form/types'; import Form from '@/components/form/Form'; import HTMLEditor from '@/components/form/html/HTMLEditor'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; @@ -16,14 +16,14 @@ import { Language, WithLanguage } from '@/types/language'; import { errorToStr } from '@/utils/error'; import { contentToFormData } from '@/utils/formData'; import { getPath } from '@/utils/page'; -import { facilities } from '@/utils/segmentNode'; +import { facilities } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast, successToast } from '@/utils/toast'; const facilitiesPath = getPath(facilities); interface FormData extends WithLanguage { - imageURL: PostEditorImage | null; + imageURL: EditorImage | null; } export default function FacilityCreator() { diff --git a/app/[locale]/about/facilities/edit/FacilityEditor.tsx b/app/[locale]/about/facilities/edit/FacilityEditor.tsx index 1fb4d4405..bb03e5299 100644 --- a/app/[locale]/about/facilities/edit/FacilityEditor.tsx +++ b/app/[locale]/about/facilities/edit/FacilityEditor.tsx @@ -6,7 +6,7 @@ import { FormProvider, useForm } from 'react-hook-form'; import { putFacilityAction } from '@/actions/about'; import Fieldset from '@/components/form/Fieldset'; import LanguagePicker from '@/components/form/LanguagePicker'; -import { PostEditorImage } from '@/components/form/types'; +import { EditorImage } from '@/components/form/types'; import Form from '@/components/form/Form'; import HTMLEditor from '@/components/form/html/HTMLEditor'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; @@ -16,14 +16,14 @@ import { Language, WithLanguage } from '@/types/language'; import { errorToStr } from '@/utils/error'; import { contentToFormData } from '@/utils/formData'; import { getPath } from '@/utils/page'; -import { facilities } from '@/utils/segmentNode'; +import { facilities } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast, successToast } from '@/utils/toast'; const facilitiesPath = getPath(facilities); interface FormData extends WithLanguage { - imageURL: PostEditorImage | null; + imageURL: EditorImage | null; } export default function FacilityEditor({ data }: { data: WithLanguage }) { diff --git a/app/[locale]/about/facilities/page.tsx b/app/[locale]/about/facilities/page.tsx index 70ca3b0e5..08e511fc2 100644 --- a/app/[locale]/about/facilities/page.tsx +++ b/app/[locale]/about/facilities/page.tsx @@ -9,7 +9,7 @@ import { Link } from '@/i18n/routing'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { facilities } from '@/utils/segmentNode'; +import { facilities } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: Language }> }) { const params = await props.params; diff --git a/app/[locale]/about/future-careers/CareerStat.tsx b/app/[locale]/about/future-careers/CareerStat.tsx index ab515ada4..7b94f0477 100644 --- a/app/[locale]/about/future-careers/CareerStat.tsx +++ b/app/[locale]/about/future-careers/CareerStat.tsx @@ -9,7 +9,7 @@ import Dropdown from '@/components/form/legacy/Dropdown'; import { Link } from '@/i18n/routing'; import { FutureCareers } from '@/types/about'; import { getPath } from '@/utils/page'; -import { futureCareers } from '@/utils/segmentNode'; +import { futureCareers } from '@/constants/segmentNode'; export const CAREER_STAT_ROWS = ['삼성', 'LG', '기타 대기업', '중소기업', '진학', '기타']; export const CAREER_STAT_COLS = ['학부', '석사', '박사']; diff --git a/app/[locale]/about/future-careers/components/CareerStatEditor.tsx b/app/[locale]/about/future-careers/components/CareerStatEditor.tsx index 990fdc7f4..267b3d686 100644 --- a/app/[locale]/about/future-careers/components/CareerStatEditor.tsx +++ b/app/[locale]/about/future-careers/components/CareerStatEditor.tsx @@ -6,7 +6,7 @@ import { FormProvider, useForm, useFormContext, useWatch } from 'react-hook-form import Form from '@/components/form/Form'; import { getPath } from '@/utils/page'; -import { futureCareers } from '@/utils/segmentNode'; +import { futureCareers } from '@/constants/segmentNode'; import { useRouter } from '@/i18n/routing'; import { CareerStat } from '@/apis/v2/about/future-careers/stats'; import { degreeList, companyList, COMPANY_MAP } from '@/apis/v2/about/future-careers/types'; diff --git a/app/[locale]/about/future-careers/description/edit/CareerDescriptionEditor.tsx b/app/[locale]/about/future-careers/description/edit/CareerDescriptionEditor.tsx index d94372761..0e2387118 100644 --- a/app/[locale]/about/future-careers/description/edit/CareerDescriptionEditor.tsx +++ b/app/[locale]/about/future-careers/description/edit/CareerDescriptionEditor.tsx @@ -10,7 +10,7 @@ import { useRouter } from '@/i18n/routing'; import { Language, WithLanguage } from '@/types/language'; import { errorToStr } from '@/utils/error'; import { getPath } from '@/utils/page'; -import { studentClubs } from '@/utils/segmentNode'; +import { studentClubs } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast, successToast } from '@/utils/toast'; import { useState } from 'react'; diff --git a/app/[locale]/about/future-careers/page.tsx b/app/[locale]/about/future-careers/page.tsx index 33570f971..af0df238b 100644 --- a/app/[locale]/about/future-careers/page.tsx +++ b/app/[locale]/about/future-careers/page.tsx @@ -8,7 +8,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { futureCareers } from '@/utils/segmentNode'; +import { futureCareers } from '@/constants/segmentNode'; import CareerCompanies from './CareerCompanies'; import CareerStat from './CareerStat'; diff --git a/app/[locale]/about/future-careers/stat/edit/CareerStatEditPageContent.tsx b/app/[locale]/about/future-careers/stat/edit/CareerStatEditPageContent.tsx index 65ec53fd9..f195c9ddc 100644 --- a/app/[locale]/about/future-careers/stat/edit/CareerStatEditPageContent.tsx +++ b/app/[locale]/about/future-careers/stat/edit/CareerStatEditPageContent.tsx @@ -7,7 +7,7 @@ import { useRouter } from '@/i18n/routing'; import { FutureCareers } from '@/types/about'; import { errorToStr } from '@/utils/error'; import { getPath } from '@/utils/page'; -import { futureCareers } from '@/utils/segmentNode'; +import { futureCareers } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast, successToast } from '@/utils/toast'; import CareerStatEditor from '../../components/CareerStatEditor'; diff --git a/app/[locale]/about/greetings/edit/page.tsx b/app/[locale]/about/greetings/edit/page.tsx index 14575bf51..78d8d2f5b 100644 --- a/app/[locale]/about/greetings/edit/page.tsx +++ b/app/[locale]/about/greetings/edit/page.tsx @@ -1,10 +1,32 @@ +import { putGreetingsAction } from '@/actions/about'; import { getGreetings } from '@/apis/v1/about/greetings'; -import { greetings } from '@/utils/segmentNode'; +import PageLayout from '@/components/layout/pageLayout/PageLayout'; +import { greetings } from '@/constants/segmentNode'; +import { getEditorFile, getEditorImage } from '@/utils/formData'; +import { getPath } from '@/utils/page'; -import AboutEditor from '../../components/AboutEditor'; +import AboutEditor, { AboutFormData } from '../../components/AboutEditor'; + +const path = getPath(greetings); export default async function GreetingsEditPage() { const [koData, enData] = await Promise.all([getGreetings('ko'), getGreetings('en')]); - return ; + const defaultValues: AboutFormData = { + htmlKo: koData.description, + htmlEn: enData.description, + image: getEditorImage(koData.imageURL), + files: getEditorFile(koData.attachments), + }; + + return ( + + + + ); } diff --git a/app/[locale]/about/greetings/page.tsx b/app/[locale]/about/greetings/page.tsx index 2709ceb30..21509df9d 100644 --- a/app/[locale]/about/greetings/page.tsx +++ b/app/[locale]/about/greetings/page.tsx @@ -7,10 +7,10 @@ import { EditButton } from '@/components/common/Buttons'; import LoginVisible from '@/components/common/LoginVisible'; import HTMLViewer from '@/components/form/html/HTMLViewer'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; +import { greetings } from '@/constants/segmentNode'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { greetings } from '@/utils/segmentNode'; interface GreetingsPageProps { params: Promise<{ locale: Language }>; @@ -26,8 +26,6 @@ export async function generateMetadata(props: GreetingsPageProps) { const greetingsPath = getPath(greetings); -// 학부 소개 페이지 - 학부장 인사말 페이지의 형식이 동일 -// 두 곳에서만 겹쳐서 따로 컴포넌트화하지 않음 export default async function GreetingsPage(props: GreetingsPageProps) { const params = await props.params; const { description, imageURL } = await getGreetings(params.locale); diff --git a/app/[locale]/about/history/edit/page.tsx b/app/[locale]/about/history/edit/page.tsx index d0609e4f6..7b4146574 100644 --- a/app/[locale]/about/history/edit/page.tsx +++ b/app/[locale]/about/history/edit/page.tsx @@ -1,10 +1,32 @@ +import { putHistoryAction } from '@/actions/about'; import { getHistory } from '@/apis/v1/about/history'; -import { history } from '@/utils/segmentNode'; +import PageLayout from '@/components/layout/pageLayout/PageLayout'; +import { history } from '@/constants/segmentNode'; +import { getEditorFile, getEditorImage } from '@/utils/formData'; +import { getPath } from '@/utils/page'; -import AboutEditor from '../../components/AboutEditor'; +import AboutEditor, { AboutFormData } from '../../components/AboutEditor'; + +const path = getPath(history); export default async function HistoryEditPage() { const [koData, enData] = await Promise.all([getHistory('ko'), getHistory('en')]); - return ; + const defaultValues: AboutFormData = { + htmlKo: koData.description, + htmlEn: enData.description, + image: getEditorImage(koData.imageURL), + files: getEditorFile(koData.attachments), + }; + + return ( + + + + ); } diff --git a/app/[locale]/about/history/page.tsx b/app/[locale]/about/history/page.tsx index 4a8b9d226..fb42984d8 100644 --- a/app/[locale]/about/history/page.tsx +++ b/app/[locale]/about/history/page.tsx @@ -9,7 +9,7 @@ import history_image from '@/public/image/about/history.png'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { history } from '@/utils/segmentNode'; +import { history } from '@/constants/segmentNode'; interface HistoryPageProps { params: Promise<{ locale: Language }>; diff --git a/app/[locale]/about/overview/edit/page.tsx b/app/[locale]/about/overview/edit/page.tsx index ad7cd7555..70a4ff313 100644 --- a/app/[locale]/about/overview/edit/page.tsx +++ b/app/[locale]/about/overview/edit/page.tsx @@ -1,10 +1,32 @@ +import { putOverviewAction } from '@/actions/about'; import { getOverview } from '@/apis/v1/about/overview'; -import { overview } from '@/utils/segmentNode'; +import PageLayout from '@/components/layout/pageLayout/PageLayout'; +import { getEditorFile, getEditorImage } from '@/utils/formData'; +import { getPath } from '@/utils/page'; +import { overview } from '@/constants/segmentNode'; -import AboutEditor from '../../components/AboutEditor'; +import AboutEditor, { AboutFormData } from '../../components/AboutEditor'; + +const path = getPath(overview); export default async function OverviewEditPage() { const [koData, enData] = await Promise.all([getOverview('ko'), getOverview('en')]); - return ; + const defaultValues: AboutFormData = { + htmlKo: koData.description, + htmlEn: enData.description, + image: getEditorImage(koData.imageURL), + files: getEditorFile(koData.attachments), + }; + + return ( + + + + ); } diff --git a/app/[locale]/about/overview/page.tsx b/app/[locale]/about/overview/page.tsx index 39016c747..6921f1e9c 100644 --- a/app/[locale]/about/overview/page.tsx +++ b/app/[locale]/about/overview/page.tsx @@ -9,12 +9,12 @@ import { EditButton } from '@/components/common/Buttons'; import LoginVisible from '@/components/common/LoginVisible'; import HTMLViewer from '@/components/form/html/HTMLViewer'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; +import { overview } from '@/constants/segmentNode'; import brochure1 from '@/public/image/about/brochure1.png'; import brochure2 from '@/public/image/about/brochure2.png'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { overview } from '@/utils/segmentNode'; interface OverviewPageProps { params: Promise<{ locale: Language }>; @@ -36,8 +36,6 @@ export async function generateMetadata(props: OverviewPageProps) { const overviewPath = getPath(overview); -// 학부 소개 페이지 - 학부장 인삿말 페이지의 형식이 동일 -// 두 곳에서만 겹쳐서 따로 컴포넌트화하지 않음 export default async function OverviewPage(props: OverviewPageProps) { const params = await props.params; const { description, attachments, imageURL } = await getOverview(params.locale); diff --git a/app/[locale]/about/page.tsx b/app/[locale]/about/page.tsx index d85deea16..2b2f5c308 100644 --- a/app/[locale]/about/page.tsx +++ b/app/[locale]/about/page.tsx @@ -1,6 +1,6 @@ import MajorCategoryPageLayout from '@/components/layout/pageLayout/MajorCategoryPageLayout'; import { getMetadata } from '@/utils/metadata'; -import { about } from '@/utils/segmentNode'; +import { about } from '@/constants/segmentNode'; export const dynamic = 'force-dynamic'; diff --git a/app/[locale]/about/student-clubs/ClubDetails.tsx b/app/[locale]/about/student-clubs/ClubDetails.tsx index 114f61d96..2f9800d20 100644 --- a/app/[locale]/about/student-clubs/ClubDetails.tsx +++ b/app/[locale]/about/student-clubs/ClubDetails.tsx @@ -9,7 +9,7 @@ import { Club } from '@/types/about'; import { Language, WithLanguage } from '@/types/language'; import { errorToStr } from '@/utils/error'; import { getPath } from '@/utils/page'; -import { studentClubs } from '@/utils/segmentNode'; +import { studentClubs } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { replaceSpaceWithDash } from '@/utils/string'; import { errorToast, successToast } from '@/utils/toast'; diff --git a/app/[locale]/about/student-clubs/components/ClubEditor.tsx b/app/[locale]/about/student-clubs/components/ClubEditor.tsx index 9ce536085..273f1393b 100644 --- a/app/[locale]/about/student-clubs/components/ClubEditor.tsx +++ b/app/[locale]/about/student-clubs/components/ClubEditor.tsx @@ -2,20 +2,20 @@ import Fieldset from '@/components/form/Fieldset'; import LanguagePicker from '@/components/form/LanguagePicker'; -import { PostEditorImage } from '@/components/form/types'; +import { EditorImage } from '@/components/form/types'; import Form from '@/components/form/Form'; import HTMLEditor from '@/components/form/html/HTMLEditor'; import { useRouter } from '@/i18n/routing'; import { Language, WithLanguage } from '@/types/language'; import { getPath } from '@/utils/page'; -import { studentClubs } from '@/utils/segmentNode'; +import { studentClubs } from '@/constants/segmentNode'; import { useState } from 'react'; import { FormProvider, useForm } from 'react-hook-form'; const clubPath = getPath(studentClubs); export interface ClubFormData extends WithLanguage<{ name: string; description: string }> { - image?: PostEditorImage; + image?: EditorImage; } interface Props { diff --git a/app/[locale]/about/student-clubs/page.tsx b/app/[locale]/about/student-clubs/page.tsx index 178703204..cc18bb644 100644 --- a/app/[locale]/about/student-clubs/page.tsx +++ b/app/[locale]/about/student-clubs/page.tsx @@ -12,7 +12,7 @@ import { Language } from '@/types/language'; import { findItemBySearchParam } from '@/utils/findSelectedItem'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { studentClubs } from '@/utils/segmentNode'; +import { studentClubs } from '@/constants/segmentNode'; import ClubDetails from './ClubDetails'; diff --git a/app/[locale]/academics/components/guide/GuideEditor.tsx b/app/[locale]/academics/components/guide/GuideEditor.tsx index 880ea5a04..70f3faa15 100644 --- a/app/[locale]/academics/components/guide/GuideEditor.tsx +++ b/app/[locale]/academics/components/guide/GuideEditor.tsx @@ -3,14 +3,14 @@ import { FormProvider, useForm } from 'react-hook-form'; import Fieldset from '@/components/form/Fieldset'; -import { PostEditorFile } from '@/components/form/types'; +import { EditorFile } from '@/components/form/types'; import Form from '@/components/form/Form'; import HTMLEditor from '@/components/form/html/HTMLEditor'; import { useRouter } from '@/i18n/routing'; export interface GuideFormData { description: string; - file: PostEditorFile[]; + file: EditorFile[]; } interface Props { diff --git a/app/[locale]/academics/components/scholarship/ScholarshipDetail.tsx b/app/[locale]/academics/components/scholarship/ScholarshipDetail.tsx index 295dd7ec3..8d2362136 100644 --- a/app/[locale]/academics/components/scholarship/ScholarshipDetail.tsx +++ b/app/[locale]/academics/components/scholarship/ScholarshipDetail.tsx @@ -8,7 +8,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { Scholarship, StudentType } from '@/types/academics'; import { errorToStr } from '@/utils/error'; import { getPath } from '@/utils/page'; -import { graduateScholarship, undergraduateScholarship } from '@/utils/segmentNode'; +import { graduateScholarship, undergraduateScholarship } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast, successToast } from '@/utils/toast'; diff --git a/app/[locale]/academics/components/scholarship/ScholarshipPreview.tsx b/app/[locale]/academics/components/scholarship/ScholarshipPreview.tsx index 7a4352cd8..52e3c6c61 100644 --- a/app/[locale]/academics/components/scholarship/ScholarshipPreview.tsx +++ b/app/[locale]/academics/components/scholarship/ScholarshipPreview.tsx @@ -7,7 +7,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { Link } from '@/i18n/routing'; import { StudentType } from '@/types/academics'; import { getPath } from '@/utils/page'; -import { graduateScholarship, undergraduateScholarship } from '@/utils/segmentNode'; +import { graduateScholarship, undergraduateScholarship } from '@/constants/segmentNode'; const undergraduateScholarshipPath = getPath(undergraduateScholarship); const graduateScholarshipPath = getPath(graduateScholarship); diff --git a/app/[locale]/academics/components/timeline/TimelineEditor.tsx b/app/[locale]/academics/components/timeline/TimelineEditor.tsx index 88aa114dd..20db74292 100644 --- a/app/[locale]/academics/components/timeline/TimelineEditor.tsx +++ b/app/[locale]/academics/components/timeline/TimelineEditor.tsx @@ -4,7 +4,7 @@ import { useRouter } from 'next/router'; import { FormProvider, useForm } from 'react-hook-form'; import Fieldset from '@/components/form/Fieldset'; -import { isUploadedFile, PostEditorFile } from '@/components/form/types'; +import { isUploadedFile, EditorFile } from '@/components/form/types'; import Form from '@/components/form/Form'; import HTMLEditor from '@/components/form/html/HTMLEditor'; import { errorToStr } from '@/utils/error'; @@ -12,7 +12,7 @@ import { contentToFormData, getAttachmentDeleteIds } from '@/utils/formData'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast, successToast } from '@/utils/toast'; -export type TimelineFormData = { year: number; description: string; file: PostEditorFile[] }; +export type TimelineFormData = { year: number; description: string; file: EditorFile[] }; interface Props { defaultValues?: TimelineFormData; diff --git a/app/[locale]/academics/graduate/course-changes/create/page.tsx b/app/[locale]/academics/graduate/course-changes/create/page.tsx index 009c3a8f2..b44b58045 100644 --- a/app/[locale]/academics/graduate/course-changes/create/page.tsx +++ b/app/[locale]/academics/graduate/course-changes/create/page.tsx @@ -3,7 +3,7 @@ import TimelineEditor from '@/app/[locale]/academics/components/timeline/Timelin import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { undergraduateCourseChanges } from '@/utils/segmentNode'; +import { undergraduateCourseChanges } from '@/constants/segmentNode'; const courseChangesPath = getPath(undergraduateCourseChanges); diff --git a/app/[locale]/academics/graduate/course-changes/edit/page.tsx b/app/[locale]/academics/graduate/course-changes/edit/page.tsx index a31145308..3875424cc 100644 --- a/app/[locale]/academics/graduate/course-changes/edit/page.tsx +++ b/app/[locale]/academics/graduate/course-changes/edit/page.tsx @@ -9,7 +9,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_COURSE_CHANGES } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { graduateCourseChanges } from '@/utils/segmentNode'; +import { graduateCourseChanges } from '@/constants/segmentNode'; import { decodeFormDataFileName } from '@/utils/string'; const courseChangePath = getPath(graduateCourseChanges); diff --git a/app/[locale]/academics/graduate/course-changes/page.tsx b/app/[locale]/academics/graduate/course-changes/page.tsx index f50cf8bfd..88c6f04c8 100644 --- a/app/[locale]/academics/graduate/course-changes/page.tsx +++ b/app/[locale]/academics/graduate/course-changes/page.tsx @@ -6,7 +6,7 @@ import TimelineViewer from '@/app/[locale]/academics/components/timeline/Timelin import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_COURSE_CHANGES } from '@/constants/network'; import { getMetadata } from '@/utils/metadata'; -import { undergraduateCourseChanges } from '@/utils/segmentNode'; +import { undergraduateCourseChanges } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }> }) { const params = await props.params; diff --git a/app/[locale]/academics/graduate/courses/page.tsx b/app/[locale]/academics/graduate/courses/page.tsx index 49235b31e..69a55c86d 100644 --- a/app/[locale]/academics/graduate/courses/page.tsx +++ b/app/[locale]/academics/graduate/courses/page.tsx @@ -2,7 +2,7 @@ import { getCourses } from '@/apis/v2/academics/courses'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; -import { graduateCourses } from '@/utils/segmentNode'; +import { graduateCourses } from '@/constants/segmentNode'; import GraduateCoursePageContent from './GraduateCoursePageContent'; diff --git a/app/[locale]/academics/graduate/guide/edit/page.tsx b/app/[locale]/academics/graduate/guide/edit/page.tsx index 404db9bd6..a68f779ae 100644 --- a/app/[locale]/academics/graduate/guide/edit/page.tsx +++ b/app/[locale]/academics/graduate/guide/edit/page.tsx @@ -6,7 +6,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_GUIDE } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { graduateGuide } from '@/utils/segmentNode'; +import { graduateGuide } from '@/constants/segmentNode'; import { decodeFormDataFileName } from '@/utils/string'; const path = getPath(graduateGuide); diff --git a/app/[locale]/academics/graduate/guide/page.tsx b/app/[locale]/academics/graduate/guide/page.tsx index 3634b6e9e..d107ceb0b 100644 --- a/app/[locale]/academics/graduate/guide/page.tsx +++ b/app/[locale]/academics/graduate/guide/page.tsx @@ -1,7 +1,7 @@ import { getAcademicsGuide } from '@/apis/v1/academics/[studentType]/guide'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { graduateGuide } from '@/utils/segmentNode'; +import { graduateGuide } from '@/constants/segmentNode'; import GuidePageContent from '../../components/guide/GuidePageContent'; diff --git a/app/[locale]/academics/graduate/scholarship/[id]/edit/page.tsx b/app/[locale]/academics/graduate/scholarship/[id]/edit/page.tsx index 66c88c31b..2f5b0d7dc 100644 --- a/app/[locale]/academics/graduate/scholarship/[id]/edit/page.tsx +++ b/app/[locale]/academics/graduate/scholarship/[id]/edit/page.tsx @@ -10,7 +10,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_SCHOLARSHIP } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { graduateScholarship } from '@/utils/segmentNode'; +import { graduateScholarship } from '@/constants/segmentNode'; const path = getPath(graduateScholarship); diff --git a/app/[locale]/academics/graduate/scholarship/[id]/page.tsx b/app/[locale]/academics/graduate/scholarship/[id]/page.tsx index 9c6ed75bd..e1567b5ec 100644 --- a/app/[locale]/academics/graduate/scholarship/[id]/page.tsx +++ b/app/[locale]/academics/graduate/scholarship/[id]/page.tsx @@ -2,7 +2,7 @@ import { getScholarship } from '@/apis/v2/academics/scholarship/[id]'; import InvalidIDFallback from '@/components/common/InvalidIDFallback'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; -import { graduateScholarship } from '@/utils/segmentNode'; +import { graduateScholarship } from '@/constants/segmentNode'; import ScholarshipDetail from '../../../components/scholarship/ScholarshipDetail'; diff --git a/app/[locale]/academics/graduate/scholarship/create/page.tsx b/app/[locale]/academics/graduate/scholarship/create/page.tsx index ac7782456..d925cd211 100644 --- a/app/[locale]/academics/graduate/scholarship/create/page.tsx +++ b/app/[locale]/academics/graduate/scholarship/create/page.tsx @@ -8,7 +8,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_SCHOLARSHIP } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { graduateScholarship } from '@/utils/segmentNode'; +import { graduateScholarship } from '@/constants/segmentNode'; const path = getPath(graduateScholarship); diff --git a/app/[locale]/academics/graduate/scholarship/edit/page.tsx b/app/[locale]/academics/graduate/scholarship/edit/page.tsx index 1225c0f95..0b6c05e9b 100644 --- a/app/[locale]/academics/graduate/scholarship/edit/page.tsx +++ b/app/[locale]/academics/graduate/scholarship/edit/page.tsx @@ -6,7 +6,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_SCHOLARSHIP } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { graduateScholarship } from '@/utils/segmentNode'; +import { graduateScholarship } from '@/constants/segmentNode'; import { successToast } from '@/utils/toast'; import ScholarshipGuideEditor, { diff --git a/app/[locale]/academics/graduate/scholarship/page.tsx b/app/[locale]/academics/graduate/scholarship/page.tsx index a57afdde8..e329526b4 100644 --- a/app/[locale]/academics/graduate/scholarship/page.tsx +++ b/app/[locale]/academics/graduate/scholarship/page.tsx @@ -1,6 +1,6 @@ import { getScholarshipList } from '@/apis/v1/academics/scholarship'; import { getMetadata } from '@/utils/metadata'; -import { graduateScholarship } from '@/utils/segmentNode'; +import { graduateScholarship } from '@/constants/segmentNode'; import ScholarshipPreview from '../../components/scholarship/ScholarshipPreview'; diff --git a/app/[locale]/academics/page.tsx b/app/[locale]/academics/page.tsx index f8b4af25f..d8826ed0b 100644 --- a/app/[locale]/academics/page.tsx +++ b/app/[locale]/academics/page.tsx @@ -1,6 +1,6 @@ import MajorCategoryPageLayout from '@/components/layout/pageLayout/MajorCategoryPageLayout'; import { getMetadata } from '@/utils/metadata'; -import { academics } from '@/utils/segmentNode'; +import { academics } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }> }) { const params = await props.params; diff --git a/app/[locale]/academics/undergraduate/course-changes/create/page.tsx b/app/[locale]/academics/undergraduate/course-changes/create/page.tsx index def7b9924..9c4289891 100644 --- a/app/[locale]/academics/undergraduate/course-changes/create/page.tsx +++ b/app/[locale]/academics/undergraduate/course-changes/create/page.tsx @@ -2,7 +2,7 @@ import { postAcademicsByPostType } from '@/apis/v1/academics/[studentType]/[post import TimelineEditor from '@/app/[locale]/academics/components/timeline/TimelineEditor'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { getPath } from '@/utils/page'; -import { undergraduateCourseChanges } from '@/utils/segmentNode'; +import { undergraduateCourseChanges } from '@/constants/segmentNode'; const courseChangesPath = getPath(undergraduateCourseChanges); diff --git a/app/[locale]/academics/undergraduate/course-changes/edit/page.tsx b/app/[locale]/academics/undergraduate/course-changes/edit/page.tsx index 3547c53bd..5f3e91e54 100644 --- a/app/[locale]/academics/undergraduate/course-changes/edit/page.tsx +++ b/app/[locale]/academics/undergraduate/course-changes/edit/page.tsx @@ -9,7 +9,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_COURSE_CHANGES } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { undergraduateCourseChanges } from '@/utils/segmentNode'; +import { undergraduateCourseChanges } from '@/constants/segmentNode'; import { decodeFormDataFileName } from '@/utils/string'; const courseChangePath = getPath(undergraduateCourseChanges); diff --git a/app/[locale]/academics/undergraduate/course-changes/page.tsx b/app/[locale]/academics/undergraduate/course-changes/page.tsx index 07f196c9f..0480102bc 100644 --- a/app/[locale]/academics/undergraduate/course-changes/page.tsx +++ b/app/[locale]/academics/undergraduate/course-changes/page.tsx @@ -6,7 +6,7 @@ import TimelineViewer from '@/app/[locale]/academics/components/timeline/Timelin import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_COURSE_CHANGES } from '@/constants/network'; import { getMetadata } from '@/utils/metadata'; -import { undergraduateCourseChanges } from '@/utils/segmentNode'; +import { undergraduateCourseChanges } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }> }) { const params = await props.params; diff --git a/app/[locale]/academics/undergraduate/courses/page.tsx b/app/[locale]/academics/undergraduate/courses/page.tsx index 69c5c27f8..135fed552 100644 --- a/app/[locale]/academics/undergraduate/courses/page.tsx +++ b/app/[locale]/academics/undergraduate/courses/page.tsx @@ -3,7 +3,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { Course } from '@/types/academics'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; -import { undergraduateCourses } from '@/utils/segmentNode'; +import { undergraduateCourses } from '@/constants/segmentNode'; import UndergraduateCoursePageContent from './UndergraduateCoursePageContent'; diff --git a/app/[locale]/academics/undergraduate/curriculum/create/page.tsx b/app/[locale]/academics/undergraduate/curriculum/create/page.tsx index 0b3ca8d20..2bd54a626 100644 --- a/app/[locale]/academics/undergraduate/curriculum/create/page.tsx +++ b/app/[locale]/academics/undergraduate/curriculum/create/page.tsx @@ -5,7 +5,7 @@ import TimelineEditor from '@/app/[locale]/academics/components/timeline/Timelin import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_CURRICULUM } from '@/constants/network'; import { getPath } from '@/utils/page'; -import { curriculum } from '@/utils/segmentNode'; +import { curriculum } from '@/constants/segmentNode'; import { decodeFormDataFileName } from '@/utils/string'; const curriculumPath = getPath(curriculum); diff --git a/app/[locale]/academics/undergraduate/curriculum/edit/CurriculumEditPageContent.tsx b/app/[locale]/academics/undergraduate/curriculum/edit/CurriculumEditPageContent.tsx index fbebff792..f3c2604f3 100644 --- a/app/[locale]/academics/undergraduate/curriculum/edit/CurriculumEditPageContent.tsx +++ b/app/[locale]/academics/undergraduate/curriculum/edit/CurriculumEditPageContent.tsx @@ -8,7 +8,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_CURRICULUM } from '@/constants/network'; import { Curriculum } from '@/types/academics'; import { getPath } from '@/utils/page'; -import { curriculum } from '@/utils/segmentNode'; +import { curriculum } from '@/constants/segmentNode'; const curriculumPath = getPath(curriculum); diff --git a/app/[locale]/academics/undergraduate/curriculum/page.tsx b/app/[locale]/academics/undergraduate/curriculum/page.tsx index 48e28d81b..da38769b1 100644 --- a/app/[locale]/academics/undergraduate/curriculum/page.tsx +++ b/app/[locale]/academics/undergraduate/curriculum/page.tsx @@ -2,7 +2,7 @@ import './style.css'; import { getCurriculum } from '@/apis/v1/academics/undergraduate/curriculum'; import { getMetadata } from '@/utils/metadata'; -import { curriculum } from '@/utils/segmentNode'; +import { curriculum } from '@/constants/segmentNode'; import CurriculumPageContent from './CurriculumPageContent'; diff --git a/app/[locale]/academics/undergraduate/degree-requirements/edit/DegreeRequirementsEditor.tsx b/app/[locale]/academics/undergraduate/degree-requirements/edit/DegreeRequirementsEditor.tsx index 9d0eb5b6f..7a6a9d1ec 100644 --- a/app/[locale]/academics/undergraduate/degree-requirements/edit/DegreeRequirementsEditor.tsx +++ b/app/[locale]/academics/undergraduate/degree-requirements/edit/DegreeRequirementsEditor.tsx @@ -3,7 +3,7 @@ import { FormProvider, useForm } from 'react-hook-form'; import Fieldset from '@/components/form/Fieldset'; -import { isUploadedFile, PostEditorFile } from '@/components/form/types'; +import { isUploadedFile, EditorFile } from '@/components/form/types'; import Form from '@/components/form/Form'; import HTMLEditor from '@/components/form/html/HTMLEditor'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; @@ -11,7 +11,7 @@ import { useRouter } from '@/i18n/routing'; import { errorToStr } from '@/utils/error'; import { contentToFormData, getAttachmentDeleteIds } from '@/utils/formData'; import { getPath } from '@/utils/page'; -import { degree } from '@/utils/segmentNode'; +import { degree } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast } from '@/utils/toast'; @@ -19,7 +19,7 @@ const degreeRequirementsPath = getPath(degree); export type DegreeRequirementsFormData = { description: string; - files: PostEditorFile[]; + files: EditorFile[]; }; export default function DegreeRequirementsEditor({ diff --git a/app/[locale]/academics/undergraduate/degree-requirements/edit/page.tsx b/app/[locale]/academics/undergraduate/degree-requirements/edit/page.tsx index 66e05d208..5bc5b8536 100644 --- a/app/[locale]/academics/undergraduate/degree-requirements/edit/page.tsx +++ b/app/[locale]/academics/undergraduate/degree-requirements/edit/page.tsx @@ -7,7 +7,7 @@ import { import { FETCH_TAG_DEGREE } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { degree } from '@/utils/segmentNode'; +import { degree } from '@/constants/segmentNode'; import { decodeFormDataFileName } from '@/utils/string'; import DegreeRequirementsEditor from './DegreeRequirementsEditor'; diff --git a/app/[locale]/academics/undergraduate/degree-requirements/page.tsx b/app/[locale]/academics/undergraduate/degree-requirements/page.tsx index c37e7149d..f14d2b02d 100644 --- a/app/[locale]/academics/undergraduate/degree-requirements/page.tsx +++ b/app/[locale]/academics/undergraduate/degree-requirements/page.tsx @@ -8,7 +8,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { Link } from '@/i18n/routing'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { degree } from '@/utils/segmentNode'; +import { degree } from '@/constants/segmentNode'; const degreeRequirementsPath = getPath(degree); diff --git a/app/[locale]/academics/undergraduate/general-studies-requirements/create/page.tsx b/app/[locale]/academics/undergraduate/general-studies-requirements/create/page.tsx index 3b28bd070..83a992ad9 100644 --- a/app/[locale]/academics/undergraduate/general-studies-requirements/create/page.tsx +++ b/app/[locale]/academics/undergraduate/general-studies-requirements/create/page.tsx @@ -2,7 +2,7 @@ import { postAcademicsByPostType } from '@/apis/v1/academics/[studentType]/[post import TimelineEditor from '@/app/[locale]/academics/components/timeline/TimelineEditor'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { getPath } from '@/utils/page'; -import { curriculum } from '@/utils/segmentNode'; +import { curriculum } from '@/constants/segmentNode'; import { decodeFormDataFileName } from '@/utils/string'; const curriculumPath = getPath(curriculum); diff --git a/app/[locale]/academics/undergraduate/general-studies-requirements/edit/GeneralStudiesEditPageContent.tsx b/app/[locale]/academics/undergraduate/general-studies-requirements/edit/GeneralStudiesEditPageContent.tsx index 800567ed3..3a6840b2d 100644 --- a/app/[locale]/academics/undergraduate/general-studies-requirements/edit/GeneralStudiesEditPageContent.tsx +++ b/app/[locale]/academics/undergraduate/general-studies-requirements/edit/GeneralStudiesEditPageContent.tsx @@ -5,7 +5,7 @@ import TimelineEditor, { import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { GeneralStudiesRequirement } from '@/types/academics'; import { getPath } from '@/utils/page'; -import { curriculum } from '@/utils/segmentNode'; +import { curriculum } from '@/constants/segmentNode'; const curriculumPath = getPath(curriculum); diff --git a/app/[locale]/academics/undergraduate/general-studies-requirements/page.tsx b/app/[locale]/academics/undergraduate/general-studies-requirements/page.tsx index 672296286..31d902056 100644 --- a/app/[locale]/academics/undergraduate/general-studies-requirements/page.tsx +++ b/app/[locale]/academics/undergraduate/general-studies-requirements/page.tsx @@ -1,6 +1,6 @@ import { getGeneralStudies } from '@/apis/v1/academics/undergraduate/general-studies-requirements'; import { getMetadata } from '@/utils/metadata'; -import { generalStudies } from '@/utils/segmentNode'; +import { generalStudies } from '@/constants/segmentNode'; import GeneralStudiesPageContent from './GeneralStudiesPageContent'; diff --git a/app/[locale]/academics/undergraduate/guide/edit/page.tsx b/app/[locale]/academics/undergraduate/guide/edit/page.tsx index 39f28e300..831e72f35 100644 --- a/app/[locale]/academics/undergraduate/guide/edit/page.tsx +++ b/app/[locale]/academics/undergraduate/guide/edit/page.tsx @@ -6,7 +6,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_GUIDE } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { undergraduateGuide } from '@/utils/segmentNode'; +import { undergraduateGuide } from '@/constants/segmentNode'; import { decodeFormDataFileName } from '@/utils/string'; const path = getPath(undergraduateGuide); diff --git a/app/[locale]/academics/undergraduate/guide/page.tsx b/app/[locale]/academics/undergraduate/guide/page.tsx index 02b86411f..37aa250e3 100644 --- a/app/[locale]/academics/undergraduate/guide/page.tsx +++ b/app/[locale]/academics/undergraduate/guide/page.tsx @@ -1,7 +1,7 @@ import { getAcademicsGuide } from '@/apis/v1/academics/[studentType]/guide'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { undergraduateGuide } from '@/utils/segmentNode'; +import { undergraduateGuide } from '@/constants/segmentNode'; import GuidePageContent from '../../components/guide/GuidePageContent'; diff --git a/app/[locale]/academics/undergraduate/scholarship/[id]/edit/page.tsx b/app/[locale]/academics/undergraduate/scholarship/[id]/edit/page.tsx index 784705e02..5cf314fb5 100644 --- a/app/[locale]/academics/undergraduate/scholarship/[id]/edit/page.tsx +++ b/app/[locale]/academics/undergraduate/scholarship/[id]/edit/page.tsx @@ -10,7 +10,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_SCHOLARSHIP } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { undergraduateScholarship } from '@/utils/segmentNode'; +import { undergraduateScholarship } from '@/constants/segmentNode'; const path = getPath(undergraduateScholarship); diff --git a/app/[locale]/academics/undergraduate/scholarship/[id]/page.tsx b/app/[locale]/academics/undergraduate/scholarship/[id]/page.tsx index 54cd12aa0..6dd69939c 100644 --- a/app/[locale]/academics/undergraduate/scholarship/[id]/page.tsx +++ b/app/[locale]/academics/undergraduate/scholarship/[id]/page.tsx @@ -2,7 +2,7 @@ import { getScholarship } from '@/apis/v2/academics/scholarship/[id]'; import InvalidIDFallback from '@/components/common/InvalidIDFallback'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; -import { undergraduateScholarship } from '@/utils/segmentNode'; +import { undergraduateScholarship } from '@/constants/segmentNode'; import ScholarshipDetail from '../../../components/scholarship/ScholarshipDetail'; diff --git a/app/[locale]/academics/undergraduate/scholarship/create/page.tsx b/app/[locale]/academics/undergraduate/scholarship/create/page.tsx index 92325b812..2d99aca7d 100644 --- a/app/[locale]/academics/undergraduate/scholarship/create/page.tsx +++ b/app/[locale]/academics/undergraduate/scholarship/create/page.tsx @@ -8,7 +8,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_SCHOLARSHIP } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { undergraduateScholarship } from '@/utils/segmentNode'; +import { undergraduateScholarship } from '@/constants/segmentNode'; const path = getPath(undergraduateScholarship); diff --git a/app/[locale]/academics/undergraduate/scholarship/edit/page.tsx b/app/[locale]/academics/undergraduate/scholarship/edit/page.tsx index 1661a1474..57342a035 100644 --- a/app/[locale]/academics/undergraduate/scholarship/edit/page.tsx +++ b/app/[locale]/academics/undergraduate/scholarship/edit/page.tsx @@ -6,7 +6,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { FETCH_TAG_SCHOLARSHIP } from '@/constants/network'; import { redirectKo } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { undergraduateScholarship } from '@/utils/segmentNode'; +import { undergraduateScholarship } from '@/constants/segmentNode'; import { successToast } from '@/utils/toast'; import ScholarshipGuideEditor, { diff --git a/app/[locale]/academics/undergraduate/scholarship/page.tsx b/app/[locale]/academics/undergraduate/scholarship/page.tsx index 2d1ae7091..d70b8f32f 100644 --- a/app/[locale]/academics/undergraduate/scholarship/page.tsx +++ b/app/[locale]/academics/undergraduate/scholarship/page.tsx @@ -1,6 +1,6 @@ import { getScholarshipList } from '@/apis/v1/academics/scholarship'; import { getMetadata } from '@/utils/metadata'; -import { undergraduateScholarship } from '@/utils/segmentNode'; +import { undergraduateScholarship } from '@/constants/segmentNode'; import ScholarshipPreview from '../../components/scholarship/ScholarshipPreview'; diff --git a/app/[locale]/admin/helper/important/ImportantListRow.tsx b/app/[locale]/admin/helper/important/ImportantListRow.tsx index dbf49838d..5b7e17f35 100644 --- a/app/[locale]/admin/helper/important/ImportantListRow.tsx +++ b/app/[locale]/admin/helper/important/ImportantListRow.tsx @@ -1,6 +1,6 @@ import { ImportantPostIdentifier, ImportantPreview } from '@/types/admin'; import { getPath } from '@/utils/page'; -import { news, notice, seminar } from '@/utils/segmentNode'; +import { news, notice, seminar } from '@/constants/segmentNode'; import { CategoryCell, CheckboxCell, DateCell, EditCell, IndexCell, TitleCell } from '../ListCell'; diff --git a/app/[locale]/admin/helper/slide/SlideListRow.tsx b/app/[locale]/admin/helper/slide/SlideListRow.tsx index 57b8a664d..31a3b7604 100644 --- a/app/[locale]/admin/helper/slide/SlideListRow.tsx +++ b/app/[locale]/admin/helper/slide/SlideListRow.tsx @@ -1,6 +1,6 @@ import { SlidePreview } from '@/types/admin'; import { getPath } from '@/utils/page'; -import { news } from '@/utils/segmentNode'; +import { news } from '@/constants/segmentNode'; import { CheckboxCell, DateCell, EditCell, IndexCell, TitleCell } from '../ListCell'; diff --git a/app/[locale]/admin/page.tsx b/app/[locale]/admin/page.tsx index 69d163f91..d3ccd96ea 100644 --- a/app/[locale]/admin/page.tsx +++ b/app/[locale]/admin/page.tsx @@ -7,7 +7,7 @@ import SelectionList from '@/components/common/selection/SelectionList'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { ADMIN_MENU_IMPORTANT, ADMIN_MENU_SLIDE } from '@/types/admin'; import { getPath } from '@/utils/page'; -import { admin } from '@/utils/segmentNode'; +import { admin } from '@/constants/segmentNode'; import { replaceDashWithSpace } from '@/utils/string'; interface AdminPageProps { diff --git a/app/[locale]/admissions/graduate/regular-admission/page.tsx b/app/[locale]/admissions/graduate/regular-admission/page.tsx index 2849a0ef2..e45ae1bc4 100644 --- a/app/[locale]/admissions/graduate/regular-admission/page.tsx +++ b/app/[locale]/admissions/graduate/regular-admission/page.tsx @@ -4,7 +4,7 @@ import { getGraduateRegularAdmission } from '@/apis/v1/admissions/graduate/regul import HTMLViewer from '@/components/form/html/HTMLViewer'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { getMetadata } from '@/utils/metadata'; -import { graduateAdmission } from '@/utils/segmentNode'; +import { graduateAdmission } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }>; diff --git a/app/[locale]/admissions/international/exchange/page.tsx b/app/[locale]/admissions/international/exchange/page.tsx index b7c9f340c..c01af2095 100644 --- a/app/[locale]/admissions/international/exchange/page.tsx +++ b/app/[locale]/admissions/international/exchange/page.tsx @@ -4,7 +4,7 @@ import { getInternationalExchangeVisiting } from '@/apis/v1/admissions/internati import HTMLViewer from '@/components/form/html/HTMLViewer'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { getMetadata } from '@/utils/metadata'; -import { exchangeVisitingProgram } from '@/utils/segmentNode'; +import { exchangeVisitingProgram } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }>; diff --git a/app/[locale]/admissions/international/graduate/page.tsx b/app/[locale]/admissions/international/graduate/page.tsx index b3ba50080..921be7da9 100644 --- a/app/[locale]/admissions/international/graduate/page.tsx +++ b/app/[locale]/admissions/international/graduate/page.tsx @@ -4,7 +4,7 @@ import { getInternationalgraduate } from '@/apis/v1/admissions/international/gra import HTMLViewer from '@/components/form/html/HTMLViewer'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { getMetadata } from '@/utils/metadata'; -import { internationalGraduateAdmission } from '@/utils/segmentNode'; +import { internationalGraduateAdmission } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }>; diff --git a/app/[locale]/admissions/international/scholarships/page.tsx b/app/[locale]/admissions/international/scholarships/page.tsx index ba80eb275..e0a8593a1 100644 --- a/app/[locale]/admissions/international/scholarships/page.tsx +++ b/app/[locale]/admissions/international/scholarships/page.tsx @@ -4,7 +4,7 @@ import { getInternationalScholarships } from '@/apis/v1/admissions/international import HTMLViewer from '@/components/form/html/HTMLViewer'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { getMetadata } from '@/utils/metadata'; -import { internationalScholarships } from '@/utils/segmentNode'; +import { internationalScholarships } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }>; diff --git a/app/[locale]/admissions/international/undergraduate/page.tsx b/app/[locale]/admissions/international/undergraduate/page.tsx index 24878e9a1..846d0be05 100644 --- a/app/[locale]/admissions/international/undergraduate/page.tsx +++ b/app/[locale]/admissions/international/undergraduate/page.tsx @@ -4,7 +4,7 @@ import { getInternationalUndergraduate } from '@/apis/v1/admissions/internationa import HTMLViewer from '@/components/form/html/HTMLViewer'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { getMetadata } from '@/utils/metadata'; -import { internationalUndergraduateAdmission } from '@/utils/segmentNode'; +import { internationalUndergraduateAdmission } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }>; diff --git a/app/[locale]/admissions/page.tsx b/app/[locale]/admissions/page.tsx index ed8fa1417..8c04f4cfa 100644 --- a/app/[locale]/admissions/page.tsx +++ b/app/[locale]/admissions/page.tsx @@ -2,7 +2,7 @@ import { Metadata } from 'next'; import MajorCategoryPageLayout from '@/components/layout/pageLayout/MajorCategoryPageLayout'; import { getMetadata } from '@/utils/metadata'; -import { admissions } from '@/utils/segmentNode'; +import { admissions } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }>; diff --git a/app/[locale]/admissions/undergraduate/early-admission/page.tsx b/app/[locale]/admissions/undergraduate/early-admission/page.tsx index a9cf13c99..26611cf66 100644 --- a/app/[locale]/admissions/undergraduate/early-admission/page.tsx +++ b/app/[locale]/admissions/undergraduate/early-admission/page.tsx @@ -4,7 +4,7 @@ import { getUndergraduateEarlyAdmission } from '@/apis/v1/admissions/undergradua import HTMLViewer from '@/components/form/html/HTMLViewer'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { getMetadata } from '@/utils/metadata'; -import { undergraduateEarlyAdmission } from '@/utils/segmentNode'; +import { undergraduateEarlyAdmission } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }>; diff --git a/app/[locale]/admissions/undergraduate/regular-admission/page.tsx b/app/[locale]/admissions/undergraduate/regular-admission/page.tsx index 8663ec701..bec417c40 100644 --- a/app/[locale]/admissions/undergraduate/regular-admission/page.tsx +++ b/app/[locale]/admissions/undergraduate/regular-admission/page.tsx @@ -4,7 +4,7 @@ import { getUndergraduateRegularAdmission } from '@/apis/v1/admissions/undergrad import HTMLViewer from '@/components/form/html/HTMLViewer'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { getMetadata } from '@/utils/metadata'; -import { undergraduateRegularAdmission } from '@/utils/segmentNode'; +import { undergraduateRegularAdmission } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }>; diff --git a/app/[locale]/community/faculty-recruitment/edit/FacultyRecruitmentEditPageContent.tsx b/app/[locale]/community/faculty-recruitment/edit/FacultyRecruitmentEditPageContent.tsx index 54237c063..2302c0a45 100644 --- a/app/[locale]/community/faculty-recruitment/edit/FacultyRecruitmentEditPageContent.tsx +++ b/app/[locale]/community/faculty-recruitment/edit/FacultyRecruitmentEditPageContent.tsx @@ -5,14 +5,14 @@ import { FormProvider, useForm } from 'react-hook-form'; import { putFacultyRecruitmentAction } from '@/actions/recruitment'; import Fieldset from '@/components/form/Fieldset'; import Form from '@/components/form/Form'; -import { PostEditorImage } from '@/components/form/types'; +import { EditorImage } from '@/components/form/types'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { useRouter } from '@/i18n/routing'; import { GETFacultyRecruitmentResponse } from '@/types/post'; import { errorToStr } from '@/utils/error'; import { contentToFormData } from '@/utils/formData'; import { getPath } from '@/utils/page'; -import { facultyRecruitment } from '@/utils/segmentNode'; +import { facultyRecruitment } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast, successToast } from '@/utils/toast'; @@ -23,7 +23,7 @@ interface Props { interface FormData { title: string; description: string; - image: PostEditorImage | null; + image: EditorImage | null; } const recruitPath = getPath(facultyRecruitment); diff --git a/app/[locale]/community/faculty-recruitment/page.tsx b/app/[locale]/community/faculty-recruitment/page.tsx index 79aba8d62..26a34b1a1 100644 --- a/app/[locale]/community/faculty-recruitment/page.tsx +++ b/app/[locale]/community/faculty-recruitment/page.tsx @@ -6,7 +6,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { facultyRecruitment } from '@/utils/segmentNode'; +import { facultyRecruitment } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: Language }> }) { const params = await props.params; diff --git a/app/[locale]/community/news/[id]/NewsViewer.tsx b/app/[locale]/community/news/[id]/NewsViewer.tsx index 720d4c378..26753665e 100644 --- a/app/[locale]/community/news/[id]/NewsViewer.tsx +++ b/app/[locale]/community/news/[id]/NewsViewer.tsx @@ -10,7 +10,7 @@ import { PAGE_PADDING_BOTTOM_PX } from '@/components/layout/pageLayout/PageLayou import { News } from '@/types/news'; import { formatNewsPostDateStr } from '@/utils/date'; import { getPath } from '@/utils/page'; -import { news } from '@/utils/segmentNode'; +import { news } from '@/constants/segmentNode'; interface NewsPostPageProps { news: News; diff --git a/app/[locale]/community/news/[id]/edit/EditNewsPageContent.tsx b/app/[locale]/community/news/[id]/edit/EditNewsPageContent.tsx index 0dd41c2ee..588ded847 100644 --- a/app/[locale]/community/news/[id]/edit/EditNewsPageContent.tsx +++ b/app/[locale]/community/news/[id]/edit/EditNewsPageContent.tsx @@ -7,7 +7,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { useRouter } from '@/i18n/routing'; import { News } from '@/types/news'; import { getPath } from '@/utils/page'; -import { news } from '@/utils/segmentNode'; +import { news } from '@/constants/segmentNode'; import { encodeFormDataFileName } from '@/utils/string'; const newsPath = getPath(news); diff --git a/app/[locale]/community/news/[id]/page.tsx b/app/[locale]/community/news/[id]/page.tsx index e2d03449d..e7cc08075 100644 --- a/app/[locale]/community/news/[id]/page.tsx +++ b/app/[locale]/community/news/[id]/page.tsx @@ -6,7 +6,7 @@ import PostFallback from '@/app/[locale]/community/components/PostFallback'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { PostSearchQueryParams } from '@/types/post'; import { getMetadata } from '@/utils/metadata'; -import { news } from '@/utils/segmentNode'; +import { news } from '@/constants/segmentNode'; import NewsViewer from './NewsViewer'; diff --git a/app/[locale]/community/news/components/NewsEditor.tsx b/app/[locale]/community/news/components/NewsEditor.tsx index 1f74794fe..044efea66 100644 --- a/app/[locale]/community/news/components/NewsEditor.tsx +++ b/app/[locale]/community/news/components/NewsEditor.tsx @@ -1,7 +1,7 @@ import { FormProvider, useForm } from 'react-hook-form'; import Fieldset from '@/components/form/Fieldset'; -import { PostEditorFile, PostEditorImage } from '@/components/form/types'; +import { EditorFile, EditorImage } from '@/components/form/types'; import Form from '@/components/form/Form'; import HTMLEditor from '@/components/form/html/HTMLEditor'; import { NEWS_TAGS } from '@/constants/tag'; @@ -11,8 +11,8 @@ export interface NewsFormData { titleForMain: string; description: string; date: Date; - image: PostEditorImage | null; - attachments: PostEditorFile[]; + image: EditorImage | null; + attachments: EditorFile[]; tags: string[]; isPrivate: boolean; isImportant: boolean; diff --git a/app/[locale]/community/news/components/NewsPageContent.tsx b/app/[locale]/community/news/components/NewsPageContent.tsx index 14e602084..38c40965f 100644 --- a/app/[locale]/community/news/components/NewsPageContent.tsx +++ b/app/[locale]/community/news/components/NewsPageContent.tsx @@ -7,7 +7,7 @@ import { NEWS_TAGS } from '@/constants/tag'; import { Link } from '@/i18n/routing'; import { NewsPreviewList } from '@/types/news'; import { getPath } from '@/utils/page'; -import { news } from '@/utils/segmentNode'; +import { news } from '@/constants/segmentNode'; const POST_LIMIT = 10; const newsPath = getPath(news); diff --git a/app/[locale]/community/news/components/NewsRow.tsx b/app/[locale]/community/news/components/NewsRow.tsx index fcb986fb4..786aff16e 100644 --- a/app/[locale]/community/news/components/NewsRow.tsx +++ b/app/[locale]/community/news/components/NewsRow.tsx @@ -2,7 +2,7 @@ import PaginatedLink from '@/app/[locale]/community/components/PaginatedLink'; import ImageWithFallback from '@/components/common/ImageWithFallback'; import Tags from '@/components/common/Tags'; import { getPath } from '@/utils/page'; -import { news } from '@/utils/segmentNode'; +import { news } from '@/constants/segmentNode'; export interface NewsRowProps { href: string; diff --git a/app/[locale]/community/news/create/page.tsx b/app/[locale]/community/news/create/page.tsx index 1233fa1c5..b17768c27 100644 --- a/app/[locale]/community/news/create/page.tsx +++ b/app/[locale]/community/news/create/page.tsx @@ -6,7 +6,7 @@ import { isLocalFile, isLocalImage } from '@/components/form/types'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { useRouter } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { news } from '@/utils/segmentNode'; +import { news } from '@/constants/segmentNode'; import { encodeFormDataFileName } from '@/utils/string'; const newsPath = getPath(news); diff --git a/app/[locale]/community/news/page.tsx b/app/[locale]/community/news/page.tsx index 77ed184ad..dbfb24510 100644 --- a/app/[locale]/community/news/page.tsx +++ b/app/[locale]/community/news/page.tsx @@ -9,7 +9,7 @@ import NewsPageContent from '@/app/[locale]/community/news/components/NewsPageCo import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { PostSearchQueryParams } from '@/types/post'; import { getMetadata } from '@/utils/metadata'; -import { news } from '@/utils/segmentNode'; +import { news } from '@/constants/segmentNode'; import { validatePageNum, validateTag } from '@/utils/validateSearchParams'; export async function generateMetadata(props: { params: Promise<{ locale: string }> }) { diff --git a/app/[locale]/community/notice/[id]/NoticeViewer.tsx b/app/[locale]/community/notice/[id]/NoticeViewer.tsx index 3c4d0cad3..b319018c7 100644 --- a/app/[locale]/community/notice/[id]/NoticeViewer.tsx +++ b/app/[locale]/community/notice/[id]/NoticeViewer.tsx @@ -9,7 +9,7 @@ import { PAGE_PADDING_BOTTOM_PX } from '@/components/layout/pageLayout/PageLayou import { Notice } from '@/types/notice'; import { formatPostDateStr } from '@/utils/date'; import { getPath } from '@/utils/page'; -import { notice } from '@/utils/segmentNode'; +import { notice } from '@/constants/segmentNode'; interface NoticePostPageProps { notice: Notice; diff --git a/app/[locale]/community/notice/[id]/edit/EditNoticePageContent.tsx b/app/[locale]/community/notice/[id]/edit/EditNoticePageContent.tsx index 143846ec9..f1ec091dc 100644 --- a/app/[locale]/community/notice/[id]/edit/EditNoticePageContent.tsx +++ b/app/[locale]/community/notice/[id]/edit/EditNoticePageContent.tsx @@ -11,7 +11,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { useRouter } from '@/i18n/routing'; import { Notice } from '@/types/notice'; import { getPath } from '@/utils/page'; -import { notice } from '@/utils/segmentNode'; +import { notice } from '@/constants/segmentNode'; import { encodeFormDataFileName } from '@/utils/string'; import { errorToast, successToast } from '@/utils/toast'; diff --git a/app/[locale]/community/notice/[id]/page.tsx b/app/[locale]/community/notice/[id]/page.tsx index 9527f0aee..de4891f93 100644 --- a/app/[locale]/community/notice/[id]/page.tsx +++ b/app/[locale]/community/notice/[id]/page.tsx @@ -6,7 +6,7 @@ import PostFallback from '@/app/[locale]/community/components/PostFallback'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { PostSearchQueryParams } from '@/types/post'; import { getMetadata } from '@/utils/metadata'; -import { notice } from '@/utils/segmentNode'; +import { notice } from '@/constants/segmentNode'; import NoticeViewer from './NoticeViewer'; diff --git a/app/[locale]/community/notice/components/EditButtons.tsx b/app/[locale]/community/notice/components/EditButtons.tsx index 5d8a17a75..26ce85aa5 100644 --- a/app/[locale]/community/notice/components/EditButtons.tsx +++ b/app/[locale]/community/notice/components/EditButtons.tsx @@ -1,6 +1,6 @@ import { Link } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { notice } from '@/utils/segmentNode'; +import { notice } from '@/constants/segmentNode'; const noticePath = getPath(notice); diff --git a/app/[locale]/community/notice/components/NoticeEditor.tsx b/app/[locale]/community/notice/components/NoticeEditor.tsx index b2e8fa437..1a0590175 100644 --- a/app/[locale]/community/notice/components/NoticeEditor.tsx +++ b/app/[locale]/community/notice/components/NoticeEditor.tsx @@ -1,7 +1,7 @@ import { FormProvider, useForm } from 'react-hook-form'; import Fieldset from '@/components/form/Fieldset'; -import { PostEditorFile } from '@/components/form/types'; +import { EditorFile } from '@/components/form/types'; import Form from '@/components/form/Form'; import HTMLEditor from '@/components/form/html/HTMLEditor'; import { NOTICE_TAGS } from '@/constants/tag'; @@ -10,7 +10,7 @@ export interface NoticeFormData { title: string; titleForMain: string; description: string; - attachments: PostEditorFile[]; + attachments: EditorFile[]; tags: string[]; isPrivate: boolean; isPinned: boolean; diff --git a/app/[locale]/community/notice/components/NoticeListRow.tsx b/app/[locale]/community/notice/components/NoticeListRow.tsx index 424d1f0dc..6a8cb8b02 100644 --- a/app/[locale]/community/notice/components/NoticeListRow.tsx +++ b/app/[locale]/community/notice/components/NoticeListRow.tsx @@ -5,7 +5,7 @@ import LockIcon from '@/public/image/lock_icon.svg'; import PinIcon from '@/public/image/pin_icon.svg'; import { NoticePreview } from '@/types/notice'; import { getPath } from '@/utils/page'; -import { notice } from '@/utils/segmentNode'; +import { notice } from '@/constants/segmentNode'; interface NoticeListRowProps { post: NoticePreview; diff --git a/app/[locale]/community/notice/create/page.tsx b/app/[locale]/community/notice/create/page.tsx index 6b34d383a..173401e72 100644 --- a/app/[locale]/community/notice/create/page.tsx +++ b/app/[locale]/community/notice/create/page.tsx @@ -8,7 +8,7 @@ import { isLocalFile } from '@/components/form/types'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { useRouter } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { notice } from '@/utils/segmentNode'; +import { notice } from '@/constants/segmentNode'; import { encodeFormDataFileName } from '@/utils/string'; const noticePath = getPath(notice); diff --git a/app/[locale]/community/notice/page.tsx b/app/[locale]/community/notice/page.tsx index 45e885c32..5cc2fef50 100644 --- a/app/[locale]/community/notice/page.tsx +++ b/app/[locale]/community/notice/page.tsx @@ -9,7 +9,7 @@ import NoticePageContent from '@/app/[locale]/community/notice/NoticePageContent import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { PostSearchQueryParams } from '@/types/post'; import { getMetadata } from '@/utils/metadata'; -import { notice } from '@/utils/segmentNode'; +import { notice } from '@/constants/segmentNode'; import { validatePageNum, validateTag } from '@/utils/validateSearchParams'; export async function generateMetadata(props: { params: Promise<{ locale: string }> }) { diff --git a/app/[locale]/community/page.tsx b/app/[locale]/community/page.tsx index a9403160f..fc85caa98 100644 --- a/app/[locale]/community/page.tsx +++ b/app/[locale]/community/page.tsx @@ -1,6 +1,6 @@ import MajorCategoryPageLayout from '@/components/layout/pageLayout/MajorCategoryPageLayout'; import { getMetadata } from '@/utils/metadata'; -import { community } from '@/utils/segmentNode'; +import { community } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }> }) { const params = await props.params; diff --git a/app/[locale]/community/seminar/[id]/edit/EditSeminarPageContent.tsx b/app/[locale]/community/seminar/[id]/edit/EditSeminarPageContent.tsx index 343518aea..d41a66867 100644 --- a/app/[locale]/community/seminar/[id]/edit/EditSeminarPageContent.tsx +++ b/app/[locale]/community/seminar/[id]/edit/EditSeminarPageContent.tsx @@ -9,7 +9,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { useRouter } from '@/i18n/routing'; import { Seminar } from '@/types/seminar'; import { getPath } from '@/utils/page'; -import { seminar } from '@/utils/segmentNode'; +import { seminar } from '@/constants/segmentNode'; import { encodeFormDataFileName } from '@/utils/string'; import { errorToast } from '@/utils/toast'; diff --git a/app/[locale]/community/seminar/[id]/page.tsx b/app/[locale]/community/seminar/[id]/page.tsx index 631e7e1e0..05754d4cf 100644 --- a/app/[locale]/community/seminar/[id]/page.tsx +++ b/app/[locale]/community/seminar/[id]/page.tsx @@ -6,7 +6,7 @@ import PostFallback from '@/app/[locale]/community/components/PostFallback'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { PostSearchQueryParams } from '@/types/post'; import { getMetadata } from '@/utils/metadata'; -import { seminar } from '@/utils/segmentNode'; +import { seminar } from '@/constants/segmentNode'; import SeminarViewer from './SeminarViewer'; diff --git a/app/[locale]/community/seminar/components/AdminFeatures.tsx b/app/[locale]/community/seminar/components/AdminFeatures.tsx index 50e7b8a3d..ff52d7f72 100644 --- a/app/[locale]/community/seminar/components/AdminFeatures.tsx +++ b/app/[locale]/community/seminar/components/AdminFeatures.tsx @@ -1,6 +1,6 @@ import { Link } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { seminar } from '@/utils/segmentNode'; +import { seminar } from '@/constants/segmentNode'; const seminarPath = getPath(seminar); diff --git a/app/[locale]/community/seminar/components/SeminarEditor.tsx b/app/[locale]/community/seminar/components/SeminarEditor.tsx index 2c5fb3b32..7e4bd6c22 100644 --- a/app/[locale]/community/seminar/components/SeminarEditor.tsx +++ b/app/[locale]/community/seminar/components/SeminarEditor.tsx @@ -3,7 +3,7 @@ import { FormProvider, useForm, useFormContext, useWatch } from 'react-hook-form'; import Fieldset from '@/components/form/Fieldset'; -import { PostEditorFile, PostEditorImage } from '@/components/form/types'; +import { EditorFile, EditorImage } from '@/components/form/types'; import Form from '@/components/form/Form'; import HTMLEditor from '@/components/form/html/HTMLEditor'; @@ -22,9 +22,9 @@ export interface SeminarFormData { affiliation: string; affiliationURL: string; introduction: string; - image: PostEditorImage | null; + image: EditorImage | null; - attachments: PostEditorFile[]; + attachments: EditorFile[]; isPrivate: boolean; isImportant: boolean; diff --git a/app/[locale]/community/seminar/components/SeminarRow.tsx b/app/[locale]/community/seminar/components/SeminarRow.tsx index b5e5c489f..8af394606 100644 --- a/app/[locale]/community/seminar/components/SeminarRow.tsx +++ b/app/[locale]/community/seminar/components/SeminarRow.tsx @@ -8,7 +8,7 @@ import Person from '@/public/image/person.svg'; import { SeminarPreview } from '@/types/seminar'; import { formatSeminarDateStr } from '@/utils/date'; import { getPath } from '@/utils/page'; -import { seminar } from '@/utils/segmentNode'; +import { seminar } from '@/constants/segmentNode'; export interface SeminarRowProps { seminar: SeminarPreview; diff --git a/app/[locale]/community/seminar/create/page.tsx b/app/[locale]/community/seminar/create/page.tsx index c993ce110..25cfc0ae2 100644 --- a/app/[locale]/community/seminar/create/page.tsx +++ b/app/[locale]/community/seminar/create/page.tsx @@ -8,7 +8,7 @@ import { isLocalFile, isLocalImage } from '@/components/form/types'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { useRouter } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { seminar } from '@/utils/segmentNode'; +import { seminar } from '@/constants/segmentNode'; import { encodeFormDataFileName } from '@/utils/string'; const seminarPath = getPath(seminar); diff --git a/app/[locale]/community/seminar/page.tsx b/app/[locale]/community/seminar/page.tsx index b8076139c..81e4ba730 100644 --- a/app/[locale]/community/seminar/page.tsx +++ b/app/[locale]/community/seminar/page.tsx @@ -9,7 +9,7 @@ import LoginVisible from '@/components/common/LoginVisible'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { PostSearchQueryParams } from '@/types/post'; import { getMetadata } from '@/utils/metadata'; -import { seminar } from '@/utils/segmentNode'; +import { seminar } from '@/constants/segmentNode'; import { validatePageNum } from '@/utils/validateSearchParams'; import AdminFeatures from './components/AdminFeatures'; diff --git a/app/[locale]/components/NewsSection.tsx b/app/[locale]/components/NewsSection.tsx index 47df124ea..b98873bdf 100644 --- a/app/[locale]/components/NewsSection.tsx +++ b/app/[locale]/components/NewsSection.tsx @@ -7,7 +7,7 @@ import SmallRightArrow from '@/public/image/main/small_right_arrow.svg'; import { MainNews } from '@/types/main'; import useResponsive from '@/utils/hooks/useResponsive'; import { getPath } from '@/utils/page'; -import { news } from '@/utils/segmentNode'; +import { news } from '@/constants/segmentNode'; import NewsCarousel from './NewsCarousel'; import NewsCarouselMobile from './NewsCarouselMobile'; diff --git a/app/[locale]/components/NoticeSection.tsx b/app/[locale]/components/NoticeSection.tsx index 94135e528..db79c7a40 100644 --- a/app/[locale]/components/NoticeSection.tsx +++ b/app/[locale]/components/NoticeSection.tsx @@ -10,7 +10,7 @@ import { AllMainNotice } from '@/types/main'; import { formatMainNoticeDateStr } from '@/utils/date'; import useResponsive from '@/utils/hooks/useResponsive'; import { getPath } from '@/utils/page'; -import { notice } from '@/utils/segmentNode'; +import { notice } from '@/constants/segmentNode'; export default function NoticeSection({ allMainNotice }: { allMainNotice: AllMainNotice }) { const [tag, setTag] = useState('all'); diff --git a/app/[locale]/components/useCarousel.ts b/app/[locale]/components/useCarousel.ts index 5ff74d35d..b6d0c3fb1 100644 --- a/app/[locale]/components/useCarousel.ts +++ b/app/[locale]/components/useCarousel.ts @@ -8,7 +8,7 @@ import { useCarouselLayout } from './useCarouselLayout'; export default function useCarousel(news: MainNews[]) { const [page, _setPage] = useState(0); // TODO: 타입 이게 맞나? - const [intervalID, setIntervalID] = useState(null); + const [intervalID, setIntervalID] = useState(null); const { cardCnt, widthREM } = useCarouselLayout(); const pageCnt = Math.ceil(news.length / cardCnt); const offsetREM = widthREM * page; @@ -24,7 +24,7 @@ export default function useCarousel(news: MainNews[]) { const startScroll = useCallback(() => { setIntervalID( - setInterval(() => { + window.setInterval(() => { _setPage((x) => (x + 1) % pageCnt); }, AUTO_SCROLL_MS), ); diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx index 7e1889dd2..17078e5ec 100644 --- a/app/[locale]/layout.tsx +++ b/app/[locale]/layout.tsx @@ -99,7 +99,7 @@ function BuildVersion() { if (!buildVersion) return; return ( -
+

Beta Version: {buildVersion}

}) { const params = await props.params; diff --git a/app/[locale]/people/staff/[id]/StaffMemberPageContent.tsx b/app/[locale]/people/staff/[id]/StaffMemberPageContent.tsx index cb1461cc3..0467ac392 100644 --- a/app/[locale]/people/staff/[id]/StaffMemberPageContent.tsx +++ b/app/[locale]/people/staff/[id]/StaffMemberPageContent.tsx @@ -11,7 +11,7 @@ import { WithLanguage } from '@/types/language'; import { Staff } from '@/types/people'; import { errorToStr } from '@/utils/error'; import { getPath } from '@/utils/page'; -import { staff } from '@/utils/segmentNode'; +import { staff } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast, successToast } from '@/utils/toast'; diff --git a/app/[locale]/people/staff/[id]/edit/StaffEditPageContent.tsx b/app/[locale]/people/staff/[id]/edit/StaffEditPageContent.tsx index b44d22b23..082145eff 100644 --- a/app/[locale]/people/staff/[id]/edit/StaffEditPageContent.tsx +++ b/app/[locale]/people/staff/[id]/edit/StaffEditPageContent.tsx @@ -11,7 +11,7 @@ import { Staff } from '@/types/people'; import { errorToStr } from '@/utils/error'; import { contentToFormData } from '@/utils/formData'; import { getPath } from '@/utils/page'; -import { staff } from '@/utils/segmentNode'; +import { staff } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast } from '@/utils/toast'; diff --git a/app/[locale]/people/staff/components/StaffEditor.tsx b/app/[locale]/people/staff/components/StaffEditor.tsx index 34dbe8172..cbb1046ae 100644 --- a/app/[locale]/people/staff/components/StaffEditor.tsx +++ b/app/[locale]/people/staff/components/StaffEditor.tsx @@ -5,7 +5,7 @@ import { FormProvider, useForm } from 'react-hook-form'; import Fieldset from '@/components/form/Fieldset'; import LanguagePicker from '@/components/form/LanguagePicker'; -import { PostEditorImage } from '@/components/form/types'; +import { EditorImage } from '@/components/form/types'; import Form from '@/components/form/Form'; import { Language, WithLanguage } from '@/types/language'; import useLanguage from '@/utils/hooks/useLanguage'; @@ -17,7 +17,7 @@ export type StaffEditorFormData = WithLanguage<{ phone: string; email: string; tasks: string[]; - image: PostEditorImage | null; + image: EditorImage | null; }>; interface StaffEditorProps { diff --git a/app/[locale]/people/staff/create/page.tsx b/app/[locale]/people/staff/create/page.tsx index e5b7799ae..2d5725abc 100644 --- a/app/[locale]/people/staff/create/page.tsx +++ b/app/[locale]/people/staff/create/page.tsx @@ -11,7 +11,7 @@ import { Language } from '@/types/language'; import { errorToStr } from '@/utils/error'; import { contentToFormData } from '@/utils/formData'; import { getPath } from '@/utils/page'; -import { staff } from '@/utils/segmentNode'; +import { staff } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast } from '@/utils/toast'; diff --git a/app/[locale]/people/staff/page.tsx b/app/[locale]/people/staff/page.tsx index 646b84589..390eea870 100644 --- a/app/[locale]/people/staff/page.tsx +++ b/app/[locale]/people/staff/page.tsx @@ -5,7 +5,7 @@ import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { staff } from '@/utils/segmentNode'; +import { staff } from '@/constants/segmentNode'; import { PeopleCellProps } from '../components/PeopleCell'; import PeopleGrid from '../components/PeopleGrid'; diff --git a/app/[locale]/research/centers/ResearchCenterDetails.tsx b/app/[locale]/research/centers/ResearchCenterDetails.tsx index b4efac3cc..01b6c5852 100644 --- a/app/[locale]/research/centers/ResearchCenterDetails.tsx +++ b/app/[locale]/research/centers/ResearchCenterDetails.tsx @@ -10,7 +10,7 @@ import { WithLanguage } from '@/types/language'; import { ResearchCenter } from '@/types/research'; import { errorToStr } from '@/utils/error'; import { getPath } from '@/utils/page'; -import { researchCenters } from '@/utils/segmentNode'; +import { researchCenters } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast, successToast } from '@/utils/toast'; diff --git a/app/[locale]/research/centers/components/ResearchCenterEditor.tsx b/app/[locale]/research/centers/components/ResearchCenterEditor.tsx index c693015fc..325626cef 100644 --- a/app/[locale]/research/centers/components/ResearchCenterEditor.tsx +++ b/app/[locale]/research/centers/components/ResearchCenterEditor.tsx @@ -2,7 +2,7 @@ import { useRouter } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { researchCenters, researchGroups } from '@/utils/segmentNode'; +import { researchCenters, researchGroups } from '@/constants/segmentNode'; import { FormProvider, useForm } from 'react-hook-form'; import LanguagePicker from '@/components/form/LanguagePicker'; @@ -11,14 +11,14 @@ import { useState } from 'react'; import Fieldset from '@/components/form/Fieldset'; import Form from '@/components/form/Form'; import HTMLEditor from '@/components/form/html/HTMLEditor'; -import { PostEditorImage } from '@/components/form/types'; +import { EditorImage } from '@/components/form/types'; const groupsPath = getPath(researchGroups); export interface ResearchCenterFormData { ko: { name: string; description: string; websiteURL: string; type: 'centers' }; en: { name: string; description: string; websiteURL: string; type: 'centers' }; - image: PostEditorImage | null; + image: EditorImage | null; } interface Props { diff --git a/app/[locale]/research/centers/page.tsx b/app/[locale]/research/centers/page.tsx index 962db3653..77a57bb64 100644 --- a/app/[locale]/research/centers/page.tsx +++ b/app/[locale]/research/centers/page.tsx @@ -9,7 +9,7 @@ import { Language } from '@/types/language'; import { findItemBySearchParam } from '@/utils/findSelectedItem'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { researchCenters } from '@/utils/segmentNode'; +import { researchCenters } from '@/constants/segmentNode'; import ResearchCenterDetails from './ResearchCenterDetails'; diff --git a/app/[locale]/research/groups/ResearchGroupDetails.tsx b/app/[locale]/research/groups/ResearchGroupDetails.tsx index ac921ec3d..42c328b11 100644 --- a/app/[locale]/research/groups/ResearchGroupDetails.tsx +++ b/app/[locale]/research/groups/ResearchGroupDetails.tsx @@ -11,7 +11,7 @@ import { WithLanguage } from '@/types/language'; import { ResearchGroup } from '@/types/research'; import { errorToStr } from '@/utils/error'; import { getPath } from '@/utils/page'; -import { researchGroups } from '@/utils/segmentNode'; +import { researchGroups } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { errorToast, successToast } from '@/utils/toast'; diff --git a/app/[locale]/research/groups/ResearchGroupLabs.tsx b/app/[locale]/research/groups/ResearchGroupLabs.tsx index 0d55286af..58c971b6c 100644 --- a/app/[locale]/research/groups/ResearchGroupLabs.tsx +++ b/app/[locale]/research/groups/ResearchGroupLabs.tsx @@ -4,7 +4,7 @@ import { useTranslations } from 'next-intl'; import { Link } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { researchLabs } from '@/utils/segmentNode'; +import { researchLabs } from '@/constants/segmentNode'; export default function ResearchGroupLabs({ labs }: { labs: { id: number; name: string }[] }) { const t = useTranslations('Content'); diff --git a/app/[locale]/research/groups/components/ResearchGroupEditor.tsx b/app/[locale]/research/groups/components/ResearchGroupEditor.tsx index b7b2c79a5..942b7dc11 100644 --- a/app/[locale]/research/groups/components/ResearchGroupEditor.tsx +++ b/app/[locale]/research/groups/components/ResearchGroupEditor.tsx @@ -2,7 +2,7 @@ import { useRouter } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { researchGroups } from '@/utils/segmentNode'; +import { researchGroups } from '@/constants/segmentNode'; import ResearchGroupLabsEditGuide from '../ResearchGroupLabsEditGuide'; import { FormProvider, useForm } from 'react-hook-form'; @@ -12,14 +12,14 @@ import { useState } from 'react'; import Fieldset from '@/components/form/Fieldset'; import Form from '@/components/form/Form'; import HTMLEditor from '@/components/form/html/HTMLEditor'; -import { PostEditorImage } from '@/components/form/types'; +import { EditorImage } from '@/components/form/types'; const groupsPath = getPath(researchGroups); export interface ResearchGroupFormData { ko: { name: string; description: string; type: 'groups' }; en: { name: string; description: string; type: 'groups' }; - image: PostEditorImage | null; + image: EditorImage | null; } interface Props { diff --git a/app/[locale]/research/groups/page.tsx b/app/[locale]/research/groups/page.tsx index 116991d6f..a2b9dccc6 100644 --- a/app/[locale]/research/groups/page.tsx +++ b/app/[locale]/research/groups/page.tsx @@ -9,7 +9,7 @@ import { Language } from '@/types/language'; import { findItemBySearchParam } from '@/utils/findSelectedItem'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { researchGroups } from '@/utils/segmentNode'; +import { researchGroups } from '@/constants/segmentNode'; import ResearchGroupDetails from './ResearchGroupDetails'; diff --git a/app/[locale]/research/labs/ResearchLabListRow.tsx b/app/[locale]/research/labs/ResearchLabListRow.tsx index 18d04cd7d..7d3d701d3 100644 --- a/app/[locale]/research/labs/ResearchLabListRow.tsx +++ b/app/[locale]/research/labs/ResearchLabListRow.tsx @@ -4,7 +4,7 @@ import { Link } from '@/i18n/routing'; import YoutubeIcon from '@/public/image/youtube_icon.svg'; import { SimpleResearchLab } from '@/types/research'; import { getPath } from '@/utils/page'; -import { faculty, researchLabs } from '@/utils/segmentNode'; +import { faculty, researchLabs } from '@/constants/segmentNode'; export const LAB_ROW_ITEM_WIDTH = { name: 'sm:w-[14.5rem]', diff --git a/app/[locale]/research/labs/[id]/ResearchLabDetailContent.tsx b/app/[locale]/research/labs/[id]/ResearchLabDetailContent.tsx index e9ad9c8cc..74ccd5209 100644 --- a/app/[locale]/research/labs/[id]/ResearchLabDetailContent.tsx +++ b/app/[locale]/research/labs/[id]/ResearchLabDetailContent.tsx @@ -14,7 +14,7 @@ import { ResearchLab } from '@/types/research'; import { errorToStr } from '@/utils/error'; import useResponsive from '@/utils/hooks/useResponsive'; import { getPath } from '@/utils/page'; -import { researchGroups, researchLabs } from '@/utils/segmentNode'; +import { researchGroups, researchLabs } from '@/constants/segmentNode'; import { handleServerAction } from '@/utils/serverActionError'; import { replaceSpaceWithDash } from '@/utils/string'; import { errorToast, successToast } from '@/utils/toast'; diff --git a/app/[locale]/research/labs/[id]/ResesarchLabInfo.tsx b/app/[locale]/research/labs/[id]/ResesarchLabInfo.tsx index 9a6f7d6dd..cc3b4ac8c 100644 --- a/app/[locale]/research/labs/[id]/ResesarchLabInfo.tsx +++ b/app/[locale]/research/labs/[id]/ResesarchLabInfo.tsx @@ -5,7 +5,7 @@ import { COLOR_THEME } from '@/constants/color'; import { Link } from '@/i18n/routing'; import { ResearchLab } from '@/types/research'; import { getPath } from '@/utils/page'; -import { faculty } from '@/utils/segmentNode'; +import { faculty } from '@/constants/segmentNode'; export default function ResearchLabInfo({ lab }: { lab: ResearchLab }) { const dropShadow = 'drop-shadow(1px 2px 2px rgba(0,0,0,0.25))'; diff --git a/app/[locale]/research/labs/components/ResearchLabEditor.tsx b/app/[locale]/research/labs/components/ResearchLabEditor.tsx index 866824512..5060614ef 100644 --- a/app/[locale]/research/labs/components/ResearchLabEditor.tsx +++ b/app/[locale]/research/labs/components/ResearchLabEditor.tsx @@ -8,11 +8,11 @@ import { Language, WithLanguage } from '@/types/language'; import { SimpleFaculty } from '@/types/people'; import { ResearchGroup } from '@/types/research'; import { getPath } from '@/utils/page'; -import { researchLabs } from '@/utils/segmentNode'; +import { researchLabs } from '@/constants/segmentNode'; import Fieldset from '../../../../../components/form/Fieldset'; import LanguagePicker from '../../../../../components/form/LanguagePicker'; -import { PostEditorFile } from '../../../../../components/form/types'; +import { EditorFile } from '../../../../../components/form/types'; import Form from '../../../../../components/form/Form'; import HTMLEditor from '../../../../../components/form/html/HTMLEditor'; @@ -27,7 +27,7 @@ export type ResearchLabFormData = WithLanguage<{ tel: string; websiteURL: string; youtube: string; - pdf: PostEditorFile[]; + pdf: EditorFile[]; }; interface ResearchLabEditorProps { diff --git a/app/[locale]/research/labs/page.tsx b/app/[locale]/research/labs/page.tsx index b6588c994..6f784e6f6 100644 --- a/app/[locale]/research/labs/page.tsx +++ b/app/[locale]/research/labs/page.tsx @@ -6,7 +6,7 @@ import { Link } from '@/i18n/routing'; import { Language } from '@/types/language'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { researchLabs } from '@/utils/segmentNode'; +import { researchLabs } from '@/constants/segmentNode'; import ResearchLabListHeader from './ResearchLabListHeader'; import ResearchLabListRow from './ResearchLabListRow'; diff --git a/app/[locale]/research/page.tsx b/app/[locale]/research/page.tsx index 2b4c5e4e6..0ffa1ccf9 100644 --- a/app/[locale]/research/page.tsx +++ b/app/[locale]/research/page.tsx @@ -1,6 +1,6 @@ import MajorCategoryPageLayout from '@/components/layout/pageLayout/MajorCategoryPageLayout'; import { getMetadata } from '@/utils/metadata'; -import { research } from '@/utils/segmentNode'; +import { research } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }> }) { const params = await props.params; diff --git a/app/[locale]/research/top-conference-list/page.tsx b/app/[locale]/research/top-conference-list/page.tsx index 6577e628c..5c7a8f389 100644 --- a/app/[locale]/research/top-conference-list/page.tsx +++ b/app/[locale]/research/top-conference-list/page.tsx @@ -4,7 +4,7 @@ import { getTopConferenceList } from '@/apis/v1/conference/page'; import ConferenceListTable from '@/app/[locale]/research/top-conference-list/ConferenceListTable'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { getMetadata } from '@/utils/metadata'; -import { topConferenceList } from '@/utils/segmentNode'; +import { topConferenceList } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }> }) { const params = await props.params; diff --git a/app/[locale]/reservations/introduction/page.tsx b/app/[locale]/reservations/introduction/page.tsx index bbbec465e..1f6de7f3a 100644 --- a/app/[locale]/reservations/introduction/page.tsx +++ b/app/[locale]/reservations/introduction/page.tsx @@ -6,7 +6,7 @@ import HTMLViewer from '@/components/form/html/HTMLViewer'; import PageLayout from '@/components/layout/pageLayout/PageLayout'; import { getMetadata } from '@/utils/metadata'; import { getPath } from '@/utils/page'; -import { reservationIntroduction } from '@/utils/segmentNode'; +import { reservationIntroduction } from '@/constants/segmentNode'; import { replaceDashWithSpace } from '@/utils/string'; export async function generateMetadata(props: { diff --git a/app/[locale]/reservations/page.tsx b/app/[locale]/reservations/page.tsx index 42d2bf3d1..33047e859 100644 --- a/app/[locale]/reservations/page.tsx +++ b/app/[locale]/reservations/page.tsx @@ -2,7 +2,7 @@ import { Metadata } from 'next'; import MajorCategoryPageLayout from '@/components/layout/pageLayout/MajorCategoryPageLayout'; import { getMetadata } from '@/utils/metadata'; -import { reservations } from '@/utils/segmentNode'; +import { reservations } from '@/constants/segmentNode'; export async function generateMetadata(props: { params: Promise<{ locale: string }>; diff --git a/app/[locale]/search/AboutSection.tsx b/app/[locale]/search/AboutSection.tsx index 70dc0104e..af34b5101 100644 --- a/app/[locale]/search/AboutSection.tsx +++ b/app/[locale]/search/AboutSection.tsx @@ -9,7 +9,7 @@ import { history, overview, studentClubs, -} from '@/utils/segmentNode'; +} from '@/constants/segmentNode'; import BasicRow from './helper/BasicRow'; import Section from './helper/Section'; diff --git a/app/[locale]/search/AcademicSection.tsx b/app/[locale]/search/AcademicSection.tsx index 3cb4a9fa6..778e18276 100644 --- a/app/[locale]/search/AcademicSection.tsx +++ b/app/[locale]/search/AcademicSection.tsx @@ -12,7 +12,7 @@ import { undergraduateCourses, undergraduateGuide, undergraduateScholarship, -} from '@/utils/segmentNode'; +} from '@/constants/segmentNode'; import BasicRow from './helper/BasicRow'; import Section from './helper/Section'; diff --git a/app/[locale]/search/AdmissionSection.tsx b/app/[locale]/search/AdmissionSection.tsx index ee1a93fa3..c22fd8c25 100644 --- a/app/[locale]/search/AdmissionSection.tsx +++ b/app/[locale]/search/AdmissionSection.tsx @@ -1,6 +1,6 @@ import { AdmissionsSearchResult } from '@/types/search'; import { getPath } from '@/utils/page'; -import { admissions } from '@/utils/segmentNode'; +import { admissions } from '@/constants/segmentNode'; import BasicRow from './helper/BasicRow'; import Section from './helper/Section'; diff --git a/app/[locale]/search/CommunitySection.tsx b/app/[locale]/search/CommunitySection.tsx index 3de4e94e6..bbd39aa17 100644 --- a/app/[locale]/search/CommunitySection.tsx +++ b/app/[locale]/search/CommunitySection.tsx @@ -5,7 +5,7 @@ import { Link } from '@/i18n/routing'; import { NewsSearchResult, NoticeSearchResult } from '@/types/search'; import { SeminarPreviewList } from '@/types/seminar'; import { getPath } from '@/utils/page'; -import { news, notice, seminar } from '@/utils/segmentNode'; +import { news, notice, seminar } from '@/constants/segmentNode'; import SeminarRow from '../community/seminar/components/SeminarRow'; import CircleTitle from './helper/CircleTitle'; diff --git a/app/[locale]/search/MemberSection.tsx b/app/[locale]/search/MemberSection.tsx index 81b9ff30f..aac393b15 100644 --- a/app/[locale]/search/MemberSection.tsx +++ b/app/[locale]/search/MemberSection.tsx @@ -2,7 +2,7 @@ import ImageWithFallback from '@/components/common/ImageWithFallback'; import { Link } from '@/i18n/routing'; import { Member, MemberSearchResult } from '@/types/search'; import { getPath } from '@/utils/page'; -import { faculty, staff } from '@/utils/segmentNode'; +import { faculty, staff } from '@/constants/segmentNode'; import CircleTitle from './helper/CircleTitle'; import Divider from './helper/Divider'; diff --git a/app/[locale]/search/ResearchSection.tsx b/app/[locale]/search/ResearchSection.tsx index 91c4783bc..cde583973 100644 --- a/app/[locale]/search/ResearchSection.tsx +++ b/app/[locale]/search/ResearchSection.tsx @@ -5,7 +5,7 @@ import { researchGroups, researchLabs, topConferenceList, -} from '@/utils/segmentNode'; +} from '@/constants/segmentNode'; import BasicRow from './helper/BasicRow'; import Section from './helper/Section'; diff --git a/app/[locale]/search/helper/BasicRow.tsx b/app/[locale]/search/helper/BasicRow.tsx index db12d0617..26cc09095 100644 --- a/app/[locale]/search/helper/BasicRow.tsx +++ b/app/[locale]/search/helper/BasicRow.tsx @@ -1,7 +1,7 @@ import RangeBolded from '@/components/common/RangeBolded'; import { Link } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { SegmentNode } from '@/utils/segmentNode'; +import { SegmentNode } from '@/constants/segmentNode'; type BasicRowProps = { href: string; diff --git a/app/[locale]/search/helper/NoticeRow.tsx b/app/[locale]/search/helper/NoticeRow.tsx index 31405108b..15926d496 100644 --- a/app/[locale]/search/helper/NoticeRow.tsx +++ b/app/[locale]/search/helper/NoticeRow.tsx @@ -1,7 +1,7 @@ import RangeBolded from '@/components/common/RangeBolded'; import { Link } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { notice } from '@/utils/segmentNode'; +import { notice } from '@/constants/segmentNode'; interface NoticeRowProps { id: number; diff --git a/app/[locale]/search/page.tsx b/app/[locale]/search/page.tsx index ac96b2323..1ced3f61e 100644 --- a/app/[locale]/search/page.tsx +++ b/app/[locale]/search/page.tsx @@ -8,7 +8,7 @@ import PageTitle from '@/components/layout/pageLayout/PageTitle'; import { SEARCH_TAGS } from '@/constants/tag'; import MagnificentGlass from '@/public/image/search/magnificent_glass.svg'; import { getMetadata } from '@/utils/metadata'; -import { main } from '@/utils/segmentNode'; +import { main } from '@/constants/segmentNode'; import AboutSection from './AboutSection'; import AcademicSection from './AcademicSection'; diff --git a/components/form/File.tsx b/components/form/File.tsx index 2d43dcd7a..ecf82907f 100644 --- a/components/form/File.tsx +++ b/components/form/File.tsx @@ -3,7 +3,7 @@ import { RegisterOptions, useFormContext, useWatch } from 'react-hook-form'; import ClearIcon from '@/public/image/clear_icon.svg'; -import { LocalFile, PostEditorFile } from './types'; +import { LocalFile, EditorFile } from './types'; interface FilePickerProps { name: string; @@ -13,7 +13,7 @@ interface FilePickerProps { export default function FilePicker({ name, options, multiple = true }: FilePickerProps) { const { register, setValue } = useFormContext(); - const files = useWatch({ name }) as PostEditorFile[]; + const files = useWatch({ name }) as EditorFile[]; register(name, options); @@ -80,7 +80,7 @@ function SelectFileButton({ } interface FileRowProps { - file: PostEditorFile; + file: EditorFile; deleteFile: MouseEventHandler; } diff --git a/components/form/types.ts b/components/form/types.ts index ade08452b..fbaab8bef 100644 --- a/components/form/types.ts +++ b/components/form/types.ts @@ -1,6 +1,6 @@ // 첨부파일 -export type PostEditorFile = LocalFile | UploadedFile; +export type EditorFile = LocalFile | UploadedFile; export interface LocalFile { type: 'LOCAL_FILE'; @@ -17,14 +17,14 @@ export interface UploadedFile { }; } -export const isLocalFile = (file: PostEditorFile): file is LocalFile => file.type === 'LOCAL_FILE'; +export const isLocalFile = (file: EditorFile): file is LocalFile => file.type === 'LOCAL_FILE'; -export const isUploadedFile = (file: PostEditorFile): file is UploadedFile => +export const isUploadedFile = (file: EditorFile): file is UploadedFile => file.type === 'UPLOADED_FILE'; // 이미지 -export type PostEditorImage = LocalImage | UploadedImage | null; +export type EditorImage = LocalImage | UploadedImage | null; export interface LocalImage { type: 'LOCAL_IMAGE'; @@ -38,3 +38,6 @@ export interface UploadedImage { export const isLocalImage = (image: LocalImage | UploadedImage): image is LocalImage => image.type === 'LOCAL_IMAGE'; + +export const isUploadedImage = (image: LocalImage | UploadedImage): image is LocalImage => + image.type === 'UPLOADED_IMAGE'; diff --git a/components/layout/footer/constants.ts b/components/layout/footer/constants.ts index 7e3b3ba64..690fc798a 100644 --- a/components/layout/footer/constants.ts +++ b/components/layout/footer/constants.ts @@ -14,7 +14,7 @@ import { tentenProject, topConferenceList, undergraduateGuide, -} from '@/utils/segmentNode'; +} from '@/constants/segmentNode'; export interface FooterLink { href: string; diff --git a/components/layout/footer/useFooterDesignMode.ts b/components/layout/footer/useFooterDesignMode.ts index 6cc47376e..0e4c7c290 100644 --- a/components/layout/footer/useFooterDesignMode.ts +++ b/components/layout/footer/useFooterDesignMode.ts @@ -9,7 +9,7 @@ import { research, reservations, SegmentNode, -} from '@/utils/segmentNode'; +} from '@/constants/segmentNode'; export type FooterMode = 'light' | 'dark'; diff --git a/components/layout/header/MobileNavButton.tsx b/components/layout/header/MobileNavButton.tsx index af234ec30..9705a1c5a 100644 --- a/components/layout/header/MobileNavButton.tsx +++ b/components/layout/header/MobileNavButton.tsx @@ -3,7 +3,7 @@ import { useNavbarContext } from '@/contexts/NavbarContext'; import MenuSVG from '@/public/image/header/menu.svg'; import useCurrentSegmentNode from '@/utils/hooks/useCurrentSegmentNode'; -import { about, main as mainNode, SegmentNode } from '@/utils/segmentNode'; +import { about, main as mainNode, SegmentNode } from '@/constants/segmentNode'; export default function MobileNavButton() { const { navbarState, toggle } = useMobileNav(); diff --git a/components/layout/navbar/MobileNav.tsx b/components/layout/navbar/MobileNav.tsx index 6d4feae38..650d7bced 100644 --- a/components/layout/navbar/MobileNav.tsx +++ b/components/layout/navbar/MobileNav.tsx @@ -9,7 +9,7 @@ import { useRouter } from '@/i18n/routing'; import useCurrentSegmentNode from '@/utils/hooks/useCurrentSegmentNode'; import useLanguage from '@/utils/hooks/useLanguage'; import { isAncestorNode } from '@/utils/page'; -import { main, SegmentNode } from '@/utils/segmentNode'; +import { main, SegmentNode } from '@/constants/segmentNode'; import MobileNavDetail from './MobileNavDetail'; diff --git a/components/layout/navbar/MobileNavDetail.tsx b/components/layout/navbar/MobileNavDetail.tsx index 1b64e0d24..4c7254c85 100644 --- a/components/layout/navbar/MobileNavDetail.tsx +++ b/components/layout/navbar/MobileNavDetail.tsx @@ -1,6 +1,6 @@ import { useNavbarContext } from '@/contexts/NavbarContext'; import useCurrentSegmentNode from '@/utils/hooks/useCurrentSegmentNode'; -import { SegmentNode } from '@/utils/segmentNode'; +import { SegmentNode } from '@/constants/segmentNode'; import NavTreeLabel from './NavtreeRow'; diff --git a/components/layout/navbar/NavbarDetail.tsx b/components/layout/navbar/NavbarDetail.tsx index 0d5dcdc14..19ba63a98 100644 --- a/components/layout/navbar/NavbarDetail.tsx +++ b/components/layout/navbar/NavbarDetail.tsx @@ -1,6 +1,6 @@ import { useNavbarContext } from '@/contexts/NavbarContext'; import useCurrentSegmentNode from '@/utils/hooks/useCurrentSegmentNode'; -import { SegmentNode } from '@/utils/segmentNode'; +import { SegmentNode } from '@/constants/segmentNode'; import NavTreeLabel from './NavtreeRow'; diff --git a/components/layout/navbar/NavbarRoot.tsx b/components/layout/navbar/NavbarRoot.tsx index e6ee5dad8..fc73951a2 100644 --- a/components/layout/navbar/NavbarRoot.tsx +++ b/components/layout/navbar/NavbarRoot.tsx @@ -7,7 +7,7 @@ import DotFill from '@/public/image/navbar/dot_fill.svg'; import SnuLogo from '@/public/image/SNU_Logo.svg'; import useCurrentSegmentNode from '@/utils/hooks/useCurrentSegmentNode'; import { getPath, isAncestorNode } from '@/utils/page'; -import { main as mainSegmentNode, SegmentNode } from '@/utils/segmentNode'; +import { main as mainSegmentNode, SegmentNode } from '@/constants/segmentNode'; export const NAVBAR_CLOSED_WIDTH_REM = 6.25; export const NAVBAR_EXPANDED_WIDTH_REM = 11; diff --git a/components/layout/navbar/NavtreeRow.tsx b/components/layout/navbar/NavtreeRow.tsx index 60088dd7a..37b19f8c2 100644 --- a/components/layout/navbar/NavtreeRow.tsx +++ b/components/layout/navbar/NavtreeRow.tsx @@ -4,7 +4,7 @@ import { StraightNode } from '@/components/common/Nodes'; import NavLabel from '@/components/layout/navbar/NavLabel'; import { Link } from '@/i18n/routing'; import { getPath } from '@/utils/page'; -import { SegmentNode } from '@/utils/segmentNode'; +import { SegmentNode } from '@/constants/segmentNode'; type NavTreeRowProps = { segmentNode: SegmentNode; diff --git a/components/layout/pageLayout/MajorCategoryPageLayout.tsx b/components/layout/pageLayout/MajorCategoryPageLayout.tsx index 027f3b9d4..f052dabe7 100644 --- a/components/layout/pageLayout/MajorCategoryPageLayout.tsx +++ b/components/layout/pageLayout/MajorCategoryPageLayout.tsx @@ -7,7 +7,7 @@ import HTMLViewer from '@/components/form/html/HTMLViewer'; import { useRouter } from '@/i18n/routing'; import useCurrentSegmentNode from '@/utils/hooks/useCurrentSegmentNode'; import { getPath } from '@/utils/page'; -import { SegmentNode } from '@/utils/segmentNode'; +import { SegmentNode } from '@/constants/segmentNode'; import ENG_NAMES from '../../../messages/en.json'; import Header from '../header/Header'; diff --git a/components/layout/pageLayout/PageTitle.tsx b/components/layout/pageLayout/PageTitle.tsx index bad9cc553..e41a7847e 100644 --- a/components/layout/pageLayout/PageTitle.tsx +++ b/components/layout/pageLayout/PageTitle.tsx @@ -8,7 +8,7 @@ import { usePathname } from '@/i18n/routing'; import { Link } from '@/i18n/routing'; import { getLocationLog, getPath } from '@/utils/page'; import { refreshPage } from '@/utils/refreshPage'; -import { SegmentNode } from '@/utils/segmentNode'; +import { SegmentNode } from '@/constants/segmentNode'; interface PageTitleProps { title: string | JSX.Element; diff --git a/components/layout/pageLayout/SubNavbar.tsx b/components/layout/pageLayout/SubNavbar.tsx index 68a47a4be..daeeb7bba 100644 --- a/components/layout/pageLayout/SubNavbar.tsx +++ b/components/layout/pageLayout/SubNavbar.tsx @@ -4,7 +4,7 @@ import { CurvedVerticalNode } from '@/components/common/Nodes'; import NavLabel from '@/components/layout/navbar/NavLabel'; import { Link } from '@/i18n/routing'; import { getAllSubTabs, getDepth, getPath, getRootTab } from '@/utils/page'; -import { SegmentNode } from '@/utils/segmentNode'; +import { SegmentNode } from '@/constants/segmentNode'; type TreeNode = { name: string; diff --git a/utils/segmentNode.ts b/constants/segmentNode.ts similarity index 100% rename from utils/segmentNode.ts rename to constants/segmentNode.ts diff --git a/contexts/NavbarContext.tsx b/contexts/NavbarContext.tsx index f2efc0905..0290caa54 100644 --- a/contexts/NavbarContext.tsx +++ b/contexts/NavbarContext.tsx @@ -13,7 +13,7 @@ import { import { usePathname } from '@/i18n/routing'; import useCurrentSegmentNode from '@/utils/hooks/useCurrentSegmentNode'; import useResponsive from '@/utils/hooks/useResponsive'; -import { SegmentNode } from '@/utils/segmentNode'; +import { SegmentNode } from '@/constants/segmentNode'; export type NavbarState = | { type: 'closed' } diff --git a/eslint.config.mjs b/eslint.config.mjs index 3d687555f..23d9e298d 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -6,6 +6,7 @@ import pluginJs from '@eslint/js'; import pluginReact from 'eslint-plugin-react'; import pluginReactHooks from 'eslint-plugin-react-hooks'; import simpleImportSort from 'eslint-plugin-simple-import-sort'; +import unusedImports from 'eslint-plugin-unused-imports'; import globals from 'globals'; import tseslint from 'typescript-eslint'; @@ -56,4 +57,12 @@ export default [ ], }, }, + { + plugins: { + 'unused-imports': unusedImports, + }, + rules: { + 'unused-imports/no-unused-imports': 'error', + }, + }, ]; diff --git a/package-lock.json b/package-lock.json index 430038f3b..d14a648be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,6 +44,7 @@ "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-simple-import-sort": "^12.1.1", + "eslint-plugin-unused-imports": "^4.1.4", "globals": "^15.12.0", "husky": "^9.1.7", "lint-staged": "^15.2.2", @@ -5946,6 +5947,22 @@ "eslint": ">=5.0.0" } }, + "node_modules/eslint-plugin-unused-imports": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz", + "integrity": "sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0", + "eslint": "^9.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } + } + }, "node_modules/eslint-scope": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", diff --git a/package.json b/package.json index d26e3acdf..2ae1d1cb0 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-simple-import-sort": "^12.1.1", + "eslint-plugin-unused-imports": "^4.1.4", "globals": "^15.12.0", "husky": "^9.1.7", "lint-staged": "^15.2.2", diff --git a/server.mjs b/server.mjs index 56c5f273d..14edd9b38 100644 --- a/server.mjs +++ b/server.mjs @@ -19,6 +19,7 @@ switch (phase) { break; case 'local': process.env.BASE_URL = 'https://cse-dev-waffle.bacchus.io/api'; + process.env.BUILD_VERSION = execSync('git rev-parse --short HEAD').toString(); break; default: console.error(`PHASE 환경변수는 prod, beta, local 중 하나여야합니다: ${phase}`); diff --git a/utils/formData.ts b/utils/formData.ts index fd22536e3..90b9c7d1b 100644 --- a/utils/formData.ts +++ b/utils/formData.ts @@ -1,10 +1,10 @@ import { Attachment } from '@/components/common/Attachments'; import { + EditorFile, + EditorImage, isLocalFile, isLocalImage, isUploadedFile, - PostEditorFile, - PostEditorImage, } from '@/components/form/types'; import { encodeFormDataFileName } from './string'; @@ -13,8 +13,8 @@ export const contentToFormData = ( type: 'CREATE' | 'EDIT', content: { requestObject: object; - attachments?: PostEditorFile[]; - image?: PostEditorImage; + attachments?: EditorFile[]; + image?: EditorImage; }, ) => { const { requestObject, attachments, image } = content; @@ -43,13 +43,21 @@ export const contentToFormData = ( }; export const getAttachmentDeleteIds = ( - attachments: PostEditorFile[], - prev: number[] | Attachment[], + attachments: EditorFile[], + prev: number[] | Attachment[] | EditorFile[], ) => { const uploadedAttachments = attachments.filter(isUploadedFile).map((x) => x.file); - const isNumberArr = (arr: number[] | Attachment[]): arr is number[] => typeof arr[0] == 'number'; - const prevAttachmentIds = isNumberArr(prev) ? prev : prev.map((x) => x.id); + const isNumberArr = (arr: number[] | Attachment[] | EditorFile[]): arr is number[] => + arr.length === 0 || typeof arr[0] == 'number'; + const isNumberAttachmentArr = (arr: Attachment[] | EditorFile[]): arr is Attachment[] => + arr.length === 0 || 'id' in arr[0]; + + const prevAttachmentIds = isNumberArr(prev) + ? prev + : isNumberAttachmentArr(prev) + ? prev.map((x) => x.id) + : prev.filter(isUploadedFile).map((x) => x.file.id); const deleteIds = prevAttachmentIds.filter( (id) => uploadedAttachments.find((x) => x.id === id) === undefined, @@ -57,3 +65,14 @@ export const getAttachmentDeleteIds = ( return deleteIds; }; + +export const getEditorImage = (url: string | null | undefined): EditorImage => + url ? { type: 'UPLOADED_IMAGE', url } : null; + +export function getEditorFile(attachment: Attachment): EditorFile; +export function getEditorFile(attachment: Attachment[]): EditorFile[]; +export function getEditorFile(attachment: Attachment | Attachment[]): EditorFile | EditorFile[] { + return Array.isArray(attachment) + ? attachment.map((file) => ({ type: 'UPLOADED_FILE', file })) + : { type: 'UPLOADED_FILE', file: attachment }; +} diff --git a/utils/hooks/useCurrentSegmentNode.ts b/utils/hooks/useCurrentSegmentNode.ts index 424fd9e20..2739d1898 100644 --- a/utils/hooks/useCurrentSegmentNode.ts +++ b/utils/hooks/useCurrentSegmentNode.ts @@ -1,5 +1,5 @@ import { usePathname } from '@/i18n/routing'; -import { admin, main, SegmentNode, tentenProject } from '@/utils/segmentNode'; +import { admin, main, SegmentNode, tentenProject } from '@/constants/segmentNode'; export default function useCurrentSegmentNode(): SegmentNode { const pathname = usePathname(); diff --git a/utils/metadata.ts b/utils/metadata.ts index d0b78c5ee..88700de14 100644 --- a/utils/metadata.ts +++ b/utils/metadata.ts @@ -1,7 +1,7 @@ import { Metadata } from 'next'; import { getTranslations } from 'next-intl/server'; -import { SegmentNode } from './segmentNode'; +import { SegmentNode } from '../constants/segmentNode'; /** * @param locale (required) current page locale (get from page params) diff --git a/utils/page.ts b/utils/page.ts index c8e632c55..e34b20be8 100644 --- a/utils/page.ts +++ b/utils/page.ts @@ -1,4 +1,4 @@ -import { main, SegmentNode } from '@/utils/segmentNode'; +import { main, SegmentNode } from '@/constants/segmentNode'; export const getLocationLog = (location: SegmentNode | null): SegmentNode[] => { if (location === null) return []; diff --git a/utils/serverActionError.ts b/utils/serverActionError.ts index d65094404..469f94403 100644 --- a/utils/serverActionError.ts +++ b/utils/serverActionError.ts @@ -1,3 +1,6 @@ +import { errorToStr } from '@/utils/error'; +import { errorToast, successToast } from '@/utils/toast'; + export type CustomError = { error: { message: string } }; export const isApiError = (response: T | CustomError): response is CustomError => { @@ -10,7 +13,24 @@ export function throwIfError(response: T): asserts response is Exclude(response: T): Exclude { throwIfError(response); return response; } + +export const handleServerResponse = ( + response: T, + { successMessage }: { successMessage: string }, +) => { + try { + console.log(response); + throwIfError(response); + successToast(successMessage); + return response; + } catch (e) { + errorToast(errorToStr(e)); + } +};