diff --git a/Piper.xcodeproj/project.pbxproj b/Piper.xcodeproj/project.pbxproj index e9c7c3f..cbb4c68 100644 --- a/Piper.xcodeproj/project.pbxproj +++ b/Piper.xcodeproj/project.pbxproj @@ -431,7 +431,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_ASSET_PATHS = "Piper/Sources/Previews/Extensions/Repository+Samples.swift Piper/Sources/Previews/Extensions/ModelContainer+Constants.swift Piper/Resources/Catalogs/Previews.xcassets"; + DEVELOPMENT_ASSET_PATHS = "Piper/Sources/Previews/Extensions/PreviewTrait+Properties.swift Piper/Sources/Previews/Extensions/ModelContainer+Constants.swift Piper/Resources/Catalogs/Previews.xcassets Piper/Sources/Previews/Extensions/Repository+Samples.swift Piper/Sources/Previews/Modifiers/SampleDataModifier.swift Piper/Sources/Previews/Modifiers/EmptyDataModifier.swift"; DEVELOPMENT_TEAM = 7FMNM89WKG; ENABLE_HARDENED_RUNTIME = YES; ENABLE_PREVIEWS = YES; @@ -463,7 +463,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_ASSET_PATHS = "Piper/Sources/Previews/Extensions/Repository+Samples.swift Piper/Sources/Previews/Extensions/ModelContainer+Constants.swift Piper/Resources/Catalogs/Previews.xcassets"; + DEVELOPMENT_ASSET_PATHS = "Piper/Sources/Previews/Extensions/PreviewTrait+Properties.swift Piper/Sources/Previews/Extensions/ModelContainer+Constants.swift Piper/Resources/Catalogs/Previews.xcassets Piper/Sources/Previews/Extensions/Repository+Samples.swift Piper/Sources/Previews/Modifiers/SampleDataModifier.swift Piper/Sources/Previews/Modifiers/EmptyDataModifier.swift"; DEVELOPMENT_TEAM = 7FMNM89WKG; ENABLE_HARDENED_RUNTIME = YES; ENABLE_PREVIEWS = YES; diff --git a/Piper/Sources/Previews/Extensions/ModelContainer+Constants.swift b/Piper/Sources/Previews/Extensions/ModelContainer+Constants.swift index 21d51a5..6ae202c 100644 --- a/Piper/Sources/Previews/Extensions/ModelContainer+Constants.swift +++ b/Piper/Sources/Previews/Extensions/ModelContainer+Constants.swift @@ -1,6 +1,6 @@ // // ModelContainer+Constants.swift -// Piper +// Piper ~ App // // Created by Javier Cicchelli on 06/10/2024. // Copyright © 2024 Röck+Cöde. All rights reserved. diff --git a/Piper/Sources/Previews/Extensions/PreviewTrait+Properties.swift b/Piper/Sources/Previews/Extensions/PreviewTrait+Properties.swift new file mode 100644 index 0000000..d41ef68 --- /dev/null +++ b/Piper/Sources/Previews/Extensions/PreviewTrait+Properties.swift @@ -0,0 +1,19 @@ +// +// PreviewTrait+Properties.swift +// Piper +// +// Created by Javier Cicchelli on 13/10/2024. +// Copyright © 2024 Röck+Cöde. All rights reserved. +// + +import SwiftUI + +@available(macOS 15.0, *) +extension PreviewTrait where T == Preview.ViewTraits { + + // MARK: Properties + + @MainActor static var emptyData: PreviewTrait = .modifier(EmptyDataModifier()) + @MainActor static var sampleData: PreviewTrait = .modifier(SampleDataModifier()) + +} diff --git a/Piper/Sources/Previews/Extensions/Repository+Samples.swift b/Piper/Sources/Previews/Extensions/Repository+Samples.swift index 9264b5b..f275d5b 100644 --- a/Piper/Sources/Previews/Extensions/Repository+Samples.swift +++ b/Piper/Sources/Previews/Extensions/Repository+Samples.swift @@ -1,6 +1,6 @@ // // Repository+Samples.swift -// Piper +// Piper ~ App // // Created by Javier Cicchelli on 06/10/2024. // Copyright © 2024 Röck+Cöde. All rights reserved. diff --git a/Piper/Sources/Previews/Modifiers/EmptyDataModifier.swift b/Piper/Sources/Previews/Modifiers/EmptyDataModifier.swift new file mode 100644 index 0000000..4ad5c1a --- /dev/null +++ b/Piper/Sources/Previews/Modifiers/EmptyDataModifier.swift @@ -0,0 +1,27 @@ +// +// EmptyDataModifier.swift +// Piper ~ App +// +// Created by Javier Cicchelli on 13/10/2024. +// Copyright © 2024 Röck+Cöde. All rights reserved. +// + +import SwiftData +import SwiftUI + +struct EmptyDataModifier: PreviewModifier { + + // MARK: Functions + + static func makeSharedContext() async throws -> ModelContainer { + ModelContainer.preview + } + + func body( + content: Content, + context: ModelContainer + ) -> some View { + content.modelContainer(context) + } + +} diff --git a/Piper/Sources/Previews/Modifiers/SampleDataModifier.swift b/Piper/Sources/Previews/Modifiers/SampleDataModifier.swift new file mode 100644 index 0000000..118b0a9 --- /dev/null +++ b/Piper/Sources/Previews/Modifiers/SampleDataModifier.swift @@ -0,0 +1,31 @@ +// +// SampleDataModifier.swift +// Piper ~ App +// +// Created by Javier Cicchelli on 13/10/2024. +// Copyright © 2024 Röck+Cöde. All rights reserved. +// + +import SwiftData +import SwiftUI + +struct SampleDataModifier: PreviewModifier { + + // MARK: Functions + + static func makeSharedContext() async throws -> ModelContainer { + let container = ModelContainer.preview + + Repository.samples(in: container) + + return container + } + + func body( + content: Content, + context: ModelContainer + ) -> some View { + content.modelContainer(context) + } + +}