diff --git a/Feels.xcodeproj/project.pbxproj b/Feels.xcodeproj/project.pbxproj index df6a90b..fe85f5d 100644 --- a/Feels.xcodeproj/project.pbxproj +++ b/Feels.xcodeproj/project.pbxproj @@ -69,6 +69,8 @@ 1C683FCC2792281400745862 /* Stats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C683FC92792281400745862 /* Stats.swift */; }; 1C744F2C278CE15600953A57 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C744F2B278CE15600953A57 /* AppDelegate.swift */; }; 1C747CC9279F06EB00762CBD /* CloudKitSyncMonitor in Frameworks */ = {isa = PBXBuildFile; productRef = 1C747CC8279F06EB00762CBD /* CloudKitSyncMonitor */; }; + 1C76E86E27C882A400ADEE1F /* SharingImageModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C76E86D27C882A400ADEE1F /* SharingImageModels.swift */; }; + 1C76E86F27C882A400ADEE1F /* SharingImageModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C76E86D27C882A400ADEE1F /* SharingImageModels.swift */; }; 1CA037702799FFA600D26164 /* HomeViewViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CA0376F2799FFA600D26164 /* HomeViewViewModel.swift */; }; 1CA03773279A293D00D26164 /* OnboardingTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CA03772279A293D00D26164 /* OnboardingTime.swift */; }; 1CA03775279A294800D26164 /* OnboardingDay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CA03774279A294800D26164 /* OnboardingDay.swift */; }; @@ -204,6 +206,7 @@ 1C658D7627C0744D003231EE /* PersistenceUPDATE.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceUPDATE.swift; sourceTree = ""; }; 1C683FC92792281400745862 /* Stats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stats.swift; sourceTree = ""; }; 1C744F2B278CE15600953A57 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 1C76E86D27C882A400ADEE1F /* SharingImageModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharingImageModels.swift; sourceTree = ""; }; 1CA0376F2799FFA600D26164 /* HomeViewViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewViewModel.swift; sourceTree = ""; }; 1CA03772279A293D00D26164 /* OnboardingTime.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingTime.swift; sourceTree = ""; }; 1CA03774279A294800D26164 /* OnboardingDay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingDay.swift; sourceTree = ""; }; @@ -569,6 +572,7 @@ 1C2162F627C16D11004353D1 /* MoodTintable.swift */, 1C361F1327C03C8600E832FC /* OnboardingDataDataManager.swift */, 1C04488627C1C81D00D22444 /* PersonalityPackable.swift */, + 1C76E86D27C882A400ADEE1F /* SharingImageModels.swift */, 1C358FAC27ADD0C3002C83A6 /* Theme.swift */, 1C5F4977279C945E0092F1B4 /* UserDefaultsStore.swift */, ); @@ -786,6 +790,7 @@ 1C04488D27C2ADDB00D22444 /* IconViewModel.swift in Sources */, 1C2162F227C156E6004353D1 /* CustomizeView.swift in Sources */, 1C683FCA2792281400745862 /* Stats.swift in Sources */, + 1C76E86E27C882A400ADEE1F /* SharingImageModels.swift in Sources */, 1CAD603E27A6ECCD00C520BD /* SwitchableView.swift in Sources */, 1CD90B76278C8119001C4FEA /* LocalNotification.swift in Sources */, 1C358FB627B0AE15002C83A6 /* AllMoodsTotalTemplate.swift in Sources */, @@ -881,6 +886,7 @@ 1C04488B27C2ABDE00D22444 /* IconView.swift in Sources */, 1C04489A27C3F24F00D22444 /* Color+Codable.swift in Sources */, 1C361F1127C03C3D00E832FC /* OnboardingTime.swift in Sources */, + 1C76E86F27C882A400ADEE1F /* SharingImageModels.swift in Sources */, 1CEC967227B9C9FB00CC8688 /* CustomWidgetView.swift in Sources */, 1C2162F827C16E3C004353D1 /* MoodTintable.swift in Sources */, 1C4FF3BC27BEDF6600BE8F34 /* ShowBasedOnVoteLogics.swift in Sources */, diff --git a/Shared/Models/SharingImageModels.swift b/Shared/Models/SharingImageModels.swift new file mode 100644 index 0000000..f048c3e --- /dev/null +++ b/Shared/Models/SharingImageModels.swift @@ -0,0 +1,59 @@ +// +// SharingImageModels.swift +// Feels +// +// Created by Trey Tartt on 2/24/22. +// + +import SwiftUI +import LinkPresentation + +class StupidAssShareObservableObject: ObservableObject { + @Published var fuckingWrappedShrable: UIImage? = nil + @Published var showFuckingSheet = false +} + +class ShareActivityItemSource: NSObject, UIActivityItemSource { + var shareText: String + var shareImage: UIImage + var linkMetaData = LPLinkMetadata() + + init(shareText: String, shareImage: UIImage) { + self.shareText = shareText + self.shareImage = shareImage + linkMetaData.title = shareText + super.init() + } + + func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any { + return UIImage(named: "AppIcon") as Any + } + + func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? { + return nil + } + + func activityViewControllerLinkMetadata(_ activityViewController: UIActivityViewController) -> LPLinkMetadata? { + return linkMetaData + } +} + +struct ShareSheet: UIViewControllerRepresentable { + let photo: UIImage + + func makeUIViewController(context: Context) -> UIActivityViewController { + let text = "ifeel" + let itemSource = ShareActivityItemSource(shareText: text, shareImage: photo) + + let activityItems: [Any] = [photo, text, itemSource] + + let controller = UIActivityViewController( + activityItems: activityItems, + applicationActivities: nil) + + return controller + } + + func updateUIViewController(_ vc: UIActivityViewController, context: Context) { + } +} diff --git a/Shared/views/Sharing/SharingListView.swift b/Shared/views/Sharing/SharingListView.swift index f004448..87a5e51 100644 --- a/Shared/views/Sharing/SharingListView.swift +++ b/Shared/views/Sharing/SharingListView.swift @@ -29,59 +29,64 @@ struct SharingListView: View { @Published var fuckingWrappedShrable: WrappedSharable? = nil @Published var showFuckingSheet = false } - + @StateObject private var selectedShare = StupidAssObservableObject() + var sharebleItems = [WrappedSharable]() - let sharebleItems: [WrappedSharable] = [ - WrappedSharable(preview: AnyView( - AllMoodsTotalTemplate(isPreview: true, - startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(), - endDate: Date(), - fakeData: false) - ),destination: AnyView( - AllMoodsTotalTemplate(isPreview: false, - startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(), - endDate: Date(), - fakeData: false) - ),description: AllMoodsTotalTemplate.description), - ////////////////////////////////////////////////////////// - WrappedSharable(preview: AnyView( - CurrentStreakTemplate(isPreview: true, - startDate: Calendar.current.date(byAdding: .day, value: -10, to: Date())!, - endDate: Date(), - fakeData: false) - ), destination: AnyView( - CurrentStreakTemplate(isPreview: false, - startDate: Calendar.current.date(byAdding: .day, value: -10, to: Date())!, - endDate: Date(), - fakeData: false) - ), description: CurrentStreakTemplate.description), - ////////////////////////////////////////////////////////// - WrappedSharable(preview: AnyView( - LongestStreakTemplate(isPreview: true, - startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(), - endDate: Date(), - fakeData: false) - ), destination: AnyView( - LongestStreakTemplate(isPreview: false, - startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(), - endDate: Date(), - fakeData: false) - ), description: LongestStreakTemplate.description), - ////////////////////////////////////////////////////////// - WrappedSharable(preview: AnyView( - MonthTotalTemplate(isPreview: true, - startDate: Date().startOfMonth, - endDate: Date().endOfMonth, - fakeData: false) - ), destination: AnyView( - MonthTotalTemplate(isPreview: false, - startDate: Date().startOfMonth, - endDate: Date().endOfMonth, - fakeData: false) - ), description: MonthTotalTemplate.description), - ////////////////////////////////////////////////////////// - ] + init() { + self.sharebleItems = [ + WrappedSharable(preview: AnyView( + AllMoodsTotalTemplate(isPreview: true, + startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(), + endDate: Date(), + fakeData: false) + ),destination: AnyView( + AllMoodsTotalTemplate(isPreview: false, + startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(), + endDate: Date(), + fakeData: false) + ),description: AllMoodsTotalTemplate.description), + ////////////////////////////////////////////////////////// + WrappedSharable(preview: AnyView( + CurrentStreakTemplate(isPreview: true, + startDate: Calendar.current.date(byAdding: .day, value: -10, to: Date())!, + endDate: Date(), + fakeData: false) + ), destination: AnyView( + CurrentStreakTemplate(isPreview: false, + startDate: Calendar.current.date(byAdding: .day, value: -10, to: Date())!, + endDate: Date(), + fakeData: false) + ), description: CurrentStreakTemplate.description), + ////////////////////////////////////////////////////////// + WrappedSharable(preview: AnyView( + LongestStreakTemplate(isPreview: true, + startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(), + endDate: Date(), + fakeData: false) + ), destination: AnyView( + LongestStreakTemplate(isPreview: false, + startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(), + endDate: Date(), + fakeData: false) + ), description: LongestStreakTemplate.description), + ////////////////////////////////////////////////////////// + WrappedSharable(preview: AnyView( + MonthTotalTemplate(isPreview: true, + startDate: Date().startOfMonth, + endDate: Date().endOfMonth, + fakeData: false) + ), destination: AnyView( + MonthTotalTemplate(isPreview: false, + startDate: Date().startOfMonth, + endDate: Date().endOfMonth, + fakeData: false) + ), description: MonthTotalTemplate.description) + ////////////////////////////////////////////////////////// + ] + } + + func didDismiss() { selectedShare.showFuckingSheet = false @@ -144,6 +149,10 @@ struct SharingListView: View { } } + + func share(image: UIImage) { + + } } struct SharingView_Previews: PreviewProvider { diff --git a/Shared/views/SharingTemplates/AllMoodsTotalTemplate.swift b/Shared/views/SharingTemplates/AllMoodsTotalTemplate.swift index 0336100..d513688 100644 --- a/Shared/views/SharingTemplates/AllMoodsTotalTemplate.swift +++ b/Shared/views/SharingTemplates/AllMoodsTotalTemplate.swift @@ -16,14 +16,13 @@ struct AllMoodsTotalTemplate: View, SharingTemplate { var startDate: Date var endDate: Date var totalEntryCount: Int = 0 - - @State var showSharingTemplate = false + @Environment(\.presentationMode) var presentationMode @AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default @AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system + @StateObject private var shareImage = StupidAssShareObservableObject() private var entries = [MoodMetrics]() - init(isPreview: Bool, startDate: Date, endDate: Date, fakeData: Bool) { self.isPreview = isPreview self.startDate = startDate @@ -53,7 +52,7 @@ struct AllMoodsTotalTemplate: View, SharingTemplate { } var image: UIImage { - let image = shareView.snapshot() + let image = shareView.asImage(size: CGSize(width: 666, height: 1190)) return image } @@ -155,7 +154,10 @@ struct AllMoodsTotalTemplate: View, SharingTemplate { HStack(alignment: .center) { Button(action: { - showSharingTemplate = true + let _image = self.image + print(_image) + self.shareImage.showFuckingSheet = true + self.shareImage.fuckingWrappedShrable = _image }, label: { Text("Share") .font(.title) @@ -163,6 +165,11 @@ struct AllMoodsTotalTemplate: View, SharingTemplate { .foregroundColor(Color.white) .padding(.top, 20) }) + .sheet(isPresented: self.$shareImage.showFuckingSheet) { + if let uiImage = self.shareImage.fuckingWrappedShrable { + ShareSheet(photo: uiImage) + } + } .frame(maxWidth: .infinity, alignment: .center) .background( Color.green @@ -185,8 +192,6 @@ struct AllMoodsTotalTemplate: View, SharingTemplate { .padding(.leading, -5) } .padding([.leading, .trailing], -20) - }.sheet(isPresented: $showSharingTemplate) { - ActivityViewController(activityItems: [self.image]) } }