diff --git a/PingPong/Projects/Core/Common/Sources/ViewModel/CommonViewViewModel.swift b/PingPong/Projects/Core/Common/Sources/ViewModel/CommonViewViewModel.swift index 25fc4134..78a20e38 100644 --- a/PingPong/Projects/Core/Common/Sources/ViewModel/CommonViewViewModel.swift +++ b/PingPong/Projects/Core/Common/Sources/ViewModel/CommonViewViewModel.swift @@ -33,8 +33,16 @@ public class CommonViewViewModel: ObservableObject { @Published public var goToMainView: Bool = false @Published public var customTabs: [CustomTab] = [] - @Published var selectedFavorite: [Favorite] = [] - @Published var selectedCharacter: [String] = [] + @Published public var selectedSource: [Source] = [] { + didSet { + print(selectedSource) + } + } + @Published public var selectedCharacter: [Flavor] = [] { + didSet { + print(selectedCharacter) + } + } //MARK: 모달 관련 @Published public var offsetY: CGFloat = 30 @@ -357,18 +365,19 @@ public class CommonViewViewModel: ObservableObject { } } - func appendAndPopFavorite(favorite: Favorite) { - guard self.selectedFavorite.count < 2 || self.selectedFavorite.contains(favorite) else { return } + public func appendAndPopFavorite(favorite: Source) { + if selectedSource.count > 2 { selectedSource = [] } + guard self.selectedSource.count < 2 || self.selectedSource.contains(favorite) else { return } - if self.selectedFavorite.contains(favorite) { - guard let index = self.selectedFavorite.firstIndex(of: favorite) else { return } - self.selectedFavorite.remove(at: index) + if self.selectedSource.contains(favorite) { + guard let index = self.selectedSource.firstIndex(of: favorite) else { return } + self.selectedSource.remove(at: index) } else { - self.selectedFavorite.append(favorite) + self.selectedSource.append(favorite) } } - func appendAndPopCharacter(character: String, index: Int) { + public func appendAndPopCharacter(character: Flavor, index: Int) { guard self.selectedCharacter.count < 2 || self.selectedCharacter.contains(character) else { return } if self.selectedCharacter.contains(character) { diff --git a/PingPong/Projects/Core/Domain/Model/Sources/Model/OnBoarding/Favorite/FavoriteModel.swift b/PingPong/Projects/Core/Domain/Model/Sources/Model/OnBoarding/Favorite/FavoriteModel.swift index 94ca06cd..da3188f2 100644 --- a/PingPong/Projects/Core/Domain/Model/Sources/Model/OnBoarding/Favorite/FavoriteModel.swift +++ b/PingPong/Projects/Core/Domain/Model/Sources/Model/OnBoarding/Favorite/FavoriteModel.swift @@ -5,14 +5,3 @@ // Created by 서원지 on 2023/09/03. // Copyright © 2023 Wonji Suh. All rights reserved. // - -import Foundation - -public enum Favorite: String { - case anime - case book - case celeb - case film - case greatman - case OTHER -} diff --git a/PingPong/Projects/DemoApp/ArchiveApp/Sources/Application/ProfileApp.swift b/PingPong/Projects/DemoApp/ArchiveApp/Sources/Application/ProfileApp.swift index e1addc2c..5d5fa05e 100644 --- a/PingPong/Projects/DemoApp/ArchiveApp/Sources/Application/ProfileApp.swift +++ b/PingPong/Projects/DemoApp/ArchiveApp/Sources/Application/ProfileApp.swift @@ -12,7 +12,7 @@ import Profile struct ProfileApp: App { var body: some Scene { WindowGroup { - ProfileView(backProfileViewAction: {}) +// ProfileView(backProfileViewAction: {}) } } } diff --git a/PingPong/Projects/Feature/Home/Sources/UI/View/ModalModifier/ModalView.swift b/PingPong/Projects/Feature/Home/Sources/UI/View/ModalModifier/ModalView.swift index 8d19be03..e6e73d5d 100644 --- a/PingPong/Projects/Feature/Home/Sources/UI/View/ModalModifier/ModalView.swift +++ b/PingPong/Projects/Feature/Home/Sources/UI/View/ModalModifier/ModalView.swift @@ -24,7 +24,8 @@ public struct ModalView: View { let didClose: () -> Void - let height:CGFloat = UIScreen.screenHeight * 0.7 + let height:CGFloat = UIScreen.screenHeight == 667 ? UIScreen.screenHeight * 0.8 : UIScreen.screenHeight * 0.7 + public init(viewModel: CommonViewViewModel, config: SheetManager.Config, isPopup: Bool, defaultYoffset: CGFloat, didClose: @escaping () -> Void) { self._viewModel = StateObject(wrappedValue: viewModel) diff --git a/PingPong/Projects/Feature/OnBoarding/Sources/UI/View/FavoriteWiseChoseView/SelectCategoryView.swift b/PingPong/Projects/Feature/OnBoarding/Sources/UI/View/FavoriteWiseChoseView/SelectCategoryView.swift index 2d28c7dd..f404ef59 100644 --- a/PingPong/Projects/Feature/OnBoarding/Sources/UI/View/FavoriteWiseChoseView/SelectCategoryView.swift +++ b/PingPong/Projects/Feature/OnBoarding/Sources/UI/View/FavoriteWiseChoseView/SelectCategoryView.swift @@ -120,9 +120,9 @@ public struct SelectCategoryView: View { ForEach(sortedCommCds, id: \.self) { item in VStack { - let favoirte = Favorite(rawValue: item.commCD) + let favoirte = Source(rawValue: item.commCD) - if viewModel.selectedFavorite.contains(Favorite(rawValue: (favoirte ?? .anime).rawValue) ?? .anime){ + if viewModel.selectedFavorite.contains(Source(rawValue: (favoirte ?? .anime).rawValue) ?? .anime){ Circle() .frame(width: 96, height: 96) .foregroundColor(.basicGray3) @@ -143,8 +143,8 @@ public struct SelectCategoryView: View { } .onTapGesture { - let favoirte = Favorite(rawValue: item.commCD) - if let favorite = favoirte { + let source = Source(rawValue: item.commCD) + if let favorite = source { self.viewModel.appendAndPopFavorite(favorite: favorite) } diff --git a/PingPong/Projects/Feature/OnBoarding/Sources/UI/View/FavoriteWiseChoseView/SelectCharacterView.swift b/PingPong/Projects/Feature/OnBoarding/Sources/UI/View/FavoriteWiseChoseView/SelectCharacterView.swift index ae8e13f2..a1b29b39 100644 --- a/PingPong/Projects/Feature/OnBoarding/Sources/UI/View/FavoriteWiseChoseView/SelectCharacterView.swift +++ b/PingPong/Projects/Feature/OnBoarding/Sources/UI/View/FavoriteWiseChoseView/SelectCharacterView.swift @@ -217,7 +217,8 @@ public struct SelectCharacterView: View { } ) .onTapGesture { - self.viewModel.appendAndPopCharacter(character: viewModel.flavorArray.options[flavorIndex].korean, index: flavorIndex) + guard let flavor = Flavor(rawValue: viewModel.flavorArray.options[flavorIndex].korean) else { return } + self.viewModel.appendAndPopCharacter(character: flavor, index: flavorIndex) self.viewModel.selectedFavoriteFlavor = commCDItem.commCD } } diff --git a/PingPong/Projects/Feature/OnBoarding/Sources/ViewModel/OnBoardingViewModel.swift b/PingPong/Projects/Feature/OnBoarding/Sources/ViewModel/OnBoardingViewModel.swift index 26230a39..84cd25ef 100644 --- a/PingPong/Projects/Feature/OnBoarding/Sources/ViewModel/OnBoardingViewModel.swift +++ b/PingPong/Projects/Feature/OnBoarding/Sources/ViewModel/OnBoardingViewModel.swift @@ -61,16 +61,15 @@ public class OnBoardingViewModel: ObservableObject { @Published var selectJobCode: Int = .zero @Published var selectedFavoriteCategory: String = "" @Published var selectedFavoriteFlavor: String = "" - @Published var selectedFavorite: [Favorite] = [] - @Published var selectedCharacter: [String] = [] + @Published var selectedFavorite: [Source] = [] + @Published var selectedCharacter: [Flavor] = [] @Published public var isSignUP: Bool = false @AppStorage("completdSignUP") public var completdSignUP: Bool = false @Published public var alreadySignUP: Bool = false @AppStorage("isFirstUserPOPUP") public var isFirstUserPOPUP: Bool = false let unicodeArray: [Character] = CheckRegister.generateUnicodeArray() - - @Published var flavorArray: SearchViewButtonInfo = SearchViewButtonInfo(title: .flavor, options: [ + @Published var flavorArray: SearchViewButtonInfo = SearchViewButtonInfo(title: .flavor, options: [ SearchOption(korean: "달콤한 맛", english: "sweet", iconImageName: "🍰", detail: "지친 삶의 위로, 기쁨을 주는 명언"), SearchOption(korean: "짭잘한 맛", english: "salty", iconImageName: "😭", detail: "울컥하게 만드는 감동적인 명언"), SearchOption(korean: "매콤한 맛", english: "spicy", iconImageName: "🔥", detail: "따끔한 조언의 자극적인 명언"), @@ -198,7 +197,7 @@ public class OnBoardingViewModel: ObservableObject { //MARK: favorite 관련 - func appendAndPopFavorite(favorite: Favorite) { + func appendAndPopFavorite(favorite: Source) { guard self.selectedFavorite.count < 2 || self.selectedFavorite.contains(favorite) else { return } if self.selectedFavorite.contains(favorite) { @@ -230,7 +229,7 @@ public class OnBoardingViewModel: ObservableObject { } //MARK: favorite character 관련 - func appendAndPopCharacter(character: String, index: Int) { + func appendAndPopCharacter(character: Flavor, index: Int) { guard self.selectedCharacter.count < 2 || self.selectedCharacter.contains(character) else { return } if self.selectedCharacter.contains(character) { diff --git a/PingPong/Projects/Feature/Profile/Sources/UI/View/MainView/ProfileView.swift b/PingPong/Projects/Feature/Profile/Sources/UI/View/MainView/ProfileView.swift index 340c99c9..0380dd0d 100644 --- a/PingPong/Projects/Feature/Profile/Sources/UI/View/MainView/ProfileView.swift +++ b/PingPong/Projects/Feature/Profile/Sources/UI/View/MainView/ProfileView.swift @@ -54,7 +54,7 @@ public struct ProfileView: View { userProfileList() userManagementList() - + appManagementList() logoutButton() @@ -77,7 +77,17 @@ public struct ProfileView: View { await profileViewModel.randomNameRequest(commCdTpCd: .userDesc) } - await profileViewModel.profileUserPrefRequset(userid: "\(authViewModel.userid)", completion: {}) + await profileViewModel.profileUserPrefRequset(userid: "\(authViewModel.userid)", completion: { + for userFlavor in profileViewModel.profileUserPrefModel?.data?.flavors ?? [] { + guard let flavor = Flavor(rawValue: userFlavor) else { continue } + viewModel.selectedCharacter.append(flavor) + } + for userSource in profileViewModel.profileUserPrefModel?.data?.sources ?? [] { + print(userSource) + guard let source = Source(rawValue: userSource) else { continue } + viewModel.selectedSource.append(source) + } + }) print("\(profileViewModel.randomNickName)") } @@ -94,18 +104,18 @@ public struct ProfileView: View { .navigationBarBackButtonHidden() } -// .sheet(isPresented: $profileViewModel.changeNickNameView, content: { -// ChangeNickNameView(viewModel: profileViewModel, authViewModel: authViewModel) { -// profileViewModel.changeNickNameView = false -// -// DispatchQueue.main.asyncAfter(deadline: .now() + 1) { -// profileViewModel.changeNickNameSuccessPOPUP.toggle() -// } -// } -// .ignoresSafeArea(.keyboard) -// .presentationDetents([UIScreen.main.bounds.height.native == 667 ? .height(UIScreen.screenHeight/2 + UIScreen.screenWidth*0.7) : .height(UIScreen.screenHeight/3 + UIScreen.screenWidth*0.7)]) -// .presentationCornerRadius(20) -// }) + // .sheet(isPresented: $profileViewModel.changeNickNameView, content: { + // ChangeNickNameView(viewModel: profileViewModel, authViewModel: authViewModel) { + // profileViewModel.changeNickNameView = false + // + // DispatchQueue.main.asyncAfter(deadline: .now() + 1) { + // profileViewModel.changeNickNameSuccessPOPUP.toggle() + // } + // } + // .ignoresSafeArea(.keyboard) + // .presentationDetents([UIScreen.main.bounds.height.native == 667 ? .height(UIScreen.screenHeight/2 + UIScreen.screenWidth*0.7) : .height(UIScreen.screenHeight/3 + UIScreen.screenWidth*0.7)]) + // .presentationCornerRadius(20) + // }) .popup(isPresented: $profileViewModel.changeNickNameSuccessPOPUP) { WithDrawPOPUP( @@ -126,7 +136,7 @@ public struct ProfileView: View { .closeOnTap(true) .closeOnTapOutside(true) .backgroundColor(.basicBlackDimmed) - + } } @@ -139,7 +149,7 @@ public struct ProfileView: View { .scaledToFit() .frame(width: 10, height: 18) .foregroundColor(.basicGray8) - + Text("설정") .pretendardFont(family: .SemiBold, size: 18) .foregroundColor(.basicBlack) @@ -212,7 +222,7 @@ public struct ProfileView: View { } .padding(.horizontal, 16) } - + } @@ -241,57 +251,65 @@ public struct ProfileView: View { .foregroundColor(.basicGray7) .padding(EdgeInsets(top: 10, leading: 16, bottom: 10, trailing: 0)) Spacer() - HStack{ - HStack { - Image(assetName: viewModel.selectedCard.hashtags.flavor.type.smallIconImageName) - Text(viewModel.selectedCard.hashtags.flavor.type.korean) - .pretendardFont(family: .SemiBold, size: 12) - } - .foregroundColor(.mildIconText) - .frame(minWidth: 41, maxHeight: 26) - .padding(.horizontal, 10) - .background ( - RoundedRectangle(cornerRadius: 16) - .foregroundColor(.basicGray1BG) - .overlay( - RoundedRectangle(cornerRadius: 16) - .stroke(lineWidth: 1) - .foregroundColor(.basicGray3) - ) - ) - .onTapGesture { - withAnimation { - sheetManager.present(with: .init(idx: 1)) - sheetManager.isPopup = true - } - } - - HStack { - Image(assetName: viewModel.selectedCard.hashtags.source.type.smallIconImageName) - Text(viewModel.selectedCard.hashtags.source.type.korean) - .pretendardFont(family: .SemiBold, size: 12) - .foregroundColor(.animation) + + if viewModel.selectedSource.count > 2 || viewModel.selectedSource.count == 0{ + HStack{ + HStack { + Text("유형 전체") + .pretendardFont(family: .SemiBold, size: 12) + } + .foregroundColor(.basicGray7) + .frame(minWidth: 41, maxHeight: 26) + .padding(.horizontal, 10) + .background ( + RoundedRectangle(cornerRadius: 16) + .foregroundColor(.basicGray1BG) + .overlay( + RoundedRectangle(cornerRadius: 16) + .stroke(lineWidth: 1) + .foregroundColor(.basicGray3) + ) + ) + .onTapGesture { + withAnimation { + sheetManager.present(with: .init(idx: 1)) + sheetManager.isPopup = true + } + } + .padding(.trailing, 16) + } - .frame(minWidth: 41, maxHeight: 26) - .padding(.horizontal, 10) - .background( - RoundedRectangle(cornerRadius: 16) - .foregroundColor(.basicGray1BG) - .overlay( + } else { + ForEach(viewModel.selectedSource, id: \.self) { source in + + HStack{ + HStack { + Image(assetName: source.type.smallIconImageName) + Text(source.type.korean) + .pretendardFont(family: .SemiBold, size: 12) + } + .foregroundColor(.mildIconText) + .frame(minWidth: 41, maxHeight: 26) + .padding(.horizontal, 10) + .background ( RoundedRectangle(cornerRadius: 16) - .stroke(lineWidth: 1) - .foregroundColor(.basicGray3) + .foregroundColor(.basicGray1BG) + .overlay( + RoundedRectangle(cornerRadius: 16) + .stroke(lineWidth: 1) + .foregroundColor(.basicGray3) + ) ) - ) - .onTapGesture { - withAnimation { - sheetManager.present(with: .init(idx: 2)) - sheetManager.isPopup = true + .onTapGesture { + withAnimation { + sheetManager.present(with: .init(idx: 1)) + sheetManager.isPopup = true + } + } } } - + .padding(.trailing, 16) } - .padding(.trailing, 16) } .frame(width: UIScreen.screenWidth - 40, height: 42) @@ -302,44 +320,66 @@ public struct ProfileView: View { .padding(EdgeInsets(top: 10, leading: 16, bottom: 18, trailing: 0)) Spacer() - HStack{ - HStack { - Image(assetName: viewModel.selectedCard.hashtags.flavor.type.smallIconImageName) - Text(viewModel.selectedCard.hashtags.flavor.type.korean) - .pretendardFont(family: .SemiBold, size: 12) + + if viewModel.selectedCharacter.count > 2 || viewModel.selectedCharacter.count == 0 { + HStack{ + HStack { + Text("성향 전체") + .pretendardFont(family: .SemiBold, size: 12) + } + .foregroundColor(.basicGray7) + .frame(minWidth: 41, maxHeight: 26) + .padding(.horizontal, 10) + .background ( + RoundedRectangle(cornerRadius: 16) + .foregroundColor(.basicGray1BG) + .overlay( + RoundedRectangle(cornerRadius: 16) + .stroke(lineWidth: 1) + .foregroundColor(.basicGray3) + ) + ) + .onTapGesture { + withAnimation { + sheetManager.present(with: .init(idx: 1)) + sheetManager.isPopup = true + } + } + .padding(.trailing, 16) + } - .foregroundColor(.mildIconText) - .frame(minWidth: 41, maxHeight: 26) - .padding(.horizontal, 10) - .background ( - RoundedRectangle(cornerRadius: 16) - .foregroundColor(.basicGray1BG) - .overlay( + } else { + ForEach(viewModel.selectedCharacter, id: \.self) { character in + + HStack{ + HStack { + Image(assetName: character.type.smallIconImageName) + Text(character.type.korean) + .pretendardFont(family: .SemiBold, size: 12) + } + .foregroundColor(.mildIconText) + .frame(minWidth: 41, maxHeight: 26) + .padding(.horizontal, 10) + .background ( RoundedRectangle(cornerRadius: 16) - .stroke(lineWidth: 1) - .foregroundColor(.basicGray3) + .foregroundColor(.basicGray1BG) + .overlay( + RoundedRectangle(cornerRadius: 16) + .stroke(lineWidth: 1) + .foregroundColor(.basicGray3) + ) ) - ) - - HStack { - Image(assetName: viewModel.selectedCard.hashtags.source.type.smallIconImageName) - Text(viewModel.selectedCard.hashtags.source.type.korean) - .pretendardFont(family: .SemiBold, size: 12) - .foregroundColor(.animation) + .onTapGesture { + withAnimation { + sheetManager.present(with: .init(idx: 1)) + sheetManager.isPopup = true + } + } + } } - .frame(minWidth: 41, maxHeight: 26) - .padding(.horizontal, 10) - .background( - RoundedRectangle(cornerRadius: 16) - .foregroundColor(.basicGray1BG) - .overlay( - RoundedRectangle(cornerRadius: 16) - .stroke(lineWidth: 1) - .foregroundColor(.basicGray3) - ) - ) + .padding(.trailing, 16) } - .padding(.trailing, 16) + } .frame(width: UIScreen.screenWidth - 40, height: 50) } @@ -381,13 +421,13 @@ public struct ProfileView: View { profileViewModel.gotoNotificationQuoteView.toggle() case "reviewImage": -// if let reviewURL = URL(string: "itms-apps://itunes.apple.com/app/itunes-u/id\()?ls=1&mt=8&action=write-review"), UIApplication.shared.canOpenURL(reviewURL) { // 유효한 URL인지 검사합니다. -// if #available(iOS 10.0, *) { //iOS 10.0부터 URL를 오픈하는 방법이 변경 되었습니다. -// UIApplication.shared.open(reviewURL, options: [:], completionHandler: nil) -// } else { -// UIApplication.shared.openURL(reviewURL) -// } -// } + // if let reviewURL = URL(string: "itms-apps://itunes.apple.com/app/itunes-u/id\()?ls=1&mt=8&action=write-review"), UIApplication.shared.canOpenURL(reviewURL) { // 유효한 URL인지 검사합니다. + // if #available(iOS 10.0, *) { //iOS 10.0부터 URL를 오픈하는 방법이 변경 되었습니다. + // UIApplication.shared.open(reviewURL, options: [:], completionHandler: nil) + // } else { + // UIApplication.shared.openURL(reviewURL) + // } + // } break case "settingImage": profileViewModel.gotoOtherSettingView.toggle() @@ -398,7 +438,7 @@ public struct ProfileView: View { let url = URL(string: "mailto:suhwj81@gmail.com?subject=\(subject)&body=\(body)") else { return } - + if UIApplication.shared.canOpenURL(url) { UIApplication.shared.open(url, options: [:], completionHandler: nil) } diff --git a/PingPong/Projects/Feature/Profile/Sources/UI/View/ModalModifier/ProfileModalView.swift b/PingPong/Projects/Feature/Profile/Sources/UI/View/ModalModifier/ProfileModalView.swift index f557ce6e..f0a57e50 100644 --- a/PingPong/Projects/Feature/Profile/Sources/UI/View/ModalModifier/ProfileModalView.swift +++ b/PingPong/Projects/Feature/Profile/Sources/UI/View/ModalModifier/ProfileModalView.swift @@ -24,7 +24,7 @@ public struct ProfileModalView: View { let didClose: () -> Void - let height:CGFloat = UIScreen.screenHeight == 667 ? UIScreen.screenHeight * 0.8 : UIScreen.screenHeight * 0.7 + let height:CGFloat = UIScreen.screenHeight == 667 ? UIScreen.screenHeight * 0.8 : UIScreen.screenHeight * 0.7 public init(viewModel: CommonViewViewModel, config: SheetManager.Config, isPopup: Bool, defaultYoffset: CGFloat, didClose: @escaping () -> Void) { self._viewModel = StateObject(wrappedValue: viewModel) @@ -146,6 +146,7 @@ private extension ProfileModalView { } Spacer() Button(action: { + viewModel.appendAndPopFavorite(favorite: .anime) viewModel.searchViewButtonInfoArray[config.idx].options[idx].isCheck.toggle() }) { Image(systemName: viewModel.searchViewButtonInfoArray[config.idx].options[idx].isCheck ? "checkmark.circle.fill" : "checkmark.circle") @@ -181,29 +182,29 @@ private extension ProfileModalView { .foregroundColor(.basicWhite) ) .onTapGesture { - let moodParameter: [String] = viewModel.generateParameter(searchType: .situation) - let flavorParameter: [String] = viewModel.generateParameter(searchType: .flavor) - let sourceParameter: [String] = viewModel.generateParameter(searchType: .source) +// let moodParameter: [String] = viewModel.generateParameter(searchType: .situation) +// let flavorParameter: [String] = viewModel.generateParameter(searchType: .flavor) +// let sourceParameter: [String] = viewModel.generateParameter(searchType: .source) - Task { - await exploreViewViewModel.searchRequest(keyword: viewModel.exploreViewSearchBarText, flavors: flavorParameter, sources: sourceParameter, mood: moodParameter, orderBy: "") { - viewModel.searchedCards = [] - - for quoteContent in exploreViewViewModel.searchModel?.data?.content ?? [] { - let hashTags = viewModel.getHashtags(post: quoteContent) - let card = CardInfomation(qouteId: quoteContent.quoteID ?? .zero, - hashtags: hashTags, image: "", - title: quoteContent.content ?? "", - sources: quoteContent.author ?? "", - isBookrmark: quoteContent.likeID != nil, - likeId: quoteContent.likeID - ) - viewModel.searchedCards.append(card) - } - } - } - - didClose() +// Task { +// await exploreViewViewModel.searchRequest(keyword: viewModel.exploreViewSearchBarText, flavors: flavorParameter, sources: sourceParameter, mood: moodParameter, orderBy: "") { +// viewModel.searchedCards = [] +// +// for quoteContent in exploreViewViewModel.searchModel?.data?.content ?? [] { +// let hashTags = viewModel.getHashtags(post: quoteContent) +// let card = CardInfomation(qouteId: quoteContent.quoteID ?? .zero, +// hashtags: hashTags, image: "", +// title: quoteContent.content ?? "", +// sources: quoteContent.author ?? "", +// isBookrmark: quoteContent.likeID != nil, +// likeId: quoteContent.likeID +// ) +// viewModel.searchedCards.append(card) +// } +// } +// } +// +// didClose() } } } diff --git a/PingPong/Projects/Feature/Profile/Sources/UI/View/ViewModel/ProfileViewViewModel.swift b/PingPong/Projects/Feature/Profile/Sources/UI/View/ViewModel/ProfileViewViewModel.swift index 0bf85504..c25f38a0 100644 --- a/PingPong/Projects/Feature/Profile/Sources/UI/View/ViewModel/ProfileViewViewModel.swift +++ b/PingPong/Projects/Feature/Profile/Sources/UI/View/ViewModel/ProfileViewViewModel.swift @@ -268,7 +268,7 @@ public class ProfileViewViewModel: ObservableObject { return true } - public func chnageImage() { + public func changeImage() { switch self.randomNickName { case "바삭바삭 명언제과": changeNickImage = "crunchyNickname"