diff --git a/NativeAppTemplate/Constants.swift b/NativeAppTemplate/Constants.swift index af222db..08b82fe 100644 --- a/NativeAppTemplate/Constants.swift +++ b/NativeAppTemplate/Constants.swift @@ -285,14 +285,10 @@ enum Strings { static let email = "Email" static let password = "Password" - static let onboardingDescription1 = "Welcome to NativeAppTemplate." - static let onboardingDescription2 = "Sign in to manage your shops and item tags." - static let onboardingDescription3 = "Organize your work across multiple organizations." - static let onboardingDescription4 = "Invite teammates to collaborate." - static let onboardingDescription5 = "Track item tags with a simple idle/completed state." - static let onboardingDescription6 = "Create, edit, and delete item tags from your shop." - static let onboardingDescription7 = "Switch between personal and shared organizations." - static let onboardingDescription8 = "Have fun!" + static let onboardingDescription1 = "Onboarding description 1." + static let onboardingDescription2 = "Onboarding description 2." + static let onboardingDescription3 = "Onboarding description 3." + static let onboardingDescription4 = "Onboarding description 4." // MARK: Other diff --git a/NativeAppTemplate/Login/OnboardingRepository.swift b/NativeAppTemplate/Login/OnboardingRepository.swift index 4a69c60..30094d6 100644 --- a/NativeAppTemplate/Login/OnboardingRepository.swift +++ b/NativeAppTemplate/Login/OnboardingRepository.swift @@ -4,24 +4,14 @@ // import Foundation -import OrderedCollections @MainActor @Observable class OnboardingRepository: OnboardingRepositoryProtocol { - var onboardings: [Onboarding] = [] - let onboardingsDictionary: OrderedDictionary = [ - 1: false, - 2: false, - 3: false, - 4: true, - 5: false, - 6: false, - 7: true, - 8: true + var onboardings: [Onboarding] = [ + Onboarding(id: 1, imageOrientation: .landscape), + Onboarding(id: 2, imageOrientation: .landscape), + Onboarding(id: 3, imageOrientation: .portrait), + Onboarding(id: 4, imageOrientation: .portrait) ] - func reload() { - onboardings = onboardingsDictionary.map { key, value in - Onboarding(id: key, isPortraitImage: value) - } - } + func reload() {} } diff --git a/NativeAppTemplate/Login/OnboardingRepositoryProtocol.swift b/NativeAppTemplate/Login/OnboardingRepositoryProtocol.swift index 1e91059..d7f51bb 100644 --- a/NativeAppTemplate/Login/OnboardingRepositoryProtocol.swift +++ b/NativeAppTemplate/Login/OnboardingRepositoryProtocol.swift @@ -4,11 +4,10 @@ // import Foundation -import OrderedCollections -@MainActor protocol OnboardingRepositoryProtocol: AnyObject, Observable, Sendable { +@MainActor +protocol OnboardingRepositoryProtocol: AnyObject, Observable, Sendable { var onboardings: [Onboarding] { get set } - var onboardingsDictionary: OrderedDictionary { get } func reload() } diff --git a/NativeAppTemplate/Models/Onboarding.swift b/NativeAppTemplate/Models/Onboarding.swift index ab71ea2..e3070b2 100644 --- a/NativeAppTemplate/Models/Onboarding.swift +++ b/NativeAppTemplate/Models/Onboarding.swift @@ -3,7 +3,12 @@ // NativeAppTemplate // +enum ImageOrientation: String, Hashable, Codable { + case portrait + case landscape +} + struct Onboarding: Hashable, Codable, Identifiable { var id: Int - var isPortraitImage: Bool = false + var imageOrientation: ImageOrientation = .landscape } diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/Contents.json index 3ad151e..c6d8f78 100644 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/Contents.json +++ b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "overview1~universal@1x.png", + "filename" : "onboarding1.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "overview1~universal@2x.png", + "filename" : "onboarding1@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "overview1~universal@3x.png", + "filename" : "onboarding1@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/onboarding1.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/onboarding1.png new file mode 100644 index 0000000..069eee0 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/onboarding1.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/onboarding1@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/onboarding1@2x.png new file mode 100644 index 0000000..d50ec4a Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/onboarding1@2x.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/onboarding1@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/onboarding1@3x.png new file mode 100644 index 0000000..8dd36f4 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/onboarding1@3x.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/overview1~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/overview1~universal@1x.png deleted file mode 100644 index a489aeb..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/overview1~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/overview1~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/overview1~universal@2x.png deleted file mode 100644 index 981debb..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/overview1~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/overview1~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/overview1~universal@3x.png deleted file mode 100644 index 24f277b..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1.imageset/overview1~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding10.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding10.imageset/Contents.json deleted file mode 100644 index 217fd0c..0000000 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding10.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "overview9~universal@1x.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "overview9~universal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "overview9~universal@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding10.imageset/overview9~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding10.imageset/overview9~universal@1x.png deleted file mode 100644 index f99c88b..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding10.imageset/overview9~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding10.imageset/overview9~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding10.imageset/overview9~universal@2x.png deleted file mode 100644 index 5e3b376..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding10.imageset/overview9~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding10.imageset/overview9~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding10.imageset/overview9~universal@3x.png deleted file mode 100644 index 475cb1e..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding10.imageset/overview9~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding11.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding11.imageset/Contents.json deleted file mode 100644 index 74fb7ff..0000000 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding11.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "overview9_phone_customer1~universal@1x.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "overview9_phone_customer1~universal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "overview9_phone_customer1~universal@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding11.imageset/overview9_phone_customer1~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding11.imageset/overview9_phone_customer1~universal@1x.png deleted file mode 100644 index 7a3b4e5..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding11.imageset/overview9_phone_customer1~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding11.imageset/overview9_phone_customer1~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding11.imageset/overview9_phone_customer1~universal@2x.png deleted file mode 100644 index 1a21a15..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding11.imageset/overview9_phone_customer1~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding11.imageset/overview9_phone_customer1~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding11.imageset/overview9_phone_customer1~universal@3x.png deleted file mode 100644 index 63d4876..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding11.imageset/overview9_phone_customer1~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding12.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding12.imageset/Contents.json deleted file mode 100644 index b91d394..0000000 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding12.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "overview13~universal@1x.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "overview13~universal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "overview13~universal@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding12.imageset/overview13~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding12.imageset/overview13~universal@1x.png deleted file mode 100644 index aa04c1d..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding12.imageset/overview13~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding12.imageset/overview13~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding12.imageset/overview13~universal@2x.png deleted file mode 100644 index 2be7d25..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding12.imageset/overview13~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding12.imageset/overview13~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding12.imageset/overview13~universal@3x.png deleted file mode 100644 index 3e9cd7c..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding12.imageset/overview13~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding13.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding13.imageset/Contents.json deleted file mode 100644 index b4514a7..0000000 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding13.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "overview14~universal@1x.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "overview14~universal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "overview14~universal@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding13.imageset/overview14~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding13.imageset/overview14~universal@1x.png deleted file mode 100644 index 72ddc38..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding13.imageset/overview14~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding13.imageset/overview14~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding13.imageset/overview14~universal@2x.png deleted file mode 100644 index 2f796d3..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding13.imageset/overview14~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding13.imageset/overview14~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding13.imageset/overview14~universal@3x.png deleted file mode 100644 index 7d9bf57..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding13.imageset/overview14~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1Slim.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1Slim.imageset/Contents.json deleted file mode 100644 index f732902..0000000 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1Slim.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "overview1_slim~universal@1x.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "overview1_slim~universal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "overview1_slim~universal@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1Slim.imageset/overview1_slim~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1Slim.imageset/overview1_slim~universal@1x.png deleted file mode 100644 index 1132e9b..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1Slim.imageset/overview1_slim~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1Slim.imageset/overview1_slim~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1Slim.imageset/overview1_slim~universal@2x.png deleted file mode 100644 index 0db8518..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1Slim.imageset/overview1_slim~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1Slim.imageset/overview1_slim~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1Slim.imageset/overview1_slim~universal@3x.png deleted file mode 100644 index 24e8755..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding1Slim.imageset/overview1_slim~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/Contents.json index 150d51a..86fe1fc 100644 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/Contents.json +++ b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "overview2~universal@1x.png", + "filename" : "onboarding2.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "overview2~universal@2x.png", + "filename" : "onboarding2@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "overview2~universal@3x.png", + "filename" : "onboarding2@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/onboarding2.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/onboarding2.png new file mode 100644 index 0000000..0d3b4c5 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/onboarding2.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/onboarding2@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/onboarding2@2x.png new file mode 100644 index 0000000..d82ba12 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/onboarding2@2x.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/onboarding2@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/onboarding2@3x.png new file mode 100644 index 0000000..7d67de5 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/onboarding2@3x.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/overview2~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/overview2~universal@1x.png deleted file mode 100644 index 208e71b..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/overview2~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/overview2~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/overview2~universal@2x.png deleted file mode 100644 index 5688e42..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/overview2~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/overview2~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/overview2~universal@3x.png deleted file mode 100644 index f95799a..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding2.imageset/overview2~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/Contents.json index 0afd4d1..bae0dae 100644 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/Contents.json +++ b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "overview6~universal@1x.png", + "filename" : "onboarding3.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "overview6~universal@2x.png", + "filename" : "onboarding3@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "overview6~universal@3x.png", + "filename" : "onboarding3@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/onboarding3.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/onboarding3.png new file mode 100644 index 0000000..df744a0 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/onboarding3.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/onboarding3@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/onboarding3@2x.png new file mode 100644 index 0000000..f97e133 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/onboarding3@2x.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/onboarding3@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/onboarding3@3x.png new file mode 100644 index 0000000..a7554f8 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/onboarding3@3x.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/overview6~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/overview6~universal@1x.png deleted file mode 100644 index 8f95ac6..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/overview6~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/overview6~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/overview6~universal@2x.png deleted file mode 100644 index e6851de..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/overview6~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/overview6~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/overview6~universal@3x.png deleted file mode 100644 index 208ff05..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding3.imageset/overview6~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/Contents.json index bac0322..028e291 100644 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/Contents.json +++ b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "overview6_phone_customer2~universal@1x.png", + "filename" : "onboarding4.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "overview6_phone_customer2~universal@2x.png", + "filename" : "onboarding4@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "overview6_phone_customer2~universal@3x.png", + "filename" : "onboarding4@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/onboarding4.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/onboarding4.png new file mode 100644 index 0000000..cdb9c58 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/onboarding4.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/onboarding4@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/onboarding4@2x.png new file mode 100644 index 0000000..f54dfd6 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/onboarding4@2x.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/onboarding4@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/onboarding4@3x.png new file mode 100644 index 0000000..bcb4417 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/onboarding4@3x.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/overview6_phone_customer2~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/overview6_phone_customer2~universal@1x.png deleted file mode 100644 index ae5b650..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/overview6_phone_customer2~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/overview6_phone_customer2~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/overview6_phone_customer2~universal@2x.png deleted file mode 100644 index bbbcf98..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/overview6_phone_customer2~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/overview6_phone_customer2~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/overview6_phone_customer2~universal@3x.png deleted file mode 100644 index 103473a..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding4.imageset/overview6_phone_customer2~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding5.imageset/overview7~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding5.imageset/overview7~universal@1x.png deleted file mode 100644 index a0d1f14..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding5.imageset/overview7~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding5.imageset/overview7~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding5.imageset/overview7~universal@2x.png deleted file mode 100644 index 44b4331..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding5.imageset/overview7~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding5.imageset/overview7~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding5.imageset/overview7~universal@3x.png deleted file mode 100644 index 33eb96c..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding5.imageset/overview7~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding6.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding6.imageset/Contents.json deleted file mode 100644 index 1199c20..0000000 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding6.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "overview8~universal@1x.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "overview8~universal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "overview8~universal@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding6.imageset/overview8~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding6.imageset/overview8~universal@1x.png deleted file mode 100644 index 9a7322e..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding6.imageset/overview8~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding6.imageset/overview8~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding6.imageset/overview8~universal@2x.png deleted file mode 100644 index 4a42338..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding6.imageset/overview8~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding6.imageset/overview8~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding6.imageset/overview8~universal@3x.png deleted file mode 100644 index fb195d4..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding6.imageset/overview8~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding7.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding7.imageset/Contents.json deleted file mode 100644 index 37efc1f..0000000 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding7.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "overview8_phone_server2~universal@1x.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "overview8_phone_server2~universal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "overview8_phone_server2~universal@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding7.imageset/overview8_phone_server2~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding7.imageset/overview8_phone_server2~universal@1x.png deleted file mode 100644 index 69ba137..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding7.imageset/overview8_phone_server2~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding7.imageset/overview8_phone_server2~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding7.imageset/overview8_phone_server2~universal@2x.png deleted file mode 100644 index 121547b..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding7.imageset/overview8_phone_server2~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding7.imageset/overview8_phone_server2~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding7.imageset/overview8_phone_server2~universal@3x.png deleted file mode 100644 index 29d4130..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding7.imageset/overview8_phone_server2~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding8.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding8.imageset/Contents.json deleted file mode 100644 index 8089f48..0000000 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding8.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "overview8_phone_server3~universal@1x.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "overview8_phone_server3~universal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "overview8_phone_server3~universal@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding8.imageset/overview8_phone_server3~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding8.imageset/overview8_phone_server3~universal@1x.png deleted file mode 100644 index 109baf9..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding8.imageset/overview8_phone_server3~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding8.imageset/overview8_phone_server3~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding8.imageset/overview8_phone_server3~universal@2x.png deleted file mode 100644 index 670d83b..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding8.imageset/overview8_phone_server3~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding8.imageset/overview8_phone_server3~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding8.imageset/overview8_phone_server3~universal@3x.png deleted file mode 100644 index 0d0db3b..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding8.imageset/overview8_phone_server3~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding9.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding9.imageset/Contents.json deleted file mode 100644 index 2fc221b..0000000 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding9.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "overview8_2~universal@1x.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "overview8_2~universal@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "overview8_2~universal@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding9.imageset/overview8_2~universal@1x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding9.imageset/overview8_2~universal@1x.png deleted file mode 100644 index ee74b05..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding9.imageset/overview8_2~universal@1x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding9.imageset/overview8_2~universal@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding9.imageset/overview8_2~universal@2x.png deleted file mode 100644 index 56ad329..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding9.imageset/overview8_2~universal@2x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding9.imageset/overview8_2~universal@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding9.imageset/overview8_2~universal@3x.png deleted file mode 100644 index d644a5a..0000000 Binary files a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding9.imageset/overview8_2~universal@3x.png and /dev/null differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding5.imageset/Contents.json b/NativeAppTemplate/Resources/Assets.xcassets/hero.imageset/Contents.json similarity index 64% rename from NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding5.imageset/Contents.json rename to NativeAppTemplate/Resources/Assets.xcassets/hero.imageset/Contents.json index ce975c3..e2d4444 100644 --- a/NativeAppTemplate/Resources/Assets.xcassets/Onboarding/onboarding5.imageset/Contents.json +++ b/NativeAppTemplate/Resources/Assets.xcassets/hero.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "overview7~universal@1x.png", + "filename" : "hero.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "overview7~universal@2x.png", + "filename" : "hero@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "overview7~universal@3x.png", + "filename" : "hero@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/NativeAppTemplate/Resources/Assets.xcassets/hero.imageset/hero.png b/NativeAppTemplate/Resources/Assets.xcassets/hero.imageset/hero.png new file mode 100644 index 0000000..7a2d682 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/hero.imageset/hero.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/hero.imageset/hero@2x.png b/NativeAppTemplate/Resources/Assets.xcassets/hero.imageset/hero@2x.png new file mode 100644 index 0000000..8628e01 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/hero.imageset/hero@2x.png differ diff --git a/NativeAppTemplate/Resources/Assets.xcassets/hero.imageset/hero@3x.png b/NativeAppTemplate/Resources/Assets.xcassets/hero.imageset/hero@3x.png new file mode 100644 index 0000000..67d6409 Binary files /dev/null and b/NativeAppTemplate/Resources/Assets.xcassets/hero.imageset/hero@3x.png differ diff --git a/NativeAppTemplate/UI/App Root/OnboardingView.swift b/NativeAppTemplate/UI/App Root/OnboardingView.swift index 235ceba..8598f4a 100644 --- a/NativeAppTemplate/UI/App Root/OnboardingView.swift +++ b/NativeAppTemplate/UI/App Root/OnboardingView.swift @@ -34,7 +34,7 @@ private extension OnboardingView { page( image: "onboarding\(id)", text: viewModel.onboardingDescription(index: id), - isPortraitImage: onboarding.isPortraitImage + imageOrientation: onboarding.imageOrientation ) } } @@ -63,13 +63,13 @@ private extension OnboardingView { .frame(width: 256, height: 24) } - private func page(image: String, text: String, isPortraitImage: Bool) -> some View { + private func page(image: String, text: String, imageOrientation: ImageOrientation) -> some View { ZStack(alignment: .bottom) { Image(image) .resizable() .aspectRatio(contentMode: .fit) .padding(.top, NativeAppTemplateConstants.Spacing.md) - .padding(.bottom, isPortraitImage ? 0 : 192) + .padding(.bottom, imageOrientation == .portrait ? 0 : 192) ZStack(alignment: .top) { VStack { diff --git a/NativeAppTemplate/UI/App Root/OnboardingViewModel.swift b/NativeAppTemplate/UI/App Root/OnboardingViewModel.swift index 2469565..f978c8e 100644 --- a/NativeAppTemplate/UI/App Root/OnboardingViewModel.swift +++ b/NativeAppTemplate/UI/App Root/OnboardingViewModel.swift @@ -32,14 +32,6 @@ final class OnboardingViewModel { Strings.onboardingDescription3 case 4: Strings.onboardingDescription4 - case 5: - Strings.onboardingDescription5 - case 6: - Strings.onboardingDescription6 - case 7: - Strings.onboardingDescription7 - case 8: - Strings.onboardingDescription8 default: Strings.onboardingDescription1 } diff --git a/NativeAppTemplate/UI/App Root/SignUpOrSignInView.swift b/NativeAppTemplate/UI/App Root/SignUpOrSignInView.swift index 0eb40cd..a2c7263 100644 --- a/NativeAppTemplate/UI/App Root/SignUpOrSignInView.swift +++ b/NativeAppTemplate/UI/App Root/SignUpOrSignInView.swift @@ -28,7 +28,7 @@ private extension SignUpOrSignInView { .frame(width: 384, height: 24) .padding() - Image("onboarding1Slim") + Image("hero") .resizable() .aspectRatio(contentMode: .fit) .frame(height: 256) diff --git a/NativeAppTemplateTests/Demo/Data/Repositories/DemoOnboardingRepository.swift b/NativeAppTemplateTests/Demo/Data/Repositories/DemoOnboardingRepository.swift index 3f4c4e3..9b7fc60 100644 --- a/NativeAppTemplateTests/Demo/Data/Repositories/DemoOnboardingRepository.swift +++ b/NativeAppTemplateTests/Demo/Data/Repositories/DemoOnboardingRepository.swift @@ -5,39 +5,40 @@ import Foundation @testable import NativeAppTemplate -import OrderedCollections @MainActor final class DemoOnboardingRepository: OnboardingRepositoryProtocol { var onboardings: [Onboarding] = [] - var onboardingsDictionary: OrderedDictionary { - var dict = OrderedDictionary() - for onboarding in onboardings { - dict[onboarding.id] = onboarding.isPortraitImage - } - return dict + + init() { + setupMockOnboardings() } func reload() { - // Demo data with predefined onboarding items - let demoOnboardingData: OrderedDictionary = [ - 1: false, // Landscape image - 2: false, // Landscape image - 3: false, // Landscape image - 4: true, // Portrait image - 5: false, // Landscape image - 6: false, // Landscape image - 7: true, // Portrait image - 8: true, // Portrait image - 9: false, // Landscape image - 10: false, // Landscape image - 11: true, // Portrait image - 12: false, // Landscape image - 13: false // Landscape image - ] + setupMockOnboardings() + } + + // MARK: - Test Helpers + + func resetState() { + setupMockOnboardings() + } - onboardings = demoOnboardingData.map { key, value in - Onboarding(id: key, isPortraitImage: value) - } + func addOnboarding(_ onboarding: Onboarding) { + onboardings.append(onboarding) + } + + func clearOnboardings() { + onboardings.removeAll() + } + + private func setupMockOnboardings() { + onboardings = [ + Onboarding(id: 1, imageOrientation: .portrait), + Onboarding(id: 2, imageOrientation: .landscape), + Onboarding(id: 3, imageOrientation: .portrait), + Onboarding(id: 4, imageOrientation: .landscape), + Onboarding(id: 5, imageOrientation: .portrait) + ] } } diff --git a/NativeAppTemplateTests/Demo/Data/Repositories/DemoOnboardingRepositoryTest.swift b/NativeAppTemplateTests/Demo/Data/Repositories/DemoOnboardingRepositoryTest.swift index d6f8943..af33426 100644 --- a/NativeAppTemplateTests/Demo/Data/Repositories/DemoOnboardingRepositoryTest.swift +++ b/NativeAppTemplateTests/Demo/Data/Repositories/DemoOnboardingRepositoryTest.swift @@ -13,70 +13,98 @@ struct DemoOnboardingRepositoryTest { let repository = DemoOnboardingRepository() @Test - func reload() { - repository.reload() + func initialSetup() { + repository.resetState() - #expect(repository.onboardings.count == 13) - #expect(!repository.onboardings.isEmpty) + #expect(repository.onboardings.count == 5) } @Test - func onboardingsDictionary() { - repository.reload() + func onboardingProperties() throws { + repository.resetState() + + let onboarding1 = try #require(repository.onboardings.first { $0.id == 1 }) + #expect(onboarding1.imageOrientation == .portrait) - let dictionary = repository.onboardingsDictionary - #expect(dictionary.count == 13) - // Test specific values from the demo data - #expect(dictionary[1] == false) // Landscape - #expect(dictionary[4] == true) // Portrait - #expect(dictionary[7] == true) // Portrait - #expect(dictionary[8] == true) // Portrait - #expect(dictionary[11] == true) // Portrait - #expect(dictionary[13] == false) // Landscape + let onboarding2 = try #require(repository.onboardings.first { $0.id == 2 }) + #expect(onboarding2.imageOrientation == .landscape) + + let onboarding3 = try #require(repository.onboardings.first { $0.id == 3 }) + #expect(onboarding3.imageOrientation == .portrait) } @Test - func onboardingProperties() { + func reload() { + repository.resetState() + + repository.onboardings.removeAll() + #expect(repository.onboardings.isEmpty) + repository.reload() - let firstOnboarding = repository.onboardings.first { $0.id == 1 } - #expect(firstOnboarding != nil) - #expect(firstOnboarding?.isPortraitImage == false) + #expect(repository.onboardings.count == 5) + } + + @Test + func addOnboarding() throws { + repository.resetState() + + let newOnboarding = Onboarding(id: 99, imageOrientation: .portrait) + repository.addOnboarding(newOnboarding) + + #expect(repository.onboardings.count == 6) - let portraitOnboarding = repository.onboardings.first { $0.id == 4 } - #expect(portraitOnboarding != nil) - #expect(portraitOnboarding?.isPortraitImage == true) + let addedOnboarding = try #require(repository.onboardings.first { $0.id == 99 }) + #expect(addedOnboarding.imageOrientation == .portrait) } @Test - func onboardingIds() { - repository.reload() + func clearOnboardings() { + repository.resetState() + + #expect(repository.onboardings.count == 5) + + repository.clearOnboardings() - let ids = repository.onboardings.map(\.id).sorted() - let expectedIds = Array(1...13) - #expect(ids == expectedIds) + #expect(repository.onboardings.isEmpty) } @Test - func portraitImageCounts() { - repository.reload() + func onboardingOrdering() { + repository.resetState() + + let ids = repository.onboardings.map(\.id) + #expect(ids == [1, 2, 3, 4, 5]) - let portraitCount = repository.onboardings.count(where: { $0.isPortraitImage }) - let landscapeCount = repository.onboardings.count(where: { !$0.isPortraitImage }) + let newOnboarding = Onboarding(id: 0, imageOrientation: .portrait) + repository.addOnboarding(newOnboarding) - #expect(portraitCount == 4) // IDs: 4, 7, 8, 11 - #expect(landscapeCount == 9) // All others - #expect(portraitCount + landscapeCount == 13) + let updatedIds = repository.onboardings.map(\.id) + #expect(updatedIds == [1, 2, 3, 4, 5, 0]) } @Test - func dictionaryConsistency() { - repository.reload() + func onboardingIdentifiability() throws { + repository.resetState() + + let ids = repository.onboardings.map(\.id) + let uniqueIds = Set(ids) + #expect(ids.count == uniqueIds.count) + } + + @Test + func onboardingHashability() throws { + repository.resetState() + + let onboarding1 = try #require(repository.onboardings.first { $0.id == 1 }) + let onboarding2 = try #require(repository.onboardings.first { $0.id == 1 }) + let onboarding3 = try #require(repository.onboardings.first { $0.id == 2 }) + + #expect(onboarding1 == onboarding2) + #expect(onboarding1 != onboarding3) - // Verify that the dictionary computed property matches the onboardings array - for onboarding in repository.onboardings { - #expect(repository.onboardingsDictionary[onboarding.id] == onboarding.isPortraitImage) - } + let onboardingSet: Set = [onboarding1, onboarding2, onboarding3] + #expect(onboardingSet.count == 2) } } } diff --git a/NativeAppTemplateTests/Testing/Repositories/TestOnboardingRepository.swift b/NativeAppTemplateTests/Testing/Repositories/TestOnboardingRepository.swift index bf685aa..23e6217 100644 --- a/NativeAppTemplateTests/Testing/Repositories/TestOnboardingRepository.swift +++ b/NativeAppTemplateTests/Testing/Repositories/TestOnboardingRepository.swift @@ -5,18 +5,10 @@ import Foundation @testable import NativeAppTemplate -import OrderedCollections @MainActor final class TestOnboardingRepository: OnboardingRepositoryProtocol { var onboardings: [Onboarding] = [] - var onboardingsDictionary: OrderedDictionary { - var dict = OrderedDictionary() - for onboarding in onboardings { - dict[onboarding.id] = onboarding.isPortraitImage - } - return dict - } /// A test-only var reloadCalled = false diff --git a/NativeAppTemplateTests/UI/App Root/OnboardingViewModelTest.swift b/NativeAppTemplateTests/UI/App Root/OnboardingViewModelTest.swift index a6b6f16..931a73c 100644 --- a/NativeAppTemplateTests/UI/App Root/OnboardingViewModelTest.swift +++ b/NativeAppTemplateTests/UI/App Root/OnboardingViewModelTest.swift @@ -14,11 +14,11 @@ struct OnboardingViewModelTest { func mockOnboarding( id: Int = 1, - isPortraitImage: Bool = true + imageOrientation: ImageOrientation = .portrait ) -> Onboarding { Onboarding( id: id, - isPortraitImage: isPortraitImage + imageOrientation: imageOrientation ) } @@ -34,9 +34,9 @@ struct OnboardingViewModelTest { @Test func reload() { let onboardings = [ - mockOnboarding(id: 1, isPortraitImage: true), - mockOnboarding(id: 2, isPortraitImage: false), - mockOnboarding(id: 3, isPortraitImage: true) + mockOnboarding(id: 1, imageOrientation: .portrait), + mockOnboarding(id: 2, imageOrientation: .landscape), + mockOnboarding(id: 3, imageOrientation: .portrait) ] onboardingRepository.setOnboardings(onboardings: onboardings) @@ -96,7 +96,7 @@ struct OnboardingViewModelTest { @Test func onboardingDescriptionAllSteps() { - let onboardings = (1...8).map { mockOnboarding(id: $0) } + let onboardings = (1...4).map { mockOnboarding(id: $0) } onboardingRepository.setOnboardings(onboardings: onboardings) let viewModel = OnboardingViewModel( @@ -106,12 +106,13 @@ struct OnboardingViewModelTest { viewModel.reload() let expectedDescriptions = [ - Strings.onboardingDescription1, Strings.onboardingDescription2, Strings.onboardingDescription3, - Strings.onboardingDescription4, Strings.onboardingDescription5, Strings.onboardingDescription6, - Strings.onboardingDescription7, Strings.onboardingDescription8 + Strings.onboardingDescription1, + Strings.onboardingDescription2, + Strings.onboardingDescription3, + Strings.onboardingDescription4 ] - for index in 1...8 { + for index in 1...4 { #expect(viewModel.onboardingDescription(index: index) == expectedDescriptions[index - 1]) } } @@ -133,10 +134,10 @@ struct OnboardingViewModelTest { @Test func onboardingWithMixedImageTypes() { let onboardings = [ - mockOnboarding(id: 1, isPortraitImage: true), - mockOnboarding(id: 2, isPortraitImage: false), - mockOnboarding(id: 3, isPortraitImage: true), - mockOnboarding(id: 4, isPortraitImage: false) + mockOnboarding(id: 1, imageOrientation: .portrait), + mockOnboarding(id: 2, imageOrientation: .landscape), + mockOnboarding(id: 3, imageOrientation: .portrait), + mockOnboarding(id: 4, imageOrientation: .landscape) ] onboardingRepository.setOnboardings(onboardings: onboardings) @@ -148,9 +149,9 @@ struct OnboardingViewModelTest { viewModel.reload() #expect(viewModel.onboardings.count == 4) - #expect(viewModel.onboardings[0].isPortraitImage == true) - #expect(viewModel.onboardings[1].isPortraitImage == false) - #expect(viewModel.onboardings[2].isPortraitImage == true) - #expect(viewModel.onboardings[3].isPortraitImage == false) + #expect(viewModel.onboardings[0].imageOrientation == .portrait) + #expect(viewModel.onboardings[1].imageOrientation == .landscape) + #expect(viewModel.onboardings[2].imageOrientation == .portrait) + #expect(viewModel.onboardings[3].imageOrientation == .landscape) } }