d
This commit is contained in:
@@ -18,8 +18,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate
|
|||||||
window?.makeKeyAndVisible()
|
window?.makeKeyAndVisible()
|
||||||
|
|
||||||
|
|
||||||
Bus.processSyncG(
|
Bus.process(
|
||||||
MeetupId.shouldFormat, MeetupId.K.meetupIdTextUI.rawValue, MeetupId.K.meetupIdTextApp.rawValue
|
MeetupId.K.meetupIdTextUI.rawValue,
|
||||||
|
MeetupId.K.meetupIdTextApp.rawValue,
|
||||||
|
MeetupId.shouldFormat
|
||||||
)
|
)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|||||||
@@ -22,6 +22,20 @@ extension Bus {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private extension Bus {
|
||||||
|
static func subscribe(
|
||||||
|
_ subscription: AnyCancellable?,
|
||||||
|
_ sub: UnsafeMutablePointer<[AnyCancellable]>?
|
||||||
|
) {
|
||||||
|
guard let subscription else { return }
|
||||||
|
if let sub = sub {
|
||||||
|
sub.pointee.append(subscription)
|
||||||
|
} else {
|
||||||
|
Service.singleton.subscriptions.append(subscription)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public extension Bus {
|
public extension Bus {
|
||||||
static func receive<T>(
|
static func receive<T>(
|
||||||
_ keys: Set<String>,
|
_ keys: Set<String>,
|
||||||
@@ -80,41 +94,32 @@ public extension Bus {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private extension Bus {
|
|
||||||
static func subscribe(
|
|
||||||
_ subscription: AnyCancellable?,
|
|
||||||
_ sub: UnsafeMutablePointer<[AnyCancellable]>?
|
|
||||||
) {
|
|
||||||
guard let subscription else { return }
|
|
||||||
if let sub = sub {
|
|
||||||
sub.pointee.append(subscription)
|
|
||||||
} else {
|
|
||||||
Service.singleton.subscriptions.append(subscription)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public extension Bus {
|
public extension Bus {
|
||||||
static func processSync<Src, Dst>(
|
static func process<Src, Dst>(
|
||||||
_ subscriptions: inout [AnyCancellable],
|
|
||||||
_ handler: @escaping ((Src) -> Dst?),
|
|
||||||
_ keyIn: String,
|
_ keyIn: String,
|
||||||
_ keyOut: String
|
_ keyOut: String,
|
||||||
|
_ handler: @escaping ((Src) -> Dst?),
|
||||||
|
opt: [Option] = [],
|
||||||
|
sub: UnsafeMutablePointer<[AnyCancellable]>? = nil
|
||||||
) {
|
) {
|
||||||
Service.singleton.events
|
var subscription: AnyCancellable?
|
||||||
.compactMap { processKeyValue($0, keyIn, handler) }
|
let isAsync = opt.contains(.async)
|
||||||
.sink { vOut in Service.singleton.send(keyOut, vOut) }
|
|
||||||
.store(in: &subscriptions)
|
|
||||||
}
|
|
||||||
|
|
||||||
static func processSyncG<Src, Dst>(
|
// Async.
|
||||||
_ handler: @escaping ((Src) -> Dst?),
|
if isAsync {
|
||||||
_ keyIn: String,
|
subscription = Service.singleton.events
|
||||||
_ keyOut: String
|
.compactMap { processKeyValue($0, keyIn, handler) }
|
||||||
) {
|
.receive(on: DispatchQueue.main)
|
||||||
Service.singleton.events
|
.sink { vOut in Service.singleton.send(keyOut, vOut) }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sync.
|
||||||
|
if !isAsync {
|
||||||
|
subscription = Service.singleton.events
|
||||||
.compactMap { processKeyValue($0, keyIn, handler) }
|
.compactMap { processKeyValue($0, keyIn, handler) }
|
||||||
.sink { vOut in Service.singleton.send(keyOut, vOut) }
|
.sink { vOut in Service.singleton.send(keyOut, vOut) }
|
||||||
.store(in: &Service.singleton.subscriptions)
|
}
|
||||||
|
|
||||||
|
subscribe(subscription, sub)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user