diff --git a/Sources/AdvancedList/public/Views/AdvancedList.swift b/Sources/AdvancedList/public/Views/AdvancedList.swift index 155e505..3bc2e01 100644 --- a/Sources/AdvancedList/public/Views/AdvancedList.swift +++ b/Sources/AdvancedList/public/Views/AdvancedList.swift @@ -23,7 +23,7 @@ public struct AdvancedList ListView)? private var content: (Data.Element) -> Content - private var listState: Binding + private let listState: ListState private let emptyStateView: () -> EmptyStateView private let errorStateView: (Error) -> ErrorStateView private let loadingStateView: () -> LoadingStateView @@ -37,11 +37,11 @@ public struct AdvancedList ListView, @ViewBuilder content: @escaping (Data.Element) -> Content, listState: Binding, @ViewBuilder emptyStateView: @escaping () -> EmptyStateView, @ViewBuilder errorStateView: @escaping (Error) -> ErrorStateView, @ViewBuilder loadingStateView: @escaping () -> LoadingStateView) { + public init(_ data: Data, @ViewBuilder listView: @escaping (Rows) -> ListView, @ViewBuilder content: @escaping (Data.Element) -> Content, listState: ListState, @ViewBuilder emptyStateView: @escaping () -> EmptyStateView, @ViewBuilder errorStateView: @escaping (Error) -> ErrorStateView, @ViewBuilder loadingStateView: @escaping () -> LoadingStateView) { self.data = data self.listView = listView self.content = content @@ -60,11 +60,11 @@ extension AdvancedList where ListView == List { /// - Parameters: /// - data: The data for populating the list. /// - content: A view builder that creates the view for a single row of the list. - /// - listState: A binding to a property that determines the state of the list. + /// - listState: A value representing the state of the list. /// - emptyStateView: A view builder that creates the view for the empty state of the list. /// - errorStateView: A view builder that creates the view for the error state of the list. /// - loadingStateView: A view builder that creates the view for the loading state of the list. - public init(_ data: Data, @ViewBuilder content: @escaping (Data.Element) -> Content, listState: Binding, @ViewBuilder emptyStateView: @escaping () -> EmptyStateView, @ViewBuilder errorStateView: @escaping (Error) -> ErrorStateView, @ViewBuilder loadingStateView: @escaping () -> LoadingStateView) { + public init(_ data: Data, @ViewBuilder content: @escaping (Data.Element) -> Content, listState: ListState, @ViewBuilder emptyStateView: @escaping () -> EmptyStateView, @ViewBuilder errorStateView: @escaping (Error) -> ErrorStateView, @ViewBuilder loadingStateView: @escaping () -> LoadingStateView) { self.data = data self.content = content self.listState = listState @@ -78,7 +78,7 @@ extension AdvancedList where ListView == List { extension AdvancedList { @ViewBuilder public var body: some View { - switch listState.wrappedValue { + switch listState { case .items: if !data.isEmpty { VStack { @@ -201,7 +201,7 @@ struct AdvancedList_Previews : PreviewProvider { NavigationView { AdvancedList(items, content: { element in Text(element.id) - }, listState: $listState, emptyStateView: { + }, listState: listState, emptyStateView: { Text("No data") }, errorStateView: { error in VStack { diff --git a/Tests/AdvancedListTests/AdvancedListTests.swift b/Tests/AdvancedListTests/AdvancedListTests.swift index 7acf703..0807321 100644 --- a/Tests/AdvancedListTests/AdvancedListTests.swift +++ b/Tests/AdvancedListTests/AdvancedListTests.swift @@ -18,7 +18,7 @@ final class AdvancedListTests: XCTestCase { private lazy var loadingStateView = Text(loadingStateString) func testEmptyStateView() { - let emptyListState: Binding = .constant(.items) + let emptyListState: ListState = .items let items: [String] = [] @@ -41,7 +41,7 @@ final class AdvancedListTests: XCTestCase { } func testNotEmptyStateView() { - let itemsListState: Binding = .constant(.items) + let itemsListState: ListState = .items let mockItem1 = "MockItem1" let mockItem2 = "MockItem2" @@ -73,7 +73,7 @@ final class AdvancedListTests: XCTestCase { } func testLoadingStateView() { - let loadingListState: Binding = .constant(.loading) + let loadingListState: ListState = .loading let items: [String] = [] @@ -97,7 +97,7 @@ final class AdvancedListTests: XCTestCase { func testErrorStateView() { let error = NSError(domain: "MockDomain", code: 1, userInfo: nil) - let errorListState: Binding = .constant(.error(error)) + let errorListState: ListState = .error(error) let items: [String] = []