Skip to content

Commit db98f83

Browse files
author
Kim Mincheol
committed
fix(share-card): 공유 화면 시간 연동 버그 수정
1 parent 47f9ecd commit db98f83

File tree

7 files changed

+68
-28
lines changed

7 files changed

+68
-28
lines changed

Sticky/Features/MyPage/Views/MyPage.swift

Lines changed: 10 additions & 3 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,7 +62,11 @@ 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() }
@@ -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: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ struct CardSlide: View {
2020
// MARK: Internal
2121

2222
@EnvironmentObject var UIState: UIStateModel
23-
@EnvironmentObject var shareViewModel: ShareViewModel
2423
@EnvironmentObject var user: User
2524
@ObservedObject var badgeViewModel: BadgeViewModel
25+
@ObservedObject var shareViewModel: ShareViewModel
2626

2727
@Binding var items: [Card]
2828
let randomBodyText_KR = ["와우! 끈기가 대단해요", "정말 대단해요!", "와 진짜 믿을수 없어"]
@@ -265,7 +265,7 @@ public class UIStateModel: ObservableObject {
265265

266266
struct CardSlide_Previews: PreviewProvider {
267267
static var previews: some View {
268-
CardSlide(badgeViewModel: BadgeViewModel(), items: .constant(items))
268+
CardSlide(badgeViewModel: BadgeViewModel(), shareViewModel: ShareViewModel(), items: .constant(items))
269269
.environmentObject(UIStateModel())
270270
.environmentObject(User())
271271
}

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: 18 additions & 12 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 {
@@ -138,7 +137,10 @@ struct Share: View {
138137
print("setCardView")
139138
switch shareType {
140139
case .slide:
141-
view = AnyView(CardSlideView(badgeViewModel: badgeViewModel))
140+
view = AnyView(CardSlideView(
141+
badgeViewModel: badgeViewModel,
142+
shareViewModel: shareViewModel
143+
))
142144

143145
case .card:
144146
let badge = shareViewModel.badge
@@ -180,8 +182,12 @@ struct Share: View {
180182

181183
struct Share_Previews: PreviewProvider {
182184
static var previews: some View {
183-
Share(shareType: ShareType.card, badgeViewModel: BadgeViewModel())
184-
.environmentObject(ShareViewModel())
185-
.environmentObject(UIStateModel())
185+
Share(
186+
shareType: ShareType.card,
187+
shareViewModel: ShareViewModel(),
188+
badgeViewModel: BadgeViewModel()
189+
)
190+
.environmentObject(ShareViewModel())
191+
.environmentObject(UIStateModel())
186192
}
187193
}

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)

Sticky/Features/Timer/Views/Main.swift

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@ struct Main: View {
1919
case outing
2020
}
2121

22-
@EnvironmentObject private var popupState: PopupStateModel
22+
@EnvironmentObject private var user: User
2323
@EnvironmentObject private var challengeState: ChallengeState
24-
@EnvironmentObject private var shareViewModel: ShareViewModel
24+
@StateObject private var shareViewModel = ShareViewModel()
25+
@StateObject private var badgeViewModel = BadgeViewModel()
26+
27+
@EnvironmentObject private var popupState: PopupStateModel
2528
@EnvironmentObject private var locationManager: LocationManager
26-
@EnvironmentObject private var user: User
2729
@EnvironmentObject private var rootManager: RootViewManager
28-
@StateObject private var badgeViewModel = BadgeViewModel()
2930

3031
@State var sharePresented: Bool = false
3132
@State var bannerDetailPresented: Bool = false
@@ -44,14 +45,20 @@ struct Main: View {
4445
NavigationLink(
4546
destination: Share(
4647
shareType: ShareType.slide,
48+
shareViewModel: shareViewModel,
4749
badgeViewModel: badgeViewModel
4850
),
4951
isActive: $sharePresented
5052
) { EmptyView() }
53+
5154
NavigationLink(
52-
destination: MyPage(badgeViewModel: badgeViewModel),
55+
destination: MyPage(
56+
shareViewModel: shareViewModel,
57+
badgeViewModel: badgeViewModel
58+
),
5359
isActive: $mypagePresented
5460
) { EmptyView() }
61+
5562
NavigationLink(
5663
destination: NewItemShare(badgeQueue: $badgeViewModel.badgeQueue, seconds: user.accumulateSeconds),
5764
isActive: $showNewBadge
@@ -149,9 +156,9 @@ struct Main: View {
149156
}
150157

151158
func addChallengeTimer() {
152-
user.accumulateSeconds += 3600
153-
shareViewModel.seconds += 3600
154-
challengeState.timeData.minute += 60
159+
user.accumulateSeconds += 1
160+
shareViewModel.seconds += 1
161+
challengeState.timeData.second += 1
155162
if challengeState.timeData.minute >= 60 {
156163
challengeState.timeData.hour += 1
157164
challengeState.timeData.minute = 0

0 commit comments

Comments
 (0)