카테고리 없음

Til (2023.02.17)

2023. 2. 21. 09:23

친구 삭제 수정

 

저번에 했던 친구 삭제 방식 (친구 요청 하면 uuid로 저장되고 상대방이 수락할때 그 uuid +1로 저장하고 친구 삭제할땐 uuid, uuid+1, uuid.slice모두 삭제하는 방식)은 비효율적인거 같다고 생각되어 수정하게 됐다.

 

우선 친구 요청과 친구 수락모두 각각의 uuid로 저장되게 했다.

  //친구 수락
  const friendAddOnClick = async (i: FriendSearchProps) => {
    let friendAdd = {
      id: uuidv4(),
      myId: myId,
      friendId: i.id,
      myNickName: myNickName,
      friendNickName: i.nickname,
    };

    try {
      //상대와 친구가 돼있는지 검사후 이중 저장 방지
      const response = await axios.get(
        `http://localhost:3001/friend?myId=${myId}&friendId=${i.id}`
      );

      const existingFriend = response.data[0];
      console.log(existingFriend);

      if (existingFriend) {
        console.log("이미 친구");
        return;
      }
      postMutation.mutate(friendAdd);
    } catch (error) {
      console.error(error);
    }
  };
  //찾아온 친구 id 를이용해 두개다 삭제
  const friendDeleteOnClick = (id: any) => {
    const friendDelete = getFriendAuth.filter((i) => {
      return id === i.friendId || id === i.myId;
    });

    DeleteMutation.mutate(friendDelete[0].id);
  };

친구 삭제를 할때는 요청했던 정보, 수락했던 두개를 모두 한번에 삭제해야 했다.

그래서 친구 삭제 mutation을 만든 후 삭제할때 친구db를 가져온 후 filter를 이용해 친구 정보 두개의 id를 모두 찾아 삭제해 줬다.

  // 친구 삭제
  const DeleteMutation = useMutation(
    //넘겨받은 id를 삭제
    (id) => axios.delete(`http://localhost:3001/friend/${id}`),
    {
      onSuccess: () => {
        // 쿼리 무효화
        queryClient.invalidateQueries("friend");
        queryClient.invalidateQueries("friendsearch");
      },
    }
  );

  //찾아온 친구 id 를이용해 두개다 삭제
  const friendDeleteOnClick = (id: any) => {
    const friendDelete = getFriendAuth.filter((i) => {
      return id === i.friendId || id === i.myId;
    });

    DeleteMutation.mutate(friendDelete[0].id);
    DeleteMutation.mutate(friendDelete[1].id);
  };
저작자표시 (새창열림)
prdg
prdg
prdg
신정근 개발일지
prdg
전체
오늘
어제
  • 분류 전체보기 (89)
    • 프로젝트 (3)
    • 프로그래머스 (2)
    • 블록체인 (2)
    • 리액트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그래머스
  • 리액트
  • Props
  • node.js
  • Recoil
  • TODOLIST
  • Blockchain
  • TypeScript
  • 블록체인
  • touchableopacity
  • JavaScript
  • usemutation
  • react
  • 구조분해할당
  • SafeAreaView
  • socket.io
  • ReactQuery
  • Node
  • state
  • ReactNative

최근 댓글

최근 글

hELLO · Designed By 정상우.
prdg
Til (2023.02.17)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.