-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Edit 04-Navigation-Lists-NavigateAndLoad
file in SwiftUI CaseStudies
#3327
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR! This case study has definitely fallen behind the other examples and should probably be overhauled from scratch, but I think it'd be good to get these fixes merged.
The one change I think we should revert, though, is the change of Identified
domain. Can you address that and the other comment below? Then we'll be happy to merge!
var selectedRowID: UUID? | ||
var selection: Counter.State? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While this makes the EmptyReducer
stuff less awkward, it unfortunately makes the domain modeled less precisely. It's not ideal, but let's return to using Identified
for now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the code review. As you suggested, I proceeded with the refactor using Identified
. However, I encountered an issue. When trying to apply the comment(use sending
method) to the selection
in NavigationLink
, refactoring with Identified
resulted in an inability to use the sending
method.
NavigationLink(
// ....
selection: $store.selection?.id.sending(\.setNavigation) // Compile Error
)
As a workaround, I had to implement the selection using a get
and set
approach.
If you have any suggestions for a better solution, I'd appreciate your feedback. Thank you
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Additionally, the original code state.selection?.value = Counter.State(count: state.rows[id: id]?.count ?? 0)
was causing an Overlapping accesses error, so I assigned the value to a separate variable to resolve this.
case .setNavigationSelectionDelayCompleted:
guard let id = state.selection?.id else { return .none }
// ErrorMessage: Overlapping accesses to 'state', but modification requires exclusive access; consider copying to a local variable
state.selection?.value = Counter.State(count: state.rows[id: id]?.count ?? 0)
return .none
Examples/CaseStudies/SwiftUICaseStudies/04-Navigation-Lists-NavigateAndLoad.swift
Outdated
Show resolved
Hide resolved
…vigateAndLoad.swift Co-authored-by: Stephen Celis <stephen.celis@gmail.com>
25ed8c0
to
4a1c73d
Compare
4a1c73d
to
5c8f977
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At the end of the day I think this is an improvement to case study that we're not super happy with at the moment, so I think we're good to merge this as a first step to improve things. Thanks!
We'll maybe rethink this case study in the future.
…ure to from: "1.15.0" (#1230) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [pointfreeco/swift-composable-architecture](https://redirect.github.com/pointfreeco/swift-composable-architecture) | minor | `from: "1.13.1"` -> `from: "1.15.0"` | --- ### Release Notes <details> <summary>pointfreeco/swift-composable-architecture (pointfreeco/swift-composable-architecture)</summary> ### [`v1.15.0`](https://redirect.github.com/pointfreeco/swift-composable-architecture/releases/tag/1.15.0) [Compare Source](https://redirect.github.com/pointfreeco/swift-composable-architecture/compare/1.14.0...1.15.0) #### What's Changed - Added: Complete Swift 6 Language Mode support ([https://github.com/pointfreeco/swift-composable-architecture/pull/3282](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3282), [https://github.com/pointfreeco/swift-composable-architecture/pull/3318](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3318); [https://github.com/pointfreeco/swift-composable-architecture/pull/3317](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3317); [https://github.com/pointfreeco/swift-composable-architecture/pull/3321](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3321); [https://github.com/pointfreeco/swift-composable-architecture/pull/3325](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3325); [https://github.com/pointfreeco/swift-composable-architecture/pull/3326](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3326); [https://github.com/pointfreeco/swift-composable-architecture/pull/3320](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3320); [https://github.com/pointfreeco/swift-composable-architecture/pull/3333](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3333); [https://github.com/pointfreeco/swift-composable-architecture/pull/3329](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3329)). - Fixed: Warn when bindable store is sent a binding action without having integrated with `BindingReducer` ([https://github.com/pointfreeco/swift-composable-architecture/pull/3347](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3347)). - Fixed: Remove and lock subscriptions from the Combine subject powering Store and Shared subscriptions (thanks [@​iampatbrown](https://redirect.github.com/iampatbrown), [https://github.com/pointfreeco/swift-composable-architecture/pull/2699](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/2699)). This should improve memory and avoid potential issues related to concurrent access to the publisher. - Fixed: Avoid potential deadlock in `Shared` by dispatching to the main actor ([https://github.com/pointfreeco/swift-composable-architecture/pull/3356](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3356)). - Fixed: Swift Testing support for concurrent tests by bucketing cancellation identifiers to each `@Test` ([https://github.com/pointfreeco/swift-composable-architecture/pull/3374](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3374)). - Infrastructure: Remove disfavored `NSObject.observe` overload in favor of SwiftNavigation's `observe` ([https://github.com/pointfreeco/swift-composable-architecture/pull/3316](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3316)) - Infrastructure: Fix typo and deprecated content in `Performance.md` (thanks [@​MaraMincho](https://redirect.github.com/MaraMincho), [https://github.com/pointfreeco/swift-composable-architecture/pull/3323](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3323)); 'WhatIsNavigation.md' fixes (thanks [@​stealmh](https://redirect.github.com/stealmh), [https://github.com/pointfreeco/swift-composable-architecture/pull/3345](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3345)); fix typos (thanks [@​stealmh](https://redirect.github.com/stealmh), [https://github.com/pointfreeco/swift-composable-architecture/pull/3349](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3349); thanks [@​O-O-wl](https://redirect.github.com/O-O-wl), [https://github.com/pointfreeco/swift-composable-architecture/pull/3354](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3354)); replace deprecated `viewStore` with `store` in documentation (thanks [@​qwerty3345](https://redirect.github.com/qwerty3345), [https://github.com/pointfreeco/swift-composable-architecture/pull/3341](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3341)). - Infrastructure: Added failing test to document behavior with observation/identified array ([https://github.com/pointfreeco/swift-composable-architecture/pull/3346](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3346)). - Infrastructure: Update `05-HigherOrderReducers` CaseStudies (thanks [@​qwerty3345](https://redirect.github.com/qwerty3345), [https://github.com/pointfreeco/swift-composable-architecture/pull/3342](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3342)); update `04-Navigation-Lists-NavigateAndLoad` CaseStudies (thanks [@​MaraMincho](https://redirect.github.com/MaraMincho), [https://github.com/pointfreeco/swift-composable-architecture/pull/3327](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3327)). - Infrastructure: Issue template updates ([https://github.com/pointfreeco/swift-composable-architecture/pull/3363](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3363)). - Infrastructure: Apply `any` to all existential protocol uses (thanks [@​qwerty3345](https://redirect.github.com/qwerty3345), [https://github.com/pointfreeco/swift-composable-architecture/pull/3370](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3370)). - Infrastructure: Improve CI job performance ([https://github.com/pointfreeco/swift-composable-architecture/pull/3357](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3357)). - Infrastructure: Remove outdated `#if` branching in the library ([https://github.com/pointfreeco/swift-composable-architecture/pull/3376](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3376)). #### New Contributors - [@​stealmh](https://redirect.github.com/stealmh) made their first contribution in [https://github.com/pointfreeco/swift-composable-architecture/pull/3345](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3345) - [@​O-O-wl](https://redirect.github.com/O-O-wl) made their first contribution in [https://github.com/pointfreeco/swift-composable-architecture/pull/3354](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3354) **Full Changelog**: pointfreeco/swift-composable-architecture@1.14.0...1.15.0 ### [`v1.14.0`](https://redirect.github.com/pointfreeco/swift-composable-architecture/releases/tag/1.14.0) [Compare Source](https://redirect.github.com/pointfreeco/swift-composable-architecture/compare/1.13.1...1.14.0) #### What's Changed - Added: Isolate `Store`, `TestStore`, and various view helpers to the `@MainActor` ([https://github.com/pointfreeco/swift-composable-architecture/pull/3277](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3277), [https://github.com/pointfreeco/swift-composable-architecture/pull/3283](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3283)). This has been done with `@preconcurrency` for backwards compatibility. If you are using strict concurrency it may require you add `@MainActor` annotations to any SwiftUI view helpers that access the store. - Fixed: Don't eagerly dismiss an alert presented by another ([https://github.com/pointfreeco/swift-composable-architecture/pull/3309](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3309)). - Infrastructure: Bump Swift Navigation version ([https://github.com/pointfreeco/swift-composable-architecture/pull/3310](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3310)). - Infrastructure: Documentation fixes (thanks [@​woohyunjin06](https://redirect.github.com/woohyunjin06), [https://github.com/pointfreeco/swift-composable-architecture/pull/3296](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3296); [@​MaraMincho](https://redirect.github.com/MaraMincho), [https://github.com/pointfreeco/swift-composable-architecture/pull/3299](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3299)). #### New Contributors - [@​woohyunjin06](https://redirect.github.com/woohyunjin06) made their first contribution in [https://github.com/pointfreeco/swift-composable-architecture/pull/3296](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3296) - [@​MaraMincho](https://redirect.github.com/MaraMincho) made their first contribution in [https://github.com/pointfreeco/swift-composable-architecture/pull/3299](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3299) - [@​qwerty3345](https://redirect.github.com/qwerty3345) made their first contribution in [https://github.com/pointfreeco/swift-composable-architecture/pull/3305](https://redirect.github.com/pointfreeco/swift-composable-architecture/pull/3305) **Full Changelog**: pointfreeco/swift-composable-architecture@1.13.1...1.14.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC44MC4wIiwidXBkYXRlZEluVmVyIjoiMzguODAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: cgrindel-self-hosted-renovate[bot] <139595543+cgrindel-self-hosted-renovate[bot]@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
I found the
if let
code in the04-Navigation-Lists-NavigateAndLoad
file and made significant modifications to improve it. However, I'm concerned that these changes might unintentionally alter the original intent.I would appreciate your feedback. Thank you!"