APP-iOS3rd / PJ3T2_Mymory

멋쟁이사자처럼 iOS 앱스쿨 3기 팀 프로젝트
10 stars 3 forks source link

[Refactoring]: 프로필 수정하기 기능을 수정했습니다. #198

Closed Seobe95 closed 7 months ago

Seobe95 commented 7 months ago

PR 가이드라인

PR Checklist

PR 날릴 때 체크 리스트

PR Type

어떤 종류의 PR인가요?

연관되는 issue 정보를 알려주세요

Issue Number: #192

PR 설명하기

  1. 피그마 디자인 최신화
  2. 태훈님 작업과 합치기
  3. Storage에서 이전 프로필사진 삭제
  4. 이름 변경 로직 추가
  5. 프로필 변경(사진, 이름)시 에러처리
  6. 프로필 변경 시 성공, 에러에 대한 Alert 처리

어떻게 작동하나요? code 기반으로 설명해주세요

    func fetchEditProfile(uid: String, imageData: Data?, name: String) async -> String {
        if imageData != nil && self.name != AuthService.shared.currentUser?.name {
            let changeUserNameResult = await editUserName(changeName: name, uid: uid)
            switch changeUserNameResult {
            case .success(_):
                let changeImageResult = await fetchEditProfileImage(imageData: imageData!, uid: uid)
                switch changeImageResult {
                case .success(_):
                    self.isEditionSuccessd = true
                    return "프로필 수정이 완료되었습니다."
                case .failure(let failure):
                    return self.errorHandler(errorType: failure)
                }
            case .failure(let failure):
                return self.errorHandler(errorType: failure)
            }
        } else if let profileImage = imageData {
            let changeImageResult = await fetchEditProfileImage(imageData: profileImage, uid: uid)
            switch changeImageResult {
            case .success(_):
                self.isEditionSuccessd = true
                return "프로필 사진 변경이 완료되었습니다."
            case .failure(let failure):
                return self.errorHandler(errorType: failure)
            }
        } else {
            let changeUserNameResult = await editUserName(changeName: name, uid: uid)
            switch changeUserNameResult {
            case .success(_):
                self.isEditionSuccessd = true
                return "이름 변경이 완료되었습니다."
            case .failure(let failure):
                return errorHandler(errorType: failure)
            }
        }
    }

    private func errorHandler(errorType: ProfileEditErrorType) -> String {
        switch errorType {
        case .changeUserName:
            return "이름을 변경하는데 실패했습니다."
        case .uploadUserProfileImage:
            return "프로필 사진 업로드에 실패했습니다."
        case .updateProfileImage:
            return "프로필 사진 변경에 실패했습니다."
        case .deleteUserProfileImage:
            print("이전 프로필사진 삭제 실패")
            return "프로필 사진 변경에 실패했습니다."
        case .invalidImageData:
            return "올바른 형식의 이미지가 아닙니다."
        case .imageCompressionFail:
            print("이미지 압축 실패")
            return "프로필 사진 업데이트에 실패했습니다."
        }
    }

가능하다면 추가해주세요

변경 사항 스크린샷 혹은 화면 녹화

마이페이지 에러로 인하여 추후 수정하겠습니다.

기타 언급해야 할 사항들