Модификатор onReceive при просмотре срабатывает несколько раз
У меня есть настраиваемый модификатор просмотра, который запускает процесс входа в систему из любого места в приложении.
private struct Login: ViewModifier {
@EnvironmentObject var auth: Auth
@State var isLoginPresented: Bool = false
@Binding var isActivated: Bool
func body(content: Content) -> some View {
content
.onChange(of: isActivated) {
guard $0 else { return }
defer { isActive.toggle() }
if auth.canAutologin { auth.tryAutologin() }
else { isLoginPresented.toggle() }
}
.onReceive(auth.errorPublisher) {
if $0 == .cannotAutologin {
isLoginPresented.toggle()
}
}
.fullScreenCover(isPresented: $isLoginPresented) {
LoginView(isPresented: $isLoginPresented)
.environmentObject(auth)
}
}
}
Проблема в том, что