diff --git a/FlashSpace/FlashSpaceApp.swift b/FlashSpace/FlashSpaceApp.swift index a82334d..e68ca48 100644 --- a/FlashSpace/FlashSpaceApp.swift +++ b/FlashSpace/FlashSpaceApp.swift @@ -5,22 +5,37 @@ // Created by Wojciech Kulik on 19/01/2025. // +import Combine import SwiftUI +final class AppDelegate: NSObject, NSApplicationDelegate { + @Environment(\.openWindow) private var openWindow + + private var cancellables = Set() + + func applicationDidFinishLaunching(_ notification: Notification) { + AppDependencies.shared.hotKeysManager.enableAll() + + NotificationCenter.default + .publisher(for: .openMainWindow) + .sink { [weak self] _ in + self?.openWindow(id: "main") + NSApp.activate(ignoringOtherApps: true) + } + .store(in: &cancellables) + } +} + @main struct FlashSpaceApp: App { - @StateObject - private var workspaceManager = AppDependencies.shared.workspaceManager - + @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate @Environment(\.openWindow) private var openWindow + @StateObject private var workspaceManager = AppDependencies.shared.workspaceManager + var body: some Scene { Window("⚡ FlashSpace v\(AppConstants.version)", id: "main") { MainView() - .onReceive(NotificationCenter.default.publisher(for: .openMainWindow)) { _ in - openWindow(id: "main") - NSApp.activate(ignoringOtherApps: true) - } } .windowResizability(.contentSize) diff --git a/FlashSpace/MainView.swift b/FlashSpace/MainView.swift index 35ced76..53bc9fc 100644 --- a/FlashSpace/MainView.swift +++ b/FlashSpace/MainView.swift @@ -11,7 +11,6 @@ import SymbolPicker struct MainView: View { @Environment(\.openWindow) var openWindow - @Environment(\.dismissWindow) var dismissWindow @StateObject var viewModel = MainViewModel() @StateObject var profilesRepository = AppDependencies.shared.profilesRepository @@ -25,11 +24,6 @@ struct MainView: View { .padding() .fixedSize() .onAppear { - if viewModel.dismissOnLaunch { - viewModel.dismissOnLaunch = false - DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { dismissWindow() } - } - Task { await UpdatesManager.shared.autoCheckForUpdates() } } .sheet(isPresented: $viewModel.isInputDialogPresented) { diff --git a/FlashSpace/MainViewModel.swift b/FlashSpace/MainViewModel.swift index f31451c..fa3b339 100644 --- a/FlashSpace/MainViewModel.swift +++ b/FlashSpace/MainViewModel.swift @@ -11,8 +11,6 @@ import ShortcutRecorder import SwiftUI final class MainViewModel: ObservableObject { - @AppStorage("afterFirstLaunch") var afterFirstLaunch = false - @Published var workspaces: [Workspace] = [] @Published var workspaceApps: [String]? @@ -40,7 +38,6 @@ final class MainViewModel: ObservableObject { @Published var isSymbolPickerPresented = false @Published var isInputDialogPresented = false @Published var userInput = "" - @Published var dismissOnLaunch = false var focusAppOptions: [String] { [AppConstants.lastFocusedOption] + (workspaceApps ?? []) @@ -81,26 +78,12 @@ final class MainViewModel: ObservableObject { private let workspaceManager = AppDependencies.shared.workspaceManager private let workspaceRepository = AppDependencies.shared.workspaceRepository - private let hotKeysManager = AppDependencies.shared.hotKeysManager init() { self.workspaces = workspaceRepository.workspaces self.workspaceDisplay = NSScreen.main?.localizedName ?? "" - hotKeysManager.enableAll() observe() - checkIfFirstLaunch() - } - - private func checkIfFirstLaunch() { - if afterFirstLaunch { - dismissOnLaunch = true - } else { - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - NSApp.activate(ignoringOtherApps: true) - } - } - afterFirstLaunch = true } private func observe() {