Михаил Капелько 10 months ago
parent
commit
2ab746413c
2 changed files with 33 additions and 2 deletions
  1. +31
    -0
      Modules/MeetupIdX/src/MeetupId.Delay.swift
  2. +2
    -2
      Modules/MeetupIdX/src/MeetupId.V.swift

+ 31
- 0
Modules/MeetupIdX/src/MeetupId.Delay.swift View File

@@ -0,0 +1,31 @@
import BusX
import Combine

extension MeetupId {
final class Delay<Src, Dst> {
let v = PassthroughSubject<Src, Never>()
var subscriptions = [AnyCancellable]()

init(
_ sec: Double,
_ handler: @escaping ((Src) -> Dst?),
_ src: String,
_ dst: String
) {
Bus.receive(
[src],
{ [weak self] _, v in self?.v.send(v) },
sub: &subscriptions
)

Bus.send(
dst,
v
.delay(for: .seconds(sec), scheduler: DispatchQueue.main)
.compactMap { (v: Src) in handler(v) }
.eraseToAnyPublisher(),
sub: &subscriptions
)
}
}
}

+ 2
- 2
Modules/MeetupIdX/src/MeetupId.V.swift View File

@@ -4,13 +4,13 @@ import SwiftUI

extension MeetupId {
public struct V: View {
let fmt = MeetupId.Debounce(5, formatId, K.textUI, K.textApp)
@StateObject var isJoinAvailable = Cord.Receive(K.isJoinAvailable, false)
@StateObject var isLoading = Cord.Receive(K.isLoading, false)
@StateObject var join = Cord.Button(K.join)
@StateObject var textField = Cord.TextField(K.textApp, K.textUI)
let procs: [Any] = [
let processors: [Any] = [
Bus.Processor(shouldEnableJoin, K.M, K.isJoinAvailable),
MeetupId.Debounce(5, formatId, K.textUI, K.textApp),
]
public init() { }


Loading…
Cancel
Save