Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
44ef8e5
Merge branch 'codeit-bootcamp-frontend:main' into main
hanseulhee Oct 10, 2023
cd59399
fix: 머지 후 브랜치 삭제 github action 수정
hanseulhee Oct 10, 2023
6e7d139
env: workflows 폴더로 이동
hanseulhee Oct 10, 2023
7b0a591
Merge pull request #237 from hanseulhee/fix-github-actions
withyj-codeit Nov 6, 2023
e794739
sprint_mission1
dlwnsl Sep 7, 2024
b49d0cb
Merge pull request #26 from dlwnsl/Basic-이준희
baeggmin Sep 10, 2024
471deeb
Add:style2.css
dlwnsl Sep 11, 2024
4563e02
Add:style3.css
dlwnsl Sep 11, 2024
7c1f6b7
refactor:pandamarket 관련 파일 코드 수정
dlwnsl Sep 11, 2024
80f2d52
refactor:login 관련 파일 코드 수정
dlwnsl Sep 12, 2024
6a07cad
refactor:signup 관련 파일 코드 수정
dlwnsl Sep 13, 2024
44f2b72
filename change: index.html from pandamarket
dlwnsl Sep 13, 2024
5fe597f
filename change: index.html from pandamarket of login,signup page
dlwnsl Sep 13, 2024
a0ce78b
padding change of login,signup.html
dlwnsl Sep 13, 2024
7e41b31
refactor: login.html, signup.html width,height 수정
dlwnsl Sep 13, 2024
72b8581
Add: 메인 페이지 미디어쿼리 추가
dlwnsl Sep 13, 2024
41c1d85
Merge pull request #69 from dlwnsl/Basic-이준희-sprint2
baeggmin Sep 19, 2024
30141e2
filename change: style_index.css from style.css
dlwnsl Sep 23, 2024
6278938
filename change: style_login.css from style2.css
dlwnsl Sep 23, 2024
dbe9460
filename change: style_signup.css from style3.css
dlwnsl Sep 23, 2024
c281fa5
css파일명 관련 수정
dlwnsl Sep 23, 2024
ab0861d
login, signup페이지 미디어쿼리 추가
dlwnsl Sep 23, 2024
d095769
Merge pull request #114 from dlwnsl/Basic-이준희-sprint3
baeggmin Sep 23, 2024
e892250
이미지 폴더 수정
dlwnsl Sep 24, 2024
eec31bb
이미지 경로 수정
dlwnsl Sep 24, 2024
c82781e
css파일 경로 수정
dlwnsl Sep 24, 2024
9d199b1
add: common.css
dlwnsl Sep 24, 2024
dc1a352
미디어쿼리 단순화
dlwnsl Sep 24, 2024
7f88366
content 순서 변경
dlwnsl Sep 24, 2024
6391d51
모바일 미디어쿼리 수정
dlwnsl Sep 24, 2024
1b3fdda
태블릿 미디어쿼리 수정
dlwnsl Sep 24, 2024
d30a922
input id추가
dlwnsl Sep 25, 2024
68db486
로그인 페이지 js 동작 구현
dlwnsl Sep 25, 2024
29c3525
회원가입 페이지 js 동작 구현
dlwnsl Sep 25, 2024
9728290
함수 이름 및 버그 수정
dlwnsl Sep 25, 2024
262de13
메타 태그 설정
dlwnsl Sep 26, 2024
ad1b851
메타태그 수정
dlwnsl Sep 26, 2024
dde3e76
눈 아이콘 추가
dlwnsl Sep 27, 2024
6614765
로그인 페이지 eyeIcon 추가
dlwnsl Sep 27, 2024
eace069
eyeIcon hover설정
dlwnsl Sep 27, 2024
b1d41ec
로그인 페이지 로그인 버튼 수정
dlwnsl Sep 27, 2024
8f1b028
메인 페이지 버튼 수정
dlwnsl Sep 27, 2024
1766e00
회원가입 페이지 eyeIcon추가
dlwnsl Sep 28, 2024
e126478
Merge pull request #139 from dlwnsl/Basic-이준희-sprint4
kiJu2 Sep 30, 2024
420520d
mergeMerge branch 'React-이준희' of https://github.com/codeit-bootcamp-f…
dlwnsl Oct 1, 2024
97ae2af
refactor: signup.html eye-icon id수정
dlwnsl Oct 1, 2024
38b7f2c
merge
dlwnsl Oct 1, 2024
80deb40
conflict 해결
dlwnsl Oct 1, 2024
7583849
refator: eye-icon change png->svg
dlwnsl Oct 3, 2024
5bf0ad6
refactor: eye-icon change png->svg
dlwnsl Oct 3, 2024
e0a5453
refactor: change function name validateEmail->isEmail
dlwnsl Oct 3, 2024
eda15e0
refactor: change variable name __Valid -> isValid__
dlwnsl Oct 3, 2024
0f8729f
add: add required attribute
dlwnsl Oct 3, 2024
1aaed80
Rename: move html to /public/views
dlwnsl Oct 4, 2024
32c74a8
Add: items페이지 네비게이션 레이아웃 추가
dlwnsl Oct 4, 2024
7167e3c
Rename: 브랜치명 변경
dlwnsl Oct 5, 2024
a31c6ab
feat: api 호출 및 header추가
dlwnsl Oct 6, 2024
e23947d
Merge pull request #178 from dlwnsl/React-이준희-sprint5
kiJu2 Oct 7, 2024
5777eb7
rename: components 폴더 생성 및 경로 변경
dlwnsl Oct 9, 2024
adec16c
feat: 충돌 수정
dlwnsl Oct 10, 2024
2c79da0
style: 베스트 상품 css파일 추가
dlwnsl Oct 10, 2024
1de63c7
feat: 이미지 링크 추가
dlwnsl Oct 10, 2024
fe7dfd5
style: 전체 상품 css파일 추가
dlwnsl Oct 10, 2024
aa8dfa8
feat: 미디어 쿼리 추가
dlwnsl Oct 10, 2024
81c3038
feat: 페이지네이션 기능 및 스타일 추가
dlwnsl Oct 10, 2024
1e17567
feat: 상품 등록하기 페이지 및 AddItemForm 컴포넌트, hook, fileInput 컴포넌트 추가
dlwnsl Oct 11, 2024
24c4c74
style: 상품 등록하기 페이지 css파일 추가
dlwnsl Oct 11, 2024
1e71149
feat: 상품 등록하기 페이지 미디어쿼리 추가
dlwnsl Oct 11, 2024
5b38da5
feat: Nav 및 인풋 style 수정
dlwnsl Oct 12, 2024
dbe7bcd
Merge pull request #194 from dlwnsl/React-이준희-sprint6
kiJu2 Oct 12, 2024
f3d3ee0
feat: Nav 중첩 레이아웃 적용
dlwnsl Oct 14, 2024
4c39abd
feat: 환경 변수 사용
dlwnsl Oct 14, 2024
9fa3abf
feat: axios 설치 및 적용
dlwnsl Oct 14, 2024
3c48080
refactor: 불필요한 isFormValid 상태 제거 및 코드 간소화
dlwnsl Oct 14, 2024
a9beb6a
refactor: fetchProducts를 useEffect 내부로 이동
dlwnsl Oct 14, 2024
9f696c0
perf: debouncing 적용 및 성능 최적화
dlwnsl Oct 14, 2024
598876d
refactor: isImageUploaded 상태 제거 및 value로 상태 관리
dlwnsl Oct 14, 2024
6aa015f
feat: 상품 상세 정보를 불러오는 API 함수 추가 및 적용
dlwnsl Oct 14, 2024
1a81a29
feat: 모든 아이템에 상품 상세 정보 불러옴
dlwnsl Oct 14, 2024
f94d713
feat: 아이템 상세 정보 컴포넌트 추가
dlwnsl Oct 16, 2024
749e25e
chore: 상세 정보 div 수정 및 누락 정보 추가
dlwnsl Oct 16, 2024
80d346f
fix: item.createdAt이 존재할 경우에만 dateOnly를 설정하도록 수정
dlwnsl Oct 16, 2024
b52d5d0
style: 상세 페이지 정보 css파일 추가
dlwnsl Oct 16, 2024
7f04b11
chore: 상세 정보 카드 min-width 설정
dlwnsl Oct 16, 2024
80a8cad
feat: ItemComment.js 및 css파일 추가
dlwnsl Oct 16, 2024
e594c16
style: 상세 정보 페이지 미디어 쿼리 추가
dlwnsl Oct 17, 2024
c970734
style: css파일 수정
dlwnsl Oct 17, 2024
fea2ce0
style: 메인 페이지 미디어쿼리 수정
dlwnsl Oct 18, 2024
17ed334
style: 드롭다운 버튼 위치 수정
dlwnsl Oct 18, 2024
2add5ec
Merge pull request #229 from dlwnsl/React-이준희-sprint7
kiJu2 Oct 21, 2024
3b7cdd4
remove: .env file from git
dlwnsl Oct 23, 2024
a85c14e
refactor: 레이아웃 수정
dlwnsl Oct 23, 2024
ac04e6a
add: JSDOC 주석 추가
dlwnsl Oct 23, 2024
64939f5
refactor: API 구조 분해 할당으로 간소화
dlwnsl Oct 23, 2024
0695138
refactor: finally 사용으로 setLoading(false) 호출 간소화 및 경고 해결
dlwnsl Oct 23, 2024
e0c5226
refactor: timeAgo 함수를 컴포넌트 외부로 이동
dlwnsl Oct 23, 2024
059c07b
refactor: fetchComments함수를 useEffect 내부에 선언
dlwnsl Oct 23, 2024
32eb0da
refactor: setLoading(true) 호출로 로딩 상태 처리
dlwnsl Oct 23, 2024
1bd98cd
refactor: TypeScript 세팅 및 리팩토링
dlwnsl Nov 14, 2024
43d1980
feat: 댓글 최대 개수 변경 및 사진 업로드 블록 색상 변경
dlwnsl Nov 14, 2024
4152b23
Merge branch 'codeit-bootcamp-frontend:main' into React-이준희-sprint8
dlwnsl Nov 16, 2024
a22d30f
Merge branch 'React-이준희' into React-이준희-sprint8
dlwnsl Nov 16, 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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,5 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*

.env
39 changes: 22 additions & 17 deletions package-lock.json

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

5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,16 @@
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"@types/jest": "^29.5.14",
"@types/node": "^22.9.0",
"@types/react": "^18.3.12",
"@types/react-dom": "^18.3.1",
"axios": "^1.7.7",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.26.2",
"react-scripts": "5.0.1",
"typescript": "^5.6.3",
"web-vitals": "^2.1.4"
},
"scripts": {
Expand Down
23 changes: 23 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import Items from "./pages/Items";
import AddItem from "./pages/AddItem";
import ItemDetailForm from "./components/ItemDetailForm";
import Layout from "./layout";
import { BrowserRouter, Route, Routes } from "react-router-dom";

function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Layout />}>
<Route index element={<Items />} />
<Route path="items" element={<Items />} />
<Route path="items/:productId" element={<ItemDetailForm />} />
<Route path="additem" element={<AddItem />} />
<Route path="*" element={<div>페이지를 찾을 수 없습니다.</div>} />
</Route>
</Routes>
</BrowserRouter>
);
}

export default App;
81 changes: 81 additions & 0 deletions src/api.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import instance from "./axiosInstance";
import {
GetProductCommentsParams,
GetProductsParams,
GetProductsResponse,
ProductDetail,
GetCommentsResponse,
} from "./types";

/**
* 상품 목록을 가져옵니다.
* @param {Object} params - 상품 목록을 필터링할 파라미터 객체
* @param {number} [params.page=1] - 요청할 페이지 번호
* @param {number} [params.pageSize=10] - 한 페이지에 표시할 상품 개수
* @param {string|null} [params.keyword=null] - 검색 키워드
* @returns {Promise<Object>} 상품 목록 데이터를 반환합니다.
* @throws {Error} 정보 불러오기 실패 시 에러를 발생시킵니다.
*/
export async function getProducts(
params: GetProductsParams = {}
): Promise<GetProductsResponse> {
try {
const { data } = await instance.get<GetProductsResponse>("/products", {
params,
});
return data;
} catch (error) {
throw new Error("정보를 불러오는데 실패했습니다.");
}
}

/**
* 특정 상품의 상세 정보를 가져옵니다.
* @param {string} productId - 상품의 ID
* @returns {Promise<Object>} 상품 상세 정보를 반환합니다.
* @throws {Error} 상품 상세 정보 불러오기 실패 시 에러를 발생시킵니다.
*/
export async function getProductDetail(
productId: string
): Promise<ProductDetail> {
try {
const { data } = await instance.get<ProductDetail>(
`/products/${productId}`
);
return data;
} catch (error) {
throw new Error("상품 상세 정보를 불러오는데 실패했습니다.");
}
}

/**
* 특정 상품의 댓글 목록을 가져옵니다.
* @param {string} productId - 상품의 ID
* @param {number} [limit=10] - 가져올 댓글의 개수 (기본값: 10)
* @param {string|null} [cursor=null] - 페이지네이션을 위한 커서 (기본값: null)
* @returns {Promise<Object>} 댓글 데이터를 반환합니다.
* @throws {Error} 댓글 정보 불러오기 실패 시 에러를 발생시킵니다.
*/
export async function getProductComments(
productId: string,
limit: number = 9999,
cursor: string | null = null
): Promise<GetCommentsResponse> {
try {
const params: GetProductCommentsParams = { limit };

if (cursor) {
params.cursor = cursor;
}

const { data } = await instance.get<GetCommentsResponse>(
`/products/${productId}/comments`,
{
params,
}
);
return data;
} catch (error) {
throw new Error("댓글 정보를 불러오는데 실패했습니다.");
}
}
12 changes: 12 additions & 0 deletions src/axiosInstance.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import axios from "axios";

const BASE_URL = process.env.REACT_APP_BASE_URL;

const instance = axios.create({
baseURL: BASE_URL,
headers: {
"Content-Type": "application/json",
},
});

export default instance;
Loading