Skip to content

Commit

Permalink
Merge branch 'develop' into network/#34-challengeView
Browse files Browse the repository at this point in the history
  • Loading branch information
Zoe0929 authored May 28, 2024
2 parents a33d231 + f3880b0 commit 951b6c9
Show file tree
Hide file tree
Showing 13 changed files with 147 additions and 94 deletions.
4 changes: 0 additions & 4 deletions HMH_iOS/HMH_iOS.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@
367243F42BEDEB32007A5A7B /* AddAppResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 367243E92BEDEB30007A5A7B /* AddAppResponseDTO.swift */; };
367243F52BEDEB32007A5A7B /* AddAppRequestDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 367243EA2BEDEB31007A5A7B /* AddAppRequestDTO.swift */; };
367243F62BEDEB32007A5A7B /* DeleteAppRequestDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 367243EB2BEDEB31007A5A7B /* DeleteAppRequestDTO.swift */; };
367243F72BEDEB32007A5A7B /* CreateChallengeResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 367243EC2BEDEB31007A5A7B /* CreateChallengeResponseDTO.swift */; };
367243F82BEDEB32007A5A7B /* GetChallengeResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 367243ED2BEDEB31007A5A7B /* GetChallengeResponseDTO.swift */; };
367243FA2BEDEB32007A5A7B /* GetHomeChallengeResponseDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 367243EF2BEDEB31007A5A7B /* GetHomeChallengeResponseDTO.swift */; };
367243FB2BEDEB32007A5A7B /* CreateChallengeRequestDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 367243F02BEDEB31007A5A7B /* CreateChallengeRequestDTO.swift */; };
Expand Down Expand Up @@ -325,7 +324,6 @@
367243E92BEDEB30007A5A7B /* AddAppResponseDTO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAppResponseDTO.swift; sourceTree = "<group>"; };
367243EA2BEDEB31007A5A7B /* AddAppRequestDTO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAppRequestDTO.swift; sourceTree = "<group>"; };
367243EB2BEDEB31007A5A7B /* DeleteAppRequestDTO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeleteAppRequestDTO.swift; sourceTree = "<group>"; };
367243EC2BEDEB31007A5A7B /* CreateChallengeResponseDTO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateChallengeResponseDTO.swift; sourceTree = "<group>"; };
367243ED2BEDEB31007A5A7B /* GetChallengeResponseDTO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetChallengeResponseDTO.swift; sourceTree = "<group>"; };
367243EF2BEDEB31007A5A7B /* GetHomeChallengeResponseDTO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GetHomeChallengeResponseDTO.swift; sourceTree = "<group>"; };
367243F02BEDEB31007A5A7B /* CreateChallengeRequestDTO.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateChallengeRequestDTO.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -845,7 +843,6 @@
367243EA2BEDEB31007A5A7B /* AddAppRequestDTO.swift */,
367243E92BEDEB30007A5A7B /* AddAppResponseDTO.swift */,
367243F02BEDEB31007A5A7B /* CreateChallengeRequestDTO.swift */,
367243EC2BEDEB31007A5A7B /* CreateChallengeResponseDTO.swift */,
367243EB2BEDEB31007A5A7B /* DeleteAppRequestDTO.swift */,
367243F22BEDEB32007A5A7B /* EmptyResponseDTO.swift */,
367243ED2BEDEB31007A5A7B /* GetChallengeResponseDTO.swift */,
Expand Down Expand Up @@ -1216,7 +1213,6 @@
368CAADF2BB9975C00FA83B3 /* NavigationBarView.swift in Sources */,
0B3C296B2BA01BD200435B30 /* TabBarView.swift in Sources */,
367243F42BEDEB32007A5A7B /* AddAppResponseDTO.swift in Sources */,
367243F72BEDEB32007A5A7B /* CreateChallengeResponseDTO.swift in Sources */,
367244052BEDEC4A007A5A7B /* AuthRouter.swift in Sources */,
0BF56C952BC39BE9003ECFB1 /* OnboardingCompleteView.swift in Sources */,
0B3C296F2BA01C2800435B30 /* HomeView.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{
"originHash" : "992ce72d257e842a7c8e0176b31907e6ef40f6e9b4db3a4ba50df3afdd2882f7",

"originHash" : "121817b8ddbac77685ab40e17f7a00d795dff609a9d68288c102f550e0f9779d",

"pins" : [
{
"identity" : "alamofire",
Expand Down
43 changes: 25 additions & 18 deletions HMH_iOS/HMH_iOS/Global/HMH_iOSApp.swift
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
//
// HMH_iOSApp.swift
// HMH_iOS
//
// Created by Seonwoo Kim on 3/24/24.
//

import SwiftUI

import KakaoSDKCommon
import KakaoSDKAuth

enum AppState {
case onboardingComplete
enum AppState: String {
case login
case onboarding
case onboardingComplete
case home
}


@main
struct HMH_iOSApp: App {
@StateObject var loginViewModel = LoginViewModel()
Expand All @@ -28,23 +38,20 @@ struct HMH_iOSApp: App {
if loginViewModel.isLoading {
SplashView(viewModel: loginViewModel)
} else {
if userManager.isOnboarding {
if userManager.isLogin {
TabBarView()
} else {
LoginView(viewModel: loginViewModel)
.onOpenURL { url in
if (AuthApi.isKakaoTalkLoginUrl(url)) {
_ = AuthController.handleOpenUrl(url: url)
}
switch userManager.appState {
case .onboarding:
OnboardingContentView()
case .onboardingComplete:
OnboardingCompleteView()
case .home:
TabBarView()
case .login:
LoginView(viewModel: loginViewModel)
.onOpenURL { url in
if (AuthApi.isKakaoTalkLoginUrl(url)) {
_ = AuthController.handleOpenUrl(url: url)
}
}
} else {
if userManager.isOnboardingCompleted {
OnboardingCompleteView()
} else {
OnboardingContentView()
}
}
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions HMH_iOS/HMH_iOS/Network/Base/AuthInterceptor.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,18 +43,18 @@ final class AuthInterceptor: RequestInterceptor {
if let data = result.data {
UserManager.shared.accessToken = data.token.accessToken
UserManager.shared.refreshToken = data.token.refreshToken
// UserManager.shared.updateToken(data.token.accessToken, data.token.refreshToken)
}
print("🪄토큰 재발급에 성공했습니다🪄")
completion(.retry)
} else if statusCode == 401 {
/// 리프레쉬 토큰도 만료된 상황
UserManager.shared.isLogin = false
UserManager.shared.appStateString = "login"
}
}
}
} else if statusCode == 404 {
/// 유저를 찾을 수 없는 상태
UserManager.shared.appStateString = "login"
} else {
if request.retryCount > retryLimit {
print("🚨재시도 횟수가 너무 많습니다🚨")
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,9 @@ extension ChallengeView {
challengeWeekView
.frame(width: UIScreen.main.bounds.width * 0.9)
.padding(.bottom, 20)
// NavigationLink(destination: OnboardingContentView(isChallengeMode: true, onboardingState: 2), label: {
// Text("챌린지 생성")
// })
}
}
}
Expand Down
26 changes: 15 additions & 11 deletions HMH_iOS/HMH_iOS/Presentation/Common/Manager/UserManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,32 @@ class UserManager: ObservableObject {
@KeychainStorage("socialToken") var socialToken
@AppStorage("socialPlatform") var socialPlatform: String?
@AppStorage("userName") var userName: String?
@AppStorage("isOnboarding") var isOnboarding: Bool = true
@AppStorage("isLogin") var isLogin: Bool = false
@AppStorage("isOnboardingCompleted") var isOnboardingCompleted: Bool = false

@AppStorage("appState") var appStateString: String = AppState.login.rawValue {
didSet {
appState = AppState(rawValue: appStateString) ?? .login
}
}

@Published var appState: AppState = .login

static let shared = UserManager()

private init() {}
private init() {
appState = AppState(rawValue: appStateString) ?? .login
}

func revokeData() {
accessToken = ""
refreshToken = ""
socialToken = ""
socialPlatform = nil
userName = nil
isOnboarding = true
isLogin = false
appStateString = "login"
}

func logoutButtonClicked() {
socialPlatform = nil
isLogin = false
appStateString = "login"
}

func updateLoginInfo(accessToken: String, refreshToken: String, socialToken: String, socialPlatform: String, userName: String) {
Expand All @@ -42,14 +47,13 @@ class UserManager: ObservableObject {
self.socialToken = socialToken
self.socialPlatform = socialPlatform
self.userName = userName
self.isLogin = true
}

// 개별 업데이트 메서드 추가
func updateRefreshToken(_ newRefreshToken: String) {
self.refreshToken = newRefreshToken
}

func updateUserName(_ newUserName: String) {
self.userName = newUserName
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,12 @@ class LoginViewModel: NSObject, ObservableObject {

provider.request(target: .socialLogin(data: request), instance: BaseResponse<SocialLogineResponseDTO>.self) { data in
if data.status == 403 {
UserManager.shared.isOnboarding = false
UserManager.shared.appStateString = "onboarding"
} else if data.status == 200 {
guard let data = data.data else { return }
UserManager.shared.isLogin = true
UserManager.shared.refreshToken = data.token.refreshToken
UserManager.shared.accessToken = data.token.accessToken
UserManager.shared.appStateString = "home"
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ class MyPageViewModel: ObservableObject {
@Published var isPresented = false

@Published var alertType: CustomAlertType = .logout

@Published var name = ""

@Published var point = 0

func getButtonTitle(type: MyPageButtonType) -> String {
switch type {
Expand All @@ -44,12 +48,12 @@ class MyPageViewModel: ObservableObject {
}
}

func getUserName() -> String {
"김하면함"
}

func getUserPoint() -> String {
"100p"
func getUserData() {
let provider = Providers.myPageProvider
provider.request(target: .getUserData, instance: BaseResponse<GetUserDataResponseDTO>.self) { data in
self.name = data.data?.name ?? ""
self.point = data.data?.point ?? 0
}
}

func myPageButtonClick(type: MyPageButtonType) {
Expand Down Expand Up @@ -90,9 +94,7 @@ class MyPageViewModel: ObservableObject {
}

func confirmAction() {
UserManager.shared.isOnboarding = true
UserManager.shared.isOnboardingCompleted = false
UserManager.shared.isLogin = false
UserManager.shared.appStateString = "login"
if alertType == .logout {
logoutUser()
} else {
Expand Down
7 changes: 5 additions & 2 deletions HMH_iOS/HMH_iOS/Presentation/MyPageView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ struct MyPageView: View {
Spacer()
AccountControlView(viewModel: viewModel)
}
.onAppear() {
viewModel.getUserData()
}
.padding(20)
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(.blackground)
Expand Down Expand Up @@ -59,13 +62,13 @@ extension MyPageView {
Image(.profile)
.frame(width: 54, height: 54)
.padding(10)
Text(viewModel.getUserName())
Text(viewModel.name)
.font(.title4_semibold_20)
Spacer().frame(height: 16)
HStack {
Text(StringLiteral.MyPageAccountControl.point)
.font(.text6_medium_14)
Text(viewModel.getUserPoint())
Text("\(viewModel.point)")
.font(.text6_medium_14)
}
.frame(maxWidth: .infinity)
Expand Down
Loading

0 comments on commit 951b6c9

Please sign in to comment.