Doing a bit of gutting.

This commit is contained in:
Max Goedjen 2020-07-18 19:25:03 -07:00
parent a4d674bd2b
commit 28dbacd850
No known key found for this signature in database
GPG Key ID: E58C21DD77B9B8E8
4 changed files with 125 additions and 74 deletions

View File

@ -1223,7 +1223,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.15;
MACOSX_DEPLOYMENT_TARGET = 10.16;
MARKETING_VERSION = 1;
PRODUCT_BUNDLE_IDENTIFIER = com.maxgoedjen.Secretive.Host;
PRODUCT_NAME = "$(TARGET_NAME)";
@ -1251,7 +1251,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.15;
MACOSX_DEPLOYMENT_TARGET = 10.16;
MARKETING_VERSION = 1;
PRODUCT_BUNDLE_IDENTIFIER = com.maxgoedjen.Secretive.Host;
PRODUCT_NAME = "$(TARGET_NAME)";
@ -1566,7 +1566,7 @@
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.15;
MACOSX_DEPLOYMENT_TARGET = 10.16;
MARKETING_VERSION = 1;
PRODUCT_BUNDLE_IDENTIFIER = com.maxgoedjen.Secretive.Host;
PRODUCT_NAME = "$(TARGET_NAME)";

View File

@ -3,12 +3,88 @@ import SwiftUI
import SecretKit
import Brief
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
//@NSApplicationMain
//class AppDelegate: NSObject, NSApplicationDelegate {
//
// var window: NSWindow!
// @IBOutlet var newMenuItem: NSMenuItem!
// @IBOutlet var toolbar: NSToolbar!
// let storeList: SecretStoreList = {
// let list = SecretStoreList()
// list.add(store: SecureEnclave.Store())
// list.add(store: SmartCard.Store())
// return list
// }()
// let updater = Updater()
// let agentStatusChecker = AgentStatusChecker()
// let justUpdatedChecker = JustUpdatedChecker()
//
// func applicationDidFinishLaunching(_ aNotification: Notification) {
// let contentView = ContentView(storeList: storeList, updater: updater, agentStatusChecker: agentStatusChecker, runSetupBlock: { self.runSetup(sender: nil) })
// // Create the window and set the content view.
// window = NSWindow(
// contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
// styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
// backing: .buffered, defer: false)
// window.center()
// window.setFrameAutosaveName("Main Window")
// window.contentView = NSHostingView(rootView: contentView)
// window.makeKeyAndOrderFront(nil)
// window.titleVisibility = .hidden
// window.toolbar = toolbar
// window.isReleasedWhenClosed = false
// if storeList.modifiableStore?.isAvailable ?? false {
// let plus = NSTitlebarAccessoryViewController()
// plus.view = NSButton(image: NSImage(named: NSImage.addTemplateName)!, target: self, action: #selector(add(sender:)))
// plus.layoutAttribute = .right
// window.addTitlebarAccessoryViewController(plus)
// newMenuItem.isEnabled = true
// }
// runSetupIfNeeded()
// relaunchAgentIfNeeded()
// }
//
// func applicationDidBecomeActive(_ notification: Notification) {
// agentStatusChecker.check()
// }
//
// func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
// guard !flag else { return false }
// window.makeKeyAndOrderFront(self)
// return true
// }
//
// @IBAction func add(sender: AnyObject?) {
// var addWindow: NSWindow!
// let addView = CreateSecretView(store: storeList.modifiableStore!) {
// self.window.endSheet(addWindow)
// }
// addWindow = NSWindow(
// contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
// styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
// backing: .buffered, defer: false)
// addWindow.contentView = NSHostingView(rootView: addView)
// window.beginSheet(addWindow, completionHandler: nil)
// }
//
// @IBAction func runSetup(sender: AnyObject?) {
// let setupWindow = NSWindow(
// contentRect: NSRect(x: 0, y: 0, width: 0, height: 0),
// styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
// backing: .buffered, defer: false)
// let setupView = SetupView() { success in
// self.window.endSheet(setupWindow)
// self.agentStatusChecker.check()
// }
// setupWindow.contentView = NSHostingView(rootView: setupView)
// window.beginSheet(setupWindow, completionHandler: nil)
// }
//
//}
@main
struct AppDelegate: App {
var window: NSWindow!
@IBOutlet var newMenuItem: NSMenuItem!
@IBOutlet var toolbar: NSToolbar!
let storeList: SecretStoreList = {
let list = SecretStoreList()
list.add(store: SecureEnclave.Store())
@ -19,71 +95,34 @@ class AppDelegate: NSObject, NSApplicationDelegate {
let agentStatusChecker = AgentStatusChecker()
let justUpdatedChecker = JustUpdatedChecker()
func applicationDidFinishLaunching(_ aNotification: Notification) {
let contentView = ContentView(storeList: storeList, updater: updater, agentStatusChecker: agentStatusChecker, runSetupBlock: { self.runSetup(sender: nil) })
// Create the window and set the content view.
window = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
window.center()
window.setFrameAutosaveName("Main Window")
window.contentView = NSHostingView(rootView: contentView)
window.makeKeyAndOrderFront(nil)
window.titleVisibility = .hidden
window.toolbar = toolbar
window.isReleasedWhenClosed = false
if storeList.modifiableStore?.isAvailable ?? false {
let plus = NSTitlebarAccessoryViewController()
plus.view = NSButton(image: NSImage(named: NSImage.addTemplateName)!, target: self, action: #selector(add(sender:)))
plus.layoutAttribute = .right
window.addTitlebarAccessoryViewController(plus)
newMenuItem.isEnabled = true
@SceneBuilder var body: some Scene {
WindowGroup {
ContentView(storeList: storeList, updater: updater, agentStatusChecker: agentStatusChecker, runSetupBlock: { self.runSetup(sender: nil) })
}
runSetupIfNeeded()
relaunchAgentIfNeeded()
}
func applicationDidBecomeActive(_ notification: Notification) {
agentStatusChecker.check()
}
func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
guard !flag else { return false }
window.makeKeyAndOrderFront(self)
return true
}
@IBAction func add(sender: AnyObject?) {
var addWindow: NSWindow!
let addView = CreateSecretView(store: storeList.modifiableStore!) {
self.window.endSheet(addWindow)
WindowGroup {
SetupView() { _ in
print("Setup")
}
}
addWindow = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
addWindow.contentView = NSHostingView(rootView: addView)
window.beginSheet(addWindow, completionHandler: nil)
}
@IBAction func runSetup(sender: AnyObject?) {
let setupWindow = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 0, height: 0),
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
let setupView = SetupView() { success in
self.window.endSheet(setupWindow)
self.agentStatusChecker.check()
}
setupWindow.contentView = NSHostingView(rootView: setupView)
window.beginSheet(setupWindow, completionHandler: nil)
}
}
extension AppDelegate {
func runSetup(sender: AnyObject?) {
let setupWindow = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 0, height: 0),
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
let setupView = SetupView() { success in
// self.window.endSheet(setupWindow)
self.agentStatusChecker.check()
}
setupWindow.contentView = NSHostingView(rootView: setupView)
// window.beginSheet(setupWindow, completionHandler: nil)
}
func runSetupIfNeeded() {
if !UserDefaults.standard.bool(forKey: Constants.defaultsHasRunSetup) {
UserDefaults.standard.set(true, forKey: Constants.defaultsHasRunSetup)

View File

@ -24,8 +24,6 @@
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>
<string>$(PRODUCT_NAME) is MIT Licensed.</string>
<key>NSMainStoryboardFile</key>
<string>Main</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSSupportsAutomaticTermination</key>

View File

@ -15,12 +15,12 @@ struct ContentView<UpdaterType: UpdaterProtocol, AgentStatusCheckerType: AgentSt
var body: some View {
VStack {
if updater.update != nil {
updateNotice()
}
if !agentStatusChecker.running {
agentNotice()
}
// if updater.update != nil {
// updateNotice()
// }
// if !agentStatusChecker.running {
// agentNotice()
// }
if storeList.anyAvailable {
NavigationView {
List(selection: $active) {
@ -73,7 +73,21 @@ struct ContentView<UpdaterType: UpdaterProtocol, AgentStatusCheckerType: AgentSt
} else {
NoStoresView()
}
}.frame(minWidth: 640, minHeight: 320)
}
.frame(minWidth: 640, minHeight: 320)
.toolbar {
self.toolbar
}
}
var toolbar: ToolbarItem<Void, Button<Image>> {
ToolbarItem {
Button(action: {
print("OK")
}, label: {
Image(systemName: "plus")
})
}
}
func updateNotice() -> some View {