This commit is contained in:
Михаил Капелько
2024-01-29 18:09:14 +03:00
parent a0f8e2d31e
commit 49cee91239
106 changed files with 112 additions and 12 deletions

View File

@@ -7,8 +7,8 @@ model:
service:
actions:
shouldDeliverActivityDates: Bus.deliver(K.activityDate, v);/**/print("ИГР Mic.shouldDAD:'\(v)'")
shouldResetActivityDates: Bus.send(K.activityDates, v);/**/print("ИГР Mic.shouldRAD:'\(v)'")
shouldDeliverActivityDates: Bus.deliver(K.activityDate, v)
shouldResetActivityDates: Bus.send(K.activityDates, v)
pipes:
activeIds: [recent, K.activeIds]

View File

@@ -83,12 +83,12 @@ extension Mic {
ctrl.m
.compactMap { shouldDeliverActivityDates($0) }
.receive(on: DispatchQueue.main)
.sink { v in Bus.deliver(K.activityDate, v);/**/print("ИГР Mic.shouldDAD:'\(v)'") }
.sink { v in Bus.deliver(K.activityDate, v) }
.store(in: &service.subscriptions)
ctrl.m
.compactMap { shouldResetActivityDates($0) }
.receive(on: DispatchQueue.main)
.sink { v in Bus.send(K.activityDates, v);/**/print("ИГР Mic.shouldRAD:'\(v)'") }
.sink { v in Bus.send(K.activityDates, v) }
.store(in: &service.subscriptions)

View File

@@ -4,7 +4,7 @@ public extension Mic {
public static let activityDate = "Mic.activityDate"
public static let activityDates = "Mic.activityDates"
public static let isActive = "Mic.isActive"
public static let MI = "Mic.Model.Item"
public static let MI = "MicItem.Model"
public static let requestActivityDate = "Mic.requestActivityDate"
public static let timeout = "Mic.timeout"
}

View File

@@ -1,4 +1,11 @@
public extension MicItem {
/// Следует задать активность элемента
///
/// Условия:
/// 1. Пришла актуальная дата завершения активности
/// 2. Таймер сообщил о завершении активности
///
/// - Returns: Состояние активности элемента
static func shouldResetActivity(_ c: MicItemContext) -> Bool? {
if
c.activityDate.isRecent,
@@ -15,6 +22,12 @@ public extension MicItem {
return nil
}
/// Следует задать время истечения активности
///
/// Условия:
/// 1. Пришла актуальная дата завершения активности
///
/// - Returns: Время истечения активности
static func shouldResetTimeout(_ c: MicItemContext) -> TimeInterval? {
if
c.activityDate.isRecent,

View File

@@ -3,7 +3,7 @@ import SwiftUI
extension MicItem {
public struct V: View {
var id: String?
let id: String?
@StateObject var holder = BusUI.Holder()
@StateObject var isActive = BusUI.Value(K.isActive, false)
@@ -11,13 +11,12 @@ extension MicItem {
self.id = id
}
func config(_ id: String? = nil) {
/**/print("ИГР MicIV.config id: '\(id)'")
func configure(_ id: String? = nil) {
isActive.id = id
holder.items = [
Bus.Delay(shouldResetTimeout, K.MI, K.timeout, id),
Bus.Sync(shouldResetActivity, K.MI, K.isActive, id),
MicItem.Controller(id)
MicItem.Controller(id),
]
// Запрашиваем актуальные данные при (пере)создании.
Bus.send(K.requestActivityDate, id)
@@ -31,8 +30,8 @@ extension MicItem {
width: isActive.v ? 3 : 1
)
.animation(.easeInOut(duration: 0.3))
.onAppear { self.config(id) }
.onChange(of: id) { id in self.config(id) }
.onAppear { self.configure(id) }
.onChange(of: id) { id in self.configure(id) }
}
}
}

View File

@@ -20,7 +20,6 @@ extension MicItem {
if let id {
sid = " : \(id)"
}
/**/print("MicIC.init\(sid)")
super.init(
MicItem.Model(),
debugClassName: "MicICtrl",