Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/components/admin/adminNotice/AdminNoticeList.styled.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import styled from 'styled-components';
import { SpinnerWrapperStyled } from '../../user/mypage/Spinner.styled';

export const SpinnerWrapper = styled(SpinnerWrapperStyled)`
width: 100%;
`;

export const NoticeItemWrapper = styled.section`
display: flex;
justify-content: center;
`;
Comment on lines +8 to +11
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

NoticeItemWrapper 중복 코드를 정리해주세요.

이 컴포넌트는 src/pages/admin/CommonAdminPage.styled.tsNoticeItemWrapper와 동일한 스타일을 가지고 있습니다.

코드 중복을 방지하기 위해 공통 컴포넌트를 사용하거나 하나의 위치로 통합하는 것을 고려해주세요.

-export const NoticeItemWrapper = styled.section`
-  display: flex;
-  justify-content: center;
-`;

그리고 대신 공통 스타일 파일에서 임포트하여 사용하세요:

+import { NoticeItemWrapper } from '../../pages/admin/CommonAdminPage.styled';
🤖 Prompt for AI Agents
In src/components/admin/adminNotice/AdminNoticeList.styled.ts lines 8 to 11, the
NoticeItemWrapper styled component duplicates the same styles as the
NoticeItemWrapper in src/pages/admin/CommonAdminPage.styled.ts. To fix this,
remove the duplicated NoticeItemWrapper definition here and instead import the
NoticeItemWrapper component from src/pages/admin/CommonAdminPage.styled.ts to
reuse the common style and avoid code duplication.

Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { useEffect, useState } from 'react';
import SearchBar from '../../../../components/admin/searchBar/SearchBar';
import NoticeItem from '../../../user/customerService/notice/noticeItem/NoticeItem';
import SearchBar from '../../../components/common/admin/searchBar/SearchBar';
import * as S from './AdminNoticeList.styled';
import type { NoticeSearch } from '../../../../models/customerService';
import { useGetNotice } from '../../../../hooks/user/useGetNotice';
import type { NoticeSearch } from '../../../models/customerService';
import { useGetNotice } from '../../../hooks/user/useGetNotice';
import { useSearchParams } from 'react-router-dom';
import { Spinner } from '../../../../components/common/loadingSpinner/LoadingSpinner.styled';
import Pagination from '../../../../components/common/pagination/Pagination';
import Pagination from '../../../components/common/pagination/Pagination';
import Spinner from '../../../components/user/mypage/Spinner';
import NoticeItem from '../../../pages/user/customerService/notice/noticeItem/NoticeItem';

export default function AdminNoticeList() {
const [noticeSearch, setNoticeSearch] = useState<NoticeSearch>({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import {
Content,
SendButtonWrapper,
SendButton,
} from '../../../../components/user/customerService/inquiry/Inquiry.styled';
import { SpinnerWrapperStyled } from '../../../../components/user/mypage/Spinner.styled';
} from '../../../components/user/customerService/inquiry/Inquiry.styled';
import { SpinnerWrapperStyled } from '../../../components/user/mypage/Spinner.styled';

export const SpinnerWrapper = styled(SpinnerWrapperStyled)``;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { INQUIRY_MESSAGE } from '../../../../constants/user/customerService';
import { INQUIRY_MESSAGE } from '../../../constants/user/customerService';
import * as S from './AdminNoticeWrite.styled';
import React, { useEffect, useState } from 'react';
import { useLocation, useParams } from 'react-router-dom';
import { useModal } from '../../../../hooks/useModal';
import Modal from '../../../../components/common/modal/Modal';
import type { WriteBody } from '../../../../models/customerService';
import { useAdminNotice } from '../../../../hooks/admin/useAdminNotice';
import { useGetNoticeDetail } from '../../../../hooks/user/useGetNoticeDetail';
import Spinner from '../../../../components/user/mypage/Spinner';
import { useModal } from '../../../hooks/useModal';
import Modal from '../../../components/common/modal/Modal';
import type { WriteBody } from '../../../models/customerService';
import { useAdminNotice } from '../../../hooks/admin/useAdminNotice';
import { useGetNoticeDetail } from '../../../hooks/user/useGetNoticeDetail';
import Spinner from '../../../components/user/mypage/Spinner';

export default function AdminNoticeWrite() {
const location = useLocation();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { XMarkIcon } from '@heroicons/react/24/outline';
import { MODAL_MESSAGE_CUSTOMER_SERVICE } from '../../../constants/user/customerService';
import { MODAL_MESSAGE_CUSTOMER_SERVICE } from '../../../../constants/user/customerService';
import * as S from './SearchBar.styled';
import { useState } from 'react';
import { useLocation, useSearchParams } from 'react-router-dom';
import { useModal } from '../../../hooks/useModal';
import Modal from '../../common/modal/Modal';
import { ADMIN_ROUTE } from '../../../constants/routes';
import { useModal } from '../../../../hooks/useModal';
import Modal from '../../modal/Modal';
import { ADMIN_ROUTE } from '../../../../constants/routes';

interface SearchBarProps {
onGetKeyword: (keyword: string) => void;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@ import ListButton from './bottom/button/ListButton';

interface NoticeDetailBundleProps {
$width: string;
$isAdmin?: boolean;
}

export default function NoticeDetailBundle({
$width,
$isAdmin = false,
}: NoticeDetailBundleProps) {
const location = useLocation();
const { noticeId } = useParams();
Expand All @@ -24,7 +26,7 @@ export default function NoticeDetailBundle({

if (isLoading) {
return (
<S.SpinnerWrapper>
<S.SpinnerWrapper $isAdmin={$isAdmin}>
<Spinner />
</S.SpinnerWrapper>
);
Expand Down
4 changes: 2 additions & 2 deletions src/components/user/mypage/Spinner.styled.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ export const Circle = styled.div<{ $size: string; $color: string }>`
animation: ${spin} 1s linear infinite;
`;

export const SpinnerWrapperStyled = styled.div`
width: 100vw;
export const SpinnerWrapperStyled = styled.div<{ $isAdmin?: boolean }>`
width: ${({ $isAdmin }) => ($isAdmin ? '100%' : '100vw')};
height: 60vh;
display: flex;
justify-content: center;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import styled from 'styled-components';
import { SpinnerWrapperStyled } from '../../../components/user/mypage/Spinner.styled';
import { SpinnerWrapperStyled } from '../../components/user/mypage/Spinner.styled';

export const SpinnerWrapper = styled(SpinnerWrapperStyled)``;

Expand Down
16 changes: 16 additions & 0 deletions src/pages/admin/CommonAdminPage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { Outlet } from 'react-router-dom';
import AdminTitle from '../../components/common/admin/title/AdminTitle';
import * as S from './CommonAdminPage.styled';

interface CommonAdminPageProps {
title: string;
}

export default function CommonAdminPage({ title }: CommonAdminPageProps) {
return (
<S.AdminNoticeContainer>
<AdminTitle title={title} />
<Outlet />
</S.AdminNoticeContainer>
);
}
Empty file.
11 changes: 2 additions & 9 deletions src/pages/admin/adminNotice/AdminNotice.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
import { Outlet } from 'react-router-dom';
import AdminTitle from '../../../components/common/admin/title/AdminTitle';
import * as S from './AdminNotice.styled';
import CommonAdminPage from '../commonAdminPage';

export default function AdminNotice() {
return (
<S.AdminNoticeContainer>
<AdminTitle title='공지사항' />
<Outlet />
</S.AdminNoticeContainer>
);
return <CommonAdminPage title='공지사항' />;
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import AdminNoticeList from '../../../../components/admin/adminNotice/AdminNoticeList';

export default function AdminNoticeListPage() {
return <AdminNoticeList />;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import AdminNoticeWrite from '../../../../components/admin/adminNotice/AdminNoticeWrite';

export default function AdminNoticeWritePage() {
return <AdminNoticeWrite />;
}
5 changes: 4 additions & 1 deletion src/pages/admin/adminNoticeDetail/AdminNoticeDetail.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import NoticeDetailBundle from '../../../components/user/customerService/noticeDetail/NoticeDetailBundle';
import useAuthStore from '../../../store/authStore';

export default function AdminNoticeDetail() {
return <NoticeDetailBundle $width='90%' />;
const isAdmin = useAuthStore((state) => state.userData?.admin) ?? false;

return <NoticeDetailBundle $width='90%' $isAdmin={isAdmin} />;
}
5 changes: 3 additions & 2 deletions src/routes/AdminRoutes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@ const Sidebar = lazy(
const Main = lazy(() => import('../pages/admin/adminMain/AdminMain'));
const Notice = lazy(() => import('../pages/admin/adminNotice/AdminNotice'));
const NoticeList = lazy(
() => import('../pages/admin/adminNotice/adminNoticeList/AdminNoticeList')
() => import('../pages/admin/adminNotice/adminNoticeList/AdminNoticeListPage')
);
const NoticeWrite = lazy(
() => import('../pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWrite')
() =>
import('../pages/admin/adminNotice/adminNoticeWrite/AdminNoticeWritePage')
);
const NoticeDetail = lazy(
() => import('../pages/admin/adminNoticeDetail/AdminNoticeDetail')
Expand Down