From 6e766eb346689f1bd4b5eb9b048c9f0b9fa4a833 Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Mon, 5 Feb 2024 19:21:13 +0100 Subject: [PATCH] Implement `Blade` Package (#1) * Implement `Blade` package * Implement `BladeTCA` package * Add support for Swift 5.7 and Swift 5.8 * Update GitHub Actions Workflow * Update `README.md` * Fix building errors * Implement cancelling request * Implement test cases * Implement `cursor` & `offset` pagination types * Remove `offset` parameter from `Page` * Implement `cursor` & `offset` paginations * Update `README.md` * Update `CHANGELOG.md` --- .github/workflows/ci.yml | 88 ++-------- .swiftlint.yml | 4 +- .../contents.xcworkspacedata | 7 + .../xcschemes/Blade-Package.xcscheme | 135 +++++++++++++++ .../xcshareddata/xcschemes/Blade.xcscheme | 66 ++++++++ .../xcshareddata/xcschemes/BladeTCA.xcscheme | 66 ++++++++ CHANGELOG.md | 12 +- CONTRIBUTING.md | 2 +- Makefile | 2 +- Package.resolved | 113 +++++++++++++ Package.swift | 35 +++- Package@swift-5.7.swift | 32 ++++ Package@swift-5.8.swift | 32 ++++ README.md | 160 ++++++++++++++++-- Resources/blade.png | Bin 0 -> 292497 bytes Sources/Blade/Classes/Blade.swift | 6 - .../Classes/Core/Paginator/IPaginator.swift | 29 ++++ .../PageLoader/ICursorPageLoader.swift | 19 +++ .../PageLoader/IOffsetPageLoader.swift | 19 +++ .../Classes/Core/Paginator/Paginator.swift | 98 +++++++++++ .../Strategies/CursorSeekStrategy.swift | 53 ++++++ .../Strategies/LimitOffsetStrategy.swift | 47 +++++ .../Protocols/IPaginationStrategy.swift | 8 + .../Configuration/PaginationCursorSeek.swift | 18 ++ .../Configuration/PaginationLimitOffset.swift | 20 +++ Sources/Blade/Classes/Models/Page.swift | 30 ++++ .../Requests/CursorPaginationRequest.swift | 18 ++ .../Requests/OffsetPaginationRequest.swift | 31 ++++ .../CursorPositionBuilderStrategy.swift | 18 ++ .../OffsetPositionBuilderStrategy.swift | 18 ++ .../Protocols/IPositionBuilderStrategy.swift | 19 +++ .../CursorRequestBuilderStrategy.swift | 20 +++ .../OffsetRequestBuilderStrategy.swift | 35 ++++ .../Protocols/IRequestBuilderStrategy.swift | 22 +++ .../PaginatorIntegrationReducer.swift | 50 ++++++ .../Reducers/Internal/PaginatorReducer.swift | 71 ++++++++ .../Classes/COre/Reducers/Reducer+.swift | 60 +++++++ .../Classes/Models/PaginatorAction.swift | 32 ++++ .../Models/State/CursorPaginatorState.swift | 36 ++++ .../Classes/Models/State/PaginatorState.swift | 39 +++++ .../State/Protocols/IPaginatorState.swift | 14 ++ .../ViewModifiers/LoadingViewModifier.swift | 33 ++++ .../Views/PaginatorForEachView.swift | 46 +++++ .../Views/PaginatorListView.swift | 47 +++++ .../Presentation/Views/PaginatorView.swift | 62 +++++++ Tests/BladePackage.xctestplan | 44 +++++ .../Helpers/IdentifiedArray+Items.swift | 14 ++ Tests/BladeTCATests/Models/TestItem.swift | 28 +++ .../PaginatorIntegrationReducerTests.swift | 108 ++++++++++++ .../UnitTests/PaginatorReducerTests.swift | 105 ++++++++++++ Tests/BladeTests/BladeTests.swift | 8 - .../Mocks/CursorPageLoaderMock.swift | 22 +++ .../Mocks/OffsetPageLoaderMock.swift | 22 +++ Tests/BladeTests/Models/TestItem.swift | 18 ++ .../UnitTests/CursorPaginatorTests.swift | 101 +++++++++++ .../UnitTests/OffsetPaginatorTests.swift | 108 ++++++++++++ hooks/pre-commit | 0 57 files changed, 2238 insertions(+), 112 deletions(-) create mode 100644 .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/Blade-Package.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/Blade.xcscheme create mode 100644 .swiftpm/xcode/xcshareddata/xcschemes/BladeTCA.xcscheme create mode 100644 Package.resolved create mode 100644 Package@swift-5.7.swift create mode 100644 Package@swift-5.8.swift create mode 100644 Resources/blade.png delete mode 100644 Sources/Blade/Classes/Blade.swift create mode 100644 Sources/Blade/Classes/Core/Paginator/IPaginator.swift create mode 100644 Sources/Blade/Classes/Core/Paginator/PageLoader/ICursorPageLoader.swift create mode 100644 Sources/Blade/Classes/Core/Paginator/PageLoader/IOffsetPageLoader.swift create mode 100644 Sources/Blade/Classes/Core/Paginator/Paginator.swift create mode 100644 Sources/Blade/Classes/Core/Paginator/Strategies/CursorSeekStrategy.swift create mode 100644 Sources/Blade/Classes/Core/Paginator/Strategies/LimitOffsetStrategy.swift create mode 100644 Sources/Blade/Classes/Core/Paginator/Strategies/Protocols/IPaginationStrategy.swift create mode 100644 Sources/Blade/Classes/Models/Configuration/PaginationCursorSeek.swift create mode 100644 Sources/Blade/Classes/Models/Configuration/PaginationLimitOffset.swift create mode 100644 Sources/Blade/Classes/Models/Page.swift create mode 100644 Sources/Blade/Classes/Models/Requests/CursorPaginationRequest.swift create mode 100644 Sources/Blade/Classes/Models/Requests/OffsetPaginationRequest.swift create mode 100644 Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/PositionBuilders/CursorPositionBuilderStrategy.swift create mode 100644 Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/PositionBuilders/OffsetPositionBuilderStrategy.swift create mode 100644 Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/PositionBuilders/Protocols/IPositionBuilderStrategy.swift create mode 100644 Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/RequestBuilders/CursorRequestBuilderStrategy.swift create mode 100644 Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/RequestBuilders/OffsetRequestBuilderStrategy.swift create mode 100644 Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/RequestBuilders/Protocols/IRequestBuilderStrategy.swift create mode 100644 Sources/BladeTCA/Classes/COre/Reducers/Internal/PaginatorIntegrationReducer.swift create mode 100644 Sources/BladeTCA/Classes/COre/Reducers/Internal/PaginatorReducer.swift create mode 100644 Sources/BladeTCA/Classes/COre/Reducers/Reducer+.swift create mode 100644 Sources/BladeTCA/Classes/Models/PaginatorAction.swift create mode 100644 Sources/BladeTCA/Classes/Models/State/CursorPaginatorState.swift create mode 100644 Sources/BladeTCA/Classes/Models/State/PaginatorState.swift create mode 100644 Sources/BladeTCA/Classes/Models/State/Protocols/IPaginatorState.swift create mode 100644 Sources/BladeTCA/Classes/Presentation/ViewModifiers/LoadingViewModifier.swift create mode 100644 Sources/BladeTCA/Classes/Presentation/Views/PaginatorForEachView.swift create mode 100644 Sources/BladeTCA/Classes/Presentation/Views/PaginatorListView.swift create mode 100644 Sources/BladeTCA/Classes/Presentation/Views/PaginatorView.swift create mode 100644 Tests/BladePackage.xctestplan create mode 100644 Tests/BladeTCATests/Helpers/IdentifiedArray+Items.swift create mode 100644 Tests/BladeTCATests/Models/TestItem.swift create mode 100644 Tests/BladeTCATests/UnitTests/PaginatorIntegrationReducerTests.swift create mode 100644 Tests/BladeTCATests/UnitTests/PaginatorReducerTests.swift delete mode 100644 Tests/BladeTests/BladeTests.swift create mode 100644 Tests/BladeTests/Mocks/CursorPageLoaderMock.swift create mode 100644 Tests/BladeTests/Mocks/OffsetPageLoaderMock.swift create mode 100644 Tests/BladeTests/Models/TestItem.swift create mode 100644 Tests/BladeTests/UnitTests/CursorPaginatorTests.swift create mode 100644 Tests/BladeTests/UnitTests/OffsetPaginatorTests.swift mode change 100644 => 100755 hooks/pre-commit diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4415dfc..b09f602 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,20 +23,12 @@ jobs: with: args: --strict env: - DIFF_BASE: ${{ github.base_ref }} - - - macOS: - name: ${{ matrix.name }} runs-on: ${{ matrix.runsOn }} - env: - DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" - timeout-minutes: 20 strategy: fail-fast: false @@ -45,49 +37,37 @@ jobs: - xcode: "Xcode_15.0" runsOn: macos-13 name: "macOS 13, Xcode 15.0, Swift 5.9.0" + params: "-skipMacroValidation" - xcode: "Xcode_14.3.1" runsOn: macos-13 name: "macOS 13, Xcode 14.3.1, Swift 5.8.0" + params: "" - xcode: "Xcode_14.2" runsOn: macOS-12 name: "macOS 12, Xcode 14.2, Swift 5.7.2" - xcode: "Xcode_14.1" runsOn: macOS-12 name: "macOS 12, Xcode 14.1, Swift 5.7.1" + params: "" steps: - uses: actions/checkout@v3 - - name: ${{ matrix.name }} - run: xcodebuild test -scheme "{{ cookiecutter.name }}" -destination "platform=macOS" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - + run: xcodebuild test -scheme "Blade-Package" -destination "platform=macOS" clean -enableCodeCoverage YES ${{ matrix.params }} -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3.1.0 with: - token: ${{ secrets.CODECOV_TOKEN }} - xcode: true - xcode_archive_path: test_output/${{ matrix.name }}.xcresult - - uses: actions/upload-artifact@v4 with: - name: ${{ matrix.name }} - path: test_output - - - iOS: - name: ${{ matrix.name }} runs-on: ${{ matrix.runsOn }} - env: - DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" - timeout-minutes: 20 strategy: fail-fast: false @@ -97,34 +77,25 @@ jobs: name: "iOS 17.0.1" xcode: "Xcode_15.0" runsOn: macos-13 + params: "-skipMacroValidation" - destination: "OS=16.4,name=iPhone 14 Pro" name: "iOS 16.4" xcode: "Xcode_14.3.1" runsOn: macos-13 + params: "" steps: - uses: actions/checkout@v3 - - name: ${{ matrix.name }} - run: xcodebuild test -scheme "{{ cookiecutter.name }}" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - + run: xcodebuild test -scheme "Blade-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES ${{ matrix.params }} -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - uses: actions/upload-artifact@v4 with: - name: ${{ matrix.name }} path: test_output - - - - tvOS: - name: ${{ matrix.name }} runs-on: ${{ matrix.runsOn }} - env: - DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" - timeout-minutes: 20 strategy: fail-fast: false @@ -134,44 +105,31 @@ jobs: name: "tvOS 17.0" xcode: "Xcode_15.0" runsOn: macos-13 + params: "-skipMacroValidation" - destination: "OS=16.4,name=Apple TV" name: "tvOS 16.4" xcode: "Xcode_14.3.1" runsOn: macos-13 + params: "" steps: - uses: actions/checkout@v3 - - name: ${{ matrix.name }} - run: xcodebuild test -scheme "{{ cookiecutter.name }}" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - + run: xcodebuild test -scheme "Blade-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES ${{ matrix.params }} -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3.1.0 with: - token: ${{ secrets.CODECOV_TOKEN }} - xcode: true - xcode_archive_path: test_output/${{ matrix.name }}.xcresult - - uses: actions/upload-artifact@v4 with: - name: ${{ matrix.name }} - path: test_output - - - watchOS: - name: ${{ matrix.name }} runs-on: ${{ matrix.runsOn }} - env: - DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" - timeout-minutes: 20 strategy: fail-fast: false @@ -181,47 +139,36 @@ jobs: name: "watchOS 10.0" xcode: "Xcode_15.0" runsOn: macos-13 + params: "-skipMacroValidation" - destination: "OS=9.4,name=Apple Watch Series 8 (45mm)" name: "watchOS 9.4" xcode: "Xcode_14.3.1" runsOn: macos-13 + params: "" - destination: "OS=8.5,name=Apple Watch Series 7 (45mm)" name: "watchOS 8.5" xcode: "Xcode_14.3.1" runsOn: macos-13 + params: "" steps: - uses: actions/checkout@v3 - - name: ${{ matrix.name }} - run: xcodebuild test -scheme "{{ cookiecutter.name }}" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - + run: xcodebuild test -scheme "Blade-Package" -destination "${{ matrix.destination }}" clean -enableCodeCoverage YES ${{ matrix.params }} -resultBundlePath "test_output/${{ matrix.name }}.xcresult" || exit 1 - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3.1.0 with: - token: ${{ secrets.CODECOV_TOKEN }} - xcode: true - xcode_archive_path: test_output/${{ matrix.name }}.xcresult - - uses: actions/upload-artifact@v4 with: - name: ${{ matrix.name }} - path: test_output - - spm: - name: ${{ matrix.name }} runs-on: ${{ matrix.runsOn }} - env: - DEVELOPER_DIR: "/Applications/${{ matrix.xcode }}.app/Contents/Developer" - timeout-minutes: 20 strategy: fail-fast: false @@ -235,10 +182,11 @@ jobs: runsOn: macos-13 steps: - uses: actions/checkout@v3 - - name: ${{ matrix.name }} - run: swift build -c release --target "{{ cookiecutter.name }}" - + run: | + swift build -c release --target "Blade" + swift build -c release --target "BladeTCA" + merge-test-reports: needs: [iOS, macOS, watchOS, tvOS] runs-on: macos-13 diff --git a/.swiftlint.yml b/.swiftlint.yml index 89efd09..44740c2 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -1,6 +1,8 @@ excluded: - Tests - Package.swift + - Package@swift-5.7.swift + - Package@swift-5.8.swift - .build # Rules @@ -9,6 +11,7 @@ disabled_rules: - trailing_comma - todo - opening_brace + - multiple_closures_with_trailing_closure opt_in_rules: # some rules are only opt-in - anyobject_protocol @@ -18,7 +21,6 @@ opt_in_rules: # some rules are only opt-in - closure_end_indentation - closure_spacing - collection_alignment - - conditional_returns_on_newline - contains_over_filter_count - contains_over_filter_is_empty - contains_over_first_not_nil diff --git a/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/Blade-Package.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/Blade-Package.xcscheme new file mode 100644 index 0000000..0d2f5ea --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/Blade-Package.xcscheme @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/Blade.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/Blade.xcscheme new file mode 100644 index 0000000..12000ba --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/Blade.xcscheme @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.swiftpm/xcode/xcshareddata/xcschemes/BladeTCA.xcscheme b/.swiftpm/xcode/xcshareddata/xcschemes/BladeTCA.xcscheme new file mode 100644 index 0000000..1f635f4 --- /dev/null +++ b/.swiftpm/xcode/xcshareddata/xcschemes/BladeTCA.xcscheme @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e9885a..63e5ce9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,2 +1,12 @@ # Change Log -All notable changes to this project will be documented in this file. \ No newline at end of file +All notable changes to this project will be documented in this file. + +#### 1.x Releases +- `1.0.x` Releases - [1.0.0](#100) + +## [1.0.0](https://github.com/space-code/blade/releases/tag/1.0.0) +Released on 2024-02-05. + +#### Added +- Initial release of Blade. + - Added by [Nikita Vasilev](https://github.com/nik3212). \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5f89471..1e2051e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -58,4 +58,4 @@ See [CODE_OF_CONDUCT.md](https://github.com/space-code/blade/blob/master/CODE_OF --- -*Some of the ideas and wording for the statements above were based on work by the [Docker](https://github.com/docker/docker/blob/master/CONTRIBUTING.md) and [Linux](https://elinux.org/Developer_Certificate_Of_Origin) communities. We commend them for their efforts to facilitate collaboration in their projects.* \ No newline at end of file +*Some of the ideas and wording for the statements above were based on work by the [Docker](https://github.com/docker/docker/blob/master/CONTRIBUTING.md) and [Linux](https://elinux.org/Developer_Certificate_Of_Origin) communities. \ No newline at end of file diff --git a/Makefile b/Makefile index 3edc6d6..856d64b 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ bootstrap: hook mint bootstrap hook: - ln -sf .git/hooks/pre-commit ../../hooks/pre-commit + ln -sf ../../hooks/pre-commit .git/hooks/pre-commit chmod +x .git/hooks/pre-commit mint: diff --git a/Package.resolved b/Package.resolved new file mode 100644 index 0000000..4284f1c --- /dev/null +++ b/Package.resolved @@ -0,0 +1,113 @@ +{ + "pins" : [ + { + "identity" : "combine-schedulers", + "kind" : "remoteSourceControl", + "location" : "https://github.com/pointfreeco/combine-schedulers", + "state" : { + "revision" : "9dc9cbe4bc45c65164fa653a563d8d8db61b09bb", + "version" : "1.0.0" + } + }, + { + "identity" : "swift-case-paths", + "kind" : "remoteSourceControl", + "location" : "https://github.com/pointfreeco/swift-case-paths", + "state" : { + "revision" : "76d7791b5bda47df7e3d4690c4c3aaf089730707", + "version" : "1.2.1" + } + }, + { + "identity" : "swift-clocks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/pointfreeco/swift-clocks", + "state" : { + "revision" : "a8421d68068d8f45fbceb418fbf22c5dad4afd33", + "version" : "1.0.2" + } + }, + { + "identity" : "swift-collections", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-collections", + "state" : { + "revision" : "d029d9d39c87bed85b1c50adee7c41795261a192", + "version" : "1.0.6" + } + }, + { + "identity" : "swift-composable-architecture", + "kind" : "remoteSourceControl", + "location" : "https://github.com/pointfreeco/swift-composable-architecture.git", + "state" : { + "revision" : "ae491c9e3f66631e72d58db8bb4c27dfc3d3afd4", + "version" : "1.6.0" + } + }, + { + "identity" : "swift-concurrency-extras", + "kind" : "remoteSourceControl", + "location" : "https://github.com/pointfreeco/swift-concurrency-extras", + "state" : { + "revision" : "bb5059bde9022d69ac516803f4f227d8ac967f71", + "version" : "1.1.0" + } + }, + { + "identity" : "swift-custom-dump", + "kind" : "remoteSourceControl", + "location" : "https://github.com/pointfreeco/swift-custom-dump", + "state" : { + "revision" : "aedcf6f4cd486ccef5b312ccac85d4b3f6e58605", + "version" : "1.1.2" + } + }, + { + "identity" : "swift-dependencies", + "kind" : "remoteSourceControl", + "location" : "https://github.com/pointfreeco/swift-dependencies", + "state" : { + "revision" : "adb04a8e35f07edc001877af9f9f97fcc21d409e", + "version" : "1.2.0" + } + }, + { + "identity" : "swift-identified-collections", + "kind" : "remoteSourceControl", + "location" : "https://github.com/pointfreeco/swift-identified-collections", + "state" : { + "revision" : "d1e45f3e1eee2c9193f5369fa9d70a6ddad635e8", + "version" : "1.0.0" + } + }, + { + "identity" : "swift-syntax", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-syntax", + "state" : { + "revision" : "64889f0c732f210a935a0ad7cda38f77f876262d", + "version" : "509.1.1" + } + }, + { + "identity" : "swiftui-navigation", + "kind" : "remoteSourceControl", + "location" : "https://github.com/pointfreeco/swiftui-navigation", + "state" : { + "revision" : "78f9d72cf667adb47e2040aa373185c88c63f0dc", + "version" : "1.2.0" + } + }, + { + "identity" : "xctest-dynamic-overlay", + "kind" : "remoteSourceControl", + "location" : "https://github.com/pointfreeco/xctest-dynamic-overlay", + "state" : { + "revision" : "b58e6627149808b40634c4552fcf2f44d0b3ca87", + "version" : "1.1.0" + } + } + ], + "version" : 2 +} diff --git a/Package.swift b/Package.swift index ce886f3..fa74cab 100644 --- a/Package.swift +++ b/Package.swift @@ -5,19 +5,36 @@ import PackageDescription let package = Package( name: "Blade", + platforms: [ + .iOS(.v13), + .macOS(.v11), + .tvOS(.v13), + .watchOS(.v7), + .visionOS(.v1), + ], products: [ - // Products define the executables and libraries a package produces, making them visible to other packages. - .library( - name: "Blade", - targets: ["Blade"]), + .library(name: "Blade", targets: ["Blade"]), + .library(name: "BladeTCA", targets: ["BladeTCA"]), + ], + dependencies: [ + .package(url: "https://github.com/pointfreeco/swift-composable-architecture.git", .upToNextMajor(from: "1.5.5")), ], targets: [ - // Targets are the basic building blocks of a package, defining a module or a test suite. - // Targets can depend on other targets in this package and products from dependencies. + .target(name: "Blade"), .target( - name: "Blade"), + name: "BladeTCA", + dependencies: [ + "Blade", + .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), + ] + ), + .testTarget(name: "BladeTests", dependencies: ["Blade"]), .testTarget( - name: "BladeTests", - dependencies: ["Blade"]), + name: "BladeTCATests", + dependencies: [ + "BladeTCA", + .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), + ] + ), ] ) diff --git a/Package@swift-5.7.swift b/Package@swift-5.7.swift new file mode 100644 index 0000000..e381fcd --- /dev/null +++ b/Package@swift-5.7.swift @@ -0,0 +1,32 @@ +// swift-tools-version: 5.7 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "Blade", + platforms: [ + .iOS(.v13), + .macOS(.v11), + .tvOS(.v13), + .watchOS(.v7), + ], + products: [ + .library(name: "Blade", targets: ["Blade"]), + .library(name: "BladeTCA", targets: ["BladeTCA"]), + ], + dependencies: [ + .package(url: "https://github.com/pointfreeco/swift-composable-architecture.git", .upToNextMajor(from: "1.5.5")), + ], + targets: [ + .target(name: "Blade"), + .target( + name: "BladeTCA", + dependencies: [ + "Blade", + .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), + ] + ), + .testTarget(name: "BladeTests", dependencies: ["Blade"]), + ] +) diff --git a/Package@swift-5.8.swift b/Package@swift-5.8.swift new file mode 100644 index 0000000..f4caac3 --- /dev/null +++ b/Package@swift-5.8.swift @@ -0,0 +1,32 @@ +// swift-tools-version: 5.8 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "Blade", + platforms: [ + .iOS(.v13), + .macOS(.v11), + .tvOS(.v13), + .watchOS(.v7), + ], + products: [ + .library(name: "Blade", targets: ["Blade"]), + .library(name: "BladeTCA", targets: ["BladeTCA"]), + ], + dependencies: [ + .package(url: "https://github.com/pointfreeco/swift-composable-architecture.git", .upToNextMajor(from: "1.5.5")), + ], + targets: [ + .target(name: "Blade"), + .target( + name: "BladeTCA", + dependencies: [ + "Blade", + .product(name: "ComposableArchitecture", package: "swift-composable-architecture"), + ] + ), + .testTarget(name: "BladeTests", dependencies: ["Blade"]), + ] +) diff --git a/README.md b/README.md index 909b62c..68ca9b2 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,28 @@ +![Blade: a pagination framework that simplifies the integration of pagination into the application](https://raw.githubusercontent.com/space-code/blade/dev/Resources/blade.png) +

blade

-License -Swift Compatibility -Platform Compatibility -CI - -Number of GitHub contributors -Number of GitHub issues that are open -Number of GitHub closed issues -Number of GitHub stars -Number of GitHub pull requests that are open - -GitHub release; latest by date - + License + Swift Compatibility + Platform Compatibility + CI + CodeCov +
+
+ Number of GitHub contributors + Number of GitHub issues that are open + Number of GitHub closed issues + Number of GitHub stars + Number of GitHub pull requests that are open +
+
+ GitHub release; latest by date +

## Description -`Blade` description. +`Blade` is a pagination framework that simplifies the integration of pagination into the application. - [Usage](#usage) - [Requirements](#requirements) @@ -29,8 +34,133 @@ ## Usage +Blade provides two libraries for working with pagination: `Blade` and `BladeTCA`. `BladeTCA` is an extension designed for working with [Composable Architecture](https://github.com/pointfreeco/swift-composable-architecture). Both support working with offset and cursor-based paginations. + +### Basic Usage + +First, you need to implement page loader for whether cursor or offset based pagination: + +```swift +import Blade + +/// Offset pagination loader + +final class OffsetPageLoader: IOffsetPageLoader { + func loadPage(request: OffsetPaginationRequest) async throws -> Page { + // Implementation here + } +} + +/// Cursor pagination loader + +final class CursorPageLoader: ICursorPageLoader { + func loadPage(request: CursorPaginationRequest) async throws -> Page { + // Implementation here + } +} +``` + +Second, create a `Paginator` instance: + +```swift +import Blade + +/// Offset-based pagination +let paginator = Paginator(configuration: PaginationLimitOffset(firstPage: .zero, limit: 20), offsetPageLoader: OffsetPageLoader()) + +/// Cursor-based pagination +let paginator = Paginator(configuration: PaginationCursorSeek(id: #id_here), offsetPageLoader: CursorPageLoader()) +``` + +Third, the paginator is capable of requesting the first page, the next page, and resetting its state, like this: + +```swift +/// Request an initial page +let page = try await paginator.refresh() + +/// Request next page +let nextPage = try await paginator.nextPage() + +/// Reset state +await paginator.reset() +``` + +### TCA Usage + +If your app uses the [Composable Architecture](https://github.com/pointfreeco/swift-composable-architecture), `Blade` can be easily integrated. + +```swift +import BladeTCA + +// MARK: Reducer + +@Reducer +struct SomeFeature { + // MARK: Types + + struct State: Equatable { + var paginator: PaginatorState + } + + enum Action { + case child(PaginatorAction) + } + + // MARK: Reducer + + var body: some ReducerOf { + Reduce { state, action in + switch state { + case .clild: + return .none + } + } + .paginator( + state: \SomeFeature.State.paginator, + action: /SomeFeature.Action.child, + loadPage: { request, state in + // Load page here + } + ) + } +} + +// MARK: View + +import ComposableArchitecture +import DesignKit +import SwiftUI + +// MARK: - SomeView + +struct SomeView: View { + // MARK: Properties + + private let store: StoreOf + + // MARK: Initialization + + init(store: StoreOf) { + self.store = store + } + + // MARK: View + + var body: some View { + PaginatorListView( + store: store.scope(state: \.paginator, action: { .child($0) }) + ) { state in + // Implement UI here + } + } +``` + ## Requirements +- iOS 13.0+ / macOS 10.15+ / tvOS 13.0+ / watchOS 7.0+ / visionOS 1.0+ +- Xcode 15.0 +- Swift 5.7 + ## Installation ### Swift Package Manager @@ -62,4 +192,4 @@ Please feel free to help out with this project! If you see something that could Nikita Vasilev, nv3212@gmail.com ## License -blade is available under the MIT license. See the LICENSE file for more info. \ No newline at end of file +blade is available under the MIT license. See the LICENSE file for more info. diff --git a/Resources/blade.png b/Resources/blade.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce176adbeb0c4dc3f56f1dfa356e5316ed26651 GIT binary patch literal 292497 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%0AEA0ioYoJfHC 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

u>eW9#jMxLk8XBeP+Z&^G{u=q-P36 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 literal 0 HcmV?d00001 diff --git a/Sources/Blade/Classes/Blade.swift b/Sources/Blade/Classes/Blade.swift deleted file mode 100644 index af25d31..0000000 --- a/Sources/Blade/Classes/Blade.swift +++ /dev/null @@ -1,6 +0,0 @@ -// -// Blade -// Copyright © 2024 Space Code. All rights reserved. -// - -final class Blade {} diff --git a/Sources/Blade/Classes/Core/Paginator/IPaginator.swift b/Sources/Blade/Classes/Core/Paginator/IPaginator.swift new file mode 100644 index 0000000..b921e6d --- /dev/null +++ b/Sources/Blade/Classes/Core/Paginator/IPaginator.swift @@ -0,0 +1,29 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +/// Protocol defining the interface for a paginator that manages asynchronous loading of paginated data. +public protocol IPaginator { + /// The type of elements the paginator is handling, which must conform to `Decodable` & `Equatable`. + associatedtype Element: Decodable & Equatable + + /// Asynchronously refreshes the paginator, resetting to the first page and fetching new data. + /// + /// - Returns: A `PageInfo` representing the refreshed data. + /// + /// - Throws: An error if there's an issue during the refresh process. + func refresh() async throws -> Page + + /// Asynchronously loads the next page of data. + /// + /// - Returns: A `PageInfo` representing the newly loaded data. + /// + /// - Throws: An error if there's an issue during the loading process. + func loadNextPage() async throws -> Page + + /// Asynchronously resets the paginator, clearing all previously loaded data and resetting the page index. + func reset() async +} diff --git a/Sources/Blade/Classes/Core/Paginator/PageLoader/ICursorPageLoader.swift b/Sources/Blade/Classes/Core/Paginator/PageLoader/ICursorPageLoader.swift new file mode 100644 index 0000000..1424f7e --- /dev/null +++ b/Sources/Blade/Classes/Core/Paginator/PageLoader/ICursorPageLoader.swift @@ -0,0 +1,19 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +public protocol ICursorPageLoader { + /// The type of elements the paginator is handling, which must conform to `Decodable` & `Equatable`. + associatedtype Element: Decodable & Equatable & Identifiable + + /// Loads a page of elements based on the provided pagination request asynchronously. + /// + /// - Parameters: + /// - request: A `LimitPageRequest` specifying the limit and offset for the requested page. + /// + /// - Returns: An asynchronous task representing the loading process, resolving to a `Page` of elements. + func loadPage(request: CursorPaginationRequest) async throws -> Page +} diff --git a/Sources/Blade/Classes/Core/Paginator/PageLoader/IOffsetPageLoader.swift b/Sources/Blade/Classes/Core/Paginator/PageLoader/IOffsetPageLoader.swift new file mode 100644 index 0000000..140a149 --- /dev/null +++ b/Sources/Blade/Classes/Core/Paginator/PageLoader/IOffsetPageLoader.swift @@ -0,0 +1,19 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +public protocol IOffsetPageLoader { + /// The type of elements the paginator is handling, which must conform to `Decodable` & `Equatable`. + associatedtype Element: Decodable & Equatable + + /// Loads a page of elements based on the provided pagination request asynchronously. + /// + /// - Parameters: + /// - request: A `OffsetPaginationRequest` specifying the limit and offset for the requested page. + /// + /// - Returns: An asynchronous task representing the loading process, resolving to a `Page` of elements. + func loadPage(request: OffsetPaginationRequest) async throws -> Page +} diff --git a/Sources/Blade/Classes/Core/Paginator/Paginator.swift b/Sources/Blade/Classes/Core/Paginator/Paginator.swift new file mode 100644 index 0000000..32789c5 --- /dev/null +++ b/Sources/Blade/Classes/Core/Paginator/Paginator.swift @@ -0,0 +1,98 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +// MARK: - Paginator + +/// Paginator is an actor responsible for paginating and loading data using a provided paginator service. +public actor Paginator { + // MARK: Types + + /// Enum representing errors that may occur during pagination. + public enum Error: Swift.Error { + case alreadyLoading + } + + // MARK: Properties + + /// Internal flag to track whether the paginator is currently loading data. + private var isLoadingInternal = false + + /// Public property to check if the paginator is currently loading. + private(set) var isLoading: Bool { + get { Task.isCancelled || isLoadingInternal } + set { isLoadingInternal = newValue } + } + + /// An array to store the loaded elements. + public private(set) var elements: [T] = [] + + private let paginationStrategy: any IPaginationStrategy + + // MARK: Initialization + + /// Initializes the Paginator with the provided first page number and paginator service. + public init( + configuration: PaginationLimitOffset, + offsetPageLoader: any IOffsetPageLoader + ) { + paginationStrategy = LimitOffsetStrategy( + configuration: configuration, + pageLoader: offsetPageLoader + ) + } + + public init( + configuration: PaginationCursorSeek, + cursorPageLoader: any ICursorPageLoader + ) where T: Identifiable { + paginationStrategy = CursorSeekStrategy( + configuration: configuration, + pageLoader: cursorPageLoader + ) + } + + // MARK: Private + + private func perform(_ task: @autoclosure () async throws -> Page) async throws -> Page { + guard !isLoadingInternal else { throw Error.alreadyLoading } + + isLoadingInternal = true + defer { isLoadingInternal = false } + + return try await task() + } +} + +// MARK: IPaginator + +extension Paginator: IPaginator { + public func refresh() async throws -> Page { + try await perform( + await { + let page = try await paginationStrategy.refresh() + elements = page.items + return page + }() + ) + } + + public func loadNextPage() async throws -> Page { + try await perform( + await { + let page = try await paginationStrategy.loadNextPage() + elements += page.items + return page + }() + ) + } + + public func reset() async { + await paginationStrategy.reset() + elements = [] + isLoadingInternal = false + } +} diff --git a/Sources/Blade/Classes/Core/Paginator/Strategies/CursorSeekStrategy.swift b/Sources/Blade/Classes/Core/Paginator/Strategies/CursorSeekStrategy.swift new file mode 100644 index 0000000..804dd4e --- /dev/null +++ b/Sources/Blade/Classes/Core/Paginator/Strategies/CursorSeekStrategy.swift @@ -0,0 +1,53 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +// MARK: - CursorSeekStrategy + +actor CursorSeekStrategy { + // MARK: Properties + + private let configuration: PaginationCursorSeek + private let pageLoader: any ICursorPageLoader + + private var id: Element.ID + + // MARK: Initialization + + init( + configuration: PaginationCursorSeek, + pageLoader: any ICursorPageLoader + ) { + self.configuration = configuration + self.pageLoader = pageLoader + id = configuration.id + } +} + +// MARK: IPaginationStrategy + +extension CursorSeekStrategy: IPaginationStrategy { + func refresh() async throws -> Page { + let page = try await pageLoader.loadPage(request: CursorPaginationRequest(id: id)) + return page + } + + func loadNextPage() async throws -> Page { + let page = try await pageLoader.loadPage(request: CursorPaginationRequest(id: id)) + + guard let lastID = page.items.last?.id else { + throw URLError(.unknown) + } + + id = lastID + + return page + } + + func reset() async { + id = configuration.id + } +} diff --git a/Sources/Blade/Classes/Core/Paginator/Strategies/LimitOffsetStrategy.swift b/Sources/Blade/Classes/Core/Paginator/Strategies/LimitOffsetStrategy.swift new file mode 100644 index 0000000..e3bfc41 --- /dev/null +++ b/Sources/Blade/Classes/Core/Paginator/Strategies/LimitOffsetStrategy.swift @@ -0,0 +1,47 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +// MARK: - LimitOffsetStrategy + +actor LimitOffsetStrategy { + // MARK: Properties + + private let configuration: PaginationLimitOffset + private let pageLoader: any IOffsetPageLoader + + private var currentPage: Int + + // MARK: Initialization + + init(configuration: PaginationLimitOffset, pageLoader: any IOffsetPageLoader) { + self.configuration = configuration + self.pageLoader = pageLoader + currentPage = configuration.firstPage + } +} + +// MARK: IPaginationStrategy + +extension LimitOffsetStrategy: IPaginationStrategy { + func refresh() async throws -> Page { + currentPage = configuration.firstPage + let page = try await pageLoader.loadPage(request: OffsetPaginationRequest(limit: configuration.limit, offset: .zero)) + currentPage += 1 + return page + } + + func loadNextPage() async throws -> Page { + let page = try await pageLoader.loadPage(request: OffsetPaginationRequest( + limit: configuration.limit, + offset: configuration.limit * (currentPage + 1) + )) + currentPage += 1 + return page + } + + func reset() async {} +} diff --git a/Sources/Blade/Classes/Core/Paginator/Strategies/Protocols/IPaginationStrategy.swift b/Sources/Blade/Classes/Core/Paginator/Strategies/Protocols/IPaginationStrategy.swift new file mode 100644 index 0000000..a0f6e86 --- /dev/null +++ b/Sources/Blade/Classes/Core/Paginator/Strategies/Protocols/IPaginationStrategy.swift @@ -0,0 +1,8 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +protocol IPaginationStrategy: IPaginator where Element: Decodable & Equatable {} diff --git a/Sources/Blade/Classes/Models/Configuration/PaginationCursorSeek.swift b/Sources/Blade/Classes/Models/Configuration/PaginationCursorSeek.swift new file mode 100644 index 0000000..dd57163 --- /dev/null +++ b/Sources/Blade/Classes/Models/Configuration/PaginationCursorSeek.swift @@ -0,0 +1,18 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +public struct PaginationCursorSeek { + // MARK: Properties + + public let id: T.ID + + // MARK: Initialization + + public init(id: T.ID) { + self.id = id + } +} diff --git a/Sources/Blade/Classes/Models/Configuration/PaginationLimitOffset.swift b/Sources/Blade/Classes/Models/Configuration/PaginationLimitOffset.swift new file mode 100644 index 0000000..0ce0315 --- /dev/null +++ b/Sources/Blade/Classes/Models/Configuration/PaginationLimitOffset.swift @@ -0,0 +1,20 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +public struct PaginationLimitOffset { + // MARK: Properties + + public let firstPage: Int + public let limit: Int + + // MARK: Initialization + + public init(firstPage: Int, limit: Int) { + self.firstPage = firstPage + self.limit = limit + } +} diff --git a/Sources/Blade/Classes/Models/Page.swift b/Sources/Blade/Classes/Models/Page.swift new file mode 100644 index 0000000..5b99678 --- /dev/null +++ b/Sources/Blade/Classes/Models/Page.swift @@ -0,0 +1,30 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +/// A generic struct representing a paginated collection of items. +public struct Page: Equatable { + // MARK: Properties + + /// An array of items of generic type T contained in the current page. + public let items: [T] + + /// A boolean flag indicating whether there are more data available beyond + /// the current page. + public let hasMoreData: Bool + + // MARK: Initialization + + /// Creates a `Page` instance. + /// + /// - Parameters: + /// - items: An array of items of generic type T contained in the current page. + /// - hasMoreData: A boolean flag indicating whether there are more data available beyond the current page. + public init(items: [T], hasMoreData: Bool) { + self.items = items + self.hasMoreData = hasMoreData + } +} diff --git a/Sources/Blade/Classes/Models/Requests/CursorPaginationRequest.swift b/Sources/Blade/Classes/Models/Requests/CursorPaginationRequest.swift new file mode 100644 index 0000000..eea7eb3 --- /dev/null +++ b/Sources/Blade/Classes/Models/Requests/CursorPaginationRequest.swift @@ -0,0 +1,18 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +public struct CursorPaginationRequest: Equatable { + // MARK: Properties + + public let id: T.ID + + // MARK: Initialization + + public init(id: T.ID) { + self.id = id + } +} diff --git a/Sources/Blade/Classes/Models/Requests/OffsetPaginationRequest.swift b/Sources/Blade/Classes/Models/Requests/OffsetPaginationRequest.swift new file mode 100644 index 0000000..ff30950 --- /dev/null +++ b/Sources/Blade/Classes/Models/Requests/OffsetPaginationRequest.swift @@ -0,0 +1,31 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +/// A struct representing a request for paginated data with specified limits and offsets. +public struct OffsetPaginationRequest: Equatable { + // MARK: Properties + + /// The maximum number of items to be included in a page. + public let limit: Int + + /// The offset indicating the position of the first item in the requested page + /// relative to the entire dataset. + public let offset: Int + + // MARK: Initialization + + /// Creates a ``OffsetPaginationRequest`` instance. + /// + /// - Parameters: + /// - limit: The maximum number of items to be included in a page. + /// - offset: The offset indicating the position of the first item in the requested page + /// relative to the entire dataset. + public init(limit: Int, offset: Int) { + self.limit = limit + self.offset = offset + } +} diff --git a/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/PositionBuilders/CursorPositionBuilderStrategy.swift b/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/PositionBuilders/CursorPositionBuilderStrategy.swift new file mode 100644 index 0000000..f2dd580 --- /dev/null +++ b/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/PositionBuilders/CursorPositionBuilderStrategy.swift @@ -0,0 +1,18 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +/// A cursor-based paginator position builder. +struct CursorPositionBuilderStrategy: IPositionBuilderStrategy { + /// Creates a next position. + /// + /// - Parameter state: The current state of the paginator. + /// + /// - Returns: The next position offset based on the strategy. + func next(state: PaginatorState) -> State.ID { + state.items.last?.id ?? state.position + } +} diff --git a/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/PositionBuilders/OffsetPositionBuilderStrategy.swift b/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/PositionBuilders/OffsetPositionBuilderStrategy.swift new file mode 100644 index 0000000..418fabe --- /dev/null +++ b/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/PositionBuilders/OffsetPositionBuilderStrategy.swift @@ -0,0 +1,18 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade + +/// A offset-based paginator position builder. +struct OffsetPositionBuilderStrategy: IPositionBuilderStrategy { + /// Creates a next position. + /// + /// - Parameter state: The current state of the paginator. + /// + /// - Returns: The next position offset based on the strategy. + func next(state: PaginatorState) -> Int { + state.items.count + } +} diff --git a/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/PositionBuilders/Protocols/IPositionBuilderStrategy.swift b/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/PositionBuilders/Protocols/IPositionBuilderStrategy.swift new file mode 100644 index 0000000..3f85ff6 --- /dev/null +++ b/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/PositionBuilders/Protocols/IPositionBuilderStrategy.swift @@ -0,0 +1,19 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +/// This protocol defines the interface for a strategy used in building positions based on a given state. +protocol IPositionBuilderStrategy { + associatedtype State: Equatable + associatedtype PositionType: Equatable + + /// Takes a state as input and returns the corresponding position. + /// + /// - Parameter state: The state for which the next position needs to be built. + /// + /// - Returns: The resulting position based on the provided state. + func next(state: State) -> PositionType +} diff --git a/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/RequestBuilders/CursorRequestBuilderStrategy.swift b/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/RequestBuilders/CursorRequestBuilderStrategy.swift new file mode 100644 index 0000000..d1ca2fc --- /dev/null +++ b/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/RequestBuilders/CursorRequestBuilderStrategy.swift @@ -0,0 +1,20 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade + +/// A request builder strategy for cursor-based pagination. +struct CursorRequestBuilderStrategy: IRequestBuilderStrategy { + // MARK: IRequestBuilderStrategy + + /// Constructs a pagination request based on the provided state. + /// + /// - Parameter state: The current state of the paginator. + /// + /// - Returns: A CursorPaginationRequest with the cursor position from the provided state. + func makeRequest(state: PaginatorState) -> CursorPaginationRequest { + CursorPaginationRequest(id: state.position) + } +} diff --git a/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/RequestBuilders/OffsetRequestBuilderStrategy.swift b/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/RequestBuilders/OffsetRequestBuilderStrategy.swift new file mode 100644 index 0000000..1fc7aea --- /dev/null +++ b/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/RequestBuilders/OffsetRequestBuilderStrategy.swift @@ -0,0 +1,35 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade +import Foundation + +/// A request builder strategy for offset-based pagination. +struct OffsetRequestBuilderStrategy: IRequestBuilderStrategy { + // MARK: Properties + + /// The maximum number of items to be included in the pagination request. + private let limit: Int + + // MARK: Initialization + + /// Initializes the OffsetRequestBuilderStrategy with a specified limit. + /// + /// - Parameter limit: The maximum number of items to be included in each pagination request. + init(limit: Int) { + self.limit = limit + } + + // MARK: IRequestBuilderStrategy + + /// Constructs a pagination request based on the provided state. + /// + /// - Parameter state: The current state of the paginator. + /// + /// - Returns: An OffsetPaginationRequest with the offset position and specified limit from the provided state. + func makeRequest(state: PaginatorState) -> OffsetPaginationRequest { + OffsetPaginationRequest(limit: limit, offset: state.position) + } +} diff --git a/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/RequestBuilders/Protocols/IRequestBuilderStrategy.swift b/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/RequestBuilders/Protocols/IRequestBuilderStrategy.swift new file mode 100644 index 0000000..c11a87b --- /dev/null +++ b/Sources/BladeTCA/Classes/COre/Reducers/Internal/Builders/RequestBuilders/Protocols/IRequestBuilderStrategy.swift @@ -0,0 +1,22 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +/// A protocol for defining request builder strategies in a paginator. +protocol IRequestBuilderStrategy { + /// The state type associated with the strategy, conforming to Equatable. + associatedtype State: Equatable + + /// The request type associated with the strategy, conforming to Equatable. + associatedtype Request: Equatable + + /// Makes a request. + /// + /// - Parameter state: The current state for which a request needs to be built. + /// + /// - Returns: The constructed request based on the provided state. + func makeRequest(state: State) -> Request +} diff --git a/Sources/BladeTCA/Classes/COre/Reducers/Internal/PaginatorIntegrationReducer.swift b/Sources/BladeTCA/Classes/COre/Reducers/Internal/PaginatorIntegrationReducer.swift new file mode 100644 index 0000000..a05aa9a --- /dev/null +++ b/Sources/BladeTCA/Classes/COre/Reducers/Internal/PaginatorIntegrationReducer.swift @@ -0,0 +1,50 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade +import ComposableArchitecture + +struct PaginatorIntegrationReducer< + Parent: Reducer, + State: Equatable & Identifiable, + Action: Equatable, + PositionType: Equatable, + Request: Equatable +>: Reducer { + // MARK: Properties + + let parent: Parent + let childState: WritableKeyPath> + let childAction: AnyCasePath> + let loadPage: @Sendable (Request, Parent.State) async throws -> Page + let requestBuilderStrategy: any IRequestBuilderStrategy, Request> + let positionBuilderStrategy: any IPositionBuilderStrategy, PositionType> + + private enum CancelID { case requestPage } + + // MARK: Reducer + + var body: some Reducer { + Scope(state: childState, action: childAction) { + PaginatorReducer( + requestBuilder: requestBuilderStrategy, + positionBuilder: positionBuilderStrategy + ) + } + + Reduce { state, action in + guard let paginatorAction = childAction.extract(from: action), + case let .requestPage(pageRequest) = paginatorAction + else { + return parent.reduce(into: &state, action: action) + } + + return .run { [state] send in + await send(childAction.embed(.response(TaskResult { try await loadPage(pageRequest, state) }))) + } + .cancellable(id: CancelID.requestPage, cancelInFlight: true) + } + } +} diff --git a/Sources/BladeTCA/Classes/COre/Reducers/Internal/PaginatorReducer.swift b/Sources/BladeTCA/Classes/COre/Reducers/Internal/PaginatorReducer.swift new file mode 100644 index 0000000..0797a40 --- /dev/null +++ b/Sources/BladeTCA/Classes/COre/Reducers/Internal/PaginatorReducer.swift @@ -0,0 +1,71 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade +import ComposableArchitecture + +struct PaginatorReducer< + State: Equatable & Identifiable, + Action: Equatable, + PositionType: Equatable, + Request: Equatable +>: Reducer { + // MARK: Types + + typealias State = PaginatorState + typealias Action = PaginatorAction + + // MARK: Properties + + private let requestBuilder: any IRequestBuilderStrategy + private let positionBuilder: any IPositionBuilderStrategy + + // MARK: Initialization + + init( + requestBuilder: any IRequestBuilderStrategy, + positionBuilder: any IPositionBuilderStrategy + ) { + self.requestBuilder = requestBuilder + self.positionBuilder = positionBuilder + } + + // MARK: Reducer + + var body: some ReducerOf { + Reduce { state, action in + switch action { + case let .itemAppeared(id): + guard state.items.last?.id == id else { return .none } + return fetchNextPage(&state) + case .requestPage: + state.isLoading = true + return fetchNextPage(&state) + case let .response(.success(page)): + state.isLoading = false + + state.items.append(contentsOf: page.items) + state.hasMoreData = page.hasMoreData + + state.position = positionBuilder.next(state: state) + + return .none + case .response(.failure): + state.isLoading = false + return .none + } + } + } + + // MARK: Private + + private func fetchNextPage(_ state: inout Self.State) -> Effect { + guard !state.isLoading, state.hasMoreData else { return .none } + state.isLoading = true + + let request: Request = requestBuilder.makeRequest(state: state) + return .send(.requestPage(request)) + } +} diff --git a/Sources/BladeTCA/Classes/COre/Reducers/Reducer+.swift b/Sources/BladeTCA/Classes/COre/Reducers/Reducer+.swift new file mode 100644 index 0000000..093485e --- /dev/null +++ b/Sources/BladeTCA/Classes/COre/Reducers/Reducer+.swift @@ -0,0 +1,60 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade +import ComposableArchitecture + +// MARK: - Reducer Extension for Paginator Integration + +/// An extension on the `Reducer` type providing a method for integrating a paginator into a Composable Architecture. +public extension Reducer { + /// Integrates a paginator into a Composable Architecture, facilitating paginated data loading. + /// + /// - Parameters: + /// - limit: The number of items to load per page, with a default value of 20. + /// - state: The key path to the paginator state. + /// - action: The case path to the paginator actions. + /// - loadPage: A closure to load a page of items based on the provided `LimitPageRequest` and current state. + /// + /// - Returns: A reducer for integrating the paginator functionality. + func paginator( + limit: Int = 20, + state: WritableKeyPath>, + action: AnyCasePath>, + loadPage: @Sendable @escaping (OffsetPaginationRequest, State) async throws -> Page + ) -> some Reducer { + PaginatorIntegrationReducer( + parent: self, + childState: state, + childAction: action, + loadPage: loadPage, + requestBuilderStrategy: OffsetRequestBuilderStrategy(limit: limit), + positionBuilderStrategy: OffsetPositionBuilderStrategy() + ) + } + + /// Integrates a paginator into a Composable Architecture, facilitating paginated data loading with cursor-based pagination. + /// + /// - Parameters: + /// - state: The key path to the paginator state. + /// - action: The case path to the paginator actions. + /// - loadPage: A closure to load a page of items based on the provided `CursorPaginationRequest` and current state. + /// + /// - Returns: A reducer for integrating the paginator functionality. + func paginator( + state: WritableKeyPath>, + action: AnyCasePath>>, + loadPage: @Sendable @escaping (CursorPaginationRequest, State) async throws -> Page + ) -> some Reducer { + PaginatorIntegrationReducer( + parent: self, + childState: state, + childAction: action, + loadPage: loadPage, + requestBuilderStrategy: CursorRequestBuilderStrategy(), + positionBuilderStrategy: CursorPositionBuilderStrategy() + ) + } +} diff --git a/Sources/BladeTCA/Classes/Models/PaginatorAction.swift b/Sources/BladeTCA/Classes/Models/PaginatorAction.swift new file mode 100644 index 0000000..5a9ad48 --- /dev/null +++ b/Sources/BladeTCA/Classes/Models/PaginatorAction.swift @@ -0,0 +1,32 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade +import ComposableArchitecture +import Foundation + +// MARK: - PaginatorAction + +/// Represents the actions that can be performed on a paginator in a Composable Architecture. +/// +/// - Parameters: +/// - State: The type of state managed by the paginator. +/// - Action: The type of actions that can be associated with the paginator. +public enum PaginatorAction< + State: Equatable & Identifiable, + Action: Equatable, + Request: Equatable +>: Equatable { + // MARK: Action Cases + + /// Indicates that an item with the specified identifier has appeared in the UI. + case itemAppeared(State.ID) + + /// Represents a request to load the next page of items using the provided `RequestType`. + case requestPage(Request) + + /// Represents the response to a page request, containing the result of the operation. + case response(TaskResult>) +} diff --git a/Sources/BladeTCA/Classes/Models/State/CursorPaginatorState.swift b/Sources/BladeTCA/Classes/Models/State/CursorPaginatorState.swift new file mode 100644 index 0000000..ac4a397 --- /dev/null +++ b/Sources/BladeTCA/Classes/Models/State/CursorPaginatorState.swift @@ -0,0 +1,36 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import ComposableArchitecture + +/// Represents the state of a paginator for cursor-based pagination. +public struct CursorPaginatorState: Equatable, IPaginatorState { + // MARK: Properties + + /// The array of identifiable items managed by the paginator. + public var items: IdentifiedArrayOf + + /// A Boolean value indicating whether the paginator is currently loading more data. + var isLoading: Bool + + /// The offset or position in the data set from where the paginator should load more items. + var id: State.ID + + /// A Boolean value indicating whether there is more data available to be loaded. + var hasMoreData: Bool + + // MARK: Initialization + + /// Initializes a paginator state with an array of identifiable items. + /// + /// - Parameters: + /// - items: The array of identifiable items to be managed by the paginator. + public init(items: IdentifiedArrayOf, id: State.ID) { + self.items = items + isLoading = false + hasMoreData = true + self.id = id + } +} diff --git a/Sources/BladeTCA/Classes/Models/State/PaginatorState.swift b/Sources/BladeTCA/Classes/Models/State/PaginatorState.swift new file mode 100644 index 0000000..e9d4285 --- /dev/null +++ b/Sources/BladeTCA/Classes/Models/State/PaginatorState.swift @@ -0,0 +1,39 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import ComposableArchitecture +import Foundation + +// MARK: - OffsetPaginatorState + +/// Represents the state of a paginator for cursor-based pagination. +public struct PaginatorState: Equatable, IPaginatorState { + // MARK: Properties + + /// The array of identifiable items managed by the paginator. + public var items: IdentifiedArrayOf + + /// A Boolean value indicating whether the paginator is currently loading more data. + var isLoading: Bool + + /// The offset or position in the data set from where the paginator should load more items. + var position: T + + /// A Boolean value indicating whether there is more data available to be loaded. + var hasMoreData: Bool + + // MARK: Initialization + + /// Initializes a paginator state with an array of identifiable items. + /// + /// - Parameters: + /// - items: The array of identifiable items to be managed by the paginator. + public init(items: IdentifiedArrayOf, position: T) { + self.items = items + isLoading = false + hasMoreData = true + self.position = position + } +} diff --git a/Sources/BladeTCA/Classes/Models/State/Protocols/IPaginatorState.swift b/Sources/BladeTCA/Classes/Models/State/Protocols/IPaginatorState.swift new file mode 100644 index 0000000..a543def --- /dev/null +++ b/Sources/BladeTCA/Classes/Models/State/Protocols/IPaginatorState.swift @@ -0,0 +1,14 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import ComposableArchitecture + +protocol IPaginatorState { + associatedtype Element: Equatable & Identifiable + + var items: IdentifiedArrayOf { get set } + var isLoading: Bool { get set } + var hasMoreData: Bool { get set } +} diff --git a/Sources/BladeTCA/Classes/Presentation/ViewModifiers/LoadingViewModifier.swift b/Sources/BladeTCA/Classes/Presentation/ViewModifiers/LoadingViewModifier.swift new file mode 100644 index 0000000..ae29da8 --- /dev/null +++ b/Sources/BladeTCA/Classes/Presentation/ViewModifiers/LoadingViewModifier.swift @@ -0,0 +1,33 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import SwiftUI + +struct LoadingViewModifier: ViewModifier { + // MARK: Properties + + let isLoading: Bool + + // MARK: ViewModifier + + func body(content: Content) -> some View { + VStack { + content + + if isLoading { + progressView + } + } + } + + // MARK: Private + + private var progressView: some View { + if #available(iOS 14.0, macOS 11.0, tvOS 14.0, watchOS 7.0, *) { + return ProgressView().progressViewStyle(.circular) + } + return EmptyView() + } +} diff --git a/Sources/BladeTCA/Classes/Presentation/Views/PaginatorForEachView.swift b/Sources/BladeTCA/Classes/Presentation/Views/PaginatorForEachView.swift new file mode 100644 index 0000000..865ed87 --- /dev/null +++ b/Sources/BladeTCA/Classes/Presentation/Views/PaginatorForEachView.swift @@ -0,0 +1,46 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import ComposableArchitecture +import SwiftUI + +public struct PaginatorForEachView< + State: Equatable & Identifiable, + Action: Equatable, + Body: View, + PositionType: Equatable, + Request: Equatable +>: View { + // MARK: Types + + private typealias StoreType = ViewStoreOf> + + // MARK: Properties + + public let store: Store, PaginatorAction> + public let content: (State) -> Body + + public init( + store: Store, PaginatorAction>, + content: @escaping (State) -> Body + ) { + self.store = store + self.content = content + } + + // MARK: View + + public var body: some View { + WithViewStore(store, observe: { $0 }) { (viewStore: StoreType) in + ForEach(viewStore.items) { item in + content(item) + .onAppear { + viewStore.send(.itemAppeared(item.id)) + } + } + .modifier(LoadingViewModifier(isLoading: viewStore.isLoading && !viewStore.items.isEmpty)) + } + } +} diff --git a/Sources/BladeTCA/Classes/Presentation/Views/PaginatorListView.swift b/Sources/BladeTCA/Classes/Presentation/Views/PaginatorListView.swift new file mode 100644 index 0000000..9ff9cca --- /dev/null +++ b/Sources/BladeTCA/Classes/Presentation/Views/PaginatorListView.swift @@ -0,0 +1,47 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import BladeTCA +import ComposableArchitecture +import SwiftUI + +public struct PaginatorListView< + State: Equatable & Identifiable, + Action: Equatable, + Body: View, + PositionType: Equatable, + Request: Equatable +>: View { + // MARK: Types + + private typealias StoreType = ViewStoreOf> + + // MARK: Properties + + public let store: Store, PaginatorAction> + public let content: (State) -> Body + + public init( + store: Store, PaginatorAction>, + content: @escaping (State) -> Body + ) { + self.store = store + self.content = content + } + + // MARK: View + + public var body: some View { + WithViewStore(store, observe: { $0 }) { (viewStore: StoreType) in + List(viewStore.items) { item in + content(item) + .onAppear { + viewStore.send(.itemAppeared(item.id)) + } + } + .modifier(LoadingViewModifier(isLoading: viewStore.isLoading && !viewStore.items.isEmpty)) + } + } +} diff --git a/Sources/BladeTCA/Classes/Presentation/Views/PaginatorView.swift b/Sources/BladeTCA/Classes/Presentation/Views/PaginatorView.swift new file mode 100644 index 0000000..fadfde8 --- /dev/null +++ b/Sources/BladeTCA/Classes/Presentation/Views/PaginatorView.swift @@ -0,0 +1,62 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import BladeTCA +import ComposableArchitecture +import SwiftUI + +// MARK: - PaginatorView + +public struct PaginatorView< + State: Equatable & Identifiable, + Action: Equatable, + PositionType: Equatable, + Request: Equatable, + Body: View, + RowContent: View +>: View { + // MARK: Types + + private typealias StoreType = ViewStoreOf> + + // MARK: Properties + + public let store: Store, PaginatorAction> + public let content: ([State], @escaping (State) -> AnyView) -> Body + public let rowContent: (State) -> RowContent + + // MARK: Initialization + + public init( + store: Store, PaginatorAction>, + @ViewBuilder content: @escaping ([State], @escaping (State) -> AnyView) -> Body, + @ViewBuilder rowContent: @escaping (State) -> RowContent + ) { + self.store = store + self.content = content + self.rowContent = rowContent + } + + // MARK: View + + public var body: some View { + WithViewStore(store, observe: { $0 }) { (viewStore: StoreType) in + content(viewStore.items.elements) { item in + rowContent(item) + .onAppear { viewStore.send(.itemAppeared(item.id)) } + .any + } + .modifier(LoadingViewModifier(isLoading: viewStore.isLoading && !viewStore.items.isEmpty)) + } + } +} + +// MARK: Extension + +private extension View { + var any: AnyView { + AnyView(self) + } +} diff --git a/Tests/BladePackage.xctestplan b/Tests/BladePackage.xctestplan new file mode 100644 index 0000000..3033db4 --- /dev/null +++ b/Tests/BladePackage.xctestplan @@ -0,0 +1,44 @@ +{ + "configurations" : [ + { + "id" : "9BC7C122-0678-48E3-A9A8-0D03B540050E", + "name" : "Test Scheme Action", + "options" : { + + } + } + ], + "defaultOptions" : { + "codeCoverage" : { + "targets" : [ + { + "containerPath" : "container:", + "identifier" : "Blade", + "name" : "Blade" + }, + { + "containerPath" : "container:", + "identifier" : "BladeTCA", + "name" : "BladeTCA" + } + ] + } + }, + "testTargets" : [ + { + "target" : { + "containerPath" : "container:", + "identifier" : "BladeTCATests", + "name" : "BladeTCATests" + } + }, + { + "target" : { + "containerPath" : "container:", + "identifier" : "BladeTests", + "name" : "BladeTests" + } + } + ], + "version" : 1 +} diff --git a/Tests/BladeTCATests/Helpers/IdentifiedArray+Items.swift b/Tests/BladeTCATests/Helpers/IdentifiedArray+Items.swift new file mode 100644 index 0000000..4fffc34 --- /dev/null +++ b/Tests/BladeTCATests/Helpers/IdentifiedArray+Items.swift @@ -0,0 +1,14 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import ComposableArchitecture +import Foundation + +extension IdentifiedArray where Element == TestItem, ID == UUID { + static func items(count: Int) -> IdentifiedArray { + let elements: [Element] = Array(0 ..< count).map { _ in Element() } + return IdentifiedArray(uniqueElements: elements) + } +} diff --git a/Tests/BladeTCATests/Models/TestItem.swift b/Tests/BladeTCATests/Models/TestItem.swift new file mode 100644 index 0000000..35dbef3 --- /dev/null +++ b/Tests/BladeTCATests/Models/TestItem.swift @@ -0,0 +1,28 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +// MARK: - TestItem + +struct TestItem: Equatable, Identifiable { + // MARK: Properties + + let id: UUID + + // MARK: Initialization + + init(id: UUID = UUID()) { + self.id = id + } +} + +// MARK: - UUID + Identifiable + +extension UUID: Identifiable { + public var id: Self { + self + } +} diff --git a/Tests/BladeTCATests/UnitTests/PaginatorIntegrationReducerTests.swift b/Tests/BladeTCATests/UnitTests/PaginatorIntegrationReducerTests.swift new file mode 100644 index 0000000..0fe9934 --- /dev/null +++ b/Tests/BladeTCATests/UnitTests/PaginatorIntegrationReducerTests.swift @@ -0,0 +1,108 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade +@testable import BladeTCA +import ComposableArchitecture +import XCTest + +// MARK: - PaginatorIntegrationReducerTests + +@MainActor +final class PaginatorIntegrationReducerTests: XCTestCase { + // MARK: Tests + + func test_thatPaginatorUpdatesData_whenRequestDidCompleteSuccessfully() async { + let items: IdentifiedArray = .items(count: .limit) + let pageResponse = Page(items: items.elements, hasMoreData: true) + + let store = TestStore( + initialState: PaginatorIntegrationReducer + .State(paginator: .init(items: items, position: .limit)) + ) { + PaginatorIntegrationReducer( + parent: TestReducer(), + childState: \TestReducer.State.paginator, + childAction: /TestReducer.Action.child, + loadPage: { _, _ in pageResponse }, + requestBuilderStrategy: OffsetRequestBuilderStrategy(limit: .limit), + positionBuilderStrategy: OffsetPositionBuilderStrategy() + ) + } + + // 1. Last item did appear + await store.send(.child(.itemAppeared(items[items.count - 1].id))) { + $0.paginator.isLoading = true + } + + // 2. Send a request + await store.receive(.child(.requestPage(OffsetPaginationRequest(limit: .limit, offset: .limit)))) + + // 3. Receive a response + await store.receive(.child(.response(.success(pageResponse)))) { + $0.paginator.isLoading = false + $0.paginator.hasMoreData = true + $0.paginator.position = .limit + } + } + + func test_thatPaginatorDoesNotUpdateData_whenRequestDidFailed() async { + let items: IdentifiedArray = .items(count: .limit) + + let store = TestStore( + initialState: PaginatorIntegrationReducer + .State(paginator: .init(items: items, position: .limit)) + ) { + PaginatorIntegrationReducer( + parent: TestReducer(), + childState: \TestReducer.State.paginator, + childAction: /TestReducer.Action.child, + loadPage: { _, _ in throw URLError(.unknown) }, + requestBuilderStrategy: OffsetRequestBuilderStrategy(limit: .limit), + positionBuilderStrategy: OffsetPositionBuilderStrategy() + ) + } + + await store.send(.child(.itemAppeared(items[items.count - 1].id))) { + $0.paginator.isLoading = true + } + + await store.receive(.child(.requestPage(OffsetPaginationRequest(limit: .limit, offset: .limit)))) + await store.receive(.child(.response(.failure(URLError(.unknown))))) { + $0.paginator.isLoading = false + $0.paginator.hasMoreData = true + } + } +} + +// MARK: PaginatorIntegrationReducerTests.TestReducer + +private extension PaginatorIntegrationReducerTests { + @Reducer + struct TestReducer { + struct State: Equatable { + var paginator: PaginatorState + } + + enum Action: Equatable { + case child(BladeTCA.PaginatorAction) + } + + var body: some ReducerOf { + Reduce { _, action in + switch action { + case .child: + return .none + } + } + } + } +} + +// MARK: - Constants + +private extension Int { + static let limit = 10 +} diff --git a/Tests/BladeTCATests/UnitTests/PaginatorReducerTests.swift b/Tests/BladeTCATests/UnitTests/PaginatorReducerTests.swift new file mode 100644 index 0000000..dd4a1bb --- /dev/null +++ b/Tests/BladeTCATests/UnitTests/PaginatorReducerTests.swift @@ -0,0 +1,105 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade +@testable import BladeTCA +import ComposableArchitecture +import XCTest + +// MARK: - PaginatorReducerTests + +@MainActor +final class PaginatorReducerTests: XCTestCase { + // MARK: Types + + private typealias PaginatorAction = BladeTCA.PaginatorAction + + // MARK: Tests + + func test_thatPaginatorOffsetRequestsNextPage_whenLastItemDidAppear() async { + let items: IdentifiedArray = .items(count: .limit) + + let store = TestStore( + initialState: PaginatorReducer.State( + items: items, position: .limit + ) + ) { + PaginatorReducer( + requestBuilder: OffsetRequestBuilderStrategy(limit: .limit), + positionBuilder: OffsetPositionBuilderStrategy() + ) + } + + await store.send(.itemAppeared(items[.limit - 1].id)) { + $0.isLoading = true + } + + await store.receive(.requestPage(OffsetPaginationRequest(limit: .limit, offset: .limit))) + } + + func test_thatPaginatorOffsetDoesNotRequestNextPage_whenLastItemDidNotAppear() async { + let items: IdentifiedArray = .items(count: .limit) + + let store = TestStore(initialState: PaginatorReducer.State( + items: items, + position: .zero + )) { + PaginatorReducer( + requestBuilder: OffsetRequestBuilderStrategy(limit: .limit), + positionBuilder: OffsetPositionBuilderStrategy() + ) + } + + await store.send(.itemAppeared(items[0].id)) + } + + func test_thatPaginatorCursorRequestsNextPage_whenLastItemDidAppear() async throws { + let items: IdentifiedArray = .items(count: .limit) + let id = try XCTUnwrap(items.last?.id) + + let store = TestStore( + initialState: PaginatorReducer>.State( + items: items, position: id + ) + ) { + PaginatorReducer>( + requestBuilder: CursorRequestBuilderStrategy(), + positionBuilder: CursorPositionBuilderStrategy() + ) + } + + await store.send(.itemAppeared(items[.limit - 1].id)) { + $0.isLoading = true + } + + await store.receive(.requestPage(CursorPaginationRequest(id: id))) + } + + func test_thatPaginatorCursorDoesNotRequestNextPage_whenLastItemDidNotAppear() async { + let items: IdentifiedArray = .items(count: .limit) + + let store = TestStore( + initialState: PaginatorReducer>.State( + items: items, + position: items[0].id + ) + ) { + PaginatorReducer>( + requestBuilder: CursorRequestBuilderStrategy(), + positionBuilder: CursorPositionBuilderStrategy() + ) + } + + await store.send(.itemAppeared(items[0].id)) + } +} + +// MARK: - Constants + +private extension Int { + static let limit = 10 +} + +/// https://engineering.monstar-lab.com/en/post/2023/10/26/The-Composable-architecture-and-TDD/ diff --git a/Tests/BladeTests/BladeTests.swift b/Tests/BladeTests/BladeTests.swift deleted file mode 100644 index e3f7faa..0000000 --- a/Tests/BladeTests/BladeTests.swift +++ /dev/null @@ -1,8 +0,0 @@ -// -// Blade -// Copyright © 2024 Space Code. All rights reserved. -// - -import XCTest - -final class BladeTests: XCTestCase {} diff --git a/Tests/BladeTests/Mocks/CursorPageLoaderMock.swift b/Tests/BladeTests/Mocks/CursorPageLoaderMock.swift new file mode 100644 index 0000000..a345a9e --- /dev/null +++ b/Tests/BladeTests/Mocks/CursorPageLoaderMock.swift @@ -0,0 +1,22 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade + +final class CursorPageLoaderMock: ICursorPageLoader { + var invokedLoadPage = false + var invokedLoadPageCount = 0 + var invokedLoadPageParameters: (request: CursorPaginationRequest, Void)? + var invokedLoadPageParametersList = [(request: CursorPaginationRequest, Void)]() + var stubbedLoadPage: Page! + + func loadPage(request: CursorPaginationRequest) async throws -> Page { + invokedLoadPage = true + invokedLoadPageCount += 1 + invokedLoadPageParameters = (request, ()) + invokedLoadPageParametersList.append((request, ())) + return stubbedLoadPage + } +} diff --git a/Tests/BladeTests/Mocks/OffsetPageLoaderMock.swift b/Tests/BladeTests/Mocks/OffsetPageLoaderMock.swift new file mode 100644 index 0000000..1d80496 --- /dev/null +++ b/Tests/BladeTests/Mocks/OffsetPageLoaderMock.swift @@ -0,0 +1,22 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade + +final class OffsetPageLoaderMock: IOffsetPageLoader { + var invokedLoadPage = false + var invokedLoadPageCount = 0 + var invokedLoadPageParameters: (request: OffsetPaginationRequest, Void)? + var invokedLoadPageParametersList = [(request: OffsetPaginationRequest, Void)]() + var stubbedLoadPage: Page! + + func loadPage(request: OffsetPaginationRequest) async throws -> Page { + invokedLoadPage = true + invokedLoadPageCount += 1 + invokedLoadPageParameters = (request, ()) + invokedLoadPageParametersList.append((request, ())) + return stubbedLoadPage + } +} diff --git a/Tests/BladeTests/Models/TestItem.swift b/Tests/BladeTests/Models/TestItem.swift new file mode 100644 index 0000000..0587bf7 --- /dev/null +++ b/Tests/BladeTests/Models/TestItem.swift @@ -0,0 +1,18 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Foundation + +struct TestItem: Equatable, Identifiable, Decodable { + // MARK: Properties + + let id: UUID + + // MARK: Initialization + + init(id: UUID = UUID()) { + self.id = id + } +} diff --git a/Tests/BladeTests/UnitTests/CursorPaginatorTests.swift b/Tests/BladeTests/UnitTests/CursorPaginatorTests.swift new file mode 100644 index 0000000..4b96306 --- /dev/null +++ b/Tests/BladeTests/UnitTests/CursorPaginatorTests.swift @@ -0,0 +1,101 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade +import XCTest + +// MARK: - CursorPaginatorTests + +final class CursorPaginatorTests: XCTestCase { + // MARK: Properties + + private var pageLoaderMock: CursorPageLoaderMock! + + // MARK: XCTestCase + + override func setUp() { + super.setUp() + pageLoaderMock = CursorPageLoaderMock() + } + + override func tearDown() { + pageLoaderMock = nil + super.tearDown() + } + + // MARK: Tests + + func test_thatPaginatorLoadsNextPage() async throws { + // given + let sut = prepareSut() + + pageLoaderMock.stubbedLoadPage = .fake() + + // when + _ = try await sut.loadNextPage() + _ = try await sut.loadNextPage() + + // then + var request = try XCTUnwrap(pageLoaderMock.invokedLoadPageParametersList[0].request) + XCTAssertEqual(request.id, .id) + + request = try XCTUnwrap(pageLoaderMock.invokedLoadPageParametersList[1].request) + XCTAssertNotEqual(request.id, .id) + } + + func test_thatPaginatorRefreshesState() async throws { + // given + let sut = prepareSut() + + pageLoaderMock.stubbedLoadPage = .fake() + + // when + _ = try await sut.refresh() + + // then + let request = try XCTUnwrap(pageLoaderMock.invokedLoadPageParameters?.request) + XCTAssertEqual(request.id, .id) + } + + func test_thatPagaginatorResetsState() async throws { + // given + let sut = prepareSut() + + pageLoaderMock.stubbedLoadPage = .fake() + + // when + _ = try await sut.loadNextPage() + await sut.reset() + _ = try await sut.refresh() + + // then + let request = try XCTUnwrap(pageLoaderMock.invokedLoadPageParameters?.request) + XCTAssertEqual(request.id, .id) + } + + // MARK: Private + + private func prepareSut(id: UUID = .id) -> Paginator { + Paginator( + configuration: .init(id: id), + cursorPageLoader: pageLoaderMock + ) + } +} + +// MARK: - Constants + +private extension UUID { + static let id = UUID() +} + +private extension Page where T == TestItem { + static func fake(numberOfItems: Int = 1, hasMoreData: Bool = true) -> Page { + Page( + items: Array(0 ..< numberOfItems).map { _ in TestItem(id: UUID()) }, + hasMoreData: hasMoreData + ) + } +} diff --git a/Tests/BladeTests/UnitTests/OffsetPaginatorTests.swift b/Tests/BladeTests/UnitTests/OffsetPaginatorTests.swift new file mode 100644 index 0000000..b4bb884 --- /dev/null +++ b/Tests/BladeTests/UnitTests/OffsetPaginatorTests.swift @@ -0,0 +1,108 @@ +// +// Blade +// Copyright © 2024 Space Code. All rights reserved. +// + +import Blade +import XCTest + +// MARK: - OffsetPaginatorTests + +final class OffsetPaginatorTests: XCTestCase { + // MARK: Properties + + private var pageLoaderMock: OffsetPageLoaderMock! + + // MARK: XCTestCase + + override func setUp() { + super.setUp() + pageLoaderMock = OffsetPageLoaderMock() + } + + override func tearDown() { + pageLoaderMock = nil + super.tearDown() + } + + // MARK: Tests + + func test_thatPaginatorLoadsNextPage() async throws { + // given + let sut = prepareSut() + + pageLoaderMock.stubbedLoadPage = .fake() + + // when + _ = try await sut.loadNextPage() + _ = try await sut.loadNextPage() + + // then + var request = try XCTUnwrap(pageLoaderMock.invokedLoadPageParametersList[0].request) + XCTAssertEqual(request.offset, .limit) + XCTAssertEqual(request.limit, .limit) + + request = try XCTUnwrap(pageLoaderMock.invokedLoadPageParametersList[1].request) + XCTAssertEqual(request.offset, 2 * .limit) + XCTAssertEqual(request.limit, .limit) + +// let count = await sut.elements.count +// XCTAssertEqual(count, 2 * .limit) + } + + func test_thatPaginatorRefreshesState() async throws { + // given + let sut = prepareSut() + + pageLoaderMock.stubbedLoadPage = .fake() + + // when + _ = try await sut.refresh() + + // then + let request = try XCTUnwrap(pageLoaderMock.invokedLoadPageParameters?.request) + XCTAssertEqual(request.offset, .zero) + XCTAssertEqual(request.limit, .limit) + } + + func test_thatPagaginatorResetsState() async throws { + // given + let sut = prepareSut() + + pageLoaderMock.stubbedLoadPage = .fake() + + // when + _ = try await sut.loadNextPage() + await sut.reset() + _ = try await sut.refresh() + + // then + let request = try XCTUnwrap(pageLoaderMock.invokedLoadPageParameters?.request) + XCTAssertEqual(request.offset, .zero) + XCTAssertEqual(request.limit, .limit) + } + + // MARK: Private + + private func prepareSut(firstPage: Int = .zero, limit: Int = .limit) -> Paginator { + Paginator( + configuration: .init(firstPage: firstPage, limit: limit), + offsetPageLoader: pageLoaderMock + ) + } +} + +// MARK: - Constants + +private extension Int { + static let limit = 10 +} + +private extension Page where T == TestItem { + static func fake(numberOfItems: Int = 1, hasMoreData: Bool = true) -> Page { + Page( + items: Array(0 ..< numberOfItems).map { _ in TestItem(id: UUID()) }, + hasMoreData: hasMoreData + ) + } +} diff --git a/hooks/pre-commit b/hooks/pre-commit old mode 100644 new mode 100755

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 YuCy? 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