From f41046015c6e1b7f85435a3f772598c4bae7bc55 Mon Sep 17 00:00:00 2001 From: Richard Piazza Date: Sat, 8 Mar 2025 10:16:54 -0600 Subject: [PATCH 1/3] Public Initializers on ActivityAlertView --- .../SwiftUI/ActivityAlertView.swift | 31 +++++++++++++++---- .../Foundation/DateTests.swift | 18 +++-------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/Sources/CodeQuickKit/SwiftUI/ActivityAlertView.swift b/Sources/CodeQuickKit/SwiftUI/ActivityAlertView.swift index 61d271e..1d70651 100644 --- a/Sources/CodeQuickKit/SwiftUI/ActivityAlertView.swift +++ b/Sources/CodeQuickKit/SwiftUI/ActivityAlertView.swift @@ -8,13 +8,27 @@ import SwiftUI public struct ActivityAlertView: UIViewControllerRepresentable { /// A binding to a Boolean value that determines whether to present the view. - @Binding public var isPresented: Bool + public let isPresented: Binding /// The header text of the presented alert - public let title: String? + public let title: Binding? /// The body text of the presented alert - public let message: String? + public let message: Binding? /// Inset values that should be used in place of defaults. - public var padding: EdgeInsets? = nil + public let padding: EdgeInsets? + + public init(isPresented: Binding, title: String?, message: String?, padding: EdgeInsets? = nil) { + self.isPresented = isPresented + self.title = (title != nil) ? .constant(title!) : nil + self.message = (message != nil) ? .constant(message!) : nil + self.padding = padding + } + + public init(isPresented: Binding, title: Binding? = nil, message: Binding? = nil, padding: EdgeInsets? = nil) { + self.isPresented = isPresented + self.title = title + self.message = message + self.padding = padding + } public func makeCoordinator() -> UIAlertController { var insets: UIEdgeInsets? @@ -22,7 +36,7 @@ public struct ActivityAlertView: UIViewControllerRepresentable { insets = UIEdgeInsets(top: padding.top, left: padding.leading, bottom: padding.bottom, right: padding.trailing) } - return UIAlertController.makeActivityAlert(title: title, message: message, padding: insets) + return UIAlertController.makeActivityAlert(title: title?.wrappedValue, message: message?.wrappedValue, padding: insets) } public func makeUIViewController(context: Context) -> some UIViewController { @@ -31,9 +45,14 @@ public struct ActivityAlertView: UIViewControllerRepresentable { public func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) { let alertController = context.coordinator - switch (isPresented, uiViewController.presentedViewController) { + switch (isPresented.wrappedValue, uiViewController.presentedViewController) { case (true, nil): + alertController.title = title?.wrappedValue + alertController.message = message?.wrappedValue uiViewController.present(alertController, animated: true) + case (true, _): + alertController.title = title?.wrappedValue + alertController.message = message?.wrappedValue case (false, alertController): alertController.dismiss(animated: true) default: diff --git a/Tests/CodeQuickKitTests/Foundation/DateTests.swift b/Tests/CodeQuickKitTests/Foundation/DateTests.swift index 0d6135e..9b864cb 100644 --- a/Tests/CodeQuickKitTests/Foundation/DateTests.swift +++ b/Tests/CodeQuickKitTests/Foundation/DateTests.swift @@ -44,19 +44,14 @@ class DateTests: XCTestCase { XCTAssertTrue(now.isSame(today)) } - func testLastWeek() { + func testLastWeek() throws { let now = Date() let lastWeek = Date.lastWeek XCTAssertTrue(lastWeek.isBefore(now)) - let offset = TimeZone.current.daylightSavingTimeOffset(for: lastWeek) - let minutesToToday = 10080 + Int(offset / 60) - - guard let today = lastWeek.dateByAdding(minutes: minutesToToday) else { - XCTFail() - return - } + let minutesToToday = 60 * 24 * 7 + let today = try XCTUnwrap(lastWeek.dateByAdding(minutes: minutesToToday)) XCTAssertTrue(today.isAfter(lastWeek)) XCTAssertTrue(now.isSame(today)) @@ -92,16 +87,13 @@ class DateTests: XCTestCase { XCTAssertTrue(now.isSame(today)) } - func testNextWeek() { + func testNextWeek() throws { let now = Date() let nextWeek = Date.nextWeek XCTAssertTrue(nextWeek.isAfter(now)) - guard let today = nextWeek.dateByAdding(minutes: -10080) else { - XCTFail() - return - } + let today = try XCTUnwrap(nextWeek.dateByAdding(days: -7)) XCTAssertTrue(today.isBefore(nextWeek)) XCTAssertTrue(now.isSame(today)) From f2c059b5069753bc1a3cb2a670128b4b00898e4b Mon Sep 17 00:00:00 2001 From: Richard Piazza Date: Sat, 8 Mar 2025 11:14:11 -0600 Subject: [PATCH 2/3] Added SPI documentation; Updated Actions --- .github/workflows/swift.yml | 8 ++++---- .spi.yml | 4 ++++ README.md | 32 ++------------------------------ 3 files changed, 10 insertions(+), 34 deletions(-) create mode 100644 .spi.yml diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml index 32418bf..0468101 100644 --- a/.github/workflows/swift.yml +++ b/.github/workflows/swift.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout Source - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Build (macOS) run: swift build -v @@ -35,12 +35,12 @@ jobs: build/reports/coverage.lcov - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action/composite@v1 + uses: EnricoMi/publish-unit-test-result-action/macos@v2 with: files: build/reports/junit.xml - name: Publish Code Coverage - uses: vebr/jest-lcov-reporter@v0.2.1 + uses: lifeart/jest-lcov-reporter@v0.4.0 with: github-token: ${{ secrets.GITHUB_TOKEN }} lcov-file: build/reports/coverage.lcov @@ -51,7 +51,7 @@ jobs: steps: - name: Checkout Source - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Build (Ubuntu) run: swift build -v diff --git a/.spi.yml b/.spi.yml new file mode 100644 index 0000000..5e8316c --- /dev/null +++ b/.spi.yml @@ -0,0 +1,4 @@ +version: 1 +builder: + configs: + - documentation_targets: [CodeQuickKit] diff --git a/README.md b/README.md index f45fc32..bc9c86b 100644 --- a/README.md +++ b/README.md @@ -2,36 +2,8 @@ A Swift library for simplifying some everyday tasks. -

- - - - Twitter: @richardpiazza - -

- -## 💻 Installation - -This software is distributed using [Swift Package Manager](https://swift.org/package-manager). -You can add it using Xcode or by listing it as a dependency in your `Package.swift` manifest: - -```swift -let package = Package( - ... - dependencies: [ - .package(url: "https://github.com/richardpiazza/CodeQuickKit", .upToNextMajor(from: "7.0.0") - ], - ... - targets: [ - .target( - name: "MyPackage", - dependencies: [ - "CodeQuickKit" - ] - ) - ] -) -``` +[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Frichardpiazza%2FCodeQuickKit%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/richardpiazza/CodeQuickKit) +[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Frichardpiazza%2FCodeQuickKit%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/richardpiazza/CodeQuickKit) ## 📌 Features From 6c90b6e9c6ec6d08fe43acd51b634fc66a5b60bb Mon Sep 17 00:00:00 2001 From: Richard Piazza Date: Sat, 8 Mar 2025 14:28:51 -0600 Subject: [PATCH 3/3] Updated upload-artifact action --- .github/workflows/swift.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml index 0468101..5c92706 100644 --- a/.github/workflows/swift.yml +++ b/.github/workflows/swift.yml @@ -27,7 +27,7 @@ jobs: run: xcrun llvm-cov export -format="lcov" .build/debug/${{ env.PACKAGE_NAME }}PackageTests.xctest/Contents/MacOS/${{ env.PACKAGE_NAME }}PackageTests -instr-profile .build/debug/codecov/default.profdata > build/reports/coverage.lcov - name: Upload Artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: test-results path: |