From 6c001f02d223b803ebe4b720501e308fa3c4c990 Mon Sep 17 00:00:00 2001 From: jermaine-iris Date: Sun, 13 Jul 2025 19:08:13 +0100 Subject: [PATCH 1/3] Create HapticManager.swift created manager class --- Sources/Manager/HapticManager.swift | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Sources/Manager/HapticManager.swift diff --git a/Sources/Manager/HapticManager.swift b/Sources/Manager/HapticManager.swift new file mode 100644 index 0000000..f6f567a --- /dev/null +++ b/Sources/Manager/HapticManager.swift @@ -0,0 +1,8 @@ +// +// HapticManager.swift +// Sunday +// +// Created by Daniel Jermaine on 13/07/2025. +// + +import Foundation From 1af95037f080bcd2aa3d5c6d67ab388610af357b Mon Sep 17 00:00:00 2001 From: jermaine-iris Date: Sun, 13 Jul 2025 19:09:18 +0100 Subject: [PATCH 2/3] Update HapticManager.swift added vibration selection method --- Sources/Manager/HapticManager.swift | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Sources/Manager/HapticManager.swift b/Sources/Manager/HapticManager.swift index f6f567a..b4be80f 100644 --- a/Sources/Manager/HapticManager.swift +++ b/Sources/Manager/HapticManager.swift @@ -6,3 +6,22 @@ // import Foundation + +import UIKit + +final class HapticManager { + static let shared = HapticManager() + + + private init() {} + + public func vibrateForSelection() { + DispatchQueue.main.async { + let generator = UISelectionFeedbackGenerator() + generator.prepare() + generator.selectionChanged() + } + } + + +} From 34f1262606c2840017fe5f0cbd9f5b6a4fabbfbf Mon Sep 17 00:00:00 2001 From: jermaine-iris Date: Sun, 13 Jul 2025 19:11:53 +0100 Subject: [PATCH 3/3] haptic effects methods added vibration method to save the vitaminD method to give the user a better experience --- Sources/Manager/HapticManager.swift | 10 +++++++++- Sources/Services/HealthManager.swift | 6 ++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Sources/Manager/HapticManager.swift b/Sources/Manager/HapticManager.swift index b4be80f..fbc1fc9 100644 --- a/Sources/Manager/HapticManager.swift +++ b/Sources/Manager/HapticManager.swift @@ -22,6 +22,14 @@ final class HapticManager { generator.selectionChanged() } } - + + public func vibrate(for type:UINotificationFeedbackGenerator.FeedbackType) { + DispatchQueue.main.async { + let generator = UINotificationFeedbackGenerator() + generator.prepare() + generator.notificationOccurred(type) + } + } + } diff --git a/Sources/Services/HealthManager.swift b/Sources/Services/HealthManager.swift index 85578a8..07b09a7 100644 --- a/Sources/Services/HealthManager.swift +++ b/Sources/Services/HealthManager.swift @@ -37,11 +37,13 @@ class HealthManager: ObservableObject { } func saveVitaminD(amount: Double, date: Date = Date()) { + guard isAuthorized else { requestAuthorization() + HapticManager.shared.vibrate(for: .error) return } - + HapticManager.shared.vibrate(for: .success) // Convert IU to micrograms (1 IU = 0.025 mcg) let micrograms = amount * 0.025 let quantity = HKQuantity(unit: .gramUnit(with: .micro), doubleValue: micrograms) @@ -211,4 +213,4 @@ class HealthManager: ObservableObject { healthStore.execute(query) } -} \ No newline at end of file +}