Files
Reflect/Shared/views/AddMoodHeaderView.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)
}
}
}