This commit is contained in:
Trey t
2022-02-24 21:25:53 -06:00
parent 9d80daee61
commit 5357b4ffb8
4 changed files with 137 additions and 58 deletions

View File

@@ -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) {
}
}

View File

@@ -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 {

View File

@@ -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])
}
}