Skip to content

Commit 97d98be

Browse files
committed
Send haptic feedback
1 parent 6fc022c commit 97d98be

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

WooCommerce/Classes/View Modifiers/View+NoticesModifier.swift

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import SwiftUI
22
import UIKit
3-
import Hardware
43

54
/// View Modifier that shows a notice in front of a view.
65
/// NOTE: This currently does not support.
@@ -15,12 +14,16 @@ struct NoticeModifier: ViewModifier {
1514

1615
/// Cancelable task that clears a notice.
1716
///
18-
@State var clearNoticeTask = DispatchWorkItem(block: {})
17+
@State private var clearNoticeTask = DispatchWorkItem(block: {})
1918

2019
/// Time the notice will remain on screen.
2120
///
2221
private let onScreenNoticeTime = 5.0
2322

23+
/// Feedback generator.
24+
///
25+
private let feedbackGenerator = UINotificationFeedbackGenerator()
26+
2427
func body(content: Content) -> some View {
2528
content
2629
.overlay(buildNoticeStack())
@@ -44,9 +47,11 @@ struct NoticeModifier: ViewModifier {
4447
performClearNoticeTask()
4548
}
4649
.onChange(of: notice) { _ in
50+
provideHapticFeedbackIfNecessary(notice.feedbackType)
4751
dispatchClearNoticeTask()
4852
}
4953
.onAppear {
54+
provideHapticFeedbackIfNecessary(notice.feedbackType)
5055
dispatchClearNoticeTask()
5156
}
5257

@@ -72,6 +77,14 @@ struct NoticeModifier: ViewModifier {
7277
clearNoticeTask.perform()
7378
clearNoticeTask.cancel()
7479
}
80+
81+
/// Sends haptic feedback if required.
82+
///
83+
private func provideHapticFeedbackIfNecessary(_ feedbackType: UINotificationFeedbackGenerator.FeedbackType?) {
84+
if let feedbackType = feedbackType {
85+
feedbackGenerator.notificationOccurred(feedbackType)
86+
}
87+
}
7588
}
7689

7790
// MARK: Custom Views

0 commit comments

Comments
 (0)