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

[FOLLOW] 친구 목록 및 친구 프로필 페이지 구현 #96

Merged
merged 26 commits into from
Sep 18, 2023
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
954f41b
feat: 팔로우 관련 svg 추가
chaeseungyun Aug 8, 2023
e342c67
refactor: 보낸 요청 및 받은 요청의 응답 및 요청 interface 수정
chaeseungyun Aug 8, 2023
fb37541
refactor: Follower 인터페이스에 새로 추가된 값 추가
chaeseungyun Aug 8, 2023
53c76ef
feat: 친구없음, 친구 검색 실패 페이지 추가
chaeseungyun Aug 21, 2023
20e14aa
feat: 최근 활동한 친구 페이지 추가
chaeseungyun Aug 21, 2023
cef8e36
feat: 친구 신청 무한 스크롤 추가
chaeseungyun Aug 21, 2023
a4a6b5c
feat: UI 변경
chaeseungyun Aug 21, 2023
6c9dc9d
feat: 친구 목록 페이지 모바일 반응형 추가
chaeseungyun Aug 21, 2023
aea8968
feat: svg 및 인터페이스 추가
chaeseungyun Aug 21, 2023
1fb30ff
feat: 친구 목록 무한 스크롤 구현
chaeseungyun Aug 22, 2023
6bf8073
feat: follow svg 추가
chaeseungyun Aug 22, 2023
a29306e
feat: 친구 프로필 바둑판 보기 기능 및 무한 스크롤 추가
chaeseungyun Aug 22, 2023
a6454e1
feat: 친구 프로필 페이지 추가
chaeseungyun Aug 22, 2023
1fd1194
feat: 친구 프로필에서 친구 삭제, 추가 기능 구현
chaeseungyun Aug 22, 2023
c9991b6
refactor: 오타 수정
chaeseungyun Aug 22, 2023
48c3f16
refactor: 불필요한 console.log 삭제
chaeseungyun Aug 22, 2023
39a6b98
Merge remote-tracking branch 'origin/develop' into feature/#99
chaeseungyun Aug 22, 2023
b20679c
fix: lint 에러 수정
chaeseungyun Aug 22, 2023
10cff19
fix: 친구 요청 취소 후 다시 검색할 수 있게 변경
chaeseungyun Aug 23, 2023
b0475cc
fix: 오타 수정
chaeseungyun Aug 30, 2023
a10102f
refator: 훅을 폴더로 분리
chaeseungyun Sep 3, 2023
e7a7ad1
fix: 잘못된 계정에 친구 신청한 경우 에러 처리
chaeseungyun Sep 5, 2023
2968a42
fix: 팔로우 상태일때만 프로필에 들어가 볼 수 있도록 변경
chaeseungyun Sep 16, 2023
69f8767
fix: 불필요한 UI 삭제
chaeseungyun Sep 16, 2023
4108e67
feat: 리뷰 개수 출력 기능 추가
chaeseungyun Sep 16, 2023
7fe2167
Merge branch 'develop' into feature/#99
chaeseungyun Sep 16, 2023
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 src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import Notice from 'pages/Notice';
import KakaoLogin from 'pages/Auth/OAuth/KakaoLogin';
import NaverLogin from 'pages/Auth/OAuth/NaverLogin';
import GoogleLogin from 'pages/Auth/OAuth/GoogleLogin';
import FollowProfile from 'pages/Follow/components/FollowProfile';

export default function App(): JSX.Element {
return (
Expand All @@ -40,6 +41,7 @@ export default function App(): JSX.Element {
<Route path="/setting/id-change" element={<IdChange />} />
<Route path="/" element={<DefaultLayout />}>
<Route path="/friend-list" element={<FollowPage />} />
<Route path="/friend-list/:id" element={<FollowProfile />} />
</Route>
<Route path="/withdrawal" element={<Withdrawal />} />
<Route path="/post" element={<Post />} />
Expand Down
69 changes: 58 additions & 11 deletions src/api/follow/entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,33 @@ export interface FollowListParams {
pageSize: number;
}

export interface GetFollowListParams {
export interface GetFollowListResponse {
content: {
account: string;
email: string;
id: number;
nickname: string;
userType: string;
}[];
empty: boolean;
last: boolean;
number: number;
}

export interface SendedOrReceivedFollowParams {
page: number;
pageSize: number;
}

export interface GetFollowListResponse {
export interface SendedOrReceivedFollowResponse {
content: {
id: number;
follower: User;
user: User;
account: string;
}[]
}

export interface CheckSendedFollowParams {
page: number;
pageSize: number;
}[];
empty: boolean;
last: boolean;
number: number;
}

export interface FollowerParams {
Expand All @@ -40,9 +50,46 @@ export interface SearchUsersParams {
}

export interface SearchUsersResponse {
content: FollowerInfo[]
content: FollowerInfo[];
empty: boolean;
last: boolean;
number: number;
}

export interface AcceptFollowParams {
export interface RequestFollowParams {
id: number;
}

export interface AcceptFollowParams extends RequestFollowParams {
}

export interface CancleFollowParams extends RequestFollowParams {
}

export interface RejectFollowParams extends RequestFollowParams {
}

export interface GetFollowReviewResponse {
content: {
name: string;
placeId: string;
photos?: string[];
shopId: number;
category: string;
}[]
empty: boolean;
first: boolean;
last: boolean;
}

export interface GetDetailReviewResponse {
content: {
content: string;
createdAt: string;
id: number;
rate: number;
}[];
empty: boolean;
first: boolean;
last: boolean;
}
37 changes: 23 additions & 14 deletions src/api/follow/index.ts
Original file line number Diff line number Diff line change
@@ -1,32 +1,41 @@
import {
FollowListParams,
GetFollowListParams,
CheckSendedFollowParams,
DeleteFollowerParams,
PostFollowerParams,
SearchUsersParams,
AcceptFollowParams,
GetFollowListResponse,
SearchUsersResponse,
CancleFollowParams,
RejectFollowParams,
SendedOrReceivedFollowResponse,
DeleteFollowerParams,
GetFollowReviewResponse,
GetDetailReviewResponse,
} from './entity';
import followApi from './followApiClient';

export const followList = (param: FollowListParams) => followApi.get(`/follow/followers?${param.cursor}&pageSize=${param.pageSize}`);
export const followList = (pageParam: string) => followApi.get<GetFollowListResponse>(`/follow/followers?pageSize=10&${pageParam}`);

export const getFollowList = (param: GetFollowListParams) => followApi.get<GetFollowListResponse>(`/follow/requests/receive?page=${param.page}&pageSize=${param.pageSize}`);
export const checkReceivedFollow = (pageParam: number) => followApi.get<SendedOrReceivedFollowResponse>(`/follow/requests/receive?page=${pageParam}&pageSize=20`);

export const checkSendedFollow = (param: CheckSendedFollowParams) => followApi.get(`/follow/requests/send?page=${param.page}&pageSize=${param.pageSize}`);
export const checkSendedFollow = (pageParam: number) => followApi.get<SendedOrReceivedFollowResponse>(`/follow/requests/send?page=${pageParam}&pageSize=10`);
chaeseungyun marked this conversation as resolved.
Show resolved Hide resolved

export const requestFollow = (param: PostFollowerParams) => followApi.post('/follow/requests', {
userAccount: param.userAccount,
});

export const deleteFollower = (param: DeleteFollowerParams) => followApi.delete('/follow/follwers', {
data: {
userAccount: param.userAccount,
},
export const acceptFollow = (param: AcceptFollowParams) => followApi.post(`/follow/requests/${param.id}/accept`);

export const searchUsers = (keyword: string, pageParam: string) => followApi.get<SearchUsersResponse>(`/users?keyword=${keyword}&${pageParam}&pageSize=10`);

export const cancelFollow = (param: CancleFollowParams) => followApi.delete(`/follow/requests/${param.id}/cancel`);

export const rejectFollow = (param: RejectFollowParams) => followApi.delete(`/follow/requests/${param.id}/reject`);

export const deleteFollow = (param: DeleteFollowerParams) => followApi.delete('/follow/followers', {
data: { userAccount: param.userAccount },
});

export const acceptFollow = (param: AcceptFollowParams) => followApi.post(`/follow/requests/${param.id}/accept`);
export const recentlyActiveFollow = () => followApi.get<GetFollowListResponse>('/recently-active-followers?pageSize=15');

export const getFollowReview = (id: number, pageParam: string) => followApi.get<GetFollowReviewResponse>(`/review/follower/${id}/shops?size=9&${pageParam}`);

export const searchUsers = (param: SearchUsersParams) => followApi.get<SearchUsersResponse>(`/users?keyword=${param.keyword}`);
export const getDetailReview = (followId: number, placeId: string, pageParam: number) => followApi.get<GetDetailReviewResponse>(`/review/follower/${followId}/shop/${placeId}?${pageParam}`);
3 changes: 3 additions & 0 deletions src/assets/svg/follow/Ellipse.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions src/assets/svg/follow/checkerboard-click.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions src/assets/svg/follow/checkerboard.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions src/assets/svg/follow/list-click.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions src/assets/svg/follow/list.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading