Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[김정현] Sprint12 #330

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
f482ead
feat: 에러메세지 UI 추가
kjh9852 Sep 26, 2024
1c780e8
design: css수정
kjh9852 Sep 26, 2024
eac15a2
feat: error 처리
kjh9852 Sep 26, 2024
89f797b
design: 반응형 css 추가
kjh9852 Sep 26, 2024
30b26be
refactor: 랜딩페이지 수정
kjh9852 Sep 26, 2024
c2016ef
design: margin 값 추가
kjh9852 Sep 26, 2024
9dd060b
feat: register, error메세지 추가
kjh9852 Sep 26, 2024
4d71def
env: api url env에서 불러오도록 변경
kjh9852 Sep 26, 2024
43ee971
env: env 파일 제외
kjh9852 Sep 26, 2024
1a514e4
remove: 중복파일 삭제
kjh9852 Sep 26, 2024
6a5a79a
Chore: react-query 설치
kjh9852 Sep 30, 2024
c0f36cd
feat: Edit페이지 추가
kjh9852 Sep 30, 2024
342067e
feat: 타입 추가
kjh9852 Sep 30, 2024
41dcf55
feat: react query 사용
kjh9852 Sep 30, 2024
4725f2f
feat: 수정 로직 추가
kjh9852 Sep 30, 2024
86b31d3
refactor: ValidateInput로 변경
kjh9852 Sep 30, 2024
d58aa0b
feat: 유효성 검증 input 추가
kjh9852 Sep 30, 2024
64de07c
feat: api fetch 로직 추가
kjh9852 Sep 30, 2024
9ff7152
refactor: 페이지네이션 로직 변경
kjh9852 Sep 30, 2024
ccda9ed
refactor: react query로 상품 fetch
kjh9852 Sep 30, 2024
8c7bc29
feat: 커스텀 훅 추가
kjh9852 Sep 30, 2024
39d4063
feat: 상품 edit 페이지
kjh9852 Sep 30, 2024
67da992
feat: dots 컴포넌트 추가
kjh9852 Sep 30, 2024
ba7879a
feat: 수정,삭제 컴포넌트 추가
kjh9852 Sep 30, 2024
07ba75d
feat: userId, 리프래시 토큰 로직 추가
kjh9852 Sep 30, 2024
b448c30
feat: 로그인 확인 컴포넌트
kjh9852 Sep 30, 2024
d77ed4d
refactor: react query 사용
kjh9852 Sep 30, 2024
a290a7a
feat: 수정,삭제 로직 추가
kjh9852 Sep 30, 2024
4976b48
feat: 이미지업로드 추가
kjh9852 Sep 30, 2024
3b11ec9
feat: Input 컴포넌트 추가
kjh9852 Sep 30, 2024
dd95e90
refactor: enter입력시 submit 안되도록 제어
kjh9852 Sep 30, 2024
ce09794
feat: 댓글 등록 로직 추가
kjh9852 Sep 30, 2024
0246e13
feat: 로그인 type 추가
kjh9852 Oct 7, 2024
f3ff599
refactor: mutation타입추가, image타입수정
kjh9852 Oct 7, 2024
ce3d0f4
refactor: image타입 수정
kjh9852 Oct 7, 2024
d944f69
feat: react query 적용, error 처리
kjh9852 Oct 7, 2024
27ca06d
rename: error컴포넌트 이름 변경
kjh9852 Oct 7, 2024
3207ec1
remove: custom hook 삭제
kjh9852 Oct 7, 2024
230ef29
design: image css 수정
kjh9852 Oct 7, 2024
3a47d4d
feat: login 관련 커스텀훅 추가
kjh9852 Oct 7, 2024
9d7a159
refactor: placeholderData 추가
kjh9852 Oct 7, 2024
d74cb2c
refactor: context return value 수정
kjh9852 Oct 7, 2024
6e965f8
feat: 타입추가
kjh9852 Oct 7, 2024
92f1f25
feat: 에러가 있을 시 에러메세지 출력
kjh9852 Oct 7, 2024
74a0d87
refactor: input 타입 수정
kjh9852 Oct 7, 2024
ef07e06
design: 과한 z-index 값 수정
kjh9852 Oct 7, 2024
339f59c
feat: 이미지 크기 제한, 상품 수정 시 이전 이미지 가져오도록 수정
kjh9852 Oct 7, 2024
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

# misc
.DS_Store
.env
.env.local
.env.development.local
.env.test.local
Expand Down
77 changes: 77 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
"version": "0.1.0",
"private": true,
"dependencies": {
"@tanstack/react-query": "^5.56.2",
"@tanstack/react-query-devtools": "^5.58.0",
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
Expand Down
26 changes: 26 additions & 0 deletions src/@types/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ interface ProductProps {
isFavorite?: boolean;
updateAt?: Date;
createAt?: Date;
ownerId: string;
}

interface CommentProps {
Expand All @@ -30,3 +31,28 @@ type NavigationType = {
path: string;
name: string;
}[];

interface LoginType {
email: string;
password: string;
}

interface RegisterType {
email: string;
nickname: string;
password: string;
passwordCheck: string;
}

interface LoginResponseReturnType {
accessToken: string;
refreshToken: string;
user: {
id: string;
email: string;
image: null;
nickname: string;
updatedAt: Date;
createdAt: Date;
};
}
28 changes: 25 additions & 3 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
import { QueryClientProvider } from "@tanstack/react-query";
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
import Root from "./router/Root";
import ProductsPage from "./router/ProductsPage";
import AddItemPage from "./router/AddItemPage";
import EditItemPage from "./router/EditItemPage";
import ProductDetailPage, {
loader as productLoader,
} from "./router/ProductDetailPage";
import Register from "./components/Auth/Register";
import Login from "./components/Auth/Login";
import Home from "./router/Home";
import { queryClient } from "./utils/http";
import PrivateRoute from "./router/PrivateRoute";

const router = createBrowserRouter([
{
Expand All @@ -28,6 +33,10 @@ const router = createBrowserRouter([
element: <ProductDetailPage />,
loader: productLoader,
},
{
path: "items/:productId/edit",
element: <EditItemPage />,
},
{
path: "additem",
element: <AddItemPage />,
Expand All @@ -36,16 +45,29 @@ const router = createBrowserRouter([
},
{
path: "signin",
element: <Login />,
element: (
<PrivateRoute>
<Login />
</PrivateRoute>
),
},
{
path: "signup",
element: <Register />,
element: (
<PrivateRoute>
<Register />
</PrivateRoute>
),
},
]);

function App() {
return <RouterProvider router={router} />;
return (
<QueryClientProvider client={queryClient}>
<RouterProvider router={router} />
<ReactQueryDevtools initialIsOpen={false} />
</QueryClientProvider>
);
}

export default App;
8 changes: 4 additions & 4 deletions src/components/AddProduct/@types/ProductForm.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
interface Tag {
id: string;
name: string;
name?: string;
}

interface FormInitialValues {
imgFile: File | null;
title: string;
images: string | string[];
name: string;
description: string;
price: string;
tag: Tag[];
tags: Tag[];
}

type ChangeValueType = (
Expand Down
1 change: 1 addition & 0 deletions src/components/AddProduct/AddProduct.module.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.formContainer {
margin-top: 2.4rem;
min-height: calc(1233px - 70px);
}
.titleContainer {
Expand Down
29 changes: 28 additions & 1 deletion src/components/AddProduct/AddProduct.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,37 @@
import { useNavigate } from "react-router-dom";
import { useMutation } from "@tanstack/react-query";
import Section from "../../ui/Section/Section";
import ProductForm from "./ProductForm";
import { postProduct, queryClient } from "../../utils/http";

interface Tag {
id: string;
name?: string;
}

interface ProductType {
images: string[];
tags: Tag[];
price: string;
description: string;
name: string;
}

export default function AddProduct() {
const navigate = useNavigate();
const { mutate, isPending } = useMutation<ProductType, Error, ProductType>({
mutationFn: (data) => postProduct(data, "POST"),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["products"] });
navigate("/items");
},
});
const handleAddProductSubmit = (formData: ProductType) => {
mutate(formData);
};
return (
<Section>
<ProductForm />
<ProductForm isPending={isPending} onSubmit={handleAddProductSubmit} />
</Section>
);
}
1 change: 1 addition & 0 deletions src/components/AddProduct/ProductForm.module.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.formContainer {
padding-top: 2.4rem;
min-height: calc(1233px - 70px);
}
.titleContainer {
Expand Down
Loading
Loading