127 lines
4.5 KiB
Swift
127 lines
4.5 KiB
Swift
//
|
|
// AddMoodHeaderView.swift
|
|
// Feels
|
|
//
|
|
// Created by Trey Tartt on 1/5/22.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
import SwiftUI
|
|
import CoreData
|
|
|
|
struct AddMoodHeaderView: View {
|
|
private let savedOnboardingData = UserDefaultsStore.getOnboarding()
|
|
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
|
|
|
|
let addItemHeaderClosure: ((Mood, Date) -> Void)
|
|
|
|
init(addItemHeaderClosure: @escaping ((Mood, Date) -> Void)) {
|
|
self.addItemHeaderClosure = addItemHeaderClosure
|
|
}
|
|
|
|
var body: some View {
|
|
ZStack {
|
|
Color(theme.currentTheme.secondaryBGColor)
|
|
|
|
VStack {
|
|
Text(self.getTitle())
|
|
.font(.title)
|
|
.foregroundColor(Color(UIColor.label))
|
|
.padding()
|
|
HStack{
|
|
ForEach(Mood.allValues) { mood in
|
|
VStack {
|
|
Button(action: {
|
|
addItem(withMood: mood)
|
|
}, label: {
|
|
mood.icon
|
|
.resizable()
|
|
.frame(width: CGFloat(50), height: CGFloat(50), alignment: .center)
|
|
.foregroundColor(mood.color)
|
|
})
|
|
|
|
//Text(mood.strValue)
|
|
}.frame(minWidth: 0, maxWidth: .infinity)
|
|
}
|
|
}
|
|
}
|
|
.padding([.leading, .trailing, .bottom])
|
|
}
|
|
.background(
|
|
Color(theme.currentTheme.secondaryBGColor)
|
|
)
|
|
.cornerRadius(10, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
|
|
.frame(minHeight: 88, maxHeight: 150)
|
|
.frame(minWidth: 0, maxWidth: .infinity)
|
|
}
|
|
|
|
private func getTitle() -> String {
|
|
//if this is being shown we're missing an entry
|
|
// voting time is noon
|
|
// vote for current day
|
|
// today at 11 am -> How as yesterday
|
|
// today at 1 pm -> How is today
|
|
// vote for previous day
|
|
// today at 11 am -> How as 2 days ago
|
|
// today at 1 pm -> How was yesterday
|
|
|
|
let latestVoteUnLocked = UserDefaultsStore.getOnboarding().ableToVoteBasedOnCurentTime()
|
|
let inputDay = UserDefaultsStore.getOnboarding().inputDay
|
|
|
|
switch (latestVoteUnLocked, inputDay) {
|
|
case (true, .Previous):
|
|
return "how was yesterday"
|
|
case (true, .Today):
|
|
return "how is today"
|
|
case (false, .Previous):
|
|
return "how was two days ago"
|
|
case (false, .Today):
|
|
return "how as yesterday"
|
|
}
|
|
}
|
|
|
|
private func addItem(withMood mood: Mood) {
|
|
let latestVoteUnLocked = UserDefaultsStore.getOnboarding().ableToVoteBasedOnCurentTime()
|
|
let inputDay = UserDefaultsStore.getOnboarding().inputDay
|
|
|
|
var date: Date?
|
|
|
|
switch (latestVoteUnLocked, inputDay) {
|
|
case (true, .Previous):
|
|
date = Calendar.current.date(byAdding: .day, value: -1, to: Date())!
|
|
case (true, .Today):
|
|
date = Date()
|
|
case (false, .Previous):
|
|
date = Calendar.current.date(byAdding: .day, value: -2, to: Date())!
|
|
case (false, .Today):
|
|
date = Calendar.current.date(byAdding: .day, value: -1, to: Date())!
|
|
}
|
|
if let date = date {
|
|
addItemHeaderClosure(mood, date)
|
|
}
|
|
}
|
|
}
|
|
|
|
struct AddMoodHeaderView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
Group {
|
|
AddMoodHeaderView(addItemHeaderClosure: { (_,_) in
|
|
|
|
}).environment(\.managedObjectContext, PersistenceController.shared.viewContext)
|
|
|
|
AddMoodHeaderView(addItemHeaderClosure: { (_,_) in
|
|
|
|
}).preferredColorScheme(.dark).environment(\.managedObjectContext, PersistenceController.shared.viewContext)
|
|
|
|
AddMoodHeaderView(addItemHeaderClosure: { (_,_) in
|
|
|
|
}).environment(\.managedObjectContext, PersistenceController.shared.viewContext)
|
|
|
|
AddMoodHeaderView(addItemHeaderClosure: { (_,_) in
|
|
|
|
}).preferredColorScheme(.dark).environment(\.managedObjectContext, PersistenceController.shared.viewContext)
|
|
}
|
|
}
|
|
}
|