From adb57798d5be77a296c998bb1761d0bf2c1bbc48 Mon Sep 17 00:00:00 2001 From: enebin Date: Sat, 19 Aug 2023 10:10:19 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=ED=99=88=20=EC=95=A0=EB=8B=88=EB=A9=94?= =?UTF-8?q?=EC=9D=B4=EC=85=98,=20=ED=91=B8=EC=8B=9C=EC=95=8C=EB=A6=BC=20?= =?UTF-8?q?=EA=B7=B8=EB=A6=AC=EA=B3=A0=20=ED=91=B8=EB=A5=B8=EC=88=98?= =?UTF-8?q?=EC=97=BC=EC=9D=98=20=EC=95=84=EB=82=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GoogleService-Info.plist.encrypted | Bin 1104 -> 1104 bytes .../Core/Util/Sources/KFImageManager.swift | 2 +- .../Sources/Model/KeymeTestsModel.swift | 6 ++-- .../Sources/Model/TestResultModel.swift | 2 +- .../Sources/Home/KeymeTestsStartFeature.swift | 23 +++++++++---- .../Sources/Home/KeymeTestsStartView.swift | 12 ++++--- .../Result/CardView/KeymeCardView.swift | 10 +++--- .../Sources/MainPage/MainPageView.swift | 21 +----------- .../Onboarding/OnboardingFeature.swift | 8 ++--- Projects/Keyme/Sources/KeymeApp.swift | 31 ++++++++++++------ 10 files changed, 59 insertions(+), 56 deletions(-) diff --git a/Encrypted/Secrets/GoogleService-Info.plist.encrypted b/Encrypted/Secrets/GoogleService-Info.plist.encrypted index dbe4cb732ff1ca1e93aa85b1713bd24bea66e0ca..226910d1705a0babe921878ccff97f9f999a8cd0 100644 GIT binary patch delta 910 zcmV;919AM&2+#hB_dzMw}1C^b{3FPLT7T|wOV6O z3xMs)8k+x53px32IC19*{^m|q~5vQHB~0)@iUdx-VX?xnLu5g zEH%~P%!t*(Rnnm`_9-zzb8h(S6zOo;D6iS#&#DkA3E=@T}e>^fwT9@ zpwea;(3hN>g^%ZCXq=O^2kmbP)Kh?vG`PAQo%JU4_{j-blCst#tZhh|%_}k4m}gml z9lRCDn~ctd5Vgs~0_?>=fjs{^lth#1+FLt3k=gB^U>&R8M6VqI`)q*$1C4a#jP@3S6-k~ibOVY!m1nsoF-RZw5 zKmx2m0I<%HvuOj{{rr`{FpkPoc!^W$PC#G^r0jvQ$8g_Atfcb=1;;0o?=*+|+Vesi?P{@2hg*MrrdgJRG3exT zeShs;*E;+akX@x`fD<3C6Jq|;zt$#B?0cfhP+t}fijqerY6k|yjH*R>Ij|?(i|Mna zjCKK|E$xzNH3!9Pv?(mRydF->cmMzZ delta 910 zcmV;919AM&2+#{Z z|HRnX>JDy2`Vh}tG66C1F>bQZ1$6@sGEq+-*$w6j9l)uOLLxT?>+jKjRZ$8ur;hDotqED;&CGzW*9hOh_@l(FY5!frsxewvWZ z!wwaG=*SmIO8+sFXSyc3ll~!Pr3by1uy^RQ=vFzP%YSDRC+f_E*MgDB8O*Y5ifRUL z`pD$pFG7b*ReBXItx2^%6?zvXFO@3kD~nr{)Jm>rVmjVGL=6sBm!R{5Hc{WoQKI23 z=sN%eFIyLI4peX3NZE(c1NYM!O^PYlek$G6edcWv@cw(wH_cyQkp;4-;~nr^)yP3Q zARFgHCx3|z47Y+rkE}*Uw~#A*K=#@clCb@L6)9Epb$h(GGNOe5r#`f+Mz!k-Vm9Hr zFZl!j3@%yCNA(JnY`qYlS`-EIimA&IO2aXjUSX^ZhpmO~1@YNcLYeoz;8r<43~?_` z^L^_lv`C)>QLEi3Bu-GpCkk3XquC@dT?3O_`G2RqN4UtbE!dzT47xtnhSxqF-!)&0Av-@h5}csr&jJ5dj%HuW%4LJ#3QbWKbVJ;Wxw8y5N3-B)8Abe4 zC@F8Uh}FxHtCFYLm&y$iZG6(`{Jgk5V*o7vJsIp#$~IZbKlKFd95u%WM(Ozyy|ZIM zUVk4wn+PA$D?JR?^^*Q1a_#I#1pqnEE_Krn4(`wIJ KFImage { return KFImage(URL(string: url)) .placeholder { - Image(systemName: "x.circle.fill") + Image(systemName: "questionmark.circle.fill") } .retry(maxCount: 3, interval: .seconds(3)) .onFailure { error in print("Kingfisher Error: \(error)") } diff --git a/Projects/Domain/Sources/Model/KeymeTestsModel.swift b/Projects/Domain/Sources/Model/KeymeTestsModel.swift index 79f91f7d..78d29139 100644 --- a/Projects/Domain/Sources/Model/KeymeTestsModel.swift +++ b/Projects/Domain/Sources/Model/KeymeTestsModel.swift @@ -19,17 +19,17 @@ public struct KeymeTestsModel: Equatable { } public struct IconModel: Equatable, Hashable { - public let image: String + public let imageURL: String public let color: Color - public static var EMPTY: IconModel = .init(image: "", color: Color.hex("")) + public static let EMPTY: IconModel = .init(imageURL: "", color: Color.hex("")) } public extension KeymeTestsDTO { func toIconModel() -> KeymeTestsModel { let nickname = data.owner.nickname let icons = data.questions.map { - IconModel(image: $0.category.iconUrl, + IconModel(imageURL: $0.category.iconUrl, color: Color.hex($0.category.color)) } return KeymeTestsModel(nickname: nickname ?? "키미", diff --git a/Projects/Domain/Sources/Model/TestResultModel.swift b/Projects/Domain/Sources/Model/TestResultModel.swift index 990b581c..5feba0e3 100644 --- a/Projects/Domain/Sources/Model/TestResultModel.swift +++ b/Projects/Domain/Sources/Model/TestResultModel.swift @@ -27,7 +27,7 @@ public extension ResultDTO { return TestResultModel( title: keyword, score: score, - icon: IconModel(image: category.iconUrl, + icon: IconModel(imageURL: category.iconUrl, color: Color.hex(category.color)) ) } diff --git a/Projects/Features/Sources/Home/KeymeTestsStartFeature.swift b/Projects/Features/Sources/Home/KeymeTestsStartFeature.swift index 2718bc6d..6a788adc 100644 --- a/Projects/Features/Sources/Home/KeymeTestsStartFeature.swift +++ b/Projects/Features/Sources/Home/KeymeTestsStartFeature.swift @@ -16,7 +16,7 @@ public struct KeymeTestsStartFeature: Reducer { public var keymeTests: KeymeTestsFeature.State? public var isAnimating: Bool = false public var nickname: String? - public var testId: Int = 0 + public var testId: Int = 5 // TODO: change public var icon: IconModel = .EMPTY public init() { } @@ -25,6 +25,7 @@ public struct KeymeTestsStartFeature: Reducer { public enum Action { case viewWillAppear case fetchDailyTests(TaskResult) + case startAnimation([IconModel]) case setIcon(IconModel) case startButtonDidTap case keymeTests(KeymeTestsFeature.Action) @@ -41,28 +42,36 @@ public struct KeymeTestsStartFeature: Reducer { case .viewWillAppear: return .run { send in await send(.fetchDailyTests( - TaskResult { try await self.keymeTestsClient.fetchDailyTests() } + TaskResult { + try await self.keymeTestsClient.fetchDailyTests() + } )) } case let .fetchDailyTests(.success(tests)): state.nickname = tests.nickname state.testId = tests.testId - state.isAnimating.toggle() + state.isAnimating = true + + return .send(.startAnimation(tests.icons)) + + case .fetchDailyTests(.failure): + state.nickname = "키미" // TODO: 변경 + return .send(.startAnimation([IconModel.EMPTY])) + + case .startAnimation(let icons): return .run { send in repeat { - for icon in tests.icons { + for icon in icons { await send(.setIcon(icon)) try await self.clock.sleep(for: .seconds(1.595)) } } while true } - case .fetchDailyTests(.failure): - state.nickname = nil - case let .setIcon(icon): state.icon = icon + state.isAnimating = true case .startButtonDidTap: let url = "https://keyme-frontend.vercel.app/test/\(state.testId)" diff --git a/Projects/Features/Sources/Home/KeymeTestsStartView.swift b/Projects/Features/Sources/Home/KeymeTestsStartView.swift index dbdbd258..56b07c8d 100644 --- a/Projects/Features/Sources/Home/KeymeTestsStartView.swift +++ b/Projects/Features/Sources/Home/KeymeTestsStartView.swift @@ -58,10 +58,12 @@ public struct KeymeTestsStartView: View { } func welcomeText(_ viewStore: ViewStore) -> some View { - Text.keyme("환영해요 \(viewStore.nickname ?? "키미")님!\n이제 문제를 풀어볼까요?", font: .heading1) // TODO: 닉변 - .foregroundColor(DSKitAsset.Color.keymeWhite.swiftUIColor) - .frame(maxWidth: .infinity, alignment: .leading) - .padding(Padding.insets(leading: 16)) + Text.keyme( + "환영해요 \(viewStore.nickname ?? "키미")님!\n이제 문제를 풀어볼까요?", + font: .heading1) // TODO: 닉변 + .foregroundColor(DSKitAsset.Color.keymeWhite.swiftUIColor) + .frame(maxWidth: .infinity, alignment: .leading) + .padding(Padding.insets(leading: 16)) } func startTestsButton(_ viewStore: ViewStore