diff --git a/Modules/MicX/Mic/src/Mic.K.swift b/Modules/MicX/Mic/src/Mic.K.swift index e3f8441..e3893eb 100644 --- a/Modules/MicX/Mic/src/Mic.K.swift +++ b/Modules/MicX/Mic/src/Mic.K.swift @@ -3,5 +3,6 @@ public extension Mic { public static let activityDate = "Mic.activityDate" public static let isActive = "Mic.isActive" public static let MI = "Mic.Model.Item" + public static let timeout = "Mic.timeout" } } diff --git a/Modules/MicX/MicItem/src/MicItem.Shoulds.swift b/Modules/MicX/MicItem/src/MicItem.Shoulds.swift index a8552cf..69e8cd3 100644 --- a/Modules/MicX/MicItem/src/MicItem.Shoulds.swift +++ b/Modules/MicX/MicItem/src/MicItem.Shoulds.swift @@ -10,4 +10,17 @@ public extension MicItem { return nil } + + static func shouldResetTimeout(_ c: MicItemContext) -> (delay: Int, value: Bool)? { + if + c.activityDate.isRecent, + let end = c.activityDate.value + { + let now = Date() + let timeout = now < end + return (timeout, true) + } + + return nil + } } diff --git a/Modules/MicX/MicItem/src/MicItem.V.swift b/Modules/MicX/MicItem/src/MicItem.V.swift index 780eda9..a580518 100644 --- a/Modules/MicX/MicItem/src/MicItem.V.swift +++ b/Modules/MicX/MicItem/src/MicItem.V.swift @@ -5,11 +5,12 @@ extension MicItem { public struct V: View { var id: String? @StateObject var isActive = BusUI.Value(K.isActive, false) - let processors: [Any] + let proc: [Any] public init(_ id: String? = nil) { self.id = id - self.processors = [ + self.proc = [ + Bus.DelayV(shouldResetTimeout, K.MI, K.timeout) Bus.Sync(shouldResetActivity, K.MI, K.isActive), MicItem.Controller() ]