refactor: remove memo manager

This commit is contained in:
dscyrescotti
2024-07-14 17:03:27 +07:00
parent a286f7d853
commit c1e2fa227e
7 changed files with 31 additions and 51 deletions

View File

@@ -37,7 +37,6 @@
EC2BEBF82C0F601A005DB0AF /* Node.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC2BEBF72C0F601A005DB0AF /* Node.swift */; };
EC35655A2BF060D900A4E0BF /* Quad.metal in Sources */ = {isa = PBXBuildFile; fileRef = EC3565592BF060D900A4E0BF /* Quad.metal */; };
EC37FB122C1B2DD90008D976 /* ToolSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC37FB112C1B2DD90008D976 /* ToolSelection.swift */; };
EC3D67CC2C3AAD5E00359400 /* MemoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC3D67CB2C3AAD5E00359400 /* MemoManager.swift */; };
EC42F7852C25267000E86E96 /* ElementGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC42F7842C25267000E86E96 /* ElementGroup.swift */; };
EC4538892BEBCAE000A86FEC /* Quad.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC4538882BEBCAE000A86FEC /* Quad.swift */; };
EC5050072BF65CED00B4D86E /* PenDropDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC5050062BF65CED00B4D86E /* PenDropDelegate.swift */; };
@@ -175,7 +174,6 @@
EC2BEBF72C0F601A005DB0AF /* Node.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Node.swift; sourceTree = "<group>"; };
EC3565592BF060D900A4E0BF /* Quad.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = Quad.metal; sourceTree = "<group>"; };
EC37FB112C1B2DD90008D976 /* ToolSelection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolSelection.swift; sourceTree = "<group>"; };
EC3D67CB2C3AAD5E00359400 /* MemoManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MemoManager.swift; sourceTree = "<group>"; };
EC42F7842C25267000E86E96 /* ElementGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ElementGroup.swift; sourceTree = "<group>"; };
EC4538882BEBCAE000A86FEC /* Quad.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Quad.swift; sourceTree = "<group>"; };
EC5050062BF65CED00B4D86E /* PenDropDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenDropDelegate.swift; sourceTree = "<group>"; };
@@ -309,7 +307,6 @@
EC01511C2C305C99008A115E /* Dashboard */ = {
isa = PBXGroup;
children = (
EC3D67CB2C3AAD5E00359400 /* MemoManager.swift */,
EC01511D2C305CA9008A115E /* DashboardView.swift */,
);
path = Dashboard;
@@ -1123,7 +1120,6 @@
EC01511E2C305CA9008A115E /* DashboardView.swift in Sources */,
EC8F54AE2C2AF5A4001C7C74 /* LineGridVertex.swift in Sources */,
EC2002F02C417BF1002EBD5F /* ActiveSceneKey.swift in Sources */,
EC3D67CC2C3AAD5E00359400 /* MemoManager.swift in Sources */,
EC2002E12C416470002EBD5F /* Shortcut.swift in Sources */,
EC5E83902BFDB69C00261D9C /* MovingAverage.swift in Sources */,
ECFA15262BEF224900455818 /* StrokeObject.swift in Sources */,

View File

@@ -9,9 +9,24 @@ import Combine
import SwiftUI
final class Application: NSObject, ObservableObject {
@Published var memoObject: MemoObject?
@Published private(set) var sidebarVisibility: SidebarVisibility = .shown
}
extension Application {
func openMemo(_ memoObject: MemoObject?) {
withAnimation(.easeOut) {
self.memoObject = memoObject
}
}
func closeMemo() {
withAnimation(.easeOut) {
self.memoObject = nil
}
}
}
extension Application {
func activateSearchBar() {
#if os(macOS)

View File

@@ -10,7 +10,6 @@ import SwiftUI
struct DashboardView: View {
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
@StateObject private var memoManager: MemoManager = .shared
@EnvironmentObject private var application: Application
@State private var sidebarItem: SidebarItem? = .memos
@@ -32,10 +31,10 @@ struct DashboardView: View {
MemosView()
}
}
.toolbar(memoManager.memoObject == nil ? .visible : .hidden, for: .windowToolbar)
.toolbarBackground(memoManager.memoObject == nil ? .clear : Color(nsColor: .windowBackgroundColor), for: .windowToolbar)
.toolbar(application.memoObject == nil ? .visible : .hidden, for: .windowToolbar)
.toolbarBackground(application.memoObject == nil ? .clear : Color(nsColor: .windowBackgroundColor), for: .windowToolbar)
.overlay {
if let memo = memoManager.memoObject {
if let memo = application.memoObject {
MemoView(memo: memo)
.onDisappear {
withPersistence(\.viewContext) { context in
@@ -62,7 +61,7 @@ struct DashboardView: View {
MemosView()
}
}
.fullScreenCover(item: $memoManager.memoObject) { memo in
.fullScreenCover(item: $application.memoObject) { memo in
MemoView(memo: memo)
.onDisappear {
withPersistence(\.viewContext) { context in

View File

@@ -1,38 +0,0 @@
//
// MemoManager.swift
// Memola
//
// Created by Dscyre Scotti on 7/7/24.
//
import SwiftUI
import Foundation
#warning("TODO: use environmnet instead of singleton")
class MemoManager: ObservableObject {
static let shared: MemoManager = .init()
@Published var memoObject: MemoObject?
private init() { }
func openMemo(_ memoObject: MemoObject?) {
#if os(macOS)
withAnimation(.easeOut) {
self.memoObject = memoObject
}
#else
self.memoObject = memoObject
#endif
}
func closeMemo() {
#if os(macOS)
withAnimation(.easeOut) {
self.memoObject = nil
}
#else
self.memoObject = nil
#endif
}
}

View File

@@ -11,6 +11,8 @@ struct MemosView: View {
@Environment(\.shortcut) private var shortcut
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
@EnvironmentObject private var application: Application
@FetchRequest private var memoObjects: FetchedResults<MemoObject>
@State private var query: String = ""
@@ -259,7 +261,7 @@ struct MemosView: View {
}
private func openMemo(for memo: MemoObject) {
MemoManager.shared.openMemo(memo)
application.openMemo(memo)
}
private func updatePredicate() {
@@ -291,7 +293,7 @@ struct MemosView: View {
private func handleShortcut(for shortcut: Shortcuts) {
switch shortcut {
case .newMemo:
if MemoManager.shared.memoObject == nil {
if application.memoObject == nil {
createMemo(title: "Untitled")
}
default:

View File

@@ -11,6 +11,8 @@ struct TrashView: View {
@Environment(\.shortcut) private var shortcut
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
@EnvironmentObject private var application: Application
@FetchRequest private var memoObjects: FetchedResults<MemoObject>
@State private var query: String = ""
@@ -152,7 +154,7 @@ struct TrashView: View {
restoreMemo(for: memo)
self.sidebarItem = .memos
if let memo {
MemoManager.shared.openMemo(memo)
application.openMemo(memo)
}
}

View File

@@ -12,6 +12,10 @@ struct Toolbar: View {
@Environment(\.dismiss) private var dismiss
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
#if os(macOS)
@EnvironmentObject private var application: Application
#endif
@ObservedObject private var tool: Tool
@ObservedObject private var canvas: Canvas
@ObservedObject private var history: History
@@ -186,7 +190,7 @@ struct Toolbar: View {
private func closeMemo() {
canvas.save(for: memo) {
#if os(macOS)
MemoManager.shared.closeMemo()
application.closeMemo()
#else
dismiss()
#endif