diff --git a/Shared/Models/ContentModeViewModel.swift b/Shared/Models/ContentModeViewModel.swift index 2ea2aa0..bfd44d2 100644 --- a/Shared/Models/ContentModeViewModel.swift +++ b/Shared/Models/ContentModeViewModel.swift @@ -12,6 +12,10 @@ class ContentModeViewModel: ObservableObject { @Published var grouped = [Int: [Int: [MoodEntry]]]() @Published public private(set) var savedOnboardingData = UserDefaultsStore.getOnboarding() + var hasNoData: Bool { + grouped.isEmpty + } + init() { PersistenceController.shared.switchContainerListeners.append { self.getGroupedData() diff --git a/Shared/views/AddMoodHeaderView.swift b/Shared/views/AddMoodHeaderView.swift index b782be2..d5bb84c 100644 --- a/Shared/views/AddMoodHeaderView.swift +++ b/Shared/views/AddMoodHeaderView.swift @@ -14,7 +14,9 @@ struct AddMoodHeaderView: View { private let savedOnboardingData = UserDefaultsStore.getOnboarding() let addItemHeaderClosure: ((Mood, Date) -> Void) - + + var overrideDay: DayOptions? + var body: some View { ZStack { Color(UIColor.systemBackground) @@ -50,22 +52,40 @@ struct AddMoodHeaderView: View { } private func getTitle() -> String { - switch savedOnboardingData.inputDay { - - case .Today: - return String(localized: "add_mood_header_view_title_today") - case .Previous: - return String(localized: "add_mood_header_view_title_yesterday") + if let overrideDay = overrideDay { + switch overrideDay { + case .Today: + return String(localized: "add_mood_header_view_title_today") + case .Previous: + return String(localized: "add_mood_header_view_title_yesterday") + } + } else { + switch savedOnboardingData.inputDay { + case .Today: + return String(localized: "add_mood_header_view_title_today") + case .Previous: + return String(localized: "add_mood_header_view_title_yesterday") + } } } private func addItem(withMood mood: Mood) { - switch savedOnboardingData.inputDay { - case .Today: - addItemHeaderClosure(mood, Date()) - case .Previous: - let date = Calendar.current.date(byAdding: .day, value: -1, to: Date())! - addItemHeaderClosure(mood, date) + if let overrideDay = overrideDay { + switch overrideDay { + case .Today: + addItemHeaderClosure(mood, Date()) + case .Previous: + let date = Calendar.current.date(byAdding: .day, value: -1, to: Date())! + addItemHeaderClosure(mood, date) + } + } else { + switch savedOnboardingData.inputDay { + case .Today: + addItemHeaderClosure(mood, Date()) + case .Previous: + let date = Calendar.current.date(byAdding: .day, value: -1, to: Date())! + addItemHeaderClosure(mood, date) + } } } } diff --git a/Shared/views/ContentView.swift b/Shared/views/ContentView.swift index 892ce43..7d69099 100644 --- a/Shared/views/ContentView.swift +++ b/Shared/views/ContentView.swift @@ -205,6 +205,32 @@ struct ContentView: View { } } + private var emptyView: some View { + ZStack { + Color(UIColor.systemBackground) + + VStack { + Text(String(localized: "content_view_empty_title")) + .font(.title) + .foregroundColor(Color(UIColor.label)) + .padding() + + Text(String(localized: "content_view_empty_title")) + .font(.body) + .foregroundColor(Color(UIColor.label)) + .padding() + AddMoodHeaderView(addItemHeaderClosure: { (mood, date) in + withAnimation { + viewModel.add(mood: mood, forDate: date) + } + }, overrideDay: viewModel.shouldShowVotingHeader() ? .Today : .Previous) + } + } + .fixedSize(horizontal: false, vertical: true) + .clipShape(RoundedRectangle(cornerRadius: 25, style: .continuous)) + .padding() + } + private var mainView: some View { ZStack { @@ -213,10 +239,14 @@ struct ContentView: View { VStack{ settingsButtonView .padding(.top, 50) - - headerView - - listView + if viewModel.hasNoData { + Spacer() + emptyView + Spacer() + } else { + headerView + listView + } } .padding(.bottom) } diff --git a/en.lproj/Localizable.strings b/en.lproj/Localizable.strings index 9e98b88..7aacb08 100644 --- a/en.lproj/Localizable.strings +++ b/en.lproj/Localizable.strings @@ -36,6 +36,8 @@ "content_view_fill_in_missing_entry" = "Fill in missing entry"; "content_view_fill_in_missing_entry_cancel" = "Cancel"; "content_view_header_title" = "Past %d days"; +"content_view_empty_title" = "You aint done shit"; +"content_view_empty_body" = "Fucking vote or something?!?!? How the fuck was yesterday?"; "filter_view_total" = "Total"; "filter_view_show_filters" = "Show Filters";