From 7518514726d0a22745bc0152080106c5c87a513c Mon Sep 17 00:00:00 2001 From: MaraMincho <103064352+MaraMincho@users.noreply.github.com> Date: Sun, 10 Dec 2023 15:28:10 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20UseCase=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Coordinator/AppCoordinator.swift | 2 +- .../SignUpUserDefaultsManagerUseCase.swift | 20 +++++++++++++++++++ .../SignUpFeatureCoordinator.swift | 4 ++-- 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 iOS/Projects/Features/SignUp/Sources/Domain/UseCase/SignUpUserDefaultsManagerUseCase.swift diff --git a/iOS/Projects/App/WeTri/Sources/CommonScene/Coordinator/AppCoordinator.swift b/iOS/Projects/App/WeTri/Sources/CommonScene/Coordinator/AppCoordinator.swift index 8e970e38..647c18be 100644 --- a/iOS/Projects/App/WeTri/Sources/CommonScene/Coordinator/AppCoordinator.swift +++ b/iOS/Projects/App/WeTri/Sources/CommonScene/Coordinator/AppCoordinator.swift @@ -107,7 +107,7 @@ extension AppCoordinator: SplashCoordinatorFinishDelegate { // MARK: SignUpFeatureCoordinatorFinishDelegate extension AppCoordinator: SignUpFeatureCoordinatorFinishDelegate { - func signUpFeatureCooridnatorDidFinished() { + func signUpFeatureCoordinatorDidFinished() { showTabBarFlow() } } diff --git a/iOS/Projects/Features/SignUp/Sources/Domain/UseCase/SignUpUserDefaultsManagerUseCase.swift b/iOS/Projects/Features/SignUp/Sources/Domain/UseCase/SignUpUserDefaultsManagerUseCase.swift new file mode 100644 index 00000000..f986a09d --- /dev/null +++ b/iOS/Projects/Features/SignUp/Sources/Domain/UseCase/SignUpUserDefaultsManagerUseCase.swift @@ -0,0 +1,20 @@ +// +// SignUpUserDefaultsManager.swift +// SignUpFeature +// +// Created by MaraMincho on 12/10/23. +// Copyright © 2023 kr.codesquad.boostcamp8. All rights reserved. +// + +import Foundation + + +protocol SignUpUserDefaultsManagerUseCaseRepresentable { + func setSignUpUserInformation(signUpUser: SignUpUser) +} + +struct SignUpUserDefaultsManagerUseCase { + func setSignUpUserInformationAtUserDefaults(_ signUpUser: SignUpUser) { + + } +} diff --git a/iOS/Projects/Features/SignUp/Sources/Presentation/Common/Coordinator/SignUpFeatureCoordinator.swift b/iOS/Projects/Features/SignUp/Sources/Presentation/Common/Coordinator/SignUpFeatureCoordinator.swift index e15a8ba7..48f09af1 100644 --- a/iOS/Projects/Features/SignUp/Sources/Presentation/Common/Coordinator/SignUpFeatureCoordinator.swift +++ b/iOS/Projects/Features/SignUp/Sources/Presentation/Common/Coordinator/SignUpFeatureCoordinator.swift @@ -15,7 +15,7 @@ import UIKit // MARK: - SignUpFeatureCoordinatorFinishDelegate public protocol SignUpFeatureCoordinatorFinishDelegate: AnyObject { - func signUpFeatureCooridnatorDidFinished() + func signUpFeatureCoordinatorDidFinished() } // MARK: - SignUpFeatureCoordinator @@ -47,7 +47,7 @@ public final class SignUpFeatureCoordinator: SignUpFeatureCoordinating { public func finish() { finishDelegate?.flowDidFinished(childCoordinator: self) - signUpFeatureFinishDelegate?.signUpFeatureCooridnatorDidFinished() + signUpFeatureFinishDelegate?.signUpFeatureCoordinatorDidFinished() } public func pushSingUpContainerViewController() { From 9fed22b86e7e6509e7ccecde0fc0d69d84013205 Mon Sep 17 00:00:00 2001 From: MaraMincho <103064352+MaraMincho@users.noreply.github.com> Date: Sun, 10 Dec 2023 15:57:47 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20UserDefaults=20UseCase=EC=97=B0?= =?UTF-8?q?=EA=B2=B0=20=EC=9E=91=EC=97=85=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOS/Projects/Features/SignUp/Project.swift | 2 +- .../SignUpUserDefaultsManagerUseCase.swift | 11 ++++- .../Sources/UserInformationManager.swift | 41 ++++++++++++------- 3 files changed, 37 insertions(+), 17 deletions(-) diff --git a/iOS/Projects/Features/SignUp/Project.swift b/iOS/Projects/Features/SignUp/Project.swift index bce44a95..491552f4 100644 --- a/iOS/Projects/Features/SignUp/Project.swift +++ b/iOS/Projects/Features/SignUp/Project.swift @@ -7,7 +7,7 @@ let project = Project.makeModule( targets: .feature( .signUp, testingOptions: [.unitTest], - dependencies: [.trinet, .keychain, .combineCocoa, .coordinator, .log, .designSystem, .commonNetworkingKeyManager, .auth, .downSampling], + dependencies: [.trinet, .keychain, .combineCocoa, .coordinator, .log, .designSystem, .commonNetworkingKeyManager, .auth, .downSampling, .userInformationManager], testDependencies: [], resources: "Resources/**" ) diff --git a/iOS/Projects/Features/SignUp/Sources/Domain/UseCase/SignUpUserDefaultsManagerUseCase.swift b/iOS/Projects/Features/SignUp/Sources/Domain/UseCase/SignUpUserDefaultsManagerUseCase.swift index f986a09d..fbbb75e4 100644 --- a/iOS/Projects/Features/SignUp/Sources/Domain/UseCase/SignUpUserDefaultsManagerUseCase.swift +++ b/iOS/Projects/Features/SignUp/Sources/Domain/UseCase/SignUpUserDefaultsManagerUseCase.swift @@ -7,6 +7,7 @@ // import Foundation +import UserInformationManager protocol SignUpUserDefaultsManagerUseCaseRepresentable { @@ -14,7 +15,15 @@ protocol SignUpUserDefaultsManagerUseCaseRepresentable { } struct SignUpUserDefaultsManagerUseCase { - func setSignUpUserInformationAtUserDefaults(_ signUpUser: SignUpUser) { + let manager = UserInformationManager.shared + func setSignUpUserInformationAtUserDefaults(_ signUpUserInformation: SignUpUser) { + manager.setUserName(signUpUserInformation.birthDate) + manager.setUserProfileImageURLString(url: signUpUserInformation.profileImage) + + let formatter = DateFormatter() + formatter.dateFormat = "yyyy-MM-dd" + let date = formatter.date(from: signUpUserInformation.birthDate) + manager.setBirthDayDate(date) } } diff --git a/iOS/Projects/Shared/UserInformationManager/Sources/UserInformationManager.swift b/iOS/Projects/Shared/UserInformationManager/Sources/UserInformationManager.swift index 0007bce2..5bc4a370 100644 --- a/iOS/Projects/Shared/UserInformationManager/Sources/UserInformationManager.swift +++ b/iOS/Projects/Shared/UserInformationManager/Sources/UserInformationManager.swift @@ -28,7 +28,7 @@ public final class UserInformationManager { case userNickName = "UserNickName" case userProfileImage = "UserProfileImage" case birthDayDate = "BirthDayDate" - case userProfileImageURL = "UserImageURL" + case userProfileImageURLData = "UserImageURLData" } } @@ -45,29 +45,41 @@ public extension UserInformationManager { defaults.setValue(nameData, forKey: UserInformation.userNickName.rawValue) } - func setUserProfileImageData(_ imageData: Data) { + private func setUserProfileImageData(_ imageData: Data) { + defaults.setValue(imageData, forKey: UserInformation.userNickName.rawValue) } - func setBirthDayDate(_ date: Date) { + func setBirthDayDate(_ date: Date?) { + let date = date ?? .now let dateString = dateFormatter.string(from: date) let data = Data(dateString.utf8) defaults.setValue(data, forKey: UserInformation.birthDayDate.rawValue) } + + func setUserProfileImageURLString(url: URL?) { + guard + let url = url, + let data = try? Data(contentsOf: url) else { + return + } + + defaults.setValue(data, forKey: UserInformation.userProfileImageURLData.rawValue) + } } /// Defaults이미지를 저장합니다. private extension UserInformationManager { - /// 만약 userDefaults에 값이 존재한다면 fakeData를 설정합니다. + /// 만약 userDefaults에 값이 존재하지 않는다면 fakeData를 설정합니다. func setDefaultsData() { -// guard -// data(.userNickName) == nil, -// data(.birthDayDate) == nil, -// data(.userProfileImage) == nil, -// data(.userProfileImageURL) == nil -// else { -// return -// } + if + data(.userNickName) != nil || + data(.birthDayDate) != nil || + data(.userProfileImage) != nil || + data(.userProfileImageURLData) != nil + { + return + } let date = Date.now let formatter = DateFormatter() @@ -79,9 +91,8 @@ private extension UserInformationManager { let name = Data("슈퍼맨".utf8) defaults.setValue(name, forKey: UserInformation.userNickName.rawValue) - let imageURLString = "https://www.catster.com/wp-content/uploads/2017/08/Pixiebob-cat.jpg" - let imageURLData = Data(imageURLString.utf8) - defaults.setValue(imageURLData, forKey: UserInformation.userProfileImageURL.rawValue) + let url = URL(string: "https://www.catster.com/wp-content/uploads/2017/08/Pixiebob-cat.jpg") + setUserProfileImageURLString(url: url) guard let path = Bundle(for: Self.self).path(forResource: DefaultsKey.imageKey, ofType: DefaultsKey.imageType), From 3cdb76df4ecf40b8da3dfab3aeefb20d2161f7b4 Mon Sep 17 00:00:00 2001 From: MaraMincho <103064352+MaraMincho@users.noreply.github.com> Date: Sun, 10 Dec 2023 16:54:06 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=ED=9B=84=20UserDefaults=EC=97=90=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=ED=95=98=EB=8A=94=20=EB=A1=9C=EC=A7=81=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SignUpUserDefaultsManagerUseCase.swift | 17 +++++++--- .../Sources/UserInformationManager.swift | 31 ++++++++++++------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/iOS/Projects/Features/SignUp/Sources/Domain/UseCase/SignUpUserDefaultsManagerUseCase.swift b/iOS/Projects/Features/SignUp/Sources/Domain/UseCase/SignUpUserDefaultsManagerUseCase.swift index fbbb75e4..0f81b0db 100644 --- a/iOS/Projects/Features/SignUp/Sources/Domain/UseCase/SignUpUserDefaultsManagerUseCase.swift +++ b/iOS/Projects/Features/SignUp/Sources/Domain/UseCase/SignUpUserDefaultsManagerUseCase.swift @@ -1,5 +1,5 @@ // -// SignUpUserDefaultsManager.swift +// SignUpUserDefaultsManagerUseCase.swift // SignUpFeature // // Created by MaraMincho on 12/10/23. @@ -9,21 +9,30 @@ import Foundation import UserInformationManager +// MARK: - SignUpUserDefaultsManagerUseCaseRepresentable protocol SignUpUserDefaultsManagerUseCaseRepresentable { func setSignUpUserInformation(signUpUser: SignUpUser) } +// MARK: - SignUpUserDefaultsManagerUseCase + struct SignUpUserDefaultsManagerUseCase { let manager = UserInformationManager.shared func setSignUpUserInformationAtUserDefaults(_ signUpUserInformation: SignUpUser) { - manager.setUserName(signUpUserInformation.birthDate) + // UserDefaults에 nickName을 저장합니다. + manager.setUserName(signUpUserInformation.nickname) + + // UserDefaults에 ProfileImage URL을 저장합니다. manager.setUserProfileImageURLString(url: signUpUserInformation.profileImage) - + + // UserDefaults에 ProfileImage Data를 저장합니다. + manager.setUserProfileImageData(url: signUpUserInformation.profileImage) + + // UserDefaults에 생년 월일을 저장합니다. let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd" let date = formatter.date(from: signUpUserInformation.birthDate) manager.setBirthDayDate(date) - } } diff --git a/iOS/Projects/Shared/UserInformationManager/Sources/UserInformationManager.swift b/iOS/Projects/Shared/UserInformationManager/Sources/UserInformationManager.swift index 5bc4a370..9b5c7a8c 100644 --- a/iOS/Projects/Shared/UserInformationManager/Sources/UserInformationManager.swift +++ b/iOS/Projects/Shared/UserInformationManager/Sources/UserInformationManager.swift @@ -28,7 +28,7 @@ public final class UserInformationManager { case userNickName = "UserNickName" case userProfileImage = "UserProfileImage" case birthDayDate = "BirthDayDate" - case userProfileImageURLData = "UserImageURLData" + case userProfileImageURL = "UserProfileImageURL" } } @@ -45,8 +45,20 @@ public extension UserInformationManager { defaults.setValue(nameData, forKey: UserInformation.userNickName.rawValue) } - private func setUserProfileImageData(_ imageData: Data) { - + func setUserProfileImageData(url: URL?) { + guard let url else { + return + } + + DispatchQueue.global().async { [weak self] in + guard let data = try? Data(contentsOf: url) else { + return + } + self?.setUserProfileImageData(data) + } + } + + func setUserProfileImageData(_ imageData: Data) { defaults.setValue(imageData, forKey: UserInformation.userNickName.rawValue) } @@ -56,15 +68,13 @@ public extension UserInformationManager { let data = Data(dateString.utf8) defaults.setValue(data, forKey: UserInformation.birthDayDate.rawValue) } - + func setUserProfileImageURLString(url: URL?) { - guard - let url = url, - let data = try? Data(contentsOf: url) else { + guard let urlString = url?.absoluteString else { return } - - defaults.setValue(data, forKey: UserInformation.userProfileImageURLData.rawValue) + let data = Data(urlString.utf8) + defaults.setValue(data, forKey: UserInformation.userProfileImageURL.rawValue) } } @@ -76,8 +86,7 @@ private extension UserInformationManager { data(.userNickName) != nil || data(.birthDayDate) != nil || data(.userProfileImage) != nil || - data(.userProfileImageURLData) != nil - { + data(.userProfileImageURL) != nil { return }