Skip to content

Commit

Permalink
Merge pull request #85 from modern-agile-team/feature/acceptAndRefuse/#…
Browse files Browse the repository at this point in the history
…83

Add(DongGun/ListResponse) : 친구요청 수락, 거절 기능 구현
  • Loading branch information
CBWDG authored Nov 15, 2023
2 parents d8e598b + 9aeca22 commit 3b78193
Show file tree
Hide file tree
Showing 20 changed files with 553 additions and 407 deletions.
77 changes: 30 additions & 47 deletions src/apis/friend-api/friendList.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,30 @@
import instance from '../axiosInstance';
import { Axios, AxiosResponse, AxiosError } from 'axios';

export interface Friend {
data: {
id: number;
requesterId: number; //요청 보낸 자
respondentId: number; // 요청 받은 자
status: string; // 서로의 상태값(수락, 대기, 영구거절 등)
createAt: string; // 상태가 변경된 때.
requester: {
// 요청 보낸 자
name: string;
userImage: {
imageUrl: string;
};
interface FriendData {
id: number;
requesterId: number; //요청 보낸 자
respondentId: number; // 요청 받은 자
status: string; // 서로의 상태값(수락, 대기, 영구거절 등)
createAt: string; // 상태가 변경된 때.
requester: {
// 요청 보낸 자
name: string;
userImage: {
imageUrl: string;
};
respondent: {
// 요청 받은 자
name: string;
userImage: {
imageUrl: string;
};
};
respondent: {
// 요청 받은 자
name: string;
userImage: {
imageUrl: string;
};
}[];
};
}

export interface Friend {
data: FriendData[];
}

const FRIENDS = {
Expand All @@ -33,46 +35,27 @@ const FRIENDS = {
const result: AxiosResponse<Friend[]> = await instance.post(
`${FRIENDS.path}/requests/${friendId}`,
{
friendId: friendId,
params: {
friend_id: friendId,
},
},
);
return result;
},

// 친구 목록 조회 api(get)
async friendList(): Promise<any> {
async getFriendList(): Promise<any> {
const result: AxiosResponse<any> = await instance.get(`${FRIENDS.path}`);
return result.data;
},

// 차단 목록(영구 거절) api(get)
async rejectList(): Promise<AxiosResponse<Friend[]>> {
const result: AxiosResponse<Friend[]> = await instance.get(
`${FRIENDS.path}/responses/reject/permanent`,
);
return result;
},

// 친구 요청 영구 거절 취소 api(delete)
async cancelPermanent(friendId: number): Promise<AxiosResponse<Friend[]>> {
const result: AxiosResponse<Friend[]> = await instance.delete(
`${FRIENDS.path}/reponses/reject/permanent/${friendId}`,
{
data: {
friendId: friendId,
},
},
);
return result;
},

// 친구 삭제 api(delete)
async deleteFriend(friendId: number): Promise<AxiosResponse<Friend[]>> {
const result: AxiosResponse<Friend[]> = await instance.delete(
async deleteFriend(friendId: number): Promise<any> {
const result: AxiosResponse<any> = await instance.delete(
`${FRIENDS.path}/${friendId}`,
{
data: {
friendId: friendId,
params: {
friend_Id: friendId,
},
},
);
Expand Down
8 changes: 0 additions & 8 deletions src/apis/friend-api/friendListDummy.ts

This file was deleted.

47 changes: 47 additions & 0 deletions src/apis/friend-api/friendRejectPermanent.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import instance from '../axiosInstance';
import { AxiosResponse } from 'axios';

interface RejectPermanentFriendData {
id: number;
requesterId: number;
respondentId: number;
status: string;
createdAt: string;
requester: {
name: string;
userImage: {
imageUrl: string;
};
};
}

export interface RejectPermanentFriend {
data: RejectPermanentFriendData[];
}

const PermanentREJECT = {
path: '/friends',

// 영구 거절한 목록 api(get)
async getRejectPermanentFriendList(): Promise<any> {
const result: AxiosResponse<any> = await instance.get(
`${PermanentREJECT.path}/responses/reject/permanent`,
);
return result.data;
},

// 친구 요청 영구 거절 취소 api(delete)
async cancelPermanentRejectFriend(friendId: number): Promise<any> {
const result: AxiosResponse<any> = await instance.delete(
`${PermanentREJECT.path}/responses/reject/permanent/${friendId}`,
{
params: {
friend_Id: friendId,
},
},
);
return result;
},
};

export default PermanentREJECT;
36 changes: 19 additions & 17 deletions src/apis/friend-api/friendRequest.ts
Original file line number Diff line number Diff line change
@@ -1,31 +1,33 @@
import instance from '../axiosInstance';
import { AxiosResponse } from 'axios';

export interface RequestFriend {
data: {
id: number;
requesterId: number;
respondentId: number;
status: string;
createdAt: string;
respondent: {
name: string;
userImage: {
imageUrl: string;
};
interface RequestFriendData {
id: number;
requesterId: number;
respondentId: number;
status: string;
createdAt: string;
respondent: {
name: string;
userImage: {
imageUrl: string;
};
}[];
};
}

export interface RequestFriend {
data: RequestFriendData[];
}

const REQUEST = {
const FriendREQUEST = {
path: '/friends',
// 내가 요청 보낸 친구 목록 api(get)
async requestedList(): Promise<any> {
async getRequestedList(): Promise<any> {
const result: AxiosResponse<any> = await instance.get(
`${REQUEST.path}/requests/pending`,
`${FriendREQUEST.path}/requests/pending`,
);
return result.data;
},
};

export default REQUEST;
export default FriendREQUEST;
60 changes: 33 additions & 27 deletions src/apis/friend-api/friendResponse.ts
Original file line number Diff line number Diff line change
@@ -1,65 +1,71 @@
import instance from '../axiosInstance';
import { AxiosResponse } from 'axios';

export interface ResponseFriend {
data: {
id: number;
requesterId: number;
respondentId: number;
status: string;
createdAt: string;
requester: {
name: string;
userImage: {
imageUrl: string;
};
export interface ResponseFriendData {
id: number;
requesterId: number;
respondentId: number;
status: string;
createdAt: string;
requester: {
name: string;
userImage: {
imageUrl: string;
};
}[];
};
}
export interface ResponseFriend {
data: ResponseFriendData[];
}

const RESPONSE = {
const FriendRESPONSE = {
path: '/friends',
// 내가 요청 받은 친구 목록 api(get)
async responsedList(): Promise<any> {
async getResponsedList(): Promise<any> {
const result: AxiosResponse<any> = await instance.get(
`${RESPONSE.path}/responses/pending`,
`${FriendRESPONSE.path}/responses/pending`,
);
console.log(result);
return result.data;
},

// 친구 요청 수락 api(patch)
async friendAccept(requesterId: number): Promise<any> {
async friendAccept(friendId: number): Promise<any> {
const result: AxiosResponse<any> = await instance.patch(
`${RESPONSE.path}/reponses/accept/${requesterId}`,
`${FriendRESPONSE.path}/responses/accept/${friendId}`,
{
requesterId: requesterId,
params: {
friend_id: friendId,
},
},
);
return result;
},

// 친구 요청 거절 api(patch)
async friendRefuse(friendId: number): Promise<any> {
async friendReject(friendId: number): Promise<any> {
const result: AxiosResponse<any> = await instance.patch(
`${RESPONSE.path}/reponses/reject/${friendId}`,
`${FriendRESPONSE.path}/responses/reject/${friendId}`,
{
friendId: friendId,
params: {
friend_Id: friendId,
},
},
);
return result;
},

// 친구 요청 영구 거절 api(patch)
async friendReject(friendId: number): Promise<any> {
async friendRejectPermanent(friendId: number): Promise<any> {
const result: AxiosResponse<any> = await instance.patch(
`${RESPONSE.path}/reponses/reject/permanent/${friendId}`,
`${FriendRESPONSE.path}/responses/reject/permanent/${friendId}`,
{
friendId: friendId,
params: {
friend_Id: friendId,
},
},
);
return result;
},
};

export default RESPONSE;
export default FriendRESPONSE;
13 changes: 11 additions & 2 deletions src/apis/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,17 @@ const USERS = {

//유저정보조회api
async getUserProfile(): Promise<UserInfo> {
const result: AxiosResponse = await instance.get(`${USERS.path}/my-info`);
return result.data;
try {
const result: AxiosResponse = await instance.get(`${USERS.path}/my-info`);
return result.data;
} catch (error: any) {
if (error.response && error.response.status === 403) {
// 403 에러 발생 시 로그인하지 않은 상태로 간주하고 빈 객체 반환
return {} as UserInfo;
}
// 다른 에러는 그대로 throw
throw error;
}
},
};

Expand Down
Loading

0 comments on commit 3b78193

Please sign in to comment.