@@ -3,5 +3,6 @@ public extension Mic { | |||||
public static let activityDate = "Mic.activityDate" | public static let activityDate = "Mic.activityDate" | ||||
public static let isActive = "Mic.isActive" | public static let isActive = "Mic.isActive" | ||||
public static let MI = "Mic.Model.Item" | public static let MI = "Mic.Model.Item" | ||||
public static let timeout = "Mic.timeout" | |||||
} | } | ||||
} | } |
@@ -10,4 +10,17 @@ public extension MicItem { | |||||
return nil | 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 | |||||
} | |||||
} | } |
@@ -5,11 +5,12 @@ extension MicItem { | |||||
public struct V: View { | public struct V: View { | ||||
var id: String? | var id: String? | ||||
@StateObject var isActive = BusUI.Value(K.isActive, false) | @StateObject var isActive = BusUI.Value(K.isActive, false) | ||||
let processors: [Any] | |||||
let proc: [Any] | |||||
public init(_ id: String? = nil) { | public init(_ id: String? = nil) { | ||||
self.id = id | self.id = id | ||||
self.processors = [ | |||||
self.proc = [ | |||||
Bus.DelayV(shouldResetTimeout, K.MI, K.timeout) | |||||
Bus.Sync(shouldResetActivity, K.MI, K.isActive), | Bus.Sync(shouldResetActivity, K.MI, K.isActive), | ||||
MicItem.Controller() | MicItem.Controller() | ||||
] | ] | ||||