diff --git a/Poppool/DataLayer/Data/Data.xcodeproj/project.pbxproj b/Poppool/DataLayer/Data/Data.xcodeproj/project.pbxproj index 84c04464..dfaf69fc 100644 --- a/Poppool/DataLayer/Data/Data.xcodeproj/project.pbxproj +++ b/Poppool/DataLayer/Data/Data.xcodeproj/project.pbxproj @@ -8,6 +8,8 @@ /* Begin PBXBuildFile section */ 0522C1DB2DB67C6100B141FF /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 0522C1DA2DB67C6100B141FF /* RxSwift */; }; + 05BBA73A2DB75A320047A061 /* KakaoSDKAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 05BBA7392DB75A320047A061 /* KakaoSDKAuth */; }; + 05BBA73C2DB75A320047A061 /* KakaoSDKUser in Frameworks */ = {isa = PBXBuildFile; productRef = 05BBA73B2DB75A320047A061 /* KakaoSDKUser */; }; 05BDD3DC2DB66EB500C1E192 /* Alamofire in Frameworks */ = {isa = PBXBuildFile; productRef = 05BDD3DB2DB66EB500C1E192 /* Alamofire */; }; 05C1D6172DB53A5600508FFD /* DomainInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05C1D6152DB53A5600508FFD /* DomainInterface.framework */; }; 05C1D6192DB53A5600508FFD /* Infrastructure.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05C1D6162DB53A5600508FFD /* Infrastructure.framework */; }; @@ -87,11 +89,16 @@ Network/Interceptor/TokenInterceptor.swift, Network/Provider/Provider.swift, Network/Provider/ProviderImpl.swift, + Network/Service/AppleLoginService.swift, + Network/Service/AuthServiceable.swift, + Network/Service/KakaoLoginService.swift, Network/Service/PreSignedService.swift, RepositoryImpl/AdminRepositoryImpl.swift, + RepositoryImpl/AppleLoginRepositoryImpl.swift, RepositoryImpl/AuthAPIRepositoryImpl.swift, RepositoryImpl/CommentAPIRepositoryImpl.swift, RepositoryImpl/HomeAPIRepositoryImpl.swift, + RepositoryImpl/KakaoLoginRepositoryImpl.swift, RepositoryImpl/MapDirectionRepositoryImpl.swift, RepositoryImpl/MapRepositoryImpl.swift, RepositoryImpl/PopUpAPIRepositoryImpl.swift, @@ -121,8 +128,10 @@ files = ( 05BDD3DC2DB66EB500C1E192 /* Alamofire in Frameworks */, 05C1D6172DB53A5600508FFD /* DomainInterface.framework in Frameworks */, + 05BBA73C2DB75A320047A061 /* KakaoSDKUser in Frameworks */, 0522C1DB2DB67C6100B141FF /* RxSwift in Frameworks */, 05C1D6192DB53A5600508FFD /* Infrastructure.framework in Frameworks */, + 05BBA73A2DB75A320047A061 /* KakaoSDKAuth in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -185,6 +194,8 @@ packageProductDependencies = ( 05BDD3DB2DB66EB500C1E192 /* Alamofire */, 0522C1DA2DB67C6100B141FF /* RxSwift */, + 05BBA7392DB75A320047A061 /* KakaoSDKAuth */, + 05BBA73B2DB75A320047A061 /* KakaoSDKUser */, ); productName = Data; productReference = 058CC8DC2DB5376A0084221A /* Data.framework */; @@ -217,6 +228,7 @@ packageReferences = ( 08B2A3532DB66B1D00E57EFA /* XCRemoteSwiftPackageReference "Alamofire" */, 05BDD5DA2DB6786900C1E192 /* XCRemoteSwiftPackageReference "RxSwift" */, + 05BBA7382DB75A320047A061 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */, ); preferredProjectObjectVersion = 77; productRefGroup = 058CC8DD2DB5376A0084221A /* Products */; @@ -464,6 +476,14 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ + 05BBA7382DB75A320047A061 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/kakao/kakao-ios-sdk"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.24.1; + }; + }; 05BDD5DA2DB6786900C1E192 /* XCRemoteSwiftPackageReference "RxSwift" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/ReactiveX/RxSwift"; @@ -488,6 +508,16 @@ package = 05BDD5DA2DB6786900C1E192 /* XCRemoteSwiftPackageReference "RxSwift" */; productName = RxSwift; }; + 05BBA7392DB75A320047A061 /* KakaoSDKAuth */ = { + isa = XCSwiftPackageProductDependency; + package = 05BBA7382DB75A320047A061 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; + productName = KakaoSDKAuth; + }; + 05BBA73B2DB75A320047A061 /* KakaoSDKUser */ = { + isa = XCSwiftPackageProductDependency; + package = 05BBA7382DB75A320047A061 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; + productName = KakaoSDKUser; + }; 05BDD3DB2DB66EB500C1E192 /* Alamofire */ = { isa = XCSwiftPackageProductDependency; package = 08B2A3532DB66B1D00E57EFA /* XCRemoteSwiftPackageReference "Alamofire" */; diff --git a/Poppool/PresentationLayer/Presentation/Presentation/Utills/Service/AppleLoginService.swift b/Poppool/DataLayer/Data/Data/Network/Service/AppleLoginService.swift similarity index 100% rename from Poppool/PresentationLayer/Presentation/Presentation/Utills/Service/AppleLoginService.swift rename to Poppool/DataLayer/Data/Data/Network/Service/AppleLoginService.swift diff --git a/Poppool/PresentationLayer/Presentation/Presentation/Utills/Service/AuthServiceable.swift b/Poppool/DataLayer/Data/Data/Network/Service/AuthServiceable.swift similarity index 100% rename from Poppool/PresentationLayer/Presentation/Presentation/Utills/Service/AuthServiceable.swift rename to Poppool/DataLayer/Data/Data/Network/Service/AuthServiceable.swift diff --git a/Poppool/PresentationLayer/Presentation/Presentation/Utills/Service/KakaoLoginService.swift b/Poppool/DataLayer/Data/Data/Network/Service/KakaoLoginService.swift similarity index 100% rename from Poppool/PresentationLayer/Presentation/Presentation/Utills/Service/KakaoLoginService.swift rename to Poppool/DataLayer/Data/Data/Network/Service/KakaoLoginService.swift diff --git a/Poppool/DataLayer/Data/Data/RepositoryImpl/AppleLoginRepositoryImpl.swift b/Poppool/DataLayer/Data/Data/RepositoryImpl/AppleLoginRepositoryImpl.swift new file mode 100644 index 00000000..8e306c22 --- /dev/null +++ b/Poppool/DataLayer/Data/Data/RepositoryImpl/AppleLoginRepositoryImpl.swift @@ -0,0 +1,15 @@ +import Foundation + +import DomainInterface + +import RxSwift + +public class AppleLoginRepositoryImpl: AppleLoginRepository { + private let service = AppleLoginService() + + public init() { } + + public func fetchUserCredential() -> Observable { + return service.fetchUserCredential() + } +} diff --git a/Poppool/DataLayer/Data/Data/RepositoryImpl/KakaoLoginRepositoryImpl.swift b/Poppool/DataLayer/Data/Data/RepositoryImpl/KakaoLoginRepositoryImpl.swift new file mode 100644 index 00000000..86145f69 --- /dev/null +++ b/Poppool/DataLayer/Data/Data/RepositoryImpl/KakaoLoginRepositoryImpl.swift @@ -0,0 +1,15 @@ +import Foundation + +import DomainInterface + +import RxSwift + +public class KakaoLoginRepositoryImpl: KakaoLoginRepository { + let service = KakaoLoginService() + + public init() { } + + public func fetchUserCredential() -> Observable { + return service.fetchUserCredential() + } +} diff --git a/Poppool/DomainLayer/Domain/Domain/UseCaseImpl/AppleLoginUseCaseImpl.swift b/Poppool/DomainLayer/Domain/Domain/UseCaseImpl/AppleLoginUseCaseImpl.swift new file mode 100644 index 00000000..2f0e4f9f --- /dev/null +++ b/Poppool/DomainLayer/Domain/Domain/UseCaseImpl/AppleLoginUseCaseImpl.swift @@ -0,0 +1,17 @@ +import Foundation + +import DomainInterface + +import RxSwift + +public class AppleLoginUseCaseImpl: AppleLoginUseCase { + private let repository: AppleLoginRepository + + public init(repository: AppleLoginRepository) { + self.repository = repository + } + + public func fetchUserCredential() -> Observable { + return repository.fetchUserCredential() + } +} diff --git a/Poppool/DomainLayer/Domain/Domain/UseCaseImpl/KakaoLoginUseCaseImpl.swift b/Poppool/DomainLayer/Domain/Domain/UseCaseImpl/KakaoLoginUseCaseImpl.swift new file mode 100644 index 00000000..261dc3a9 --- /dev/null +++ b/Poppool/DomainLayer/Domain/Domain/UseCaseImpl/KakaoLoginUseCaseImpl.swift @@ -0,0 +1,17 @@ +import Foundation + +import DomainInterface + +import RxSwift + +public class KakaoLoginUseCaseImpl: KakaoLoginUseCase { + private let repository: KakaoLoginRepository + + public init(repository: KakaoLoginRepository) { + self.repository = repository + } + + public func fetchUserCredential() -> Observable { + return repository.fetchUserCredential() + } +} diff --git a/Poppool/DomainLayer/Domain/DomainInterface/Repository/AppleLoginRepository.swift b/Poppool/DomainLayer/Domain/DomainInterface/Repository/AppleLoginRepository.swift new file mode 100644 index 00000000..6ba5676b --- /dev/null +++ b/Poppool/DomainLayer/Domain/DomainInterface/Repository/AppleLoginRepository.swift @@ -0,0 +1,7 @@ +import Foundation + +import RxSwift + +public protocol AppleLoginRepository { + func fetchUserCredential() -> Observable +} diff --git a/Poppool/DomainLayer/Domain/DomainInterface/Repository/KakaoLoginRepository.swift b/Poppool/DomainLayer/Domain/DomainInterface/Repository/KakaoLoginRepository.swift new file mode 100644 index 00000000..4be6e2ca --- /dev/null +++ b/Poppool/DomainLayer/Domain/DomainInterface/Repository/KakaoLoginRepository.swift @@ -0,0 +1,7 @@ +import Foundation + +import RxSwift + +public protocol KakaoLoginRepository { + func fetchUserCredential() -> Observable +} diff --git a/Poppool/DomainLayer/Domain/DomainInterface/UseCase/AppleLoginUseCase.swift b/Poppool/DomainLayer/Domain/DomainInterface/UseCase/AppleLoginUseCase.swift new file mode 100644 index 00000000..8841534c --- /dev/null +++ b/Poppool/DomainLayer/Domain/DomainInterface/UseCase/AppleLoginUseCase.swift @@ -0,0 +1,7 @@ +import Foundation + +import RxSwift + +public protocol AppleLoginUseCase { + func fetchUserCredential() -> Observable +} diff --git a/Poppool/DomainLayer/Domain/DomainInterface/UseCase/KakaoLoginUseCase.swift b/Poppool/DomainLayer/Domain/DomainInterface/UseCase/KakaoLoginUseCase.swift new file mode 100644 index 00000000..22e4e65a --- /dev/null +++ b/Poppool/DomainLayer/Domain/DomainInterface/UseCase/KakaoLoginUseCase.swift @@ -0,0 +1,7 @@ +import Foundation + +import RxSwift + +public protocol KakaoLoginUseCase { + func fetchUserCredential() -> Observable +} diff --git a/Poppool/Poppool.xcodeproj/project.pbxproj b/Poppool/Poppool.xcodeproj/project.pbxproj index 3970791e..db866640 100644 --- a/Poppool/Poppool.xcodeproj/project.pbxproj +++ b/Poppool/Poppool.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 0522C1D92DB67C5900B141FF /* RxSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 0522C1D82DB67C5900B141FF /* RxSwift */; }; 0522C3C62DB67D7800B141FF /* RxGesture in Frameworks */ = {isa = PBXBuildFile; productRef = 0522C3C52DB67D7800B141FF /* RxGesture */; }; + 05BBA73E2DB75DA60047A061 /* KakaoSDKUser in Frameworks */ = {isa = PBXBuildFile; productRef = 05BBA73D2DB75DA60047A061 /* KakaoSDKUser */; }; 05BDD3D62DB66E1700C1E192 /* DomainInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05BDD3D52DB66E1700C1E192 /* DomainInterface.framework */; }; 05BDD3D72DB66E1700C1E192 /* DomainInterface.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 05BDD3D52DB66E1700C1E192 /* DomainInterface.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 05C1D60B2DB53A4900508FFD /* Data.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05C1D6072DB53A4900508FFD /* Data.framework */; }; @@ -21,7 +22,6 @@ 05C1D6122DB53A4900508FFD /* Presentation.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 05C1D60A2DB53A4900508FFD /* Presentation.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 4E15142A2D99480200DFD08F /* NMapsMap in Frameworks */ = {isa = PBXBuildFile; productRef = 4E1514292D99480200DFD08F /* NMapsMap */; }; 4E15142E2D994A3A00DFD08F /* KakaoSDKAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 4E15142D2D994A3A00DFD08F /* KakaoSDKAuth */; }; - 4E1514302D994A3A00DFD08F /* KakaoSDKCommon in Frameworks */ = {isa = PBXBuildFile; productRef = 4E15142F2D994A3A00DFD08F /* KakaoSDKCommon */; }; 4EE360FD2D91876300D2441D /* NMapsMap in Frameworks */ = {isa = PBXBuildFile; productRef = 4EE360FC2D91876300D2441D /* NMapsMap */; }; /* End PBXBuildFile section */ @@ -89,9 +89,9 @@ 0522C1D92DB67C5900B141FF /* RxSwift in Frameworks */, 4E15142E2D994A3A00DFD08F /* KakaoSDKAuth in Frameworks */, 05C1D60D2DB53A4900508FFD /* Domain.framework in Frameworks */, - 4E1514302D994A3A00DFD08F /* KakaoSDKCommon in Frameworks */, 05C1D6112DB53A4900508FFD /* Presentation.framework in Frameworks */, 05C1D60B2DB53A4900508FFD /* Data.framework in Frameworks */, + 05BBA73E2DB75DA60047A061 /* KakaoSDKUser in Frameworks */, 0522C3C62DB67D7800B141FF /* RxGesture in Frameworks */, 4EE360FD2D91876300D2441D /* NMapsMap in Frameworks */, 4E15142A2D99480200DFD08F /* NMapsMap in Frameworks */, @@ -155,9 +155,9 @@ packageProductDependencies = ( 4E1514292D99480200DFD08F /* NMapsMap */, 4E15142D2D994A3A00DFD08F /* KakaoSDKAuth */, - 4E15142F2D994A3A00DFD08F /* KakaoSDKCommon */, 0522C1D82DB67C5900B141FF /* RxSwift */, 0522C3C52DB67D7800B141FF /* RxGesture */, + 05BBA73D2DB75DA60047A061 /* KakaoSDKUser */, ); productName = Poppool; productReference = BDCA41BD2CF35AC0005EECF6 /* Poppool.app */; @@ -545,6 +545,11 @@ package = 0522C3C42DB67D7800B141FF /* XCRemoteSwiftPackageReference "RxGesture" */; productName = RxGesture; }; + 05BBA73D2DB75DA60047A061 /* KakaoSDKUser */ = { + isa = XCSwiftPackageProductDependency; + package = 08F403312D884F4D00BFA61A /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; + productName = KakaoSDKUser; + }; 4E1514292D99480200DFD08F /* NMapsMap */ = { isa = XCSwiftPackageProductDependency; package = 4E1514282D99480200DFD08F /* XCRemoteSwiftPackageReference "SPM-NMapsMap" */; @@ -554,10 +559,6 @@ isa = XCSwiftPackageProductDependency; productName = KakaoSDKAuth; }; - 4E15142F2D994A3A00DFD08F /* KakaoSDKCommon */ = { - isa = XCSwiftPackageProductDependency; - productName = KakaoSDKCommon; - }; 4EE360FC2D91876300D2441D /* NMapsMap */ = { isa = XCSwiftPackageProductDependency; package = 4EE360FB2D91876300D2441D /* XCRemoteSwiftPackageReference "SPM-NMapsMap" */; diff --git a/Poppool/Poppool.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Poppool/Poppool.xcworkspace/xcshareddata/swiftpm/Package.resolved index 069cbc12..7bcd7a79 100644 --- a/Poppool/Poppool.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Poppool/Poppool.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "bb8b8add80965de3fd56f4bb28fdba3b8a176e1362ab3ddd0bb3dcc27bc6f621", + "originHash" : "e3308f4d8d004a111784c1f182de9af75f8c85dd7807e55541802130c4c227fb", "pins" : [ { "identity" : "alamofire", @@ -24,8 +24,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/kakao/kakao-ios-sdk.git", "state" : { - "revision" : "bfe2fe42f730ccfe59e85f6e9eda2f4578e9a307", - "version" : "2.24.0" + "revision" : "2c780b70d4197be3f72deee2fd82ea3e3b767007", + "version" : "2.24.1" } }, { diff --git a/Poppool/Poppool/Application/AppDelegate.swift b/Poppool/Poppool/Application/AppDelegate.swift index f7f91de9..46c60253 100644 --- a/Poppool/Poppool/Application/AppDelegate.swift +++ b/Poppool/Poppool/Application/AppDelegate.swift @@ -52,6 +52,8 @@ extension AppDelegate { DIContainer.register(SignUpRepository.self) { return SignUpRepositoryImpl(provider: provider) } DIContainer.register(MapDirectionRepository.self) { return MapDirectionRepositoryImpl(provider: provider) } DIContainer.register(PreSignedRepository.self) { return PreSignedRepositoryImpl() } + DIContainer.register(KakaoLoginRepository.self) { return KakaoLoginRepositoryImpl() } + DIContainer.register(AppleLoginRepository.self) { return AppleLoginRepositoryImpl() } // MARK: Resolve repository @Dependency var mapRepository: MapRepository @@ -63,6 +65,8 @@ extension AppDelegate { @Dependency var authAPIRepository: AuthAPIRepository @Dependency var signUpRepository: SignUpRepository @Dependency var preSignedRepository: PreSignedRepository + @Dependency var kakaoLoginRepository: KakaoLoginRepository + @Dependency var appleLoginRepository: AppleLoginRepository // MARK: Register UseCase DIContainer.register(MapUseCase.self) { return MapUseCaseImpl(repository: mapRepository) } @@ -74,5 +78,7 @@ extension AppDelegate { DIContainer.register(AuthAPIUseCase.self) { return AuthAPIUseCaseImpl(repository: authAPIRepository) } DIContainer.register(SignUpAPIUseCase.self) { return SignUpAPIUseCaseImpl(repository: signUpRepository) } DIContainer.register(PreSignedUseCase.self) { return PreSignedUseCaseImpl(repository: preSignedRepository) } + DIContainer.register(KakaoLoginUseCase.self) { return KakaoLoginUseCaseImpl(repository: kakaoLoginRepository) } + DIContainer.register(AppleLoginUseCase.self) { return AppleLoginUseCaseImpl(repository: appleLoginRepository) } } } diff --git a/Poppool/PresentationLayer/Presentation/Presentation.xcodeproj/project.pbxproj b/Poppool/PresentationLayer/Presentation/Presentation.xcodeproj/project.pbxproj index f8acaeec..d67c1f31 100644 --- a/Poppool/PresentationLayer/Presentation/Presentation.xcodeproj/project.pbxproj +++ b/Poppool/PresentationLayer/Presentation/Presentation.xcodeproj/project.pbxproj @@ -14,8 +14,6 @@ 05BDD5CF2DB6770300C1E192 /* Lottie in Frameworks */ = {isa = PBXBuildFile; productRef = 05BDD5CE2DB6770300C1E192 /* Lottie */; }; 05C1D62C2DB53A8200508FFD /* DomainInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05C1D62A2DB53A8200508FFD /* DomainInterface.framework */; }; 05C1D62E2DB53A8200508FFD /* Infrastructure.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05C1D62B2DB53A8200508FFD /* Infrastructure.framework */; }; - 05EC93CF2DB64C6F00771CB3 /* KakaoSDKAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 05EC93CE2DB64C6F00771CB3 /* KakaoSDKAuth */; }; - 05EC93D12DB64C6F00771CB3 /* KakaoSDKUser in Frameworks */ = {isa = PBXBuildFile; productRef = 05EC93D02DB64C6F00771CB3 /* KakaoSDKUser */; }; 05EC93D32DB6536200771CB3 /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = 05EC93D22DB6536200771CB3 /* RxCocoa */; }; 08B2A3582DB66B4100E57EFA /* RxKeyboard in Frameworks */ = {isa = PBXBuildFile; productRef = 08B2A3572DB66B4100E57EFA /* RxKeyboard */; }; 08B2A35B2DB66B5A00E57EFA /* FloatingPanel in Frameworks */ = {isa = PBXBuildFile; productRef = 08B2A35A2DB66B5A00E57EFA /* FloatingPanel */; }; @@ -69,11 +67,9 @@ 0522C1E12DB67C8300B141FF /* RxSwift in Frameworks */, 05C1D62E2DB53A8200508FFD /* Infrastructure.framework in Frameworks */, 05125BA12DB6275C001342A2 /* PanModal in Frameworks */, - 05EC93CF2DB64C6F00771CB3 /* KakaoSDKAuth in Frameworks */, 08B2A3642DB66BBC00E57EFA /* Tabman in Frameworks */, 05EC93D32DB6536200771CB3 /* RxCocoa in Frameworks */, 08B2A35E2DB66B8600E57EFA /* RxDataSources in Frameworks */, - 05EC93D12DB64C6F00771CB3 /* KakaoSDKUser in Frameworks */, 08B2A3582DB66B4100E57EFA /* RxKeyboard in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -141,8 +137,6 @@ packageProductDependencies = ( 05125B972DB626E3001342A2 /* ReactorKit */, 05125BA02DB6275C001342A2 /* PanModal */, - 05EC93CE2DB64C6F00771CB3 /* KakaoSDKAuth */, - 05EC93D02DB64C6F00771CB3 /* KakaoSDKUser */, 05EC93D22DB6536200771CB3 /* RxCocoa */, 08B2A3572DB66B4100E57EFA /* RxKeyboard */, 08B2A35A2DB66B5A00E57EFA /* FloatingPanel */, @@ -188,7 +182,6 @@ 05125B962DB626E3001342A2 /* XCRemoteSwiftPackageReference "ReactorKit" */, 05125B992DB626ED001342A2 /* XCRemoteSwiftPackageReference "SnapKit" */, 05125B9F2DB6275C001342A2 /* XCRemoteSwiftPackageReference "PanModal" */, - 05EC93CD2DB64C6F00771CB3 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */, 08B2A3562DB66B4100E57EFA /* XCRemoteSwiftPackageReference "RxKeyboard" */, 08B2A3592DB66B5A00E57EFA /* XCRemoteSwiftPackageReference "FloatingPanel" */, 08B2A35C2DB66B8600E57EFA /* XCRemoteSwiftPackageReference "RxDataSources" */, @@ -484,14 +477,6 @@ minimumVersion = 4.5.1; }; }; - 05EC93CD2DB64C6F00771CB3 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/kakao/kakao-ios-sdk"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 2.24.0; - }; - }; 08B2A3562DB66B4100E57EFA /* XCRemoteSwiftPackageReference "RxKeyboard" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/RxSwiftCommunity/RxKeyboard"; @@ -576,16 +561,6 @@ package = 05BDD5CD2DB6770300C1E192 /* XCRemoteSwiftPackageReference "lottie-ios" */; productName = Lottie; }; - 05EC93CE2DB64C6F00771CB3 /* KakaoSDKAuth */ = { - isa = XCSwiftPackageProductDependency; - package = 05EC93CD2DB64C6F00771CB3 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; - productName = KakaoSDKAuth; - }; - 05EC93D02DB64C6F00771CB3 /* KakaoSDKUser */ = { - isa = XCSwiftPackageProductDependency; - package = 05EC93CD2DB64C6F00771CB3 /* XCRemoteSwiftPackageReference "kakao-ios-sdk" */; - productName = KakaoSDKUser; - }; 05EC93D22DB6536200771CB3 /* RxCocoa */ = { isa = XCSwiftPackageProductDependency; package = 05125B932DB62295001342A2 /* XCRemoteSwiftPackageReference "RxSwift" */; diff --git a/Poppool/PresentationLayer/Presentation/Presentation/Scene/Detail/DetailReactor.swift b/Poppool/PresentationLayer/Presentation/Presentation/Scene/Detail/DetailReactor.swift index f54b4f78..43b3121c 100644 --- a/Poppool/PresentationLayer/Presentation/Presentation/Scene/Detail/DetailReactor.swift +++ b/Poppool/PresentationLayer/Presentation/Presentation/Scene/Detail/DetailReactor.swift @@ -168,7 +168,9 @@ final class DetailReactor: Reactor { } else { let loginController = SubLoginController() loginController.reactor = SubLoginReactor( - authAPIUseCase: DIContainer.resolve(AuthAPIUseCase.self) + authAPIUseCase: DIContainer.resolve(AuthAPIUseCase.self), + kakaoLoginUseCase: DIContainer.resolve(KakaoLoginUseCase.self), + appleLoginUseCase: DIContainer.resolve(AppleLoginUseCase.self) ) let nextController = UINavigationController(rootViewController: loginController) nextController.modalPresentationStyle = .fullScreen @@ -206,7 +208,9 @@ final class DetailReactor: Reactor { } else { let loginController = SubLoginController() loginController.reactor = SubLoginReactor( - authAPIUseCase: DIContainer.resolve(AuthAPIUseCase.self) + authAPIUseCase: DIContainer.resolve(AuthAPIUseCase.self), + kakaoLoginUseCase: DIContainer.resolve(KakaoLoginUseCase.self), + appleLoginUseCase: DIContainer.resolve(AppleLoginUseCase.self) ) let nextController = UINavigationController(rootViewController: loginController) nextController.modalPresentationStyle = .fullScreen @@ -243,7 +247,9 @@ final class DetailReactor: Reactor { case .moveToLoginScene(let controller): let loginController = SubLoginController() loginController.reactor = SubLoginReactor( - authAPIUseCase: DIContainer.resolve(AuthAPIUseCase.self) + authAPIUseCase: DIContainer.resolve(AuthAPIUseCase.self), + kakaoLoginUseCase: DIContainer.resolve(KakaoLoginUseCase.self), + appleLoginUseCase: DIContainer.resolve(AppleLoginUseCase.self) ) let nextController = UINavigationController(rootViewController: loginController) nextController.modalPresentationStyle = .fullScreen diff --git a/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Main/LoginController.swift b/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Main/LoginController.swift index df5d00de..b8824c0d 100644 --- a/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Main/LoginController.swift +++ b/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Main/LoginController.swift @@ -59,12 +59,6 @@ private extension LoginController { // MARK: - Methods extension LoginController { func bind(reactor: Reactor) { - - rx.viewWillAppear - .map { Reactor.Action.viewWillAppear } - .bind(to: reactor.action) - .disposed(by: disposeBag) - mainView.guestButton.rx.tap .withUnretained(self) .map { (owner, _) in diff --git a/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Main/LoginReactor.swift b/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Main/LoginReactor.swift index 32b3fe8e..e4c22d6e 100644 --- a/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Main/LoginReactor.swift +++ b/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Main/LoginReactor.swift @@ -12,7 +12,6 @@ final class LoginReactor: Reactor { case kakaoButtonTapped(controller: BaseViewController) case appleButtonTapped(controller: BaseViewController) case guestButtonTapped(controller: BaseViewController) - case viewWillAppear case inquiryButtonTapped(controller: BaseViewController) } @@ -20,7 +19,6 @@ final class LoginReactor: Reactor { case moveToSignUpScene(controller: BaseViewController) case moveToHomeScene(controller: BaseViewController) case loadView - case resetService case moveToInquiryScene(controller: BaseViewController) } @@ -34,17 +32,22 @@ final class LoginReactor: Reactor { private var authrizationCode: String? - private let kakaoLoginService = KakaoLoginService() - private var appleLoginService = AppleLoginService() private let authAPIUseCase: AuthAPIUseCase + private let kakaoLoginUseCase: KakaoLoginUseCase + private let appleLoginUseCase: AppleLoginUseCase + @Dependency private var keyChainService: KeyChainService let userDefaultService = UserDefaultService() // MARK: - init init( - authAPIUseCase: AuthAPIUseCase + authAPIUseCase: AuthAPIUseCase, + kakaoLoginUseCase: KakaoLoginUseCase, + appleLoginUseCase: AppleLoginUseCase ) { self.authAPIUseCase = authAPIUseCase + self.kakaoLoginUseCase = kakaoLoginUseCase + self.appleLoginUseCase = appleLoginUseCase self.initialState = State() } @@ -59,8 +62,6 @@ final class LoginReactor: Reactor { _ = keyChainService.deleteToken(type: .accessToken) _ = keyChainService.deleteToken(type: .refreshToken) return Observable.just(.moveToHomeScene(controller: controller)) - case .viewWillAppear: - return Observable.just(.resetService) case .inquiryButtonTapped(let controller): return Observable.just(.moveToInquiryScene(controller: controller)) } @@ -81,9 +82,6 @@ final class LoginReactor: Reactor { controller.view.window?.rootViewController = homeTabbar case .loadView: break - case .resetService: - authrizationCode = nil - appleLoginService = AppleLoginService() case .moveToInquiryScene(let controller): let nextController = FAQController() nextController.reactor = FAQReactor() @@ -93,7 +91,7 @@ final class LoginReactor: Reactor { } func loginWithKakao(controller: BaseViewController) -> Observable { - return kakaoLoginService.fetchUserCredential() + return kakaoLoginUseCase.fetchUserCredential() .withUnretained(self) .flatMap { owner, response in return owner.authAPIUseCase.postTryLogin(userCredential: response, socialType: "kakao") @@ -120,7 +118,7 @@ final class LoginReactor: Reactor { } func loginWithApple(controller: BaseViewController) -> Observable { - return appleLoginService.fetchUserCredential() + return appleLoginUseCase.fetchUserCredential() .withUnretained(self) .flatMap { owner, response in owner.authrizationCode = response.authorizationCode diff --git a/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Sub/SubLoginController.swift b/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Sub/SubLoginController.swift index a377e56b..37e32b43 100644 --- a/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Sub/SubLoginController.swift +++ b/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Sub/SubLoginController.swift @@ -58,11 +58,6 @@ private extension SubLoginController { // MARK: - Methods extension SubLoginController { func bind(reactor: Reactor) { - rx.viewWillAppear - .map { Reactor.Action.viewWillAppear} - .bind(to: reactor.action) - .disposed(by: disposeBag) - mainView.xmarkButton.rx.tap .withUnretained(self) .map { (owner, _) in diff --git a/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Sub/SubLoginReactor.swift b/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Sub/SubLoginReactor.swift index 88170711..8b194b1b 100644 --- a/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Sub/SubLoginReactor.swift +++ b/Poppool/PresentationLayer/Presentation/Presentation/Scene/Login/Sub/SubLoginReactor.swift @@ -12,7 +12,6 @@ final class SubLoginReactor: Reactor { case kakaoButtonTapped(controller: BaseViewController) case appleButtonTapped(controller: BaseViewController) case xmarkButtonTapped(controller: BaseViewController) - case viewWillAppear case inquiryButtonTapped(controller: BaseViewController) } @@ -20,7 +19,6 @@ final class SubLoginReactor: Reactor { case moveToSignUpScene(controller: BaseViewController) case dismissScene(controller: BaseViewController) case loadView - case resetService case moveToInquiryScene(controller: BaseViewController) } @@ -34,17 +32,21 @@ final class SubLoginReactor: Reactor { private var authrizationCode: String? - private let kakaoLoginService = KakaoLoginService() - private var appleLoginService = AppleLoginService() private let authAPIUseCase: AuthAPIUseCase + private let kakaoLoginUseCase: KakaoLoginUseCase + private let appleLoginUseCase: AppleLoginUseCase @Dependency private var keyChainService: KeyChainService let userDefaultService = UserDefaultService() // MARK: - init init( - authAPIUseCase: AuthAPIUseCase + authAPIUseCase: AuthAPIUseCase, + kakaoLoginUseCase: KakaoLoginUseCase, + appleLoginUseCase: AppleLoginUseCase ) { self.authAPIUseCase = authAPIUseCase + self.kakaoLoginUseCase = kakaoLoginUseCase + self.appleLoginUseCase = appleLoginUseCase self.initialState = State() } @@ -57,8 +59,6 @@ final class SubLoginReactor: Reactor { return loginWithApple(controller: controller) case .xmarkButtonTapped(let controller): return Observable.just(.dismissScene(controller: controller)) - case .viewWillAppear: - return Observable.just(.resetService) case .inquiryButtonTapped(let controller): return Observable.just(.moveToInquiryScene(controller: controller)) } @@ -78,9 +78,6 @@ final class SubLoginReactor: Reactor { controller.dismiss(animated: true) case .loadView: break - case .resetService: - authrizationCode = nil - appleLoginService = AppleLoginService() case .moveToInquiryScene(let controller): let nextController = FAQController() nextController.reactor = FAQReactor() @@ -90,7 +87,7 @@ final class SubLoginReactor: Reactor { } func loginWithKakao(controller: BaseViewController) -> Observable { - return kakaoLoginService.fetchUserCredential() + return kakaoLoginUseCase.fetchUserCredential() .withUnretained(self) .flatMap { owner, response in owner.authAPIUseCase.postTryLogin(userCredential: response, socialType: "kakao") @@ -117,7 +114,7 @@ final class SubLoginReactor: Reactor { } func loginWithApple(controller: BaseViewController) -> Observable { - return appleLoginService.fetchUserCredential() + return appleLoginUseCase.fetchUserCredential() .withUnretained(self) .flatMap { owner, response in owner.authrizationCode = response.authorizationCode diff --git a/Poppool/PresentationLayer/Presentation/Presentation/Scene/MyPage/Main/MyPageReactor.swift b/Poppool/PresentationLayer/Presentation/Presentation/Scene/MyPage/Main/MyPageReactor.swift index 3fe8c1d9..26fe5b7b 100644 --- a/Poppool/PresentationLayer/Presentation/Presentation/Scene/MyPage/Main/MyPageReactor.swift +++ b/Poppool/PresentationLayer/Presentation/Presentation/Scene/MyPage/Main/MyPageReactor.swift @@ -268,7 +268,9 @@ final class MyPageReactor: Reactor { case .moveToLoginScene(let controller): let nextController = SubLoginController() nextController.reactor = SubLoginReactor( - authAPIUseCase: DIContainer.resolve(AuthAPIUseCase.self) + authAPIUseCase: DIContainer.resolve(AuthAPIUseCase.self), + kakaoLoginUseCase: DIContainer.resolve(KakaoLoginUseCase.self), + appleLoginUseCase: DIContainer.resolve(AppleLoginUseCase.self) ) let navigationController = UINavigationController(rootViewController: nextController) navigationController.modalPresentationStyle = .fullScreen diff --git a/Poppool/PresentationLayer/Presentation/Presentation/Scene/Splash/SplashController.swift b/Poppool/PresentationLayer/Presentation/Presentation/Scene/Splash/SplashController.swift index a4bc2163..4d688b1a 100644 --- a/Poppool/PresentationLayer/Presentation/Presentation/Scene/Splash/SplashController.swift +++ b/Poppool/PresentationLayer/Presentation/Presentation/Scene/Splash/SplashController.swift @@ -63,7 +63,9 @@ private extension SplashController { guard let self = self else { return } let loginViewController = LoginController() loginViewController.reactor = LoginReactor( - authAPIUseCase: authAPIUseCase + authAPIUseCase: authAPIUseCase, + kakaoLoginUseCase: DIContainer.resolve(KakaoLoginUseCase.self), + appleLoginUseCase: DIContainer.resolve(AppleLoginUseCase.self) ) let loginNavigationController = UINavigationController(rootViewController: loginViewController) rootViewController = loginNavigationController