Skip to content

Commit a187adb

Browse files
author
Mincheol Kim
authored
Merge pull request #62 from Nexters/fix/share-card
fix: 공유 화면 시간 관련 버그 수정
2 parents f97409b + db98f83 commit a187adb

File tree

11 files changed

+79
-69
lines changed

11 files changed

+79
-69
lines changed

Sticky/Extensions/Int+.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ extension Int {
2525
func toTimeData() -> TimeData {
2626
let time = (
2727
day: self / 86400,
28-
hours: self / 3600,
28+
hours: (self % 86400) / 3600,
2929
minutes: (self % 3600) / 60,
3030
seconds: (self % 3600) % 60
3131
)

Sticky/Features/Banner/Components/Banner.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ struct Banner: View {
2525
badges: self.badgeViewModel.monthly
2626
)
2727
let remainMonthlyBadge = (Int(nextMonthlyBadge.badgeValue) ?? 0) * 3600
28-
- (challengeState.timeData.toSeconds() + user.thisMonthAccumulateSeconds)
28+
- challengeState.timeData.toSeconds()
2929
if remainMonthlyBadge <= 0 {
3030
nextMonthlyBadge.updated = Date()
3131
nextMonthlyBadge.count += 1

Sticky/Features/MyPage/Components/Summary.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ struct Summary: View {
1313
/// 누적 시간
1414
var seconds: Int
1515
@Binding var selection: ShareType?
16+
@EnvironmentObject var user: User
1617
@EnvironmentObject var shareViewModel: ShareViewModel
1718

1819
var body: some View {
19-
let tier = Tier.of(hours: seconds / 3600)
20-
let remainNextLevel = tier.next() - seconds
20+
let tier = Tier(level: user.level)
21+
let remainNextLevel = tier.next() - user.accumulateSeconds
2122
return VStack(alignment: .trailing) {
2223
HStack(alignment: .top) {
2324
Spacer()

Sticky/Features/MyPage/Models/User.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,4 @@ public class User: ObservableObject {
3030
UserDefaults.standard.set(accumulateSeconds, forKey: "accumulateSeconds")
3131
}
3232
}
33-
34-
// 이번 달 누적 시간
35-
@Published var thisMonthAccumulateSeconds: Int = UserDefaults.standard.integer(forKey: "thisMonthAccumulateSeconds") {
36-
didSet {
37-
UserDefaults.standard.set(thisMonthAccumulateSeconds, forKey: "thisMonthAccumulateSeconds")
38-
}
39-
}
4033
}

Sticky/Features/MyPage/Views/MyPage.swift

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@ struct MyPage: View {
1313
// MARK: Internal
1414

1515
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
16-
@StateObject var badgeViewModel: BadgeViewModel
16+
1717
@EnvironmentObject var user: User
1818
@EnvironmentObject var challengeState: ChallengeState
19+
@StateObject var shareViewModel: ShareViewModel
20+
@StateObject var badgeViewModel: BadgeViewModel
21+
1922
@State var showingActionSheet = false
2023

2124
var monthlyButton: some View {
@@ -59,14 +62,18 @@ struct MyPage: View {
5962
EmptyView()
6063
}
6164
NavigationLink(
62-
destination: Share(shareType: ShareType.card, badgeViewModel: badgeViewModel),
65+
destination: Share(
66+
shareType: ShareType.card,
67+
shareViewModel: shareViewModel,
68+
badgeViewModel: badgeViewModel
69+
),
6370
tag: ShareType.card,
6471
selection: $navSelection
6572
) { EmptyView() }
6673

6774
VStack(alignment: .leading, spacing: 20) {
6875
Summary(
69-
seconds: user.accumulateSeconds + challengeState.timeData.toSeconds(),
76+
seconds: user.accumulateSeconds,
7077
selection: $navSelection
7178
)
7279
.padding(.bottom, 15)
@@ -145,7 +152,7 @@ struct MyPage: View {
145152

146153
struct MyPage_Previews: PreviewProvider {
147154
static var previews: some View {
148-
MyPage(badgeViewModel: BadgeViewModel())
155+
MyPage(shareViewModel: ShareViewModel(), badgeViewModel: BadgeViewModel())
149156
.environmentObject(User())
150157
.environmentObject(ChallengeState())
151158
}

Sticky/Features/Share/Component/CardSlide.swift

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,9 @@ struct CardSlide: View {
2020
// MARK: Internal
2121

2222
@EnvironmentObject var UIState: UIStateModel
23-
@EnvironmentObject var challengeState: ChallengeState
24-
@EnvironmentObject var shareViewModel: ShareViewModel
2523
@EnvironmentObject var user: User
2624
@ObservedObject var badgeViewModel: BadgeViewModel
25+
@ObservedObject var shareViewModel: ShareViewModel
2726

2827
@Binding var items: [Card]
2928
let randomBodyText_KR = ["와우! 끈기가 대단해요", "정말 대단해요!", "와 진짜 믿을수 없어"]
@@ -223,7 +222,7 @@ struct CardSlide: View {
223222
}
224223

225224
private var level: Int {
226-
switch Tier.of(hours: (user.accumulateSeconds + challengeState.timeData.toSeconds()) / 3600).level {
225+
switch Tier.of(hours: user.accumulateSeconds / 3600).level {
227226
case 1...3:
228227
return 1
229228
case 4...6:
@@ -239,11 +238,11 @@ struct CardSlide: View {
239238
}
240239

241240
private var isDayTextHidden: Bool {
242-
return challengeState.timeData.day > 0 ? false : true
241+
return shareViewModel.seconds.toTimeData().day > 0 ? false : true
243242
}
244243

245244
private var isHourTextHidden: Bool {
246-
return challengeState.timeData.hour > 0 ? false : true
245+
return shareViewModel.seconds.toTimeData().hour > 0 ? false : true
247246
}
248247

249248
private func getRandomText() -> String {
@@ -266,9 +265,8 @@ public class UIStateModel: ObservableObject {
266265

267266
struct CardSlide_Previews: PreviewProvider {
268267
static var previews: some View {
269-
CardSlide(badgeViewModel: BadgeViewModel(), items: .constant(items))
268+
CardSlide(badgeViewModel: BadgeViewModel(), shareViewModel: ShareViewModel(), items: .constant(items))
270269
.environmentObject(UIStateModel())
271-
.environmentObject(ChallengeState())
272270
.environmentObject(User())
273271
}
274272
}

Sticky/Features/Share/Component/CardSlideView.swift

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ struct CardSlideView: View {
1414

1515
@EnvironmentObject var UIState: UIStateModel
1616
@ObservedObject var badgeViewModel: BadgeViewModel
17+
@ObservedObject var shareViewModel: ShareViewModel
1718

1819
var body: some View {
1920
VStack {
@@ -38,7 +39,11 @@ struct CardSlideView: View {
3839
}
3940
.padding(.bottom, 16)
4041
.foregroundColor(Color.white)
41-
CardSlide(badgeViewModel: badgeViewModel, items: $items)
42+
CardSlide(
43+
badgeViewModel: badgeViewModel,
44+
shareViewModel: shareViewModel,
45+
items: $items
46+
)
4247
HStack {
4348
Text("나의 ")+Text(getBottomString()).bold()+Text(" 공유합니다")
4449
}
@@ -71,7 +76,10 @@ struct CardSlideView: View {
7176

7277
struct CardSlideView_Previews: PreviewProvider {
7378
static var previews: some View {
74-
CardSlideView(badgeViewModel: BadgeViewModel())
75-
.environmentObject(UIStateModel())
79+
CardSlideView(
80+
badgeViewModel: BadgeViewModel(),
81+
shareViewModel: ShareViewModel()
82+
)
83+
.environmentObject(UIStateModel())
7684
}
7785
}

Sticky/Features/Share/Model/ShareViewModel.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,17 @@ class ShareViewModel: ObservableObject {
1313
init() {
1414
badge = loadBadge(forKey: "shareBadge")
1515
seconds = UserDefaults.standard.integer(forKey: "shareSeconds")
16+
// let type = Main.ChallengeType(
17+
// rawValue: UserDefaults.standard.integer(forKey: "challengeType")
18+
// ) ?? .notRunning
19+
// switch type {
20+
// case .notAtHome,
21+
// .notRunning,
22+
// .outing:
23+
// seconds = 0
24+
// case .running:
25+
// seconds = UserDefaults.standard.integer(forKey: "shareSeconds")
26+
// }
1627
}
1728

1829
// MARK: Internal

Sticky/Features/Share/View/Share.swift

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,22 @@ import SwiftUI
1111
// MARK: - Share
1212

1313
struct Share: View {
14-
// MARK: Lifecycle
15-
16-
init(shareType: ShareType, badgeViewModel: BadgeViewModel) {
17-
self.shareType = shareType
18-
self.badgeViewModel = badgeViewModel
19-
}
20-
2114
// MARK: Internal
2215

16+
// init(shareType: ShareType, badgeViewModel: BadgeViewModel, ) {
17+
// self.shareType = shareType
18+
// self.badgeViewModel = badgeViewModel
19+
// }
20+
2321
@State var bgColor: LinearGradient = Color.Sticky.blue_bg
2422
var shareType: ShareType
2523

2624
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
27-
@EnvironmentObject var shareViewModel: ShareViewModel
2825
@EnvironmentObject var UIState: UIStateModel
2926
@EnvironmentObject var user: User
3027
@EnvironmentObject var challengeState: ChallengeState
28+
29+
@ObservedObject var shareViewModel: ShareViewModel
3130
@ObservedObject var badgeViewModel: BadgeViewModel
3231

3332
var body: some View {
@@ -86,15 +85,13 @@ struct Share: View {
8685
}
8786

8887
private func setBackgroundColor(type: BadgeType) -> AnyView {
89-
print("\(UIState.activeCard)asdasd")
9088
switch shareType {
9189
case .slide:
9290
return AnyView(setColor().ignoresSafeArea())
9391

9492
default:
9593
switch type {
9694
case .level:
97-
9895
bgColor = Color.Sticky.blue_bg
9996
return
10097
AnyView(
@@ -118,11 +115,7 @@ struct Share: View {
118115

119116
private func setColor() -> Color {
120117
var color: Color
121-
let hours = (user.accumulateSeconds + challengeState.timeData.toSeconds()) / 3600
122-
123-
let level = Tier.of(hours: hours).level
124-
125-
switch level {
118+
switch user.level {
126119
case 0...3:
127120
color = Color.Background.blue
128121
case 4...6:
@@ -144,7 +137,10 @@ struct Share: View {
144137
print("setCardView")
145138
switch shareType {
146139
case .slide:
147-
view = AnyView(CardSlideView(badgeViewModel: badgeViewModel))
140+
view = AnyView(CardSlideView(
141+
badgeViewModel: badgeViewModel,
142+
shareViewModel: shareViewModel
143+
))
148144

149145
case .card:
150146
let badge = shareViewModel.badge
@@ -186,8 +182,12 @@ struct Share: View {
186182

187183
struct Share_Previews: PreviewProvider {
188184
static var previews: some View {
189-
Share(shareType: ShareType.card, badgeViewModel: BadgeViewModel())
190-
.environmentObject(ShareViewModel())
191-
.environmentObject(UIStateModel())
185+
Share(
186+
shareType: ShareType.card,
187+
shareViewModel: ShareViewModel(),
188+
badgeViewModel: BadgeViewModel()
189+
)
190+
.environmentObject(ShareViewModel())
191+
.environmentObject(UIStateModel())
192192
}
193193
}

Sticky/Features/Timer/ChallengeState.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class ChallengeState: ObservableObject {
2727
timeData.hour = nowComponents.hour ?? 0
2828
timeData.minute = nowComponents.minute ?? 0
2929
timeData.second = nowComponents.second ?? 0
30+
UserDefaults.standard.set(timeData.toSeconds(), forKey: "shareSeconds")
3031
}
3132
if type == .outing {
3233
let outingComponents = now.compareTo(date: outingDate)

0 commit comments

Comments
 (0)