From 95ece1ddcc90207e228efd6d0beda5f580d07c03 Mon Sep 17 00:00:00 2001 From: Christoph Hagen Date: Thu, 10 Aug 2023 18:20:16 +0200 Subject: [PATCH] Add unlock complication, improve info display --- .../Circular.imageset/Contents.json | 25 +++ .../Contents.json | 53 +++++ .../Extra Large.imageset/Contents.json | 25 +++ .../Graphic Bezel.imageset/Contents.json | 20 ++ .../Graphic Circular.imageset/Contents.json | 20 ++ .../Graphic Corner.imageset/Contents.json | 20 ++ .../Contents.json | 25 +++ .../Contents.json | 20 ++ .../Modular.imageset/Contents.json | 25 +++ .../Utilitarian.imageset/Contents.json | 25 +++ .../ComplicationController.swift | 10 + Sesame-Watch Watch App/ContentView.swift | 49 ++++- Sesame-Watch Watch App/Sesame_WatchApp.swift | 17 +- .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 13 ++ Sesame-Widget/Assets.xcassets/Contents.json | 6 + .../WidgetBackground.colorset/Contents.json | 11 + Sesame-Widget/Info.plist | 11 + Sesame-Widget/Sesame_Widget.swift | 58 ++++++ Sesame.xcodeproj/project.pbxproj | 192 ++++++++++++++++++ .../UserInterfaceState.xcuserstate | Bin 134224 -> 142769 bytes .../xcschemes/xcschememanagement.plist | 9 +- Sesame/ClientState.swift | 54 ++++- 23 files changed, 688 insertions(+), 11 deletions(-) create mode 100644 Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json create mode 100644 Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Contents.json create mode 100644 Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json create mode 100644 Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json create mode 100644 Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json create mode 100644 Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json create mode 100644 Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json create mode 100644 Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json create mode 100644 Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json create mode 100644 Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json create mode 100644 Sesame-Watch Watch App/ComplicationController.swift create mode 100644 Sesame-Widget/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 Sesame-Widget/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Sesame-Widget/Assets.xcassets/Contents.json create mode 100644 Sesame-Widget/Assets.xcassets/WidgetBackground.colorset/Contents.json create mode 100644 Sesame-Widget/Info.plist create mode 100644 Sesame-Widget/Sesame_Widget.swift diff --git a/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json new file mode 100644 index 0000000..26454ca --- /dev/null +++ b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "auto-scaling" : "auto" + } +} diff --git a/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Contents.json b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Contents.json new file mode 100644 index 0000000..e8b3252 --- /dev/null +++ b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Contents.json @@ -0,0 +1,53 @@ +{ + "assets" : [ + { + "filename" : "Circular.imageset", + "idiom" : "watch", + "role" : "circular" + }, + { + "filename" : "Extra Large.imageset", + "idiom" : "watch", + "role" : "extra-large" + }, + { + "filename" : "Graphic Bezel.imageset", + "idiom" : "watch", + "role" : "graphic-bezel" + }, + { + "filename" : "Graphic Circular.imageset", + "idiom" : "watch", + "role" : "graphic-circular" + }, + { + "filename" : "Graphic Corner.imageset", + "idiom" : "watch", + "role" : "graphic-corner" + }, + { + "filename" : "Graphic Extra Large.imageset", + "idiom" : "watch", + "role" : "graphic-extra-large" + }, + { + "filename" : "Graphic Large Rectangular.imageset", + "idiom" : "watch", + "role" : "graphic-large-rectangular" + }, + { + "filename" : "Modular.imageset", + "idiom" : "watch", + "role" : "modular" + }, + { + "filename" : "Utilitarian.imageset", + "idiom" : "watch", + "role" : "utilitarian" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json new file mode 100644 index 0000000..26454ca --- /dev/null +++ b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "auto-scaling" : "auto" + } +} diff --git a/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json new file mode 100644 index 0000000..6e184db --- /dev/null +++ b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json @@ -0,0 +1,20 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "auto-scaling" : "auto" + } +} diff --git a/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json new file mode 100644 index 0000000..6e184db --- /dev/null +++ b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json @@ -0,0 +1,20 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "auto-scaling" : "auto" + } +} diff --git a/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json new file mode 100644 index 0000000..6e184db --- /dev/null +++ b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json @@ -0,0 +1,20 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "auto-scaling" : "auto" + } +} diff --git a/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json new file mode 100644 index 0000000..26454ca --- /dev/null +++ b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Extra Large.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "auto-scaling" : "auto" + } +} diff --git a/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json new file mode 100644 index 0000000..6e184db --- /dev/null +++ b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json @@ -0,0 +1,20 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "auto-scaling" : "auto" + } +} diff --git a/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json new file mode 100644 index 0000000..26454ca --- /dev/null +++ b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "auto-scaling" : "auto" + } +} diff --git a/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json new file mode 100644 index 0000000..26454ca --- /dev/null +++ b/Sesame-Watch Watch App/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : "<=145" + }, + { + "idiom" : "watch", + "scale" : "2x", + "screen-width" : ">183" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "auto-scaling" : "auto" + } +} diff --git a/Sesame-Watch Watch App/ComplicationController.swift b/Sesame-Watch Watch App/ComplicationController.swift new file mode 100644 index 0000000..30c86dc --- /dev/null +++ b/Sesame-Watch Watch App/ComplicationController.swift @@ -0,0 +1,10 @@ +import Foundation +import ClockKit + + +class ComplicationController: NSObject, CLKComplicationDataSource { + + func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) { + // TODO: Finish implementing this required method. + } +} diff --git a/Sesame-Watch Watch App/ContentView.swift b/Sesame-Watch Watch App/ContentView.swift index dc6e535..f3672ce 100644 --- a/Sesame-Watch Watch App/ContentView.swift +++ b/Sesame-Watch Watch App/ContentView.swift @@ -3,6 +3,9 @@ import SFSafeSymbols import CryptoKit struct ContentView: View { + + @Binding + var didLaunchFromComplication: Bool @AppStorage("server") var serverPath: String = "https://christophhagen.de/sesame/" @@ -27,6 +30,9 @@ struct ContentView: View { @State var state: ClientState = .noKeyAvailable + + @State + var stateResetTimer: Timer? let server = Client() @@ -53,18 +59,31 @@ struct ContentView: View { .padding() .onTapGesture(perform: mainButtonPressed) .disabled(!state.allowsAction) - Text(state.actionText) - .font(.subheadline) + if state == .waitingForResponse { + ProgressView() + .progressViewStyle(CircularProgressViewStyle()) + .frame(width: 20, height: 20) + } else { + Text(state.actionText) + .font(.subheadline) + } } Spacer() } .background(state.color) .animation(.easeInOut, value: state.color) .onAppear { - if keyManager.hasAllKeys, state == .noKeyAvailable { + if state == .noKeyAvailable, keyManager.hasAllKeys { state = .ready } } + .onChange(of: didLaunchFromComplication) { launched in + guard launched else { + return + } + didLaunchFromComplication = false + mainButtonPressed() + } } func mainButtonPressed() { @@ -83,13 +102,14 @@ struct ContentView: View { device: deviceId) let message = content.authenticate(using: key) let historyItem = HistoryItem(sent: message.content, date: sentTime, local: useLocalConnection) + preventStateReset() state = .waitingForResponse print("Sending message \(count)") Task { let (newState, responseMessage) = await send(message, authToken: token) let receivedTime = Date.now - //responseTime = receivedTime state = newState + scheduleStateReset() let finishedItem = historyItem.didReceive(response: newState, date: receivedTime, message: responseMessage?.content) guard let key = keyManager.get(.deviceKey) else { save(historyItem: finishedItem.notAuthenticated()) @@ -108,6 +128,25 @@ struct ContentView: View { save(historyItem: finishedItem) } } + + private func preventStateReset() { + stateResetTimer?.invalidate() + stateResetTimer = nil + } + + private func scheduleStateReset() { + stateResetTimer?.invalidate() + stateResetTimer = Timer.scheduledTimer(withTimeInterval: 8.0, repeats: false) { _ in + DispatchQueue.main.async { + resetState() + } + } + } + + private func resetState() { + state = keyManager.hasAllKeys ? .ready : .noKeyAvailable + preventStateReset() + } private func send(_ message: Message, authToken: Data) async -> (state: ClientState, response: Message?) { if useLocalConnection { @@ -128,7 +167,7 @@ struct ContentView: View { struct ContentView_Previews: PreviewProvider { static var previews: some View { - ContentView() + ContentView(didLaunchFromComplication: .constant(false)) .environmentObject(KeyManagement()) } } diff --git a/Sesame-Watch Watch App/Sesame_WatchApp.swift b/Sesame-Watch Watch App/Sesame_WatchApp.swift index bef560b..8b83d2e 100644 --- a/Sesame-Watch Watch App/Sesame_WatchApp.swift +++ b/Sesame-Watch Watch App/Sesame_WatchApp.swift @@ -4,17 +4,30 @@ import SwiftUI struct Sesame_Watch_Watch_AppApp: App { let keyManagement = KeyManagement() + + @State + var selected: Int = 0 + + @State + var didLaunchFromComplication = false var body: some Scene { WindowGroup { - TabView { - ContentView() + TabView(selection: $selected) { + ContentView(didLaunchFromComplication: $didLaunchFromComplication) .environmentObject(keyManagement) + .tag(1) SettingsView() .environmentObject(keyManagement) + .tag(2) HistoryView(history: HistoryManager()) + .tag(3) } .tabViewStyle(PageTabViewStyle()) + .onOpenURL { url in + selected = 0 + didLaunchFromComplication = true + } } } } diff --git a/Sesame-Widget/Assets.xcassets/AccentColor.colorset/Contents.json b/Sesame-Widget/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Sesame-Widget/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sesame-Widget/Assets.xcassets/AppIcon.appiconset/Contents.json b/Sesame-Widget/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..49c81cd --- /dev/null +++ b/Sesame-Widget/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "watchos", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sesame-Widget/Assets.xcassets/Contents.json b/Sesame-Widget/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Sesame-Widget/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sesame-Widget/Assets.xcassets/WidgetBackground.colorset/Contents.json b/Sesame-Widget/Assets.xcassets/WidgetBackground.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Sesame-Widget/Assets.xcassets/WidgetBackground.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Sesame-Widget/Info.plist b/Sesame-Widget/Info.plist new file mode 100644 index 0000000..0f118fb --- /dev/null +++ b/Sesame-Widget/Info.plist @@ -0,0 +1,11 @@ + + + + + NSExtension + + NSExtensionPointIdentifier + com.apple.widgetkit-extension + + + diff --git a/Sesame-Widget/Sesame_Widget.swift b/Sesame-Widget/Sesame_Widget.swift new file mode 100644 index 0000000..712547b --- /dev/null +++ b/Sesame-Widget/Sesame_Widget.swift @@ -0,0 +1,58 @@ +import WidgetKit +import SwiftUI +import SFSafeSymbols + +struct Provider: TimelineProvider { + + func placeholder(in context: Context) -> SimpleEntry { + SimpleEntry(date: Date()) + } + + func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) { + let entry = SimpleEntry(date: Date()) + completion(entry) + } + + func getTimeline(in context: Context, completion: @escaping (Timeline) -> ()) { + let entries = [Entry(date: .now), Entry(date: .distantFuture)] + completion(Timeline(entries: entries, policy: .atEnd)) + } +} + +struct SimpleEntry: TimelineEntry { + let date: Date +} + +struct Sesame_WidgetEntryView : View { + + var entry: Provider.Entry + + var body: some View { + Image(systemSymbol: .lock) + .resizable() + .aspectRatio(contentMode: .fit) + .padding() + .fontWeight(.thin) + .widgetURL(URL(string: "sesame:///open")!) + } +} + +@main +struct Sesame_Widget: Widget { + let kind: String = "SesameOpen" + + var body: some WidgetConfiguration { + StaticConfiguration(kind: kind, provider: Provider()) { entry in + Sesame_WidgetEntryView(entry: entry) + } + .configurationDisplayName("Open") + .description("This widget can be used to unlock the door with a single tap.") + } +} + +struct Sesame_Widget_Previews: PreviewProvider { + static var previews: some View { + Sesame_WidgetEntryView(entry: SimpleEntry(date: Date())) + .previewContext(WidgetPreviewContext(family: .accessoryRectangular)) + } +} diff --git a/Sesame.xcodeproj/project.pbxproj b/Sesame.xcodeproj/project.pbxproj index f1def8c..88f95bd 100644 --- a/Sesame.xcodeproj/project.pbxproj +++ b/Sesame.xcodeproj/project.pbxproj @@ -54,6 +54,13 @@ E24EE77427FF95920011CFD2 /* DeviceResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = E24EE77327FF95920011CFD2 /* DeviceResponse.swift */; }; E24EE77727FF95C00011CFD2 /* NIOCore in Frameworks */ = {isa = PBXBuildFile; productRef = E24EE77627FF95C00011CFD2 /* NIOCore */; }; E24EE77927FF95E00011CFD2 /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = E24EE77827FF95E00011CFD2 /* Message.swift */; }; + E268E04D2A852AFE00185913 /* ComplicationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E268E04C2A852AFE00185913 /* ComplicationController.swift */; }; + E268E0822A85302000185913 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E268E0532A852F8E00185913 /* WidgetKit.framework */; }; + E268E0832A85302000185913 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E268E0552A852F8E00185913 /* SwiftUI.framework */; }; + E268E0862A85302000185913 /* Sesame_Widget.swift in Sources */ = {isa = PBXBuildFile; fileRef = E268E0852A85302000185913 /* Sesame_Widget.swift */; }; + E268E0882A85302000185913 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E268E0872A85302000185913 /* Assets.xcassets */; }; + E268E08C2A85302000185913 /* Sesame-WidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = E268E0812A85302000185913 /* Sesame-WidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + E268E0912A85318500185913 /* SFSafeSymbols in Frameworks */ = {isa = PBXBuildFile; productRef = E268E0902A85318500185913 /* SFSafeSymbols */; }; E28DED2D281E840B00259690 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E28DED2C281E840B00259690 /* SettingsView.swift */; }; E28DED2F281E8A0500259690 /* SingleKeyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E28DED2E281E8A0500259690 /* SingleKeyView.swift */; }; E28DED31281EAE9100259690 /* HistoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E28DED30281EAE9100259690 /* HistoryView.swift */; }; @@ -65,6 +72,30 @@ E2C5C1F8281E769F00769EF6 /* ServerMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2C5C1F7281E769F00769EF6 /* ServerMessage.swift */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + E268E08A2A85302000185913 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 884A45AB279F48C100D6E650 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E268E0802A85302000185913; + remoteInfo = "Sesame-WidgetExtension"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + E268E0662A852F8E00185913 /* Embed Foundation Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + E268E08C2A85302000185913 /* Sesame-WidgetExtension.appex in Embed Foundation Extensions */, + ); + name = "Embed Foundation Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ 884A45B3279F48C100D6E650 /* Sesame.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Sesame.app; sourceTree = BUILT_PRODUCTS_DIR; }; 884A45B6279F48C100D6E650 /* SesameApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SesameApp.swift; sourceTree = ""; }; @@ -97,6 +128,13 @@ E24EE77127FDCCC00011CFD2 /* Data+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Data+Extensions.swift"; sourceTree = ""; }; E24EE77327FF95920011CFD2 /* DeviceResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceResponse.swift; sourceTree = ""; }; E24EE77827FF95E00011CFD2 /* Message.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Message.swift; sourceTree = ""; }; + E268E04C2A852AFE00185913 /* ComplicationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComplicationController.swift; sourceTree = ""; }; + E268E0532A852F8E00185913 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; + E268E0552A852F8E00185913 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; + E268E0812A85302000185913 /* Sesame-WidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Sesame-WidgetExtension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + E268E0852A85302000185913 /* Sesame_Widget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Sesame_Widget.swift; sourceTree = ""; }; + E268E0872A85302000185913 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + E268E0892A85302000185913 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; E28DED2C281E840B00259690 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; E28DED2E281E8A0500259690 /* SingleKeyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleKeyView.swift; sourceTree = ""; }; E28DED30281EAE9100259690 /* HistoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryView.swift; sourceTree = ""; }; @@ -130,6 +168,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E268E07E2A85302000185913 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E268E0912A85318500185913 /* SFSafeSymbols in Frameworks */, + E268E0832A85302000185913 /* SwiftUI.framework in Frameworks */, + E268E0822A85302000185913 /* WidgetKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -138,6 +186,7 @@ children = ( 884A45B5279F48C100D6E650 /* Sesame */, 88E197B029EDC9BC00BF1D19 /* Sesame-Watch Watch App */, + E268E0842A85302000185913 /* Sesame-Widget */, 884A45B4279F48C100D6E650 /* Products */, 88E197CA29EDCD4900BF1D19 /* Frameworks */, ); @@ -148,6 +197,7 @@ children = ( 884A45B3279F48C100D6E650 /* Sesame.app */, 88E197AC29EDC9BC00BF1D19 /* Sesame-Watch Watch App.app */, + E268E0812A85302000185913 /* Sesame-WidgetExtension.appex */, ); name = Products; sourceTree = ""; @@ -196,6 +246,7 @@ 88E197B529EDC9BD00BF1D19 /* Assets.xcassets */, 88E197B729EDC9BD00BF1D19 /* Preview Content */, 88E197D629EDCFE800BF1D19 /* Date+Extensions.swift */, + E268E04C2A852AFE00185913 /* ComplicationController.swift */, ); path = "Sesame-Watch Watch App"; sourceTree = ""; @@ -211,6 +262,8 @@ 88E197CA29EDCD4900BF1D19 /* Frameworks */ = { isa = PBXGroup; children = ( + E268E0532A852F8E00185913 /* WidgetKit.framework */, + E268E0552A852F8E00185913 /* SwiftUI.framework */, ); name = Frameworks; sourceTree = ""; @@ -230,6 +283,16 @@ path = Settings; sourceTree = ""; }; + E268E0842A85302000185913 /* Sesame-Widget */ = { + isa = PBXGroup; + children = ( + E268E0852A85302000185913 /* Sesame_Widget.swift */, + E268E0872A85302000185913 /* Assets.xcassets */, + E268E0892A85302000185913 /* Info.plist */, + ); + path = "Sesame-Widget"; + sourceTree = ""; + }; E2C5C1D92806FE4A00769EF6 /* API */ = { isa = PBXGroup; children = ( @@ -276,10 +339,12 @@ 88E197A829EDC9BC00BF1D19 /* Sources */, 88E197A929EDC9BC00BF1D19 /* Frameworks */, 88E197AA29EDC9BC00BF1D19 /* Resources */, + E268E0662A852F8E00185913 /* Embed Foundation Extensions */, ); buildRules = ( ); dependencies = ( + E268E08B2A85302000185913 /* PBXTargetDependency */, ); name = "Sesame-Watch Watch App"; packageProductDependencies = ( @@ -291,6 +356,26 @@ productReference = 88E197AC29EDC9BC00BF1D19 /* Sesame-Watch Watch App.app */; productType = "com.apple.product-type.application"; }; + E268E0802A85302000185913 /* Sesame-WidgetExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = E268E08D2A85302000185913 /* Build configuration list for PBXNativeTarget "Sesame-WidgetExtension" */; + buildPhases = ( + E268E07D2A85302000185913 /* Sources */, + E268E07E2A85302000185913 /* Frameworks */, + E268E07F2A85302000185913 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Sesame-WidgetExtension"; + packageProductDependencies = ( + E268E0902A85318500185913 /* SFSafeSymbols */, + ); + productName = "Sesame-WidgetExtension"; + productReference = E268E0812A85302000185913 /* Sesame-WidgetExtension.appex */; + productType = "com.apple.product-type.app-extension"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -308,6 +393,9 @@ 88E197AB29EDC9BC00BF1D19 = { CreatedOnToolsVersion = 14.3; }; + E268E0802A85302000185913 = { + CreatedOnToolsVersion = 14.3.1; + }; }; }; buildConfigurationList = 884A45AE279F48C100D6E650 /* Build configuration list for PBXProject "Sesame" */; @@ -330,6 +418,7 @@ targets = ( 884A45B2279F48C100D6E650 /* Sesame */, 88E197AB29EDC9BC00BF1D19 /* Sesame-Watch Watch App */, + E268E0802A85302000185913 /* Sesame-WidgetExtension */, ); }; /* End PBXProject section */ @@ -353,6 +442,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E268E07F2A85302000185913 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E268E0882A85302000185913 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -411,13 +508,30 @@ E240654D2A8155A3009C1AD8 /* SettingsListToggleItem.swift in Sources */, E24065552A819663009C1AD8 /* SettingsNumberInputView.swift in Sources */, E240655E2A822E97009C1AD8 /* HistoryListRow.swift in Sources */, + E268E04D2A852AFE00185913 /* ComplicationController.swift in Sources */, 88E197D829EDD13B00BF1D19 /* SymmetricKey+Extensions.swift in Sources */, E240655C2A822C8E009C1AD8 /* HistoryManager.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; + E268E07D2A85302000185913 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E268E0862A85302000185913 /* Sesame_Widget.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + E268E08B2A85302000185913 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = E268E0802A85302000185913 /* Sesame-WidgetExtension */; + targetProxy = E268E08A2A85302000185913 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ 884A45BF279F48C300D6E650 /* Debug */ = { isa = XCBuildConfiguration; @@ -605,6 +719,7 @@ 88E197BD29EDC9BD00BF1D19 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; @@ -636,6 +751,7 @@ 88E197BE29EDC9BD00BF1D19 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; @@ -664,6 +780,68 @@ }; name = Release; }; + E268E08E2A85302000185913 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = H8WR4M6QQ4; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "Sesame-Widget/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = "Sesame-Widget"; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + "@executable_path/../../../../Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "de.christophhagen.Sesame-Watch.watchkitapp.Sesame-Widget"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 9.4; + }; + name = Debug; + }; + E268E08F2A85302000185913 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = H8WR4M6QQ4; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "Sesame-Widget/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = "Sesame-Widget"; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + "@executable_path/../../../../Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "de.christophhagen.Sesame-Watch.watchkitapp.Sesame-Widget"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 9.4; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -694,6 +872,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + E268E08D2A85302000185913 /* Build configuration list for PBXNativeTarget "Sesame-WidgetExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E268E08E2A85302000185913 /* Debug */, + E268E08F2A85302000185913 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ @@ -754,6 +941,11 @@ package = E24EE77527FF95C00011CFD2 /* XCRemoteSwiftPackageReference "swift-nio" */; productName = NIOCore; }; + E268E0902A85318500185913 /* SFSafeSymbols */ = { + isa = XCSwiftPackageProductDependency; + package = 8864665029E5939C004FE2BE /* XCRemoteSwiftPackageReference "SFSafeSymbols" */; + productName = SFSafeSymbols; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 884A45AB279F48C100D6E650 /* Project object */; diff --git a/Sesame.xcodeproj/project.xcworkspace/xcuserdata/ch.xcuserdatad/UserInterfaceState.xcuserstate b/Sesame.xcodeproj/project.xcworkspace/xcuserdata/ch.xcuserdatad/UserInterfaceState.xcuserstate index bd3049875a7cb9106fe13a6447ec0561d1d5d056..c450514e26d371dfea48b548c1f570b5dc0b1956 100644 GIT binary patch literal 142769 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 Watch App.xcscheme_^#shared#^_ orderHint - 0 + 1 + + Sesame-WidgetExtension.xcscheme_^#shared#^_ + + orderHint + 2 Sesame.xcscheme_^#shared#^_ orderHint - 1 + 0 diff --git a/Sesame/ClientState.swift b/Sesame/ClientState.swift index 9fdae4b..746d73c 100644 --- a/Sesame/ClientState.swift +++ b/Sesame/ClientState.swift @@ -111,7 +111,57 @@ enum ClientState { } var actionText: String { - "Unlock" + switch self { + case .noKeyAvailable: + return "No key" + case .requestingStatus: + return "Checking..." + case .deviceNotAvailable(let connectionError): + switch connectionError { + case .serverNotReached: + return "Server not found" + case .deviceDisconnected: + return "Device disconnected" + } + case .ready: + return "Unlock" + case .waitingForResponse: + return "Unlocking..." + case .messageRejected(let rejectionCause): + switch rejectionCause { + case .invalidDeviceId: + return "Invalid device ID" + case .invalidCounter: + return "Invalid counter" + case .invalidTime: + return "Invalid timestamp" + case .invalidAuthentication: + return "Invalid signature" + case .timeout: + return "Device not responding" + case .missingKey: + return "Device key missing" + } + case .responseRejected(let rejectionCause): + switch rejectionCause { + case .invalidDeviceId: + return "Invalid device id (response)" + case .invalidCounter: + return "Invalid counter (response)" + case .invalidTime: + return "Invalid time (response)" + case .invalidAuthentication: + return "Invalid signature (response)" + case .timeout: + return "Timed out (response)" + case .missingKey: + return "Missing key (response)" + } + case .openSesame: + return "Unlocked" + case .internalError(let string): + return string + } } var requiresDescription: Bool { @@ -144,7 +194,7 @@ enum ClientState { var allowsAction: Bool { switch self { - case .noKeyAvailable: + case .noKeyAvailable, .waitingForResponse: return false default: return true