diff --git a/NearFuture/Views/Settings/ImportView.swift b/NearFuture/Views/Settings/ImportView.swift index b6cda9d..109fe59 100644 --- a/NearFuture/Views/Settings/ImportView.swift +++ b/NearFuture/Views/Settings/ImportView.swift @@ -15,7 +15,7 @@ struct ImportView: View { @State private var text: String = "Ready..." @State private var fgColor: Color = .yellow - @State private var showAlert: Bool = false + @State private var showAlert: Bool = true @State private var replaceCurrentEvents: Bool = false @@ -67,64 +67,18 @@ struct ImportView: View { } } .blur(radius: showAlert ? 2 : 0) - Group { - Rectangle() - .frame(maxWidth: .infinity, maxHeight: .infinity) - .foregroundStyle(replaceCurrentEvents ? .red.opacity(0.25) : .black.opacity(0.2)) - .animation(.default, value: replaceCurrentEvents) - .ignoresSafeArea() - ZStack { - Rectangle() - .clipShape(RoundedRectangle(cornerRadius: 25)) - VStack(alignment: .center) { - Text("Are you sure?") - .font(.largeTitle) - .bold() - .foregroundStyle(replaceCurrentEvents ? .red : .two) - .animation(.default, value: replaceCurrentEvents) - Text("This will replace your current events!") - .lineLimit(nil) - .multilineTextAlignment(.center) - .opacity(replaceCurrentEvents ? 1 : 0) - .animation(.default, value: replaceCurrentEvents) - .foregroundStyle(.two) - Toggle("Replace Events", isOn: $replaceCurrentEvents) - .foregroundStyle(.two) - Spacer() - HStack { - Button() { - withAnimation { - showAlert.toggle() - } - importEvents() - } label: { - Text("cancel") - .font(.title2) - .bold() - } - .buttonStyle(BorderedProminentButtonStyle()) - - Spacer() - - Button() { - withAnimation { - showAlert.toggle() - } - importEvents() - } label: { - Text("yes") - .font(.title2) - .bold() - } - .buttonStyle(BorderedProminentButtonStyle()) - } - .padding() - } - .padding() + .alert("Are you sure?", isPresented: $showAlert) { + Button(role: .destructive) { + importEvents() + } label: { + Text("Replace Events") + } + Button(role: .cancel) { + importEvents() + } label: { + Text("Add to Events") } - .frame(maxWidth: 250, maxHeight: 250) } - .opacity(showAlert ? 1 : 0) } } } diff --git a/Shared/CompleteEventButton.swift b/Shared/CompleteEventButton.swift index 985fc00..96524f8 100644 --- a/Shared/CompleteEventButton.swift +++ b/Shared/CompleteEventButton.swift @@ -34,17 +34,22 @@ struct CompleteEventButton: View { completeStartTime = .now progress = 0 - timer = Timer(timeInterval: 0.01, repeats: true) { timer in + timer = Timer(timeInterval: 0.02, repeats: true) { timer in guard completeInProgress else { return } guard timer.isValid else { return } let elapsed = Date().timeIntervalSince(completeStartTime) progress = min(1, elapsed) + #if canImport(UIKit) + UIImpactFeedbackGenerator(style: .light).impactOccurred() + #endif if progress >= 1 { withAnimation { completeInProgress = false } viewModel.completeEvent(&event) #if canImport(UIKit) - UINotificationFeedbackGenerator().notificationOccurred(.success) + DispatchQueue.main.asyncAfter(deadline: .now()+0.02) { + UINotificationFeedbackGenerator().notificationOccurred(.success) + } #endif timer.invalidate() progress = 0