Getting cycle detected when trying to disable view based on published variable.

I have view model that keeps state around like so:

Code Block Swift
class FeedModel: ObservableObject {
    enum CurrenState: Equatable {
        case none
        case loading
        case error
        case done
    }
   private (set) var feed: RssFeed?
   @Published private (set) var currentState: CurrenState = .none

I did this to keep the model's loading state out of the view logic.

The idea is to disable the dialog and overlay a spinner. Like so:

Code Block swift
ZStack {
VStack(alignment:.leading) {
Text("Enter a feed address")
TextField("", text: $text)
.frame(idealWidth: 300)
HStack {
Spacer()
Button("Cancel") {
isOpen = false
}
.keyboardShortcut(.cancelAction)
Button("Add") {
model.load(address: text)
}
.keyboardShortcut(.defaultAction)
}
}
.padding()
.disabled(model.currentState == .loading)
if model.currentState == .loading {
ProgressView()
.progressViewStyle(CircularProgressViewStyle())
}
      }

The disable causes a cycle detected message. I actually get several of them. I don't want to move this code out of the model the model is managing some loading and knows what state it is in. If there is more to the loading then I want to be able to have the model mange the state.

The other idea is for this model to be reusable

Getting cycle detected when trying to disable view based on published variable.
 
 
Q