Skip to content

Question: why case .isLoading is not called even we got .isLoading on didSet? #76

Open
@mitolog

Description

@mitolog

Hi, thanks for sharing and committing such a great project.

While using your architecture, I found that the the scope below is not always called:

case .isLoading:
return AnyView(loadingView)

even though you did setIsLoading at below:

countryDetails.wrappedValue.setIsLoading(cancelBag: cancelBag)

Is this behavior intended?

What I'm expecting is that the loading view will be shown if you enter the view every time. But, it's not.


I've also checked actual value with

        @Published var details: Loadable<Country.Details> {
            willSet{
                print("willSet (\(details) -> \(newValue))")
            }
            didSet {
                print("didSet (\(oldValue) -> \(details))")
            }
        }

then I got

willSet (notRequested -> isLoading(last: nil, cancelBag: CountriesSwiftUI.CancelBag))
didSet (notRequested -> isLoading(last: nil, cancelBag: CountriesSwiftUI.CancelBag))
willSet (isLoading(last: nil, cancelBag: CountriesSwiftUI.CancelBag) -> loaded(CountriesSwiftUI.Country.Details(...)
didSet (isLoading(last: nil, cancelBag: CountriesSwiftUI.CancelBag) -> loaded(CountriesSwiftUI.Country.Details(...)

so I expected CountryDetails.swift#L29 to be run, but it's not.

It may be very basic behavior or just an overlook of me but I appreciate anyone's help.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions