diff --git a/Diffusion-macOS/ControlsView.swift b/Diffusion-macOS/ControlsView.swift index f56b1fc..9481fda 100644 --- a/Diffusion-macOS/ControlsView.swift +++ b/Diffusion-macOS/ControlsView.swift @@ -89,6 +89,8 @@ struct ControlsView: View { pipelineState = .uncompressing case .readyOnDisk: pipelineState = .loading + case .failed(let error): + pipelineState = .failed(error) default: break } diff --git a/Diffusion-macOS/StatusView.swift b/Diffusion-macOS/StatusView.swift index 7262345..122874f 100644 --- a/Diffusion-macOS/StatusView.swift +++ b/Diffusion-macOS/StatusView.swift @@ -12,6 +12,8 @@ struct StatusView: View { @EnvironmentObject var generation: GenerationContext var pipelineState: Binding + @State private var showErrorPopover = false + func submit() { if case .running = generation.state { return } Task { @@ -77,8 +79,31 @@ struct StatusView: View { AnyView(generationStatusView()) } - case .failed: - Text("Pipeline loading error") + case .failed(let error): + HStack { + Text("Pipeline loading error") + Spacer() + Button { + showErrorPopover.toggle() + } label: { + Image(systemName: "info.circle") + }.buttonStyle(.plain) + .popover(isPresented: $showErrorPopover) { + VStack { + Text(verbatim: "\(error)") + .lineLimit(nil) + .padding(.all, 5) + Button { + showErrorPopover.toggle() + } label: { + Text("Dismiss").frame(maxWidth: 200) + } + .padding(.bottom) + } + .frame(minWidth: 400, idealWidth: 400, maxWidth: 400) + .fixedSize() + } + } } } }