From b8f36b76003a3169d697c3a5b8cd7f114e337bac Mon Sep 17 00:00:00 2001 From: david-swift Date: Sun, 7 Jul 2024 16:30:36 +0200 Subject: [PATCH] Add modify function for views --- Sources/Model/User Interface/View/AnyView.swift | 9 +++++++++ Tests/SampleBackends/Backend1.swift | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Sources/Model/User Interface/View/AnyView.swift b/Sources/Model/User Interface/View/AnyView.swift index 063ef99..db0ec41 100644 --- a/Sources/Model/User Interface/View/AnyView.swift +++ b/Sources/Model/User Interface/View/AnyView.swift @@ -75,6 +75,15 @@ extension AnyView { || result as? Body != nil } + /// Apply a modification onto a view. + /// - Parameter action: The modifications. + /// - Returns: The modified view. + public func modify(action: (inout Self) -> Void) -> Self { + var newSelf = self + action(&newSelf) + return newSelf + } + } /// `Body` is an array of views. diff --git a/Tests/SampleBackends/Backend1.swift b/Tests/SampleBackends/Backend1.swift index 4606dac..f03e43c 100644 --- a/Tests/SampleBackends/Backend1.swift +++ b/Tests/SampleBackends/Backend1.swift @@ -90,7 +90,7 @@ public enum Backend1 { public func container(modifiers: [(any AnyView) -> any AnyView], type: Storage.Type) -> ViewStorage where Storage: AppStorage { let storage = ViewStorage(nil) - storage.renderableContent[.mainContent] = (content as [Renderable]).storages(type: MenuElement.self, fields: [:]) ?? [] + storage.renderableContent[.mainContent] = (content as [Renderable]).storages(type: MenuElement.self, fields: [:]) return storage }