Skip to content

Commit c58793b

Browse files
author
Kim Mincheol
committed
feat(welcome-badge): welcome 배지 획득 처리
1 parent d07968c commit c58793b

File tree

5 files changed

+29
-5
lines changed

5 files changed

+29
-5
lines changed

Sticky/Assets.xcassets/special_first.imageset/Contents.json renamed to Sticky/Assets.xcassets/special_welcome.imageset/Contents.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"images" : [
33
{
4-
"filename" : "special_first.pdf",
4+
"filename" : "special_welcome.pdf",
55
"idiom" : "universal",
66
"scale" : "1x"
77
},

Sticky/Assets.xcassets/special_first.imageset/special_first.pdf renamed to Sticky/Assets.xcassets/special_welcome.imageset/special_welcome.pdf

File renamed without changes.

Sticky/Features/MyPage/Models/Badge.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ extension BadgeType {
152152
func toString(value: String) -> String {
153153
switch self {
154154
case .special:
155-
return "특별한 배지"
155+
return value
156156
case .monthly:
157157
return "한달 동안 집에서 보낸 시간\n\(value)을 달성했습니다!"
158158
case .continuous:

Sticky/Features/MyPage/Models/BadgeViewModel.swift

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,17 @@
77

88
import Foundation
99

10-
let special_default = ["first", "locked", "locked"].map { keyword in Badge(badgeType: .special, badgeValue: keyword) }
11-
let monthly_default = ["10", "30", "50", "100", "150", "300", "500", "700", "720"].map { hours in Badge(badgeType: .monthly, badgeValue: hours) }
12-
let continuous_default = ["0.5", "1", "3", "7", "10", "15", "30"].map { days in Badge(badgeType: .continuous, badgeValue: days) }
10+
let special_default = ["welcome", "locked", "locked"].map { keyword in
11+
Badge(badgeType: .special, badgeValue: keyword)
12+
}
13+
14+
let monthly_default = ["10", "30", "50", "100", "150", "300", "500", "700", "720"].map { hours in
15+
Badge(badgeType: .monthly, badgeValue: hours)
16+
}
17+
18+
let continuous_default = ["0.5", "1", "3", "7", "10", "15", "30"].map { days in
19+
Badge(badgeType: .continuous, badgeValue: days)
20+
}
1321

1422
let encoder = PropertyListEncoder()
1523
let decoder = PropertyListDecoder()
@@ -39,6 +47,7 @@ class BadgeViewModel: ObservableObject {
3947
self.badgeQueue = getBadgeQueue(forKey: "badgeQueue")
4048

4149
/// 스페셜 배지
50+
print("BadgeViewModel - specials: \(loadBadges(forKey: "specials"))")
4251
self.specials = loadBadges(
4352
forKey: "specials",
4453
default_: special_default
@@ -134,3 +143,10 @@ func isItThisMonth(date: Date) -> Bool {
134143
let _component = calendar.dateComponents([.year, .month], from: date)
135144
return thisYear == _component.year && thisMonth == _component.month
136145
}
146+
147+
/// welcome 배지 획득 여부 확인
148+
func getWelcomeBadge(
149+
badges: [Badge]
150+
) -> Badge? {
151+
return badges.filter { $0.badgeValue == "welcome" }.first
152+
}

Sticky/Features/Timer/Views/Main.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,14 @@ struct Main: View {
102102
print("onAppear")
103103
if Main.isFirst {
104104
Main.isFirst = false
105+
if let badge = getWelcomeBadge(badges: badgeViewModel.specials) {
106+
if !badge.active {
107+
badge.count += 1
108+
badge.updated = Date()
109+
badgeViewModel.badgeQueue.append(badge)
110+
badgeViewModel.specials = badgeViewModel.specials
111+
}
112+
}
105113
startTimer()
106114
}
107115
}

0 commit comments

Comments
 (0)