d
This commit is contained in:
@@ -1,11 +1,6 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public extension MeetupId {
|
public extension MeetupId {
|
||||||
static func finishLoading(_ isLoading: Bool) -> Bool? {
|
|
||||||
guard isLoading else { return nil }
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
static func formatId(_ s: String) -> String? {
|
static func formatId(_ s: String) -> String? {
|
||||||
let digits = s.components(separatedBy: NSCharacterSet.decimalDigits.inverted).reduce("") { $0 + $1 }
|
let digits = s.components(separatedBy: NSCharacterSet.decimalDigits.inverted).reduce("") { $0 + $1 }
|
||||||
var r = ""
|
var r = ""
|
||||||
|
|||||||
@@ -25,6 +25,16 @@ public extension MeetupId {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static func shouldFinishLoading(_ c: MeetupIdContext) -> Bool? {
|
||||||
|
guard
|
||||||
|
c.isLoading.isRecent,
|
||||||
|
c.isLoading.value
|
||||||
|
else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
static func shouldResetLoading(_ c: MeetupIdContext) -> Bool? {
|
static func shouldResetLoading(_ c: MeetupIdContext) -> Bool? {
|
||||||
if
|
if
|
||||||
c.join,
|
c.join,
|
||||||
@@ -42,4 +52,9 @@ public extension MeetupId {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static func shouldResetText(_ c: MeetupIdContext) -> String? {
|
||||||
|
guard c.textUI.isRecent else { return nil }
|
||||||
|
return formatId(c.textUI.value)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,16 @@ extension MeetupId {
|
|||||||
@StateObject var isLoading = BusUI.Value(K.isLoading, false)
|
@StateObject var isLoading = BusUI.Value(K.isLoading, false)
|
||||||
@StateObject var join = BusUI.Button(K.join)
|
@StateObject var join = BusUI.Button(K.join)
|
||||||
@StateObject var textField = BusUI.TextField(K.textApp, K.textUI)
|
@StateObject var textField = BusUI.TextField(K.textApp, K.textUI)
|
||||||
let processors: [Any] = [
|
let processors: [Any]
|
||||||
Bus.Debounce(formatId, 0.2, K.textUI, K.textApp),
|
|
||||||
Bus.Delay(finishLoading, 5, K.isLoading, K.finishLoading),
|
public init() {
|
||||||
|
processors = [
|
||||||
|
Bus.Debounce(shouldResetText, 0.2, K.M, K.textApp),
|
||||||
|
Bus.Delay(shouldFinishLoading, 5, K.M, K.finishLoading),
|
||||||
Bus.Sync(shouldEnableJoin, K.M, K.isJoinAvailable),
|
Bus.Sync(shouldEnableJoin, K.M, K.isJoinAvailable),
|
||||||
Bus.Sync(shouldResetLoading, K.M, K.isLoading)
|
Bus.Sync(shouldResetLoading, K.M, K.isLoading)
|
||||||
]
|
]
|
||||||
|
}
|
||||||
public init() { }
|
|
||||||
|
|
||||||
public var body: some View {
|
public var body: some View {
|
||||||
VStack(spacing: 8) {
|
VStack(spacing: 8) {
|
||||||
|
|||||||
Reference in New Issue
Block a user