Reduces reliance on presentationMode to dismiss

Bindings are passed instead and this fixes issues with Add Web (etc) only appearing once.
This commit is contained in:
Stuart Breckenridge
2020-08-14 00:04:39 +08:00
parent 7aab8c87fb
commit 0a51508abf
6 changed files with 62 additions and 51 deletions

View File

@@ -13,8 +13,8 @@ import RSCore
struct AddWebFeedView: View {
@Environment(\.presentationMode) private var presentationMode
@StateObject private var viewModel = AddWebFeedModel()
@Binding var isPresented: Bool
var body: some View {
#if os(iOS)
@@ -24,7 +24,7 @@ struct AddWebFeedView: View {
}
.onReceive(viewModel.$shouldDismiss, perform: { dismiss in
if dismiss == true {
presentationMode.wrappedValue.dismiss()
isPresented = false
}
})
#else
@@ -37,9 +37,10 @@ struct AddWebFeedView: View {
dismissButton: Alert.Button.cancel({
viewModel.addFeedError = AddWebFeedError.none
}))
}.onReceive(viewModel.$shouldDismiss, perform: { dismiss in
}
.onChange(of: viewModel.shouldDismiss, perform: { dismiss in
if dismiss == true {
presentationMode.wrappedValue.dismiss()
isPresented = false
}
})
#endif
@@ -92,7 +93,7 @@ struct AddWebFeedView: View {
.navigationBarTitleDisplayMode(.inline)
.navigationBarItems(leading:
Button("Cancel", action: {
presentationMode.wrappedValue.dismiss()
isPresented = false
})
.help("Cancel Add Feed")
, trailing:
@@ -188,7 +189,7 @@ struct AddWebFeedView: View {
}
Spacer()
Button("Cancel", action: {
presentationMode.wrappedValue.dismiss()
isPresented = false
})
.help("Cancel Add Feed")
@@ -205,8 +206,4 @@ struct AddWebFeedView: View {
}
struct AddFeedView_Previews: PreviewProvider {
static var previews: some View {
AddWebFeedView()
}
}