sovled #100
This commit is contained in:
@@ -69,6 +69,8 @@
|
|||||||
1C683FCC2792281400745862 /* Stats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C683FC92792281400745862 /* Stats.swift */; };
|
1C683FCC2792281400745862 /* Stats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C683FC92792281400745862 /* Stats.swift */; };
|
||||||
1C744F2C278CE15600953A57 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C744F2B278CE15600953A57 /* AppDelegate.swift */; };
|
1C744F2C278CE15600953A57 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C744F2B278CE15600953A57 /* AppDelegate.swift */; };
|
||||||
1C747CC9279F06EB00762CBD /* CloudKitSyncMonitor in Frameworks */ = {isa = PBXBuildFile; productRef = 1C747CC8279F06EB00762CBD /* CloudKitSyncMonitor */; };
|
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 */; };
|
1CA037702799FFA600D26164 /* HomeViewViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CA0376F2799FFA600D26164 /* HomeViewViewModel.swift */; };
|
||||||
1CA03773279A293D00D26164 /* OnboardingTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CA03772279A293D00D26164 /* OnboardingTime.swift */; };
|
1CA03773279A293D00D26164 /* OnboardingTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CA03772279A293D00D26164 /* OnboardingTime.swift */; };
|
||||||
1CA03775279A294800D26164 /* OnboardingDay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CA03774279A294800D26164 /* OnboardingDay.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 = "<group>"; };
|
1C658D7627C0744D003231EE /* PersistenceUPDATE.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceUPDATE.swift; sourceTree = "<group>"; };
|
||||||
1C683FC92792281400745862 /* Stats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stats.swift; sourceTree = "<group>"; };
|
1C683FC92792281400745862 /* Stats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stats.swift; sourceTree = "<group>"; };
|
||||||
1C744F2B278CE15600953A57 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
1C744F2B278CE15600953A57 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
|
1C76E86D27C882A400ADEE1F /* SharingImageModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharingImageModels.swift; sourceTree = "<group>"; };
|
||||||
1CA0376F2799FFA600D26164 /* HomeViewViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewViewModel.swift; sourceTree = "<group>"; };
|
1CA0376F2799FFA600D26164 /* HomeViewViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewViewModel.swift; sourceTree = "<group>"; };
|
||||||
1CA03772279A293D00D26164 /* OnboardingTime.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingTime.swift; sourceTree = "<group>"; };
|
1CA03772279A293D00D26164 /* OnboardingTime.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingTime.swift; sourceTree = "<group>"; };
|
||||||
1CA03774279A294800D26164 /* OnboardingDay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingDay.swift; sourceTree = "<group>"; };
|
1CA03774279A294800D26164 /* OnboardingDay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingDay.swift; sourceTree = "<group>"; };
|
||||||
@@ -569,6 +572,7 @@
|
|||||||
1C2162F627C16D11004353D1 /* MoodTintable.swift */,
|
1C2162F627C16D11004353D1 /* MoodTintable.swift */,
|
||||||
1C361F1327C03C8600E832FC /* OnboardingDataDataManager.swift */,
|
1C361F1327C03C8600E832FC /* OnboardingDataDataManager.swift */,
|
||||||
1C04488627C1C81D00D22444 /* PersonalityPackable.swift */,
|
1C04488627C1C81D00D22444 /* PersonalityPackable.swift */,
|
||||||
|
1C76E86D27C882A400ADEE1F /* SharingImageModels.swift */,
|
||||||
1C358FAC27ADD0C3002C83A6 /* Theme.swift */,
|
1C358FAC27ADD0C3002C83A6 /* Theme.swift */,
|
||||||
1C5F4977279C945E0092F1B4 /* UserDefaultsStore.swift */,
|
1C5F4977279C945E0092F1B4 /* UserDefaultsStore.swift */,
|
||||||
);
|
);
|
||||||
@@ -786,6 +790,7 @@
|
|||||||
1C04488D27C2ADDB00D22444 /* IconViewModel.swift in Sources */,
|
1C04488D27C2ADDB00D22444 /* IconViewModel.swift in Sources */,
|
||||||
1C2162F227C156E6004353D1 /* CustomizeView.swift in Sources */,
|
1C2162F227C156E6004353D1 /* CustomizeView.swift in Sources */,
|
||||||
1C683FCA2792281400745862 /* Stats.swift in Sources */,
|
1C683FCA2792281400745862 /* Stats.swift in Sources */,
|
||||||
|
1C76E86E27C882A400ADEE1F /* SharingImageModels.swift in Sources */,
|
||||||
1CAD603E27A6ECCD00C520BD /* SwitchableView.swift in Sources */,
|
1CAD603E27A6ECCD00C520BD /* SwitchableView.swift in Sources */,
|
||||||
1CD90B76278C8119001C4FEA /* LocalNotification.swift in Sources */,
|
1CD90B76278C8119001C4FEA /* LocalNotification.swift in Sources */,
|
||||||
1C358FB627B0AE15002C83A6 /* AllMoodsTotalTemplate.swift in Sources */,
|
1C358FB627B0AE15002C83A6 /* AllMoodsTotalTemplate.swift in Sources */,
|
||||||
@@ -881,6 +886,7 @@
|
|||||||
1C04488B27C2ABDE00D22444 /* IconView.swift in Sources */,
|
1C04488B27C2ABDE00D22444 /* IconView.swift in Sources */,
|
||||||
1C04489A27C3F24F00D22444 /* Color+Codable.swift in Sources */,
|
1C04489A27C3F24F00D22444 /* Color+Codable.swift in Sources */,
|
||||||
1C361F1127C03C3D00E832FC /* OnboardingTime.swift in Sources */,
|
1C361F1127C03C3D00E832FC /* OnboardingTime.swift in Sources */,
|
||||||
|
1C76E86F27C882A400ADEE1F /* SharingImageModels.swift in Sources */,
|
||||||
1CEC967227B9C9FB00CC8688 /* CustomWidgetView.swift in Sources */,
|
1CEC967227B9C9FB00CC8688 /* CustomWidgetView.swift in Sources */,
|
||||||
1C2162F827C16E3C004353D1 /* MoodTintable.swift in Sources */,
|
1C2162F827C16E3C004353D1 /* MoodTintable.swift in Sources */,
|
||||||
1C4FF3BC27BEDF6600BE8F34 /* ShowBasedOnVoteLogics.swift in Sources */,
|
1C4FF3BC27BEDF6600BE8F34 /* ShowBasedOnVoteLogics.swift in Sources */,
|
||||||
|
|||||||
59
Shared/Models/SharingImageModels.swift
Normal file
59
Shared/Models/SharingImageModels.swift
Normal 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) {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -29,59 +29,64 @@ struct SharingListView: View {
|
|||||||
@Published var fuckingWrappedShrable: WrappedSharable? = nil
|
@Published var fuckingWrappedShrable: WrappedSharable? = nil
|
||||||
@Published var showFuckingSheet = false
|
@Published var showFuckingSheet = false
|
||||||
}
|
}
|
||||||
|
|
||||||
@StateObject private var selectedShare = StupidAssObservableObject()
|
@StateObject private var selectedShare = StupidAssObservableObject()
|
||||||
|
var sharebleItems = [WrappedSharable]()
|
||||||
|
|
||||||
let sharebleItems: [WrappedSharable] = [
|
init() {
|
||||||
WrappedSharable(preview: AnyView(
|
self.sharebleItems = [
|
||||||
AllMoodsTotalTemplate(isPreview: true,
|
WrappedSharable(preview: AnyView(
|
||||||
startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(),
|
AllMoodsTotalTemplate(isPreview: true,
|
||||||
endDate: Date(),
|
startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(),
|
||||||
fakeData: false)
|
endDate: Date(),
|
||||||
),destination: AnyView(
|
fakeData: false)
|
||||||
AllMoodsTotalTemplate(isPreview: false,
|
),destination: AnyView(
|
||||||
startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(),
|
AllMoodsTotalTemplate(isPreview: false,
|
||||||
endDate: Date(),
|
startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(),
|
||||||
fakeData: false)
|
endDate: Date(),
|
||||||
),description: AllMoodsTotalTemplate.description),
|
fakeData: false)
|
||||||
//////////////////////////////////////////////////////////
|
),description: AllMoodsTotalTemplate.description),
|
||||||
WrappedSharable(preview: AnyView(
|
//////////////////////////////////////////////////////////
|
||||||
CurrentStreakTemplate(isPreview: true,
|
WrappedSharable(preview: AnyView(
|
||||||
startDate: Calendar.current.date(byAdding: .day, value: -10, to: Date())!,
|
CurrentStreakTemplate(isPreview: true,
|
||||||
endDate: Date(),
|
startDate: Calendar.current.date(byAdding: .day, value: -10, to: Date())!,
|
||||||
fakeData: false)
|
endDate: Date(),
|
||||||
), destination: AnyView(
|
fakeData: false)
|
||||||
CurrentStreakTemplate(isPreview: false,
|
), destination: AnyView(
|
||||||
startDate: Calendar.current.date(byAdding: .day, value: -10, to: Date())!,
|
CurrentStreakTemplate(isPreview: false,
|
||||||
endDate: Date(),
|
startDate: Calendar.current.date(byAdding: .day, value: -10, to: Date())!,
|
||||||
fakeData: false)
|
endDate: Date(),
|
||||||
), description: CurrentStreakTemplate.description),
|
fakeData: false)
|
||||||
//////////////////////////////////////////////////////////
|
), description: CurrentStreakTemplate.description),
|
||||||
WrappedSharable(preview: AnyView(
|
//////////////////////////////////////////////////////////
|
||||||
LongestStreakTemplate(isPreview: true,
|
WrappedSharable(preview: AnyView(
|
||||||
startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(),
|
LongestStreakTemplate(isPreview: true,
|
||||||
endDate: Date(),
|
startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(),
|
||||||
fakeData: false)
|
endDate: Date(),
|
||||||
), destination: AnyView(
|
fakeData: false)
|
||||||
LongestStreakTemplate(isPreview: false,
|
), destination: AnyView(
|
||||||
startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(),
|
LongestStreakTemplate(isPreview: false,
|
||||||
endDate: Date(),
|
startDate: PersistenceController.shared.earliestEntry?.forDate ?? Date(),
|
||||||
fakeData: false)
|
endDate: Date(),
|
||||||
), description: LongestStreakTemplate.description),
|
fakeData: false)
|
||||||
//////////////////////////////////////////////////////////
|
), description: LongestStreakTemplate.description),
|
||||||
WrappedSharable(preview: AnyView(
|
//////////////////////////////////////////////////////////
|
||||||
MonthTotalTemplate(isPreview: true,
|
WrappedSharable(preview: AnyView(
|
||||||
startDate: Date().startOfMonth,
|
MonthTotalTemplate(isPreview: true,
|
||||||
endDate: Date().endOfMonth,
|
startDate: Date().startOfMonth,
|
||||||
fakeData: false)
|
endDate: Date().endOfMonth,
|
||||||
), destination: AnyView(
|
fakeData: false)
|
||||||
MonthTotalTemplate(isPreview: false,
|
), destination: AnyView(
|
||||||
startDate: Date().startOfMonth,
|
MonthTotalTemplate(isPreview: false,
|
||||||
endDate: Date().endOfMonth,
|
startDate: Date().startOfMonth,
|
||||||
fakeData: false)
|
endDate: Date().endOfMonth,
|
||||||
), description: MonthTotalTemplate.description),
|
fakeData: false)
|
||||||
//////////////////////////////////////////////////////////
|
), description: MonthTotalTemplate.description)
|
||||||
]
|
//////////////////////////////////////////////////////////
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func didDismiss() {
|
func didDismiss() {
|
||||||
selectedShare.showFuckingSheet = false
|
selectedShare.showFuckingSheet = false
|
||||||
@@ -144,6 +149,10 @@ struct SharingListView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func share(image: UIImage) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SharingView_Previews: PreviewProvider {
|
struct SharingView_Previews: PreviewProvider {
|
||||||
|
|||||||
@@ -16,14 +16,13 @@ struct AllMoodsTotalTemplate: View, SharingTemplate {
|
|||||||
var startDate: Date
|
var startDate: Date
|
||||||
var endDate: Date
|
var endDate: Date
|
||||||
var totalEntryCount: Int = 0
|
var totalEntryCount: Int = 0
|
||||||
|
|
||||||
@State var showSharingTemplate = false
|
|
||||||
@Environment(\.presentationMode) var presentationMode
|
@Environment(\.presentationMode) var presentationMode
|
||||||
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
|
@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
|
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
|
||||||
|
|
||||||
|
@StateObject private var shareImage = StupidAssShareObservableObject()
|
||||||
private var entries = [MoodMetrics]()
|
private var entries = [MoodMetrics]()
|
||||||
|
|
||||||
init(isPreview: Bool, startDate: Date, endDate: Date, fakeData: Bool) {
|
init(isPreview: Bool, startDate: Date, endDate: Date, fakeData: Bool) {
|
||||||
self.isPreview = isPreview
|
self.isPreview = isPreview
|
||||||
self.startDate = startDate
|
self.startDate = startDate
|
||||||
@@ -53,7 +52,7 @@ struct AllMoodsTotalTemplate: View, SharingTemplate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var image: UIImage {
|
var image: UIImage {
|
||||||
let image = shareView.snapshot()
|
let image = shareView.asImage(size: CGSize(width: 666, height: 1190))
|
||||||
return image
|
return image
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,7 +154,10 @@ struct AllMoodsTotalTemplate: View, SharingTemplate {
|
|||||||
|
|
||||||
HStack(alignment: .center) {
|
HStack(alignment: .center) {
|
||||||
Button(action: {
|
Button(action: {
|
||||||
showSharingTemplate = true
|
let _image = self.image
|
||||||
|
print(_image)
|
||||||
|
self.shareImage.showFuckingSheet = true
|
||||||
|
self.shareImage.fuckingWrappedShrable = _image
|
||||||
}, label: {
|
}, label: {
|
||||||
Text("Share")
|
Text("Share")
|
||||||
.font(.title)
|
.font(.title)
|
||||||
@@ -163,6 +165,11 @@ struct AllMoodsTotalTemplate: View, SharingTemplate {
|
|||||||
.foregroundColor(Color.white)
|
.foregroundColor(Color.white)
|
||||||
.padding(.top, 20)
|
.padding(.top, 20)
|
||||||
})
|
})
|
||||||
|
.sheet(isPresented: self.$shareImage.showFuckingSheet) {
|
||||||
|
if let uiImage = self.shareImage.fuckingWrappedShrable {
|
||||||
|
ShareSheet(photo: uiImage)
|
||||||
|
}
|
||||||
|
}
|
||||||
.frame(maxWidth: .infinity, alignment: .center)
|
.frame(maxWidth: .infinity, alignment: .center)
|
||||||
.background(
|
.background(
|
||||||
Color.green
|
Color.green
|
||||||
@@ -185,8 +192,6 @@ struct AllMoodsTotalTemplate: View, SharingTemplate {
|
|||||||
.padding(.leading, -5)
|
.padding(.leading, -5)
|
||||||
}
|
}
|
||||||
.padding([.leading, .trailing], -20)
|
.padding([.leading, .trailing], -20)
|
||||||
}.sheet(isPresented: $showSharingTemplate) {
|
|
||||||
ActivityViewController(activityItems: [self.image])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user