mirror of
https://github.com/dscyrescotti/Memola.git
synced 2026-05-17 13:17:03 +02:00
feat: resolve memory issue
This commit is contained in:
@@ -8,9 +8,9 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct CanvasView: UIViewControllerRepresentable {
|
struct CanvasView: UIViewControllerRepresentable {
|
||||||
@EnvironmentObject var tool: Tool
|
@ObservedObject var tool: Tool
|
||||||
@EnvironmentObject var canvas: Canvas
|
@ObservedObject var canvas: Canvas
|
||||||
@EnvironmentObject var history: History
|
@ObservedObject var history: History
|
||||||
|
|
||||||
func makeUIViewController(context: Context) -> CanvasViewController {
|
func makeUIViewController(context: Context) -> CanvasViewController {
|
||||||
CanvasViewController(tool: tool, canvas: canvas, history: history)
|
CanvasViewController(tool: tool, canvas: canvas, history: history)
|
||||||
|
|||||||
@@ -27,17 +27,17 @@ struct MemoView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
CanvasView()
|
CanvasView(tool: tool, canvas: canvas, history: history)
|
||||||
.ignoresSafeArea()
|
.ignoresSafeArea()
|
||||||
.overlay(alignment: .trailing) {
|
.overlay(alignment: .trailing) {
|
||||||
PenDock()
|
PenDock(tool: tool, canvas: canvas)
|
||||||
}
|
}
|
||||||
.overlay(alignment: .bottomLeading) {
|
.overlay(alignment: .bottomLeading) {
|
||||||
zoomControl
|
zoomControl
|
||||||
}
|
}
|
||||||
.disabled(textFieldState)
|
.disabled(textFieldState)
|
||||||
.overlay(alignment: .top) {
|
.overlay(alignment: .top) {
|
||||||
Toolbar(memo: memo, size: size)
|
Toolbar(size: size, memo: memo, canvas: canvas, history: history)
|
||||||
}
|
}
|
||||||
.disabled(canvas.state == .loading || canvas.state == .closing)
|
.disabled(canvas.state == .loading || canvas.state == .closing)
|
||||||
.overlay {
|
.overlay {
|
||||||
@@ -50,9 +50,6 @@ struct MemoView: View {
|
|||||||
EmptyView()
|
EmptyView()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.environmentObject(tool)
|
|
||||||
.environmentObject(canvas)
|
|
||||||
.environmentObject(history)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ViewBuilder
|
@ViewBuilder
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct PenDock: View {
|
struct PenDock: View {
|
||||||
@EnvironmentObject var tool: Tool
|
@ObservedObject var tool: Tool
|
||||||
@EnvironmentObject var canvas: Canvas
|
@ObservedObject var canvas: Canvas
|
||||||
|
|
||||||
let width: CGFloat = 90
|
let width: CGFloat = 90
|
||||||
let height: CGFloat = 30
|
let height: CGFloat = 30
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ import Foundation
|
|||||||
|
|
||||||
struct Toolbar: View {
|
struct Toolbar: View {
|
||||||
@Environment(\.dismiss) var dismiss
|
@Environment(\.dismiss) var dismiss
|
||||||
|
|
||||||
@EnvironmentObject var history: History
|
@ObservedObject var canvas: Canvas
|
||||||
@EnvironmentObject var canvas: Canvas
|
@ObservedObject var history: History
|
||||||
|
|
||||||
@State var memo: MemoObject
|
@State var memo: MemoObject
|
||||||
@State var title: String
|
@State var title: String
|
||||||
@@ -20,9 +20,11 @@ struct Toolbar: View {
|
|||||||
|
|
||||||
let size: CGFloat
|
let size: CGFloat
|
||||||
|
|
||||||
init(memo: MemoObject, size: CGFloat) {
|
init(size: CGFloat, memo: MemoObject, canvas: Canvas, history: History) {
|
||||||
self.memo = memo
|
|
||||||
self.size = size
|
self.size = size
|
||||||
|
self.memo = memo
|
||||||
|
self.canvas = canvas
|
||||||
|
self.history = history
|
||||||
self.title = memo.title
|
self.title = memo.title
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,6 +138,7 @@ struct Toolbar: View {
|
|||||||
}
|
}
|
||||||
withPersistence(\.backgroundContext) { context in
|
withPersistence(\.backgroundContext) { context in
|
||||||
try? context.saveIfNeeded()
|
try? context.saveIfNeeded()
|
||||||
|
context.refreshAllObjects()
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
withAnimation {
|
withAnimation {
|
||||||
canvas.state = .closed
|
canvas.state = .closed
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ struct MemosView: View {
|
|||||||
MemoView(memo: memo)
|
MemoView(memo: memo)
|
||||||
.onDisappear {
|
.onDisappear {
|
||||||
withPersistence(\.viewContext) { context in
|
withPersistence(\.viewContext) { context in
|
||||||
|
try context.saveIfNeeded()
|
||||||
context.refreshAllObjects()
|
context.refreshAllObjects()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user