Revert ObjectMonitor to previous implementation

This commit is contained in:
John Estropia
2019-10-16 19:20:11 +09:00
parent 64a0264354
commit 2818a778a4
9 changed files with 95 additions and 114 deletions

View File

@@ -16,13 +16,13 @@ class ObjectObserverDemoViewController: UIViewController, ObjectObserver {
func setPalette<O: ObjectRepresentation>(_ newValue: O?) where O.ObjectType == Palette {
guard self.monitor?.objectID() != newValue?.objectID() else {
guard self.monitor?.object?.objectID() != newValue?.objectID() else {
return
}
if let newValue = newValue {
self.monitor = newValue.asObjectMonitor(in: ColorsDemo.stack)
self.monitor = newValue.asReadOnly(in: ColorsDemo.stack).map(ColorsDemo.stack.monitorObject(_:))
}
else {

View File

@@ -73,9 +73,30 @@ extension Palette {
return "H: \(self.hue.value)˚, S: \(round(self.saturation.value * 100.0))%, B: \(round(self.brightness.value * 100.0))%"
}
}
extension LiveObject where ObjectType == Palette {
var color: UIColor {
return UIColor(
hue: CGFloat(self.hue) / 360.0,
saturation: CGFloat(self.saturation),
brightness: CGFloat(self.brightness),
alpha: 1.0
)
}
var colorText: String {
return "H: \(self.hue)˚, S: \(round(self.saturation * 100.0))%, B: \(round(self.brightness * 100.0))%"
}
}
extension Palette {
func setInitialValues(in transaction: BaseDataTransaction) {
self.hue .= Palette.randomHue()
self.saturation .= Float(1.0)
self.brightness .= Float(arc4random_uniform(70) + 30) / 100.0

View File

@@ -20,22 +20,6 @@ struct SwiftUIView: View {
@ObservedObject
var palettes: LiveList<Palette>
@available(iOS 13.0.0, *)
struct ColorCell: View {
@ObservedObject
var palette: LiveObject<Palette>
var body: some View {
HStack {
Color(palette.color)
.cornerRadius(5)
.frame(width: 30, height: 30, alignment: .leading)
Text(palette.colorText)
}
}
}
var body: some View {
NavigationView {
List {
@@ -124,6 +108,22 @@ struct SwiftUIView: View {
private var needsShowAlert = false
}
@available(iOS 13.0.0, *)
struct ColorCell: View {
@ObservedObject
var palette: LiveObject<Palette>
var body: some View {
HStack {
Color(palette.color)
.cornerRadius(5)
.frame(width: 30, height: 30, alignment: .leading)
Text(palette.colorText)
}
}
}
@available(iOS 13.0.0, *)
struct DetailView: View {