Cette révision appartient à :
Михаил Капелько
2023-12-26 12:28:00 +03:00
Parent 5617da4d79
révision 50a94c4b85
3 fichiers modifiés avec 21 ajouts et 16 suppressions

8
src/Aux.swift Fichier normal
Voir le fichier

@@ -0,0 +1,8 @@
/// Пропускаем лишь значения от UI
///
/// - Returns: Значение без префиксов "a:"/"u:"
static func onlyAcceptUIText(_ s: String) -> String? {
guard s.hasPrefix("u:") else { return nil }
return String(s.dropFirst(2))
}

Voir le fichier

@@ -1,17 +1,17 @@
import Foundation
class TextFieldValueOwner: Formatter {
override func string(for obj: Any?) -> String? {
guard let str = obj as? String else { return nil }
return String(str.dropFirst(2))
}
override func string(for obj: Any?) -> String? {
guard let str = obj as? String else { return nil }
return String(str.dropFirst(2))
}
override func getObjectValue(
_ obj: AutoreleasingUnsafeMutablePointer<AnyObject?>?,
for string: String,
errorDescription error: AutoreleasingUnsafeMutablePointer<NSString?>?
) -> Bool {
obj?.pointee = "u:\(string)" as AnyObject
return true
}
override func getObjectValue(
_ obj: AutoreleasingUnsafeMutablePointer<AnyObject?>?,
for string: String,
errorDescription error: AutoreleasingUnsafeMutablePointer<NSString?>?
) -> Bool {
obj?.pointee = "u:\(string)" as AnyObject
return true
}
}

Voir le fichier

@@ -12,10 +12,7 @@ final class VM: ObservableObject {
$text
// Исключаем конфликты от UI и App путём игнорирования спама.
.debounce(for: .seconds(0.3), scheduler: DispatchQueue.main)
// Нужны лишь значения от UI.
.filter { $0.hasPrefix("u:") }
// Убираем источник.
.map { String($0.dropFirst(2)) }
.compactMap(onlyAcceptUIText)
.eraseToAnyPublisher(),
sub: &subscriptions
)