From 1257a6342e34b5e33269257e172deb6a88668afa Mon Sep 17 00:00:00 2001 From: Trey t Date: Tue, 15 Mar 2022 14:57:21 -0500 Subject: [PATCH] add sharing to month view --- Shared/views/MonthView/MonthDetailView.swift | 3 + Shared/views/MonthView/MonthView.swift | 59 ++++++++++++++++++-- 2 files changed, 58 insertions(+), 4 deletions(-) diff --git a/Shared/views/MonthView/MonthDetailView.swift b/Shared/views/MonthView/MonthDetailView.swift index 41af32a..a5ff9e4 100644 --- a/Shared/views/MonthView/MonthDetailView.swift +++ b/Shared/views/MonthView/MonthDetailView.swift @@ -53,6 +53,9 @@ struct MonthDetailView: View { Image(systemName: "square.and.arrow.up") .padding(.trailing) .onTapGesture { + let impactMed = UIImpactFeedbackGenerator(style: .heavy) + impactMed.impactOccurred() + let _image = self.image self.shareImage.showFuckingSheet = true self.shareImage.fuckingWrappedShrable = _image diff --git a/Shared/views/MonthView/MonthView.swift b/Shared/views/MonthView/MonthView.swift index 870518a..2756a0a 100644 --- a/Shared/views/MonthView/MonthView.swift +++ b/Shared/views/MonthView/MonthView.swift @@ -15,6 +15,8 @@ struct MonthView: View { @AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default @AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = .black + @StateObject private var shareImage = StupidAssShareObservableObject() + // store a value that gets changed when user updates custom colors to update the view since the moodTint doesn't change @AppStorage(UserDefaultsStore.Keys.customMoodTintUpdateNumber.rawValue, store: GroupUserDefaults.groupDefaults) private var customMoodTintUpdateNumber: Int = 0 @@ -81,9 +83,14 @@ struct MonthView: View { }) .padding([.top, .bottom]) .background( - theme.currentTheme.bg - .edgesIgnoringSafeArea(.all) - ) + theme.currentTheme.bg + .edgesIgnoringSafeArea(.all) + ) + .sheet(isPresented: self.$shareImage.showFuckingSheet) { + if let uiImage = self.shareImage.fuckingWrappedShrable { + ShareSheet(photo: uiImage) + } + } } @@ -138,9 +145,53 @@ extension MonthView { } } + private func shareViewImage(month: Int, year: Int, entries: [MoodEntry]) -> some View { + ZStack { + VStack { + HStack { + homeViewTwoSectionHeaderView(month: month, year: year) + } + Divider() + LazyVGrid(columns: columns, spacing: 15) { + ForEach(entries, id: \.self) { entry in + Circle() + .foregroundColor(entry.mood == .placeholder ? .clear : moodTint.color(forMood: entry.mood)) + .frame(minHeight: 5, idealHeight: 20, maxHeight: 50, alignment: .center) + } + } + Spacer() + } + .padding() + .background( + RoundedRectangle(cornerRadius: 10) + .foregroundColor( + theme.currentTheme.secondaryBGColor + ) + ) + .padding() + } + .background( + theme.currentTheme.bg + ) + .padding(.bottom, 55) + } + private func homeViewTwoMonthListView(month: Int, year: Int, entries: [MoodEntry]) -> some View { VStack { - homeViewTwoSectionHeaderView(month: month, year: year) + HStack { + homeViewTwoSectionHeaderView(month: month, year: year) + + Image(systemName: "square.and.arrow.up") + .padding([.trailing, .bottom]) + .onTapGesture { + let impactMed = UIImpactFeedbackGenerator(style: .heavy) + impactMed.impactOccurred() + + let _image = shareViewImage(month: month, year: year, entries: entries).asImage(size: CGSize(width: 400, height: 260)) + self.shareImage.showFuckingSheet = true + self.shareImage.fuckingWrappedShrable = _image + } + } Divider() LazyVGrid(columns: columns, spacing: 15) { ForEach(entries, id: \.self) { entry in