Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 0 additions & 21 deletions Popcorn-iOS/Source/Application/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -178,27 +178,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
popupDetailUseCase: diContainer.resolve(PopupDetailUseCaseProtocol.self)
)
)

// MARK: - ViewControllers
diContainer.register(
LoginViewController.self,
instance: LoginViewController(
loginViewModel: diContainer.resolve(LoginViewModelProtocol.self),
socialLoginViewModel: diContainer.resolve(SocialLoginViewModelProtocol.self)
)
)
diContainer.register(
SignUpFirstViewController.self,
instance: SignUpFirstViewController(
signUpFirstViewModel: diContainer.resolve(SignUpFirstViewModelProtocol.self)
)
)
diContainer.register(
SignUpSecondViewController.self,
instance: SignUpSecondViewController(
signUpSecondViewModel: diContainer.resolve(SignUpSecondViewModelProtocol.self)
)
)
}

// MARK: UISceneSession Lifecycle
Expand Down
7 changes: 6 additions & 1 deletion Popcorn-iOS/Source/Application/SceneDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,12 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
window = UIWindow(windowScene: windowScene)

let tokenUseCase = DIContainer.shared.resolve(TokenUseCaseProtocol.self)
let loginViewController = DIContainer.shared.resolve(LoginViewController.self)
let loginViewModel = DIContainer.shared.resolve(LoginViewModelProtocol.self)
let socialLoginViewModel = DIContainer.shared.resolve(SocialLoginViewModelProtocol.self)
let loginViewController = LoginViewController(
loginViewModel: loginViewModel,
socialLoginViewModel: socialLoginViewModel
)

// MARK: - 토큰 상태에 따른 초기화면 설정
tokenUseCase.handleTokenExpiration { [weak self] isTokenValid in
Expand Down
26 changes: 14 additions & 12 deletions Popcorn-iOS/Source/Data/Repositories/Token/TokenRepository.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,28 @@ final class TokenRepository: TokenRepositoryProtocol {

private let accessTokenAttributes: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "Popcorn",
kSecAttrService as String: "accessToken"
kSecAttrAccount as String: "accessToken",
kSecAttrService as String: "Popcorn"
]
private let refreshTokenAttributes: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "Popcorn",
kSecAttrService as String: "refreshToken"
kSecAttrAccount as String: "refreshToken",
kSecAttrService as String: "Popcorn"
]
private let accessExpiredAtAttributes: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "Popcorn",
kSecAttrService as String: "accessExpiredAt"
kSecAttrAccount as String: "accessExpiredAt",
kSecAttrService as String: "Popcorn"
]
private let refreshExpiredAtAttributes: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "Popcorn",
kSecAttrService as String: "refreshExpiredAt"
kSecAttrAccount as String: "refreshExpiredAt",
kSecAttrService as String: "Popcorn"
]
private let loginTypeAttributes: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "Popcorn",
kSecAttrService as String: "loginType"
kSecAttrAccount as String: "loginType",
kSecAttrService as String: "Popcorn"
]
private let fetchQuery: [String: Any] = [
kSecMatchLimit as String: kSecMatchLimitOne,
Expand Down Expand Up @@ -64,8 +64,10 @@ final class TokenRepository: TokenRepositoryProtocol {
var item = attributes
item[kSecValueData as String] = data

_ = keychainManager.deleteItem(with: attributes)
_ = keychainManager.addItem(with: item)
let addStatus = keychainManager.addItem(with: item)
if addStatus == errSecDuplicateItem {
_ = keychainManager.updateItem(with: attributes, as: [kSecValueData as String: data])
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,15 +122,6 @@ final class LoginView: UIView {
return button
}()

let googleButton: UIButton = {
let button = UIButton()
var config = UIButton.Configuration.plain()
config.image = UIImage(resource: .loginGoogle)
config.contentInsets = NSDirectionalEdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)
button.configuration = config
return button
}()

let appleButton: UIButton = {
let button = UIButton()
var config = UIButton.Configuration.plain()
Expand Down Expand Up @@ -217,7 +208,6 @@ final class LoginView: UIView {
private lazy var socialLoginButtonStackView: UIStackView = {
let stackView = UIStackView(arrangedSubviews: [
kakaoButton,
googleButton,
appleButton
])
stackView.axis = .horizontal
Expand Down Expand Up @@ -326,11 +316,11 @@ extension LoginView {

socialLoginButtonStackView.leadingAnchor.constraint(
equalTo: safeAreaLayoutGuide.leadingAnchor,
constant: 116
constant: 146
),
socialLoginButtonStackView.trailingAnchor.constraint(
equalTo: safeAreaLayoutGuide.trailingAnchor,
constant: -116
constant: -146
),
socialLoginButtonStackView.topAnchor.constraint(
equalTo: socialLoginSeparateStackView.bottomAnchor,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ extension LoginViewController {
loginView.findButton.addTarget(self, action: #selector(findButtonTapped), for: .touchUpInside)
loginView.signUpButton.addTarget(self, action: #selector(signUpButtonTapped), for: .touchUpInside)
loginView.kakaoButton.addTarget(self, action: #selector(kakaoButtonTapped), for: .touchUpInside)
loginView.googleButton.addTarget(self, action: #selector(googleButtonTapped), for: .touchUpInside)
loginView.appleButton.addTarget(self, action: #selector(appleButtonTapped), for: .touchUpInside)
}

Expand All @@ -119,18 +118,15 @@ extension LoginViewController {
}

@objc private func signUpButtonTapped() {
let signUpFirstViewController = DIContainer.shared.resolve(SignUpFirstViewController.self)
let signUpFirstViewModel = DIContainer.shared.resolve(SignUpFirstViewModelProtocol.self)
let signUpFirstViewController = SignUpFirstViewController(signUpFirstViewModel: signUpFirstViewModel)
self.navigationController?.pushViewController(signUpFirstViewController, animated: true)
}

@objc private func kakaoButtonTapped() {
socialLoginViewModel.loginWithKakao()
}

@objc private func googleButtonTapped() {

}

@objc private func appleButtonTapped() {
socialLoginViewModel.loginWithApple()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,10 @@ extension SignUpFirstViewController {
self.signUpFirstViewModel.navigateToSignUpSecondHandler = { [weak self] in
guard let self = self else { return }
DispatchQueue.main.async {
let signUpSecondViewController = DIContainer.shared.resolve(SignUpSecondViewController.self)
let signUpSecondViewModel = DIContainer.shared.resolve(SignUpSecondViewModelProtocol.self)
let signUpSecondViewController = SignUpSecondViewController(
signUpSecondViewModel: signUpSecondViewModel
)
self.navigationController?.pushViewController(signUpSecondViewController, animated: true)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,12 @@ extension SignUpSecondViewController {
DispatchQueue.main.async {
self.showAlert(title: isSuccess ? "회원가입 성공" : "회원가입 실패", message: message) {
if isSuccess {
let loginViewController = DIContainer.shared.resolve(LoginViewController.self)
let loginViewModel = DIContainer.shared.resolve(LoginViewModelProtocol.self)
let socialLoginViewModel = DIContainer.shared.resolve(SocialLoginViewModelProtocol.self)
let loginViewController = LoginViewController(
loginViewModel: loginViewModel,
socialLoginViewModel: socialLoginViewModel
)
self.navigationController?.setViewControllers([loginViewController], animated: true)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,18 +102,18 @@ extension ProfileImagePickerView {
titleLabel.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor, constant: 30),

closeButton.trailingAnchor.constraint(equalTo: safeAreaLayoutGuide.trailingAnchor, constant: -31),
closeButton.centerYAnchor.constraint(equalTo: titleLabel.centerYAnchor),
closeButton.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor, constant: 30),
closeButton.widthAnchor.constraint(equalTo: safeAreaLayoutGuide.widthAnchor, multiplier: 12/393),
closeButton.heightAnchor.constraint(equalTo: closeButton.widthAnchor),

separatorLine.leadingAnchor.constraint(equalTo: safeAreaLayoutGuide.leadingAnchor),
separatorLine.trailingAnchor.constraint(equalTo: safeAreaLayoutGuide.trailingAnchor),
separatorLine.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 30),
separatorLine.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 26),
separatorLine.heightAnchor.constraint(equalToConstant: 2),

collectionView.leadingAnchor.constraint(equalTo: safeAreaLayoutGuide.leadingAnchor),
collectionView.trailingAnchor.constraint(equalTo: safeAreaLayoutGuide.trailingAnchor),
collectionView.topAnchor.constraint(equalTo: separatorLine.bottomAnchor, constant: 15),
collectionView.topAnchor.constraint(equalTo: separatorLine.bottomAnchor, constant: 19),
collectionView.heightAnchor.constraint(equalToConstant: calculateCollectionViewHeight()),

completeButton.leadingAnchor.constraint(equalTo: collectionView.leadingAnchor, constant: 32),
Expand Down