Skip to content
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

Merged
merged 5 commits into from
Sep 5, 2024

Conversation

MaraMincho
Copy link
Contributor

I found the if let code in the 04-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!"

Copy link
Member

@stephencelis stephencelis left a 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!

Comment on lines 20 to 21
var selectedRowID: UUID?
var selection: Counter.State?
Copy link
Member

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.

Copy link
Contributor Author

@MaraMincho MaraMincho Aug 31, 2024

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

Copy link
Contributor Author

@MaraMincho MaraMincho Aug 31, 2024

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

…vigateAndLoad.swift

Co-authored-by: Stephen Celis <stephen.celis@gmail.com>
@MaraMincho MaraMincho force-pushed the editCaseStudies branch 2 times, most recently from 25ed8c0 to 4a1c73d Compare August 31, 2024 04:04
Copy link
Member

@stephencelis stephencelis left a 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.

@stephencelis stephencelis merged commit 80aac23 into pointfreeco:main Sep 5, 2024
6 checks passed
mergify bot referenced this pull request in cgrindel/rules_swift_package_manager Sep 16, 2024
…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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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

- [@&#8203;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)
- [@&#8203;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
[@&#8203;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);
[@&#8203;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

- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants