From 09ee64b65f552c5b50a514f88e3a9b98e852cc6e Mon Sep 17 00:00:00 2001 From: Philippe Weidmann Date: Tue, 11 Feb 2025 14:58:26 +0100 Subject: [PATCH] fix: Only pass ViewBuilder in public init --- .../Sources/Dashboard/HeaderView.swift | 14 +++------- .../Dashboard/MyKSuiteDashboardView.swift | 8 +++--- .../Dashboard/SubscriptionCardView.swift | 26 ++++++++++--------- 3 files changed, 22 insertions(+), 26 deletions(-) diff --git a/Sources/MyKSuite/Sources/Dashboard/HeaderView.swift b/Sources/MyKSuite/Sources/Dashboard/HeaderView.swift index f639c78..ee296e8 100644 --- a/Sources/MyKSuite/Sources/Dashboard/HeaderView.swift +++ b/Sources/MyKSuite/Sources/Dashboard/HeaderView.swift @@ -21,14 +21,8 @@ import InfomaniakCoreSwiftUI import SwiftUI struct HeaderView: View { - private let myKSuite: MyKSuite - private let avatar: Content - - init(myKSuite: MyKSuite, avatar: Content) { - self.myKSuite = myKSuite - - self.avatar = avatar - } + let myKSuite: MyKSuite + let avatarView: () -> Content var body: some View { HStack { @@ -37,7 +31,7 @@ struct HeaderView: View { .iconSize(.medium) .foregroundStyle(ColorHelper.secondary) - avatar + avatarView() .frame(width: 24, height: 24) } .frame(width: 24, height: 24) @@ -63,5 +57,5 @@ struct HeaderView: View { } #Preview { - HeaderView(myKSuite: PreviewHelper.sampleMyKSuite, avatar: EmptyView()) + HeaderView(myKSuite: PreviewHelper.sampleMyKSuite) { EmptyView() } } diff --git a/Sources/MyKSuite/Sources/Dashboard/MyKSuiteDashboardView.swift b/Sources/MyKSuite/Sources/Dashboard/MyKSuiteDashboardView.swift index 4a1ceb3..565f2cc 100644 --- a/Sources/MyKSuite/Sources/Dashboard/MyKSuiteDashboardView.swift +++ b/Sources/MyKSuite/Sources/Dashboard/MyKSuiteDashboardView.swift @@ -31,19 +31,19 @@ public struct MyKSuiteDashboardView: View { @State private var myKSuite: MyKSuite? private let apiFetcher: KSuiteApiFetchable private let userId: Int - private let avatar: Content + private let avatarView: () -> Content - public init(apiFetcher: KSuiteApiFetchable, userId: Int, @ViewBuilder avatar: () -> Content) { + public init(apiFetcher: KSuiteApiFetchable, userId: Int, @ViewBuilder avatarView: @escaping () -> Content) { self.apiFetcher = apiFetcher self.userId = userId - self.avatar = avatar() + self.avatarView = avatarView } public var body: some View { NavigationView { if let myKSuite { VStack(spacing: IKPadding.large) { - SubscriptionCardView(myKSuite: myKSuite, avatar: avatar) + SubscriptionCardView(myKSuite: myKSuite, avatarView: avatarView) if !myKSuite.isFree { SubscriptionBenefitsView() diff --git a/Sources/MyKSuite/Sources/Dashboard/SubscriptionCardView.swift b/Sources/MyKSuite/Sources/Dashboard/SubscriptionCardView.swift index a75f4a5..1d28575 100644 --- a/Sources/MyKSuite/Sources/Dashboard/SubscriptionCardView.swift +++ b/Sources/MyKSuite/Sources/Dashboard/SubscriptionCardView.swift @@ -22,11 +22,11 @@ import SwiftUI struct SubscriptionCardView: View { let myKSuite: MyKSuite - let avatar: Content + let avatarView: () -> Content var body: some View { VStack(spacing: IKPadding.large) { - HeaderView(myKSuite: myKSuite, avatar: avatar) + HeaderView(myKSuite: myKSuite, avatarView: avatarView) Divider() .overlay(ColorHelper.divider) @@ -50,14 +50,16 @@ struct SubscriptionCardView: View { } #Preview { - SubscriptionCardView(myKSuite: PreviewHelper.sampleMyKSuite, avatar: EmptyView()) - .padding() - .frame(maxHeight: .infinity, alignment: .top) - .background { - Resources.Assets.background.swiftUIImage - .resizable() - .scaledToFit() - .frame(maxHeight: .infinity, alignment: .top) - .ignoresSafeArea() - } + SubscriptionCardView(myKSuite: PreviewHelper.sampleMyKSuite) { + EmptyView() + } + .padding() + .frame(maxHeight: .infinity, alignment: .top) + .background { + Resources.Assets.background.swiftUIImage + .resizable() + .scaledToFit() + .frame(maxHeight: .infinity, alignment: .top) + .ignoresSafeArea() + } }