diff --git a/Shared/Models/ContentModeViewModel.swift b/Shared/Models/ContentModeViewModel.swift index bfd44d2..96daee0 100644 --- a/Shared/Models/ContentModeViewModel.swift +++ b/Shared/Models/ContentModeViewModel.swift @@ -11,11 +11,24 @@ import CoreData class ContentModeViewModel: ObservableObject { @Published var grouped = [Int: [Int: [MoodEntry]]]() @Published public private(set) var savedOnboardingData = UserDefaultsStore.getOnboarding() - + @Published var numberOfItems = 0 + var hasNoData: Bool { grouped.isEmpty } + private var numberOfEntries: Int { + var num = 0 + grouped.keys.forEach({ + let year = grouped[$0] + let monthKeys = year?.keys + monthKeys?.forEach({ + num += year![$0]!.count + }) + }) + return num + } + init() { PersistenceController.shared.switchContainerListeners.append { self.getGroupedData() @@ -26,6 +39,7 @@ class ContentModeViewModel: ObservableObject { private func getGroupedData() { grouped = PersistenceController.shared.splitIntoYearMonth() + numberOfItems = numberOfEntries } public func shouldShowVotingHeader() -> Bool { diff --git a/Shared/views/ContentView.swift b/Shared/views/ContentView.swift index 5fc25fb..65c6e62 100644 --- a/Shared/views/ContentView.swift +++ b/Shared/views/ContentView.swift @@ -134,9 +134,9 @@ struct ContentView: View { } func calculateHeight(minHeight: CGFloat, maxHeight: CGFloat, yOffset: CGFloat) { - calcuateViewAlpha() - let newValue = maxHeight + yOffset + + calcuateViewAlpha() // If scrolling up, yOffset will be a negative number if newValue < minHeight { // SCROLLING UP @@ -184,7 +184,11 @@ struct ContentView: View { ) .coordinateSpace(name: "scroll") .onPreferenceChange(ViewOffsetKey.self) { value in - calculateHeight(minHeight: ContentViewConstants.minHeaderHeight, maxHeight: ContentViewConstants.maxHeaderHeight, yOffset: value) + if viewModel.numberOfItems > 10 { + calculateHeight(minHeight: ContentViewConstants.minHeaderHeight, + maxHeight: ContentViewConstants.maxHeaderHeight, + yOffset: value) + } } .clipShape(RoundedRectangle(cornerRadius: 25, style: .continuous)) }