Skip to content

Commit

Permalink
[Feat] #133 - Register TreeMEmeberMaker API 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
Genesis2010 committed Sep 11, 2024
1 parent 0c7a0e4 commit 76165fa
Show file tree
Hide file tree
Showing 9 changed files with 54 additions and 28 deletions.
8 changes: 4 additions & 4 deletions Treehouse/Treehouse.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,8 @@
3FE944172BD645C300C3A869 /* ReceivedInvitationRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FE944162BD645C300C3A869 /* ReceivedInvitationRowView.swift */; };
3FEC57562C8F0BDD0080DF96 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3FEC57552C8F0BDD0080DF96 /* GoogleService-Info.plist */; };
3FEC575D2C8F0C2B0080DF96 /* Config.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 3FEC575C2C8F0C2B0080DF96 /* Config.xcconfig */; };
3FEC57612C8F23B80080DF96 /* TreeBranchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEC57602C8F23B80080DF96 /* TreeBranchViewModel.swift */; };
3FEC57632C8F28B80080DF96 /* MemberBranchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEC57622C8F28B80080DF96 /* MemberBranchView.swift */; };
3FEC57652C8F484F0080DF96 /* PostRegisterFCMTokenResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEC57642C8F484E0080DF96 /* PostRegisterFCMTokenResponseDTO.swift */; };
3FEC57672C8F48630080DF96 /* PostRegisterPushAgreeResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEC57662C8F48630080DF96 /* PostRegisterPushAgreeResponseDTO.swift */; };
3FEC57692C8F48770080DF96 /* PostRegisterFCMTokenRequestDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEC57682C8F48770080DF96 /* PostRegisterFCMTokenRequestDTO.swift */; };
Expand All @@ -222,8 +224,6 @@
3FEC57732C8F499A0080DF96 /* RegisterPushAgreeResponseEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEC57722C8F499A0080DF96 /* RegisterPushAgreeResponseEntity.swift */; };
3FEC57752C8F49F60080DF96 /* FCMTokenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEC57742C8F49F60080DF96 /* FCMTokenViewModel.swift */; };
3FEC57772C8F4A080080DF96 /* RegisterPushNotiViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEC57762C8F4A080080DF96 /* RegisterPushNotiViewModel.swift */; };
3FEC57612C8F23B80080DF96 /* TreeBranchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEC57602C8F23B80080DF96 /* TreeBranchViewModel.swift */; };
3FEC57632C8F28B80080DF96 /* MemberBranchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEC57622C8F28B80080DF96 /* MemberBranchView.swift */; };
3FEEF75E2C69B27A002CBA53 /* ImageLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEEF75D2C69B27A002CBA53 /* ImageLoader.swift */; };
3FEEF7602C69F7B7002CBA53 /* ReadPageFeedPostUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEEF75F2C69F7B7002CBA53 /* ReadPageFeedPostUseCase.swift */; };
3FEEF7652C6DF7B0002CBA53 /* UINavigationController+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FEEF7642C6DF7B0002CBA53 /* UINavigationController+.swift */; };
Expand Down Expand Up @@ -523,6 +523,8 @@
3FEC57552C8F0BDD0080DF96 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
3FEC575C2C8F0C2B0080DF96 /* Config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = "<group>"; };
3FEC575E2C8F0C760080DF96 /* ci_post_clone.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = ci_post_clone.sh; sourceTree = "<group>"; };
3FEC57602C8F23B80080DF96 /* TreeBranchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TreeBranchViewModel.swift; sourceTree = "<group>"; };
3FEC57622C8F28B80080DF96 /* MemberBranchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemberBranchView.swift; sourceTree = "<group>"; };
3FEC57642C8F484E0080DF96 /* PostRegisterFCMTokenResponseDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostRegisterFCMTokenResponseDTO.swift; sourceTree = "<group>"; };
3FEC57662C8F48630080DF96 /* PostRegisterPushAgreeResponseDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostRegisterPushAgreeResponseDTO.swift; sourceTree = "<group>"; };
3FEC57682C8F48770080DF96 /* PostRegisterFCMTokenRequestDTO.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostRegisterFCMTokenRequestDTO.swift; sourceTree = "<group>"; };
Expand All @@ -533,8 +535,6 @@
3FEC57722C8F499A0080DF96 /* RegisterPushAgreeResponseEntity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegisterPushAgreeResponseEntity.swift; sourceTree = "<group>"; };
3FEC57742C8F49F60080DF96 /* FCMTokenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FCMTokenViewModel.swift; sourceTree = "<group>"; };
3FEC57762C8F4A080080DF96 /* RegisterPushNotiViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegisterPushNotiViewModel.swift; sourceTree = "<group>"; };
3FEC57602C8F23B80080DF96 /* TreeBranchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TreeBranchViewModel.swift; sourceTree = "<group>"; };
3FEC57622C8F28B80080DF96 /* MemberBranchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemberBranchView.swift; sourceTree = "<group>"; };
3FEEF75D2C69B27A002CBA53 /* ImageLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageLoader.swift; sourceTree = "<group>"; };
3FEEF75F2C69F7B7002CBA53 /* ReadPageFeedPostUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadPageFeedPostUseCase.swift; sourceTree = "<group>"; };
3FEEF7642C6DF7B0002CBA53 /* UINavigationController+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UINavigationController+.swift"; sourceTree = "<group>"; };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ final class RegisterRepositoryImpl: RegisterRepositoryProtocol {
}
}

func postRegisterTreeMember(requestDTO: PostRegisterTreeMemberRequestDTO) async -> Result<RegisterTreeMemberResponseEntity, NetworkError> {
func postRegisterTreeMember(registerType: RegisterType, requestDTO: PostRegisterTreeMemberRequestDTO) async -> Result<RegisterTreeMemberResponseEntity, NetworkError> {
do {
let response = try await registerService.postRegisterTreeMember(requestBody: requestDTO)
let response = try await registerService.postRegisterTreeMember(registerType: registerType, requestBody: requestDTO)
return .success(response.toDomain())
} catch let error as NetworkError {
return .failure(error)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation
protocol RegisterRepositoryProtocol {
func postCheckName(userName: String) async throws -> CheckNameResponseEntity
func postRegisterUser(phoneNumber: String, userName: String) async -> Result<RegisterUserResponseEntity, NetworkError>
func postRegisterTreeMember(requestDTO: PostRegisterTreeMemberRequestDTO) async -> Result<RegisterTreeMemberResponseEntity, NetworkError>
func postRegisterTreeMember(registerType: RegisterType, requestDTO: PostRegisterTreeMemberRequestDTO) async -> Result<RegisterTreeMemberResponseEntity, NetworkError>
func postCheckUserPhone(phoneNumber: String) async -> Result<CheckUserPhoneResponseEntity, NetworkError>
func postExistsUserLogin(phoneNumber: String) async -> Result<ExistsUserLoginResponseEntity, NetworkError>
func postRegisterFCMToken(token: String) async -> Result<RegisterFCMTokenResponseEntity, NetworkError>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import Foundation

protocol PostRegisterTreeMemberUseCaseProtocol {
func execute(requestDTO: PostRegisterTreeMemberRequestDTO) async -> Result<RegisterTreeMemberResponseEntity, NetworkError>
func execute(registerType: RegisterType, requestDTO: PostRegisterTreeMemberRequestDTO) async -> Result<RegisterTreeMemberResponseEntity, NetworkError>
}

final class RegisterTreeMemberUseCase: PostRegisterTreeMemberUseCaseProtocol {
Expand All @@ -18,7 +18,7 @@ final class RegisterTreeMemberUseCase: PostRegisterTreeMemberUseCaseProtocol {
self.repository = repository
}

func execute(requestDTO: PostRegisterTreeMemberRequestDTO) async -> Result<RegisterTreeMemberResponseEntity, NetworkError> {
return await repository.postRegisterTreeMember(requestDTO: requestDTO)
func execute(registerType: RegisterType, requestDTO: PostRegisterTreeMemberRequestDTO) async -> Result<RegisterTreeMemberResponseEntity, NetworkError> {
return await repository.postRegisterTreeMember(registerType: registerType, requestDTO: requestDTO)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ final class NetworkServiceManager: NetworkServiceable {

do {
let decodingData = try JSONDecoder().decode(BaseResponse<T>.self, from: data)

print(decodingData.data)
switch httpResponse.statusCode {

case 200:
Expand Down
6 changes: 5 additions & 1 deletion Treehouse/Treehouse/Network/Register/RegisterAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ enum RegisterAPI {
case postCheckUserName(requestBody: PostCheckUserNameRequestDTO)
case postRegisterUser(requestBody: PostRegisterUserRequestDTO)
case postRegisterTreeMember(requestBody: PostRegisterTreeMemberRequestDTO)
case postRegisterTreeMemberMaker(requestBody: PostRegisterTreeMemberRequestDTO)
case postReissueToken(requestBody: PostReissueTokenRequestDTO)
case postCheckUserPhone(requestBody: PostCheckUserPhoneRequestDTO)
case postExistsUserLogin(requestBody: PostExistsUserLoginRequestDTO)
Expand All @@ -25,6 +26,7 @@ extension RegisterAPI: BaseRequest {
case .postCheckUserName: return "users/checkName"
case .postRegisterUser: return "users/register"
case .postRegisterTreeMember: return "members/register"
case .postRegisterTreeMemberMaker: return "founder/register"
case .postReissueToken: return "users/reissue"
case .postCheckUserPhone: return "users/phone"
case .postExistsUserLogin: return "users/login"
Expand All @@ -39,6 +41,7 @@ extension RegisterAPI: BaseRequest {
case .postCheckUserName: return .post
case .postRegisterUser: return .post
case .postRegisterTreeMember: return .post
case .postRegisterTreeMemberMaker: return .post
case .postReissueToken: return .post
case .postCheckUserPhone: return .post
case .postExistsUserLogin: return .post
Expand All @@ -52,7 +55,7 @@ extension RegisterAPI: BaseRequest {
switch self {
case .postCheckUserName, .postRegisterUser, .postCheckUserPhone:
return .noHeader
case .postRegisterTreeMember, .postRegisterFCMToken, .postRegisterPushAgree, .deleteUser:
case .postRegisterTreeMember, .postRegisterTreeMemberMaker, .postRegisterFCMToken, .postRegisterPushAgree, .deleteUser:
return .accessTokenHeader
case .postReissueToken:
return .refreshTokenHeader
Expand All @@ -70,6 +73,7 @@ extension RegisterAPI: BaseRequest {
case .postCheckUserName(requestBody: let requestBody): return requestBody
case .postRegisterUser(requestBody: let requestBody): return requestBody
case .postRegisterTreeMember(requestBody: let requestBody): return requestBody
case .postRegisterTreeMemberMaker(requestBody: let requestBody): return requestBody
case .postReissueToken(requestBody: let requestBody): return requestBody
case .postCheckUserPhone(requestBody: let requestBody): return requestBody
case .postExistsUserLogin(requestBody: let requestBody): return requestBody
Expand Down
29 changes: 22 additions & 7 deletions Treehouse/Treehouse/Network/Register/RegisterService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,29 @@ class RegisterService {
}

/// 트리하우스 멤버 가입 API
func postRegisterTreeMember(requestBody: PostRegisterTreeMemberRequestDTO) async throws -> PostRegisterTreeMemberResponseDTO {

let request = NetworkRequest(requestType: RegisterAPI.postRegisterTreeMember(requestBody: requestBody))

guard let urlRequest = request.request() else {
throw NetworkError.clientError(message: "Request 생성불가")
func postRegisterTreeMember(registerType: RegisterType, requestBody: PostRegisterTreeMemberRequestDTO) async throws -> PostRegisterTreeMemberResponseDTO {

var urlRequest: URLRequest

switch registerType {
case .registerUser:
let request = NetworkRequest(requestType: RegisterAPI.postRegisterTreeMember(requestBody: requestBody))

guard let makeUrlRequest = request.request() else {
throw NetworkError.clientError(message: "Request 생성불가")
}

urlRequest = makeUrlRequest
case .registerTreehouse:
let request = NetworkRequest(requestType: RegisterAPI.postRegisterTreeMemberMaker(requestBody: requestBody))

guard let makeUrlRequest = request.request() else {
throw NetworkError.clientError(message: "Request 생성불가")
}

urlRequest = makeUrlRequest
}

return try await networkServiceManager.performRequest(with: urlRequest, decodingType: PostRegisterTreeMemberResponseDTO.self)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,12 @@ final class CheckUserPhoneViewModel: BaseViewModel {

init(checkUserPhoneUseCase: PostCheckUserPhoneUseCaseProtocol) {
self.checkUserPhoneUseCase = checkUserPhoneUseCase

print("Init CheckUserPhoneViewModel")
}

deinit {
print("Deinit UserPhoneViewModel")
print("Deinit CheckUserPhoneViewModel")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ enum UserAuthentication {
}

enum RegisterType {
case registerUser
case registerTreehouse
case registerUser // 일반적인 회원가입
case registerTreehouse // treehouse 를 만들고 회원가입
}

protocol BaseViewModel: AnyObject {}
Expand Down Expand Up @@ -125,6 +125,8 @@ final class UserSettingViewModel: BaseViewModel {
self.presignedURLUseCase = presignedURLUseCase
self.uploadImageToAWSUseCase = uploadImageToAWSUseCase
self.registerType = registerType

print("Init UserSettingViewModel")
}

deinit {
Expand All @@ -134,13 +136,12 @@ final class UserSettingViewModel: BaseViewModel {
func createUserInfoData() -> UserInfoData? {
guard let userId = userId,
let treehouseId = treehouseId,
let memberName = memberName,
let bio = bio,
let profileImage = accessUrlImage.first else {
let profileImage = accessUrlImage.first,
let treehouseData = createMemberInfoData() else {
return nil
}

let userData = UserInfoData(userId: userId, userName: userName, profileImageUrl: profileImage, treehouses: [treehouseId], treehouseInfo: [])
let userData = UserInfoData(userId: userId, userName: userName, profileImageUrl: profileImage, treehouses: [treehouseId], treehouseInfo: [treehouseData])
return userData
}

Expand Down Expand Up @@ -240,7 +241,9 @@ extension UserSettingViewModel {
return false
}

let result = await registerTreeMemberUseCase.execute(requestDTO: PostRegisterTreeMemberRequestDTO(treehouseId: treehouseId, userName: userName, memberName: memberName, bio: bio, profileImageURL: accessUrlImage.first ?? "" ))
print(registerType, treehouseId, userName, memberName, bio, accessUrlImage.first ?? "")

let result = await registerTreeMemberUseCase.execute(registerType: registerType, requestDTO: PostRegisterTreeMemberRequestDTO(treehouseId: treehouseId, userName: userName, memberName: memberName, bio: bio, profileImageURL: accessUrlImage.first ?? "" ))

switch result {
case .success(let response):
Expand Down Expand Up @@ -395,7 +398,9 @@ extension UserSettingViewModel {

do {
let authResult = try await Auth.auth().signIn(with: credential)
print("인증 성공!")

let user = authResult.user // 인증된 사용자 정보
print("인증 성공! 사용자 ID: \(user.uid)")

await MainActor.run {
self.isCallCehckVerification = true
Expand Down

0 comments on commit 76165fa

Please sign in to comment.