From 5a49d04168f59c3a11526b2dca956d081df45e3f Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Fri, 13 Jan 2023 00:38:01 +0900 Subject: [PATCH 1/7] =?UTF-8?q?[Fix]=20#111=20-=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A6=AC=20=EC=9D=98=EC=A1=B4=EC=84=B1=20?= =?UTF-8?q?=EB=B6=80=EC=97=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DSKit/Sources/Components/CustomLoadingView.swift | 9 +++++++++ .../Sources/SettingScene/VC/NicknameEditVC.swift | 1 + .../Sources/SettingScene/VC/SentenceEditVC.swift | 1 + .../Sources/ModuleFactory/ModuleFactory.swift | 2 ++ 4 files changed, 13 insertions(+) create mode 100644 SOPT-Stamp-iOS/Projects/Modules/DSKit/Sources/Components/CustomLoadingView.swift diff --git a/SOPT-Stamp-iOS/Projects/Modules/DSKit/Sources/Components/CustomLoadingView.swift b/SOPT-Stamp-iOS/Projects/Modules/DSKit/Sources/Components/CustomLoadingView.swift new file mode 100644 index 00000000..6da9fe3f --- /dev/null +++ b/SOPT-Stamp-iOS/Projects/Modules/DSKit/Sources/Components/CustomLoadingView.swift @@ -0,0 +1,9 @@ +// +// CustomLoadingView.swift +// DSKit +// +// Created by Junho Lee on 2023/01/12. +// Copyright © 2023 SOPT-Stamp-iOS. All rights reserved. +// + +import Foundation diff --git a/SOPT-Stamp-iOS/Projects/Presentation/Sources/SettingScene/VC/NicknameEditVC.swift b/SOPT-Stamp-iOS/Projects/Presentation/Sources/SettingScene/VC/NicknameEditVC.swift index bc07d942..4769df1a 100644 --- a/SOPT-Stamp-iOS/Projects/Presentation/Sources/SettingScene/VC/NicknameEditVC.swift +++ b/SOPT-Stamp-iOS/Projects/Presentation/Sources/SettingScene/VC/NicknameEditVC.swift @@ -20,6 +20,7 @@ public class NicknameEditVC: UIViewController { // MARK: - Properties public var viewModel: NicknameEditViewModel! + public var factory: ModuleFactoryInterface! private var cancelBag = CancelBag() // MARK: - UI Components diff --git a/SOPT-Stamp-iOS/Projects/Presentation/Sources/SettingScene/VC/SentenceEditVC.swift b/SOPT-Stamp-iOS/Projects/Presentation/Sources/SettingScene/VC/SentenceEditVC.swift index 2ddfc673..2762b6e8 100644 --- a/SOPT-Stamp-iOS/Projects/Presentation/Sources/SettingScene/VC/SentenceEditVC.swift +++ b/SOPT-Stamp-iOS/Projects/Presentation/Sources/SettingScene/VC/SentenceEditVC.swift @@ -20,6 +20,7 @@ public class SentenceEditVC: UIViewController { // MARK: - Properties public var viewModel: SentenceEditViewModel! + public var factory: ModuleFactoryInterface! private var cancelBag = CancelBag() // MARK: - UI Components diff --git a/SOPT-Stamp-iOS/Projects/SOPT-Stamp-iOS/Sources/ModuleFactory/ModuleFactory.swift b/SOPT-Stamp-iOS/Projects/SOPT-Stamp-iOS/Sources/ModuleFactory/ModuleFactory.swift index 1b154d81..9b816fd7 100644 --- a/SOPT-Stamp-iOS/Projects/SOPT-Stamp-iOS/Sources/ModuleFactory/ModuleFactory.swift +++ b/SOPT-Stamp-iOS/Projects/SOPT-Stamp-iOS/Sources/ModuleFactory/ModuleFactory.swift @@ -137,6 +137,7 @@ extension ModuleFactory { let viewModel = NicknameEditViewModel(nicknameUseCase: signUpUseCase, editPostUseCase: settingUseCase) let nicknameEdit = NicknameEditVC() + nicknameEdit.factory = self nicknameEdit.viewModel = viewModel return nicknameEdit } @@ -147,6 +148,7 @@ extension ModuleFactory { let viewModel = SentenceEditViewModel(useCase: useCase) let sentenceEditVC = SentenceEditVC() sentenceEditVC.viewModel = viewModel + sentenceEditVC.factory = self return sentenceEditVC } From 9e5fe7753b7ccffde40dea64b57d47c61e0dd505 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Fri, 13 Jan 2023 00:38:24 +0900 Subject: [PATCH 2/7] =?UTF-8?q?[Feat]=20#111=20-=20=EB=A1=9C=EB=94=A9=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Components/CustomDimmerView.swift | 14 ++- .../Components/CustomLoadingView.swift | 90 ++++++++++++++++++- 2 files changed, 99 insertions(+), 5 deletions(-) diff --git a/SOPT-Stamp-iOS/Projects/Modules/DSKit/Sources/Components/CustomDimmerView.swift b/SOPT-Stamp-iOS/Projects/Modules/DSKit/Sources/Components/CustomDimmerView.swift index 74e4b6a6..9f606138 100644 --- a/SOPT-Stamp-iOS/Projects/Modules/DSKit/Sources/Components/CustomDimmerView.swift +++ b/SOPT-Stamp-iOS/Projects/Modules/DSKit/Sources/Components/CustomDimmerView.swift @@ -13,7 +13,7 @@ import Core public class CustomDimmerView: UIView { // MARK: - Properties - private var vc: UIViewController? + private var view: UIView? // MARK: - UI Component private let blurEffect = UIBlurEffect(style: .light) @@ -24,7 +24,13 @@ public class CustomDimmerView: UIView { public init(_ vc: UIViewController) { super.init(frame: .zero) - self.vc = vc + self.view = vc.view + setViews() + } + + public init(_ view: UIView) { + super.init(frame: .zero) + self.view = view setViews() } @@ -36,8 +42,8 @@ public class CustomDimmerView: UIView { extension CustomDimmerView { private func setViews() { dimmerView.backgroundColor = .black.withAlphaComponent(0.55) - dimmerView.frame = self.vc?.view.frame ?? CGRect() - blurEffectView.frame = self.vc?.view.frame ?? CGRect() + dimmerView.frame = self.view?.frame ?? CGRect() + blurEffectView.frame = self.view?.frame ?? CGRect() self.addSubviews(blurEffectView, dimmerView) } } diff --git a/SOPT-Stamp-iOS/Projects/Modules/DSKit/Sources/Components/CustomLoadingView.swift b/SOPT-Stamp-iOS/Projects/Modules/DSKit/Sources/Components/CustomLoadingView.swift index 6da9fe3f..d640588d 100644 --- a/SOPT-Stamp-iOS/Projects/Modules/DSKit/Sources/Components/CustomLoadingView.swift +++ b/SOPT-Stamp-iOS/Projects/Modules/DSKit/Sources/Components/CustomLoadingView.swift @@ -6,4 +6,92 @@ // Copyright © 2023 SOPT-Stamp-iOS. All rights reserved. // -import Foundation +import Combine +import UIKit + +import Core + +import SnapKit + +public extension UIViewController { + var isLoading: Bool { + get { return CustomLoadingView.shared.isLoading } + set(startLoading) { + if startLoading { + CustomLoadingView.shared.show(self.view) + } else { + CustomLoadingView.shared.hide() + } + } + } + + func showLoading() { + self.isLoading = true + } + + func stopLoading() { + self.isLoading = false + } +} + +public class CustomLoadingView: UIView { + + // MARK: - Properties + + public static let shared = CustomLoadingView() + public var isLoading: Bool { + return self.activityIndicator.isAnimating + } + + // MARK: - UI Components + + lazy var activityIndicator: UIActivityIndicatorView = { + let activityIndicator = UIActivityIndicatorView() + activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height: 50) + activityIndicator.hidesWhenStopped = false + activityIndicator.style = .large + activityIndicator.tintColor = .white + return activityIndicator + }() + + // MARK: - View Life Cycle + + override init(frame: CGRect) { + super.init(frame: frame) + configureUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +// MARK: - Extension + +extension CustomLoadingView { + private func configureUI() { + self.addSubview(activityIndicator) + } + + public func show(_ view: UIView) { + view.addSubview(self) + + UIView.animate(withDuration: 0.3, delay: 0.05) { + self.backgroundColor = .black.withAlphaComponent(0.55) + } + + self.snp.makeConstraints { + $0.edges.equalToSuperview() + } + self.activityIndicator.center = view.center + self.layoutIfNeeded() + self.activityIndicator.startAnimating() + } + + public func hide(completion: (() -> Void)? = nil) { + self.backgroundColor = .clear + self.activityIndicator.stopAnimating() + self.removeFromSuperview() + completion?() + } +} From fc083846eef35ac4633e8817efc2537951c9f2fb Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Fri, 13 Jan 2023 00:38:42 +0900 Subject: [PATCH 3/7] =?UTF-8?q?[Feat]=20#111=20-=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EB=B7=B0=EC=97=90=20=EB=A1=9C=EB=94=A9=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/SignInScene/VC/SignInVC.swift | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/SOPT-Stamp-iOS/Projects/Presentation/Sources/SignInScene/VC/SignInVC.swift b/SOPT-Stamp-iOS/Projects/Presentation/Sources/SignInScene/VC/SignInVC.swift index 0840b93e..b2cec2e4 100644 --- a/SOPT-Stamp-iOS/Projects/Presentation/Sources/SignInScene/VC/SignInVC.swift +++ b/SOPT-Stamp-iOS/Projects/Presentation/Sources/SignInScene/VC/SignInVC.swift @@ -174,9 +174,14 @@ extension SignInVC { private func bindViewModels() { - let signInButtonTapped = signInButton.publisher(for: .touchUpInside).map { _ in - SignInRequest(email: self.emailTextField.text, password: self.passwordTextField.text) - }.asDriver() + let signInButtonTapped = signInButton + .publisher(for: .touchUpInside) + .handleEvents(receiveOutput: { _ in + self.showLoading() + }) + .map { _ in + SignInRequest(email: self.emailTextField.text, password: self.passwordTextField.text) } + .asDriver() let input = SignInViewModel.Input(emailTextChanged: emailTextField.textChanged, passwordTextChanged: passwordTextField.textChanged, @@ -186,6 +191,7 @@ extension SignInVC { output.isFilledForm.assign(to: \.isEnabled, on: self.signInButton).store(in: self.cancelBag) output.isSignInSuccess.sink { isSignInSuccess in + self.stopLoading() if isSignInSuccess { let navigation = UINavigationController(rootViewController: self.factory.makeMissionListVC(sceneType: .default)) ViewControllerUtils.setRootViewController(window: self.view.window!, viewController: navigation, withAnimation: true) From 84bed081437cd4b7b886f3db55358df29e86bc0f Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Fri, 13 Jan 2023 00:46:26 +0900 Subject: [PATCH 4/7] =?UTF-8?q?[Fix]=20#111=20-=20=EB=AF=B8=EC=85=98=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EB=B7=B0=EC=9C=8C=EC=96=B4?= =?UTF-8?q?=ED=94=BC=EC=96=B4=EC=97=90=EC=84=9C=20=EC=9D=B4=EC=A0=84=20?= =?UTF-8?q?=ED=83=80=EC=9E=85=20=EA=B8=B0=EC=96=B5=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/MissionListScene/VC/MissionListVC.swift | 6 +++--- .../MissionListScene/ViewModel/MissionListViewModel.swift | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/SOPT-Stamp-iOS/Projects/Presentation/Sources/MissionListScene/VC/MissionListVC.swift b/SOPT-Stamp-iOS/Projects/Presentation/Sources/MissionListScene/VC/MissionListVC.swift index b7d0cb70..53e7ddc1 100644 --- a/SOPT-Stamp-iOS/Projects/Presentation/Sources/MissionListScene/VC/MissionListVC.swift +++ b/SOPT-Stamp-iOS/Projects/Presentation/Sources/MissionListScene/VC/MissionListVC.swift @@ -27,8 +27,8 @@ public class MissionListVC: UIViewController { } private var cancelBag = CancelBag() - private var missionTypeMenuSelected = CurrentValueSubject(.all) - private var viewWillAppear = PassthroughSubject() + private var missionTypeMenuSelected = CurrentValueSubject(.all) + private var viewWillAppear = PassthroughSubject() private let swipeHandler = PassthroughSubject() lazy var dataSource: UICollectionViewDiffableDataSource! = nil @@ -216,7 +216,7 @@ extension MissionListVC { private func bindViewModels() { let input = MissionListViewModel.Input(viewWillAppear: viewWillAppear.asDriver(), - missionTypeSelected: missionTypeMenuSelected.asDriver()) + missionTypeSelected: missionTypeMenuSelected) let output = self.viewModel.transform(from: input, cancelBag: self.cancelBag) output.$missionListModel diff --git a/SOPT-Stamp-iOS/Projects/Presentation/Sources/MissionListScene/ViewModel/MissionListViewModel.swift b/SOPT-Stamp-iOS/Projects/Presentation/Sources/MissionListScene/ViewModel/MissionListViewModel.swift index 598fd918..9a40dc4d 100644 --- a/SOPT-Stamp-iOS/Projects/Presentation/Sources/MissionListScene/ViewModel/MissionListViewModel.swift +++ b/SOPT-Stamp-iOS/Projects/Presentation/Sources/MissionListScene/ViewModel/MissionListViewModel.swift @@ -36,7 +36,7 @@ public class MissionListViewModel: ViewModelType { public struct Input { let viewWillAppear: Driver - let missionTypeSelected: Driver + let missionTypeSelected: CurrentValueSubject } // MARK: - Outputs @@ -61,7 +61,7 @@ extension MissionListViewModel { input.viewWillAppear .withUnretained(self) .sink { owner, _ in - owner.fetchMissionList() + owner.fetchMissionList(type: input.missionTypeSelected.value) }.store(in: cancelBag) input.missionTypeSelected @@ -74,13 +74,13 @@ extension MissionListViewModel { return output } - private func fetchMissionList() { + private func fetchMissionList(type: MissionListFetchType) { switch self.missionListsceneType { case .ranking(_, _, let userId): self.otherUserId = userId self.useCase.fetchOtherUserMissionList(type: .complete, userId: userId) default: - self.useCase.fetchMissionList(type: .all) + self.useCase.fetchMissionList(type: type) } } From 6bd256fa17ad402047cb5c2a7269ca3d61075a83 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Fri, 13 Jan 2023 01:10:09 +0900 Subject: [PATCH 5/7] =?UTF-8?q?[Feat]=20#111=20-=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EA=B0=80=EC=9E=85=20=EB=B0=8F=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=ED=94=84=EB=A1=9C=ED=95=84=EB=A9=94?= =?UTF-8?q?=EC=8B=9C=EC=A7=80=EC=99=80=20userId=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Repository/SignInRepository.swift | 1 + .../Sources/Repository/SignUpRepository.swift | 9 ++++++--- .../Sources/Entity/SignUpResponse.swift | 19 +++++++++++++++++++ .../Network/Sources/Service/UserService.swift | 9 ++++----- .../Sources/SignInScene/VC/SignInVC.swift | 6 ++++-- 5 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 SOPT-Stamp-iOS/Projects/Modules/Network/Sources/Entity/SignUpResponse.swift diff --git a/SOPT-Stamp-iOS/Projects/Data/Sources/Repository/SignInRepository.swift b/SOPT-Stamp-iOS/Projects/Data/Sources/Repository/SignInRepository.swift index 73748861..bb1d08ca 100644 --- a/SOPT-Stamp-iOS/Projects/Data/Sources/Repository/SignInRepository.swift +++ b/SOPT-Stamp-iOS/Projects/Data/Sources/Repository/SignInRepository.swift @@ -30,6 +30,7 @@ extension SignInRepository: SignInRepositoryInterface { public func requestSignIn(request: SignInRequest) -> AnyPublisher { networkService.requestSignIn(email: request.email, password: request.password).map { entity in UserDefaultKeyList.Auth.userId = entity.userId + UserDefaultKeyList.User.sentence = entity.message return entity.toDomain() }.eraseToAnyPublisher() } diff --git a/SOPT-Stamp-iOS/Projects/Data/Sources/Repository/SignUpRepository.swift b/SOPT-Stamp-iOS/Projects/Data/Sources/Repository/SignUpRepository.swift index c4212fe2..55fe7cbd 100644 --- a/SOPT-Stamp-iOS/Projects/Data/Sources/Repository/SignUpRepository.swift +++ b/SOPT-Stamp-iOS/Projects/Data/Sources/Repository/SignUpRepository.swift @@ -38,8 +38,11 @@ extension SignUpRepository: SignUpRepositoryInterface { } public func postSignUp(signUpRequest: SignUpModel) -> AnyPublisher { - return userService.postSignUp(nickname: signUpRequest.nickname, email: signUpRequest.email, password: signUpRequest.password).map { statusCode in - statusCode == 200 - }.eraseToAnyPublisher() + return userService.postSignUp(nickname: signUpRequest.nickname, email: signUpRequest.email, password: signUpRequest.password) + .map { entity in + guard let userId = entity?.userId else { return false } + UserDefaultKeyList.Auth.userId = userId + return true + }.eraseToAnyPublisher() } } diff --git a/SOPT-Stamp-iOS/Projects/Modules/Network/Sources/Entity/SignUpResponse.swift b/SOPT-Stamp-iOS/Projects/Modules/Network/Sources/Entity/SignUpResponse.swift new file mode 100644 index 00000000..d98b637d --- /dev/null +++ b/SOPT-Stamp-iOS/Projects/Modules/Network/Sources/Entity/SignUpResponse.swift @@ -0,0 +1,19 @@ +// +// SignUpResponse.swift +// Network +// +// Created by Junho Lee on 2023/01/13. +// Copyright © 2023 SOPT-Stamp-iOS. All rights reserved. +// + +import Foundation + +import Foundation + +public struct SignUpResponse: Codable{ + public let userId: Int + + init(userId: Int) { + self.userId = userId + } +} diff --git a/SOPT-Stamp-iOS/Projects/Modules/Network/Sources/Service/UserService.swift b/SOPT-Stamp-iOS/Projects/Modules/Network/Sources/Service/UserService.swift index fa80d076..cb147b6a 100644 --- a/SOPT-Stamp-iOS/Projects/Modules/Network/Sources/Service/UserService.swift +++ b/SOPT-Stamp-iOS/Projects/Modules/Network/Sources/Service/UserService.swift @@ -15,17 +15,16 @@ import Moya public typealias DefaultUserService = BaseService public protocol UserService { - func postSignUp(nickname: String, email: String, password: String) -> AnyPublisher + func postSignUp(nickname: String, email: String, password: String) -> AnyPublisher func requestSignIn(email: String, password: String) -> AnyPublisher } extension DefaultUserService: UserService { - public func postSignUp(nickname: String, email: String, password: String) -> AnyPublisher { - requestObjectInCombineNoResult(.signUp(nickname: nickname, + public func postSignUp(nickname: String, email: String, password: String) -> AnyPublisher { + requestObjectInCombine(.signUp(nickname: nickname, email: email, - password: password) - ) + password: password)) } public func requestSignIn(email: String, password: String) -> AnyPublisher { diff --git a/SOPT-Stamp-iOS/Projects/Presentation/Sources/SignInScene/VC/SignInVC.swift b/SOPT-Stamp-iOS/Projects/Presentation/Sources/SignInScene/VC/SignInVC.swift index b2cec2e4..da04269c 100644 --- a/SOPT-Stamp-iOS/Projects/Presentation/Sources/SignInScene/VC/SignInVC.swift +++ b/SOPT-Stamp-iOS/Projects/Presentation/Sources/SignInScene/VC/SignInVC.swift @@ -176,7 +176,8 @@ extension SignInVC { let signInButtonTapped = signInButton .publisher(for: .touchUpInside) - .handleEvents(receiveOutput: { _ in + .handleEvents(receiveOutput: { [weak self] _ in + guard let self = self else { return } self.showLoading() }) .map { _ in @@ -190,7 +191,8 @@ extension SignInVC { output.isFilledForm.assign(to: \.isEnabled, on: self.signInButton).store(in: self.cancelBag) - output.isSignInSuccess.sink { isSignInSuccess in + output.isSignInSuccess.sink { [weak self] isSignInSuccess in + guard let self = self else { return } self.stopLoading() if isSignInSuccess { let navigation = UINavigationController(rootViewController: self.factory.makeMissionListVC(sceneType: .default)) From 90fd0bb51e316c01085fcb4c886ca70003e57c48 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Fri, 13 Jan 2023 07:18:59 +0900 Subject: [PATCH 6/7] =?UTF-8?q?[Fix]=20#111=20-=20displayName=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tuist/ProjectDescriptionHelpers/BaseInfoPlist.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOPT-Stamp-iOS/Tuist/ProjectDescriptionHelpers/BaseInfoPlist.swift b/SOPT-Stamp-iOS/Tuist/ProjectDescriptionHelpers/BaseInfoPlist.swift index 17acadef..f13211f9 100644 --- a/SOPT-Stamp-iOS/Tuist/ProjectDescriptionHelpers/BaseInfoPlist.swift +++ b/SOPT-Stamp-iOS/Tuist/ProjectDescriptionHelpers/BaseInfoPlist.swift @@ -5,7 +5,7 @@ public extension Project { "CFBundleShortVersionString": "1.0.0", "CFBundleVersion": "1", "CFBundleIdentifier": "com.sopt-stamp-iOS.release", - "CFBundleDisplayName": "SOPTAMP", + "CFBundleDisplayName": "SOPT", "UILaunchStoryboardName": "LaunchScreen", "UIApplicationSceneManifest": [ "UIApplicationSupportsMultipleScenes": false, From 6bb87ad36fc8dfc3682a34fc159e15b3a4f92232 Mon Sep 17 00:00:00 2001 From: L-j-h-c Date: Fri, 13 Jan 2023 07:25:05 +0900 Subject: [PATCH 7/7] =?UTF-8?q?[Fix]=20#111=20-=20=EA=B5=AD=EA=B0=80=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tuist/ProjectDescriptionHelpers/BaseInfoPlist.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/SOPT-Stamp-iOS/Tuist/ProjectDescriptionHelpers/BaseInfoPlist.swift b/SOPT-Stamp-iOS/Tuist/ProjectDescriptionHelpers/BaseInfoPlist.swift index f13211f9..b2f6650a 100644 --- a/SOPT-Stamp-iOS/Tuist/ProjectDescriptionHelpers/BaseInfoPlist.swift +++ b/SOPT-Stamp-iOS/Tuist/ProjectDescriptionHelpers/BaseInfoPlist.swift @@ -3,6 +3,7 @@ import ProjectDescription public extension Project { static let baseinfoPlist: [String: InfoPlist.Value] = [ "CFBundleShortVersionString": "1.0.0", + "CFBundleDevelopmentRegion": "ko", "CFBundleVersion": "1", "CFBundleIdentifier": "com.sopt-stamp-iOS.release", "CFBundleDisplayName": "SOPT",