From 9406c6dc77809bfe3b1d9443a3431711dc65a999 Mon Sep 17 00:00:00 2001 From: josscii Date: Tue, 24 Mar 2026 20:53:18 +0800 Subject: [PATCH] refactor: simplify environment key handling with @Entry properties --- .../Modifiers/Button+AsyncDisabled.swift | 26 ++----------------- .../ButtonKit/Style/Button+AsyncStyle.swift | 13 +--------- .../Style/Button+ThrowableStyle.swift | 13 +--------- .../Trigger/Trigger+Environment.swift | 10 ++----- 4 files changed, 6 insertions(+), 56 deletions(-) diff --git a/Sources/ButtonKit/Modifiers/Button+AsyncDisabled.swift b/Sources/ButtonKit/Modifiers/Button+AsyncDisabled.swift index 2a1aa61..086cdd7 100644 --- a/Sources/ButtonKit/Modifiers/Button+AsyncDisabled.swift +++ b/Sources/ButtonKit/Modifiers/Button+AsyncDisabled.swift @@ -43,30 +43,8 @@ extension View { // MARK: SwiftUI Environment -struct AllowsHitTestingWhenLoadingKey: EnvironmentKey { - static let defaultValue: Bool = false -} - -struct DisabledWhenLoadingKey: EnvironmentKey { - static let defaultValue: Bool = false -} - extension EnvironmentValues { - var allowsHitTestingWhenLoading: Bool { - get { - return self[AllowsHitTestingWhenLoadingKey.self] - } - set { - self[AllowsHitTestingWhenLoadingKey.self] = newValue - } - } + @Entry var allowsHitTestingWhenLoading: Bool = false - var disabledWhenLoading: Bool { - get { - return self[DisabledWhenLoadingKey.self] - } - set { - self[DisabledWhenLoadingKey.self] = newValue - } - } + @Entry var disabledWhenLoading: Bool = false } diff --git a/Sources/ButtonKit/Style/Button+AsyncStyle.swift b/Sources/ButtonKit/Style/Button+AsyncStyle.swift index 151b486..df0955a 100644 --- a/Sources/ButtonKit/Style/Button+AsyncStyle.swift +++ b/Sources/ButtonKit/Style/Button+AsyncStyle.swift @@ -85,19 +85,8 @@ extension AsyncButtonStyle where Self == OverlayAsyncButtonStyle { } } -struct AsyncButtonStyleKey: EnvironmentKey { - static let defaultValue: AnyAsyncButtonStyle = AnyAsyncButtonStyle(.auto) -} - extension EnvironmentValues { - var asyncButtonStyle: AnyAsyncButtonStyle { - get { - return self[AsyncButtonStyleKey.self] - } - set { - self[AsyncButtonStyleKey.self] = newValue - } - } + @Entry var asyncButtonStyle: AnyAsyncButtonStyle = .init(.auto) } // MARK: - Type erasure diff --git a/Sources/ButtonKit/Style/Button+ThrowableStyle.swift b/Sources/ButtonKit/Style/Button+ThrowableStyle.swift index fc87478..28fd4ff 100644 --- a/Sources/ButtonKit/Style/Button+ThrowableStyle.swift +++ b/Sources/ButtonKit/Style/Button+ThrowableStyle.swift @@ -85,19 +85,8 @@ extension ThrowableButtonStyle where Self == ShakeThrowableButtonStyle { } } -struct ThrowableButtonStyleKey: EnvironmentKey { - static let defaultValue: AnyThrowableButtonStyle = AnyThrowableButtonStyle(.auto) -} - extension EnvironmentValues { - var throwableButtonStyle: AnyThrowableButtonStyle { - get { - return self[ThrowableButtonStyleKey.self] - } - set { - self[ThrowableButtonStyleKey.self] = newValue - } - } + @Entry var throwableButtonStyle: AnyThrowableButtonStyle = .init(.auto) } // MARK: - Type erasure diff --git a/Sources/ButtonKit/Trigger/Trigger+Environment.swift b/Sources/ButtonKit/Trigger/Trigger+Environment.swift index 26d7ed0..9e4224e 100644 --- a/Sources/ButtonKit/Trigger/Trigger+Environment.swift +++ b/Sources/ButtonKit/Trigger/Trigger+Environment.swift @@ -57,12 +57,6 @@ public final class TriggerButton: Sendable { } } -private struct TriggerEnvironmentKey: EnvironmentKey { - static let defaultValue = TriggerButton() -} - -extension EnvironmentValues { - public var triggerButton: TriggerButton { - self[TriggerEnvironmentKey.self] - } +public extension EnvironmentValues { + @Entry var triggerButton: TriggerButton = .init() }