feat: modify entities

This commit is contained in:
dscyrescotti
2024-05-09 08:28:16 +07:00
parent 0fc277ca5b
commit cd6048bbd0
5 changed files with 12 additions and 8 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ import Foundation
@objc(GraphicContext) @objc(GraphicContext)
class GraphicContext: NSManagedObject { class GraphicContext: NSManagedObject {
@NSManaged var id: UUID @NSManaged var id: UUID
@NSManaged var canvas: Canvas @NSManaged var canvas: Canvas?
@NSManaged var strokes: NSMutableOrderedSet @NSManaged var strokes: NSMutableOrderedSet
var currentStroke: Stroke? var currentStroke: Stroke?
+4 -3
View File
@@ -15,7 +15,7 @@ class Canvas: NSManagedObject, Identifiable {
@NSManaged var id: UUID @NSManaged var id: UUID
@NSManaged var width: CGFloat @NSManaged var width: CGFloat
@NSManaged var height: CGFloat @NSManaged var height: CGFloat
@NSManaged var memo: Memo @NSManaged var memo: Memo?
@NSManaged var graphicContext: GraphicContext @NSManaged var graphicContext: GraphicContext
let gridContext = GridContext() let gridContext = GridContext()
@@ -43,8 +43,9 @@ class Canvas: NSManagedObject, Identifiable {
extension Canvas { extension Canvas {
func load() { func load() {
state = .loading state = .loading
graphicContext.strokes.forEach { graphicContext.strokes.forEach { stroke in
($0 as? Stroke)?.loadVertices() guard let stroke = stroke as? Stroke else { return }
stroke.loadVertices()
} }
state = .loaded state = .loaded
} }
+3
View File
@@ -31,6 +31,9 @@ struct MemosView: View {
} }
.fullScreenCover(item: $memo) { memo in .fullScreenCover(item: $memo) { memo in
MemoView(canvas: memo.canvas) MemoView(canvas: memo.canvas)
.onDisappear {
managedObjectContext.refreshAllObjects()
}
} }
} }
@@ -22,7 +22,7 @@ class QuadValueTransformer: ValueTransformer {
return nil return nil
} }
do { do {
let data = try JSONEncoder().encode(quads) let data = try JSONEncoder().encode(quads.map(\.quad))
return data return data
} catch { } catch {
print(error.localizedDescription) print(error.localizedDescription)
@@ -37,8 +37,8 @@ class QuadValueTransformer: ValueTransformer {
return nil return nil
} }
do { do {
let quads = try JSONDecoder().decode([StrokeQuad].self, from: data) let quads = try JSONDecoder().decode([Quad].self, from: data)
return quads return quads.map(StrokeQuad.init)
} catch { } catch {
print(error.localizedDescription) print(error.localizedDescription)
assertionFailure("[Memola] - Failed to transform `Data` to `Quad`") assertionFailure("[Memola] - Failed to transform `Data` to `Quad`")
@@ -4,7 +4,7 @@
<attribute name="height" attributeType="Double" defaultValueString="0.0" usesScalarValueType="YES" customClassName="CGFloat"/> <attribute name="height" attributeType="Double" defaultValueString="0.0" usesScalarValueType="YES" customClassName="CGFloat"/>
<attribute name="id" attributeType="UUID" usesScalarValueType="NO"/> <attribute name="id" attributeType="UUID" usesScalarValueType="NO"/>
<attribute name="width" attributeType="Double" defaultValueString="0.0" usesScalarValueType="YES" customClassName="CGFloat"/> <attribute name="width" attributeType="Double" defaultValueString="0.0" usesScalarValueType="YES" customClassName="CGFloat"/>
<relationship name="graphicContext" maxCount="1" deletionRule="Cascade" destinationEntity="GraphicContext" inverseName="canvas" inverseEntity="GraphicContext"/> <relationship name="graphicContext" optional="YES" maxCount="1" deletionRule="Cascade" destinationEntity="GraphicContext" inverseName="canvas" inverseEntity="GraphicContext"/>
<relationship name="memo" maxCount="1" deletionRule="Deny" destinationEntity="Memo" inverseName="canvas" inverseEntity="Memo"/> <relationship name="memo" maxCount="1" deletionRule="Deny" destinationEntity="Memo" inverseName="canvas" inverseEntity="Memo"/>
</entity> </entity>
<entity name="GraphicContext" representedClassName="GraphicContext" syncable="YES"> <entity name="GraphicContext" representedClassName="GraphicContext" syncable="YES">