diff --git a/Memola/Canvas/View/Canvas/CanvasView.swift b/Memola/Canvas/View/Canvas/CanvasView.swift index 3842c6d..d697358 100644 --- a/Memola/Canvas/View/Canvas/CanvasView.swift +++ b/Memola/Canvas/View/Canvas/CanvasView.swift @@ -8,9 +8,9 @@ import SwiftUI struct CanvasView: UIViewControllerRepresentable { - @EnvironmentObject var tool: Tool - @EnvironmentObject var canvas: Canvas - @EnvironmentObject var history: History + @ObservedObject var tool: Tool + @ObservedObject var canvas: Canvas + @ObservedObject var history: History func makeUIViewController(context: Context) -> CanvasViewController { CanvasViewController(tool: tool, canvas: canvas, history: history) diff --git a/Memola/Features/Memo/Memo/MemoView.swift b/Memola/Features/Memo/Memo/MemoView.swift index 550b472..b12e1ed 100644 --- a/Memola/Features/Memo/Memo/MemoView.swift +++ b/Memola/Features/Memo/Memo/MemoView.swift @@ -27,17 +27,17 @@ struct MemoView: View { } var body: some View { - CanvasView() + CanvasView(tool: tool, canvas: canvas, history: history) .ignoresSafeArea() .overlay(alignment: .trailing) { - PenDock() + PenDock(tool: tool, canvas: canvas) } .overlay(alignment: .bottomLeading) { zoomControl } .disabled(textFieldState) .overlay(alignment: .top) { - Toolbar(memo: memo, size: size) + Toolbar(size: size, memo: memo, canvas: canvas, history: history) } .disabled(canvas.state == .loading || canvas.state == .closing) .overlay { @@ -50,9 +50,6 @@ struct MemoView: View { EmptyView() } } - .environmentObject(tool) - .environmentObject(canvas) - .environmentObject(history) } @ViewBuilder diff --git a/Memola/Features/Memo/PenDock/PenDock.swift b/Memola/Features/Memo/PenDock/PenDock.swift index 1fd2b5c..bcaa02c 100644 --- a/Memola/Features/Memo/PenDock/PenDock.swift +++ b/Memola/Features/Memo/PenDock/PenDock.swift @@ -8,8 +8,8 @@ import SwiftUI struct PenDock: View { - @EnvironmentObject var tool: Tool - @EnvironmentObject var canvas: Canvas + @ObservedObject var tool: Tool + @ObservedObject var canvas: Canvas let width: CGFloat = 90 let height: CGFloat = 30 diff --git a/Memola/Features/Memo/Toolbar/Toolbar.swift b/Memola/Features/Memo/Toolbar/Toolbar.swift index 6388fc0..24c7cba 100644 --- a/Memola/Features/Memo/Toolbar/Toolbar.swift +++ b/Memola/Features/Memo/Toolbar/Toolbar.swift @@ -10,9 +10,9 @@ import Foundation struct Toolbar: View { @Environment(\.dismiss) var dismiss - - @EnvironmentObject var history: History - @EnvironmentObject var canvas: Canvas + + @ObservedObject var canvas: Canvas + @ObservedObject var history: History @State var memo: MemoObject @State var title: String @@ -20,9 +20,11 @@ struct Toolbar: View { let size: CGFloat - init(memo: MemoObject, size: CGFloat) { - self.memo = memo + init(size: CGFloat, memo: MemoObject, canvas: Canvas, history: History) { self.size = size + self.memo = memo + self.canvas = canvas + self.history = history self.title = memo.title } @@ -136,6 +138,7 @@ struct Toolbar: View { } withPersistence(\.backgroundContext) { context in try? context.saveIfNeeded() + context.refreshAllObjects() DispatchQueue.main.async { withAnimation { canvas.state = .closed diff --git a/Memola/Features/Memos/MemosView.swift b/Memola/Features/Memos/MemosView.swift index 331016c..99e87c5 100644 --- a/Memola/Features/Memos/MemosView.swift +++ b/Memola/Features/Memos/MemosView.swift @@ -33,6 +33,7 @@ struct MemosView: View { MemoView(memo: memo) .onDisappear { withPersistence(\.viewContext) { context in + try context.saveIfNeeded() context.refreshAllObjects() } }