From 3fe9077e69bfd1c736e9c8d0d8510108afbba4d9 Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Thu, 19 Jun 2025 13:44:00 +0100 Subject: [PATCH] rewrote haptic viewmodifiers again :cry made textfield expand and allowed the enter button fix crashes due to as! self --- Config.xcconfig | 4 +- NearFuture/Views/ContentView.swift | 2 +- NearFuture/Views/Events/AddEventView.swift | 2 +- NearFuture/Views/Settings/WhatsNewView.swift | 2 +- Shared/ViewModifiers.swift | 55 +++++++++++--------- 5 files changed, 36 insertions(+), 29 deletions(-) diff --git a/Config.xcconfig b/Config.xcconfig index 84fcb4b..12a069b 100644 --- a/Config.xcconfig +++ b/Config.xcconfig @@ -12,6 +12,6 @@ TEAM_ID = 8JGND254B7 BUNDLE_ID = com.neon443.NearFuture BUNDLE_ID_WIDGETS = com.neon443.NearFuture.widgets GROUP_ID = group.NearFuture -VERSION = 5 +VERSION = 5.0.1 NAME = Near Future -BUILD_NUMBER = 27 +BUILD_NUMBER = 52 diff --git a/NearFuture/Views/ContentView.swift b/NearFuture/Views/ContentView.swift index 51e82aa..a0c3e5a 100644 --- a/NearFuture/Views/ContentView.swift +++ b/NearFuture/Views/ContentView.swift @@ -54,7 +54,7 @@ struct ContentView: View { } .tag(Tab.settings) } - .hapticHeavy(trigger: tabSelection) + .modifier(hapticHeavy(trigger: tabSelection)) .sheet(isPresented: $settingsModel.settings.showWhatsNew) { WhatsNewView(settingsModel: settingsModel) } diff --git a/NearFuture/Views/Events/AddEventView.swift b/NearFuture/Views/Events/AddEventView.swift index daef751..808b215 100644 --- a/NearFuture/Views/Events/AddEventView.swift +++ b/NearFuture/Views/Events/AddEventView.swift @@ -75,7 +75,7 @@ struct AddEventView: View { .padding(.trailing, event.notes.isEmpty ? 0 : 30) .animation(.spring, value: event.notes) .focused($focusedField, equals: Field.Notes) - .submitLabel(.done) + .lineLimit(5) .onSubmit { focusedField = nil } diff --git a/NearFuture/Views/Settings/WhatsNewView.swift b/NearFuture/Views/Settings/WhatsNewView.swift index 02ede00..ca709d1 100644 --- a/NearFuture/Views/Settings/WhatsNewView.swift +++ b/NearFuture/Views/Settings/WhatsNewView.swift @@ -87,7 +87,7 @@ struct WhatsNewView: View { } .foregroundStyle(.orange) .modifier(glassButton()) - .hapticHeavy(trigger: bye) + .modifier(hapticHeavy(trigger: bye)) } .scrollContentBackground(.hidden) .presentationDragIndicator(.visible) diff --git a/Shared/ViewModifiers.swift b/Shared/ViewModifiers.swift index 721c488..c68a1ad 100644 --- a/Shared/ViewModifiers.swift +++ b/Shared/ViewModifiers.swift @@ -8,17 +8,37 @@ import Foundation import SwiftUI -extension View { - func hapticHeavy(trigger: any Equatable) -> some View { - #if canImport(UIKit) - if #available(iOS 17, *) { - self.modifier(sensoryFeedback(.impact(weight: .heavy, intensity: 1), trigger: trigger)) as! Self - } else { - self - } - #else - self - #endif +struct hapticHeavy: ViewModifier { + var trigger: T + + init(trigger: T) { + self.trigger = trigger + } + + func body(content: Content) -> some View { + content + .onChange(of: trigger) { _ in + #if canImport(UIKit) + UIImpactFeedbackGenerator(style: .rigid).impactOccurred() + #endif + } + } +} + +struct hapticSuccess: ViewModifier { + var trigger: T + + init(trigger: T) { + self.trigger = trigger + } + + func body(content: Content) -> some View { + content + .onChange(of: trigger) { _ in + #if canImport(UIKit) + UINotificationFeedbackGenerator().notificationOccurred(.success) + #endif + } } } @@ -34,19 +54,6 @@ struct glassButton: ViewModifier { } } -extension View { - func hapticSucess(trigger: any Equatable) -> some View { -#if canImport(UIKit) - if #available(iOS 17, *) { - self.modifier(sensoryFeedback(.success, trigger: trigger)) as! Self - } else { - self - } -#else - self -#endif - } -} struct navigationInlineLarge: ViewModifier { func body(content: Content) -> some View { #if os(macOS)