This commit is contained in:
Михаил Капелько
2024-01-17 18:12:00 +03:00
parent d3a78ee599
commit 1a731e2fad
3 changed files with 28 additions and 2 deletions

View File

@@ -0,0 +1,13 @@
public extension MicItem {
static func shouldResetActivity(_ c: MicItemContext) -> Bool? {
if
c.activityDate.isRecent,
let end = c.activityDate.value,
let now = Date()
{
return now < end
}
return nil
}
}

View File

@@ -5,13 +5,13 @@ 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 ctrl = MicItem.Controller()
let processors: [Any] let processors: [Any]
public init(_ id: String? = nil) { public init(_ id: String? = nil) {
self.id = id self.id = id
self.processors = [ self.processors = [
//Bus.Sync(shouldResetActivity, K.MI, K.isActive), Bus.Sync(shouldResetActivity, K.MI, K.isActive),
MicItem.Controller()
] ]
} }

View File

@@ -9,7 +9,9 @@ extension MicItem {
public struct Model: MicItemContext { public struct Model: MicItemContext {
public var activityDate: MPAK.Recent<Date?> = .init(nil) public var activityDate: MPAK.Recent<Date?> = .init(nil)
} }
}
extension MicItem {
final class Controller: MPAK.Controller<MicItem.Model> { final class Controller: MPAK.Controller<MicItem.Model> {
init() { init() {
/**/print("MicIC.init") /**/print("MicIC.init")
@@ -24,6 +26,17 @@ extension MicItem {
m m
.sink { v in Bus.send(K.MI, v) } .sink { v in Bus.send(K.MI, v) }
.store(in: &subscriptions) .store(in: &subscriptions)
pipeValue(
dbg: "activityD",
sub: nil,
Bus.events.compactMap { Bus.convertKeyValue(K.activityDate, $0) }.map { (k: String, v: Date?) in v }.eraseToAnyPublisher(),
{
$0.activityDate.value = $1
$0.activityDate.isRecent = true
},
{ m, _ in m.activityDate.isRecent = false }
)
} }
} }
} }