From ad1ab30b9490d75c435c7f5c91a760e3f542910e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20B=C3=B6ttger?= Date: Sat, 20 Dec 2025 20:20:18 +0100 Subject: [PATCH] Add GitHub release target --- QuickDrop copy-Info.plist | 21 + QuickDrop.xcodeproj/project.pbxproj | 754 +++++++++++++++++- .../xcschemes/QuickDropGitHub.xcscheme | 78 ++ .../QuickDropShareExtensionGitHub.xcscheme | 71 ++ QuickDrop/AppDelegate.swift | 6 +- QuickDrop/InfoPlist.xcstrings | 2 +- QuickDrop/Localizable.xcstrings | 233 ++++++ QuickDrop/Settings.swift | 4 + .../Introduction/IntroductionSplashView.swift | 17 +- QuickDrop/View/WelcomeScreen.swift | 5 +- QuickDropShareExtension copy-Info.plist | 20 + QuickDropiOS/Configuration.swift | 2 + 12 files changed, 1205 insertions(+), 8 deletions(-) create mode 100644 QuickDrop copy-Info.plist create mode 100644 QuickDrop.xcodeproj/xcshareddata/xcschemes/QuickDropGitHub.xcscheme create mode 100644 QuickDrop.xcodeproj/xcshareddata/xcschemes/QuickDropShareExtensionGitHub.xcscheme create mode 100644 QuickDropShareExtension copy-Info.plist diff --git a/QuickDrop copy-Info.plist b/QuickDrop copy-Info.plist new file mode 100644 index 0000000..d8fc74c --- /dev/null +++ b/QuickDrop copy-Info.plist @@ -0,0 +1,21 @@ + + + + + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLName + com.leonboettger.neardrop + CFBundleURLSchemes + + quickdrop + + + + UIDesignRequiresCompatibility + + + diff --git a/QuickDrop.xcodeproj/project.pbxproj b/QuickDrop.xcodeproj/project.pbxproj index 16c928e..b9edd91 100644 --- a/QuickDrop.xcodeproj/project.pbxproj +++ b/QuickDrop.xcodeproj/project.pbxproj @@ -45,6 +45,125 @@ EB16B77A2E59BAA1007D9792 /* AppGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB16B7762E59BA9F007D9792 /* AppGroup.swift */; }; EB2F9BFE2DA05F48004010A2 /* BezelNotification in Frameworks */ = {isa = PBXBuildFile; productRef = EB2F9BFD2DA05F48004010A2 /* BezelNotification */; }; EB3643602D73A2A2009CDFF8 /* AudioManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB36435F2D73A29F009CDFF8 /* AudioManager.swift */; }; + EB3B9F002EF7150400D6704E /* WelcomeScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBD2A2162D2860BE00BCB8E2 /* WelcomeScreen.swift */; }; + EB3B9F012EF7150400D6704E /* ChangeDeviceNameModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBA1BB1C2EF1F5650068E46E /* ChangeDeviceNameModifier.swift */; }; + EB3B9F022EF7150400D6704E /* AudioManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB36435F2D73A29F009CDFF8 /* AudioManager.swift */; }; + EB3B9F032EF7150400D6704E /* LaunchAtLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB5C383E2E38C49D0052EFD7 /* LaunchAtLogin.swift */; }; + EB3B9F042EF7150400D6704E /* SleepManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB2B41E32DC63AC80070FC39 /* SleepManager.swift */; }; + EB3B9F052EF7150400D6704E /* QuickDropToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB869DB42E92AA33009AAAD4 /* QuickDropToastView.swift */; }; + EB3B9F062EF7150400D6704E /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB2F9BFA2DA04B67004010A2 /* Helpers.swift */; }; + EB3B9F072EF7150400D6704E /* TrustedDevicesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB05DFBD2E59FC8000EF567A /* TrustedDevicesView.swift */; }; + EB3B9F082EF7150400D6704E /* TrustStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB16B6162E58B4C8007D9792 /* TrustStore.swift */; }; + EB3B9F092EF7150400D6704E /* ErrorAlertHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC05C5A2E33936C00EECC18 /* ErrorAlertHandler.swift */; }; + EB3B9F0A2EF7150400D6704E /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1325D22E701D8900FD749C /* Settings.swift */; }; + EB3B9F0B2EF7150400D6704E /* Zip.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBCC27F82D80C9F70079C478 /* Zip.swift */; }; + EB3B9F0C2EF7150400D6704E /* ukey.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2829E18CB500A442DA /* ukey.pb.swift */; }; + EB3B9F0D2EF7150400D6704E /* securemessage.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2D29E18CB500A442DA /* securemessage.pb.swift */; }; + EB3B9F0E2EF7150400D6704E /* offline_wire_formats.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2B29E18CB500A442DA /* offline_wire_formats.pb.swift */; }; + EB3B9F0F2EF7150400D6704E /* device_to_device_messages.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2A29E18CB500A442DA /* device_to_device_messages.pb.swift */; }; + EB3B9F102EF7150400D6704E /* wire_format.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2929E18CB500A442DA /* wire_format.pb.swift */; }; + EB3B9F112EF7150400D6704E /* IdentityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB16B6112E58B4B9007D9792 /* IdentityManager.swift */; }; + EB3B9F122EF7150400D6704E /* securegcm.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2C29E18CB500A442DA /* securegcm.pb.swift */; }; + EB3B9F132EF7150400D6704E /* ReceiveModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB97A00E2E511120008B8C5C /* ReceiveModel.swift */; }; + EB3B9F142EF7150400D6704E /* NearbyConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 698DFAE529E2F91A0064F247 /* NearbyConnection.swift */; }; + EB3B9F152EF7150400D6704E /* DataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB5C36E82E3546100052EFD7 /* DataModel.swift */; }; + EB3B9F162EF7150400D6704E /* OutboundNearbyConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 691F53BD2ABF03820089FD92 /* OutboundNearbyConnection.swift */; }; + EB3B9F172EF7150400D6704E /* InboundNearbyConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2229E17F0400A442DA /* InboundNearbyConnection.swift */; }; + EB3B9F182EF7150400D6704E /* NearbyConnectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A1E29E0C0B300A442DA /* NearbyConnectionManager.swift */; }; + EB3B9F192EF7150400D6704E /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB979F8D2E50CA23008B8C5C /* Configuration.swift */; }; + EB3B9F1A2EF7150400D6704E /* AttachmentDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB950B762E521712002D68FA /* AttachmentDetails.swift */; }; + EB3B9F1B2EF7150400D6704E /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB886E512E4E19390052B7D9 /* HKDF.swift */; }; + EB3B9F1C2EF7150400D6704E /* SmallSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB96ED8A2D7F7CF4004B3FF1 /* SmallSheetView.swift */; }; + EB3B9F1D2EF7150400D6704E /* License.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB886E662E4F2F7C0052B7D9 /* License.swift */; }; + EB3B9F1E2EF7150400D6704E /* LicenseWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB7F54132D78E9E400989564 /* LicenseWindow.swift */; }; + EB3B9F1F2EF7150400D6704E /* EXIFUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB4F9D1E2EC26C7C00A74A0F /* EXIFUtils.swift */; }; + EB3B9F202EF7150400D6704E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A1129E0BF5100A442DA /* AppDelegate.swift */; }; + EB3B9F212EF7150400D6704E /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB6F62D62D91F4AC00534EC2 /* SettingsView.swift */; }; + EB3B9F222EF7150400D6704E /* TutorialView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB7F54112D78E95C00989564 /* TutorialView.swift */; }; + EB3B9F232EF7150400D6704E /* sharing_enums.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB99257F2E45D53E00357055 /* sharing_enums.pb.swift */; }; + EB3B9F242EF7150400D6704E /* PhotoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBBEE1452EC9D92F00AA7831 /* PhotoManager.swift */; }; + EB3B9F252EF7150400D6704E /* Localized.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB96ED8E2D7F8103004B3FF1 /* Localized.swift */; }; + EB3B9F262EF7150400D6704E /* AppGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB16B7762E59BA9F007D9792 /* AppGroup.swift */; }; + EB3B9F272EF7150400D6704E /* ApIsolationIssueView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC05C7D2E33B58300EECC18 /* ApIsolationIssueView.swift */; }; + EB3B9F282EF7150400D6704E /* FirewallIssueView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC05C7E2E33B58300EECC18 /* FirewallIssueView.swift */; }; + EB3B9F292EF7150400D6704E /* SendToExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1325F72E70287C00FD749C /* SendToExtension.swift */; }; + EB3B9F2A2EF7150400D6704E /* ApIsolationTester.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1325E92E7025D900FD749C /* ApIsolationTester.swift */; }; + EB3B9F2B2EF7150400D6704E /* ActiveNetworkInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1325E72E7025D900FD749C /* ActiveNetworkInterface.swift */; }; + EB3B9F2C2EF7150400D6704E /* ApIsolation6Tester.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1325E82E7025D900FD749C /* ApIsolation6Tester.swift */; }; + EB3B9F2D2EF7150400D6704E /* IssueView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC05C7F2E33B58300EECC18 /* IssueView.swift */; }; + EB3B9F2E2EF7150400D6704E /* NetworkFilterIssueView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC05C802E33B58300EECC18 /* NetworkFilterIssueView.swift */; }; + EB3B9F2F2EF7150400D6704E /* IntroductionSplashView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB7A95F22EF6E1BE0021111B /* IntroductionSplashView.swift */; }; + EB3B9F312EF7150400D6704E /* QRCode in Frameworks */ = {isa = PBXBuildFile; productRef = EB3B9EF92EF7150400D6704E /* QRCode */; }; + EB3B9F322EF7150400D6704E /* BezelNotification in Frameworks */ = {isa = PBXBuildFile; productRef = EB3B9EF32EF7150400D6704E /* BezelNotification */; }; + EB3B9F332EF7150400D6704E /* SwiftECC in Frameworks */ = {isa = PBXBuildFile; productRef = EB3B9EF72EF7150400D6704E /* SwiftECC */; }; + EB3B9F342EF7150400D6704E /* SwiftProtobuf in Frameworks */ = {isa = PBXBuildFile; productRef = EB3B9EF52EF7150400D6704E /* SwiftProtobuf */; }; + EB3B9F352EF7150400D6704E /* LUI in Frameworks */ = {isa = PBXBuildFile; productRef = EB3B9EFB2EF7150400D6704E /* LUI */; }; + EB3B9F362EF7150400D6704E /* ZIPFoundation in Frameworks */ = {isa = PBXBuildFile; productRef = EB3B9EFD2EF7150400D6704E /* ZIPFoundation */; }; + EB3B9F382EF7150400D6704E /* Config.storekit in Resources */ = {isa = PBXBuildFile; fileRef = EBE5FF4A2EDB8D4B0019B380 /* Config.storekit */; }; + EB3B9F392EF7150400D6704E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 69DA9A1329E0BF5200A442DA /* Assets.xcassets */; }; + EB3B9F3A2EF7150400D6704E /* License.txt in Resources */ = {isa = PBXBuildFile; fileRef = EB5C36E32E34EC0E0052EFD7 /* License.txt */; }; + EB3B9F3B2EF7150400D6704E /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = EB5C36922E34EBBD0052EFD7 /* Localizable.xcstrings */; }; + EB3B9F3C2EF7150400D6704E /* timeIsNow.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = EBC05C8A2E33B59E00EECC18 /* timeIsNow.mp3 */; }; + EB3B9F3D2EF7150400D6704E /* QuickDropIcon.icon in Resources */ = {isa = PBXBuildFile; fileRef = EB721F232E75AFA900F2099F /* QuickDropIcon.icon */; }; + EB3B9F3E2EF7150400D6704E /* justMaybe.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = EB5C38382E38C1F60052EFD7 /* justMaybe.mp3 */; }; + EB3B9F3F2EF7150400D6704E /* InfoPlist.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = EB6E6B202ECBA95000E71D57 /* InfoPlist.xcstrings */; }; + EB3B9F402EF7150400D6704E /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = EB7654772E525ACC006B4AA3 /* MainMenu.xib */; }; + EB3B9F4C2EF7151900D6704E /* License.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB886E662E4F2F7C0052B7D9 /* License.swift */; }; + EB3B9F4D2EF7151900D6704E /* Localized.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB96ED8E2D7F8103004B3FF1 /* Localized.swift */; }; + EB3B9F4E2EF7151900D6704E /* SendToExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1325F72E70287C00FD749C /* SendToExtension.swift */; }; + EB3B9F4F2EF7151900D6704E /* TrustStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB16B6162E58B4C8007D9792 /* TrustStore.swift */; }; + EB3B9F502EF7151900D6704E /* HKDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB886E512E4E19390052B7D9 /* HKDF.swift */; }; + EB3B9F512EF7151900D6704E /* NetworkFilterIssueView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC05C802E33B58300EECC18 /* NetworkFilterIssueView.swift */; }; + EB3B9F522EF7151900D6704E /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB979F8D2E50CA23008B8C5C /* Configuration.swift */; }; + EB3B9F532EF7151900D6704E /* IssueView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC05C7F2E33B58300EECC18 /* IssueView.swift */; }; + EB3B9F542EF7151900D6704E /* FirewallIssueView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC05C7E2E33B58300EECC18 /* FirewallIssueView.swift */; }; + EB3B9F552EF7151900D6704E /* ApIsolationIssueView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC05C7D2E33B58300EECC18 /* ApIsolationIssueView.swift */; }; + EB3B9F562EF7151900D6704E /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 699DEBA52AB0573200115D22 /* ShareViewController.swift */; }; + EB3B9F572EF7151900D6704E /* SmallSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB96ED8A2D7F7CF4004B3FF1 /* SmallSheetView.swift */; }; + EB3B9F582EF7151900D6704E /* Zip.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBCC27F82D80C9F70079C478 /* Zip.swift */; }; + EB3B9F592EF7151900D6704E /* securemessage.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2D29E18CB500A442DA /* securemessage.pb.swift */; }; + EB3B9F5A2EF7151900D6704E /* securegcm.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2C29E18CB500A442DA /* securegcm.pb.swift */; }; + EB3B9F5B2EF7151900D6704E /* wire_format.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2929E18CB500A442DA /* wire_format.pb.swift */; }; + EB3B9F5C2EF7151900D6704E /* ukey.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2829E18CB500A442DA /* ukey.pb.swift */; }; + EB3B9F5D2EF7151900D6704E /* device_to_device_messages.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2A29E18CB500A442DA /* device_to_device_messages.pb.swift */; }; + EB3B9F5E2EF7151900D6704E /* EXIFUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB4F9D1E2EC26C7C00A74A0F /* EXIFUtils.swift */; }; + EB3B9F5F2EF7151900D6704E /* Attachments.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB950B732E520954002D68FA /* Attachments.swift */; }; + EB3B9F602EF7151900D6704E /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1325D22E701D8900FD749C /* Settings.swift */; }; + EB3B9F612EF7151900D6704E /* AppGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB16B7762E59BA9F007D9792 /* AppGroup.swift */; }; + EB3B9F622EF7151900D6704E /* AudioManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB36435F2D73A29F009CDFF8 /* AudioManager.swift */; }; + EB3B9F632EF7151900D6704E /* offline_wire_formats.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2B29E18CB500A442DA /* offline_wire_formats.pb.swift */; }; + EB3B9F642EF7151900D6704E /* IdentityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB16B6112E58B4B9007D9792 /* IdentityManager.swift */; }; + EB3B9F652EF7151900D6704E /* ErrorAlertHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBC05C5A2E33936C00EECC18 /* ErrorAlertHandler.swift */; }; + EB3B9F662EF7151900D6704E /* DeviceListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 691F53B92ABB70840089FD92 /* DeviceListCell.swift */; }; + EB3B9F672EF7151900D6704E /* LaunchAtLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB5C383E2E38C49D0052EFD7 /* LaunchAtLogin.swift */; }; + EB3B9F682EF7151900D6704E /* SleepManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB2B41E32DC63AC80070FC39 /* SleepManager.swift */; }; + EB3B9F692EF7151900D6704E /* AttachmentDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB950B762E521712002D68FA /* AttachmentDetails.swift */; }; + EB3B9F6A2EF7151900D6704E /* OutboundNearbyConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 691F53BD2ABF03820089FD92 /* OutboundNearbyConnection.swift */; }; + EB3B9F6B2EF7151900D6704E /* DataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB5C36E82E3546100052EFD7 /* DataModel.swift */; }; + EB3B9F6C2EF7151900D6704E /* NearbyConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 698DFAE529E2F91A0064F247 /* NearbyConnection.swift */; }; + EB3B9F6D2EF7151900D6704E /* InboundNearbyConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A2229E17F0400A442DA /* InboundNearbyConnection.swift */; }; + EB3B9F6E2EF7151900D6704E /* NearbyConnectionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69DA9A1E29E0C0B300A442DA /* NearbyConnectionManager.swift */; }; + EB3B9F6F2EF7151900D6704E /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB2F9BFA2DA04B67004010A2 /* Helpers.swift */; }; + EB3B9F702EF7151900D6704E /* ApIsolationTester.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1325E92E7025D900FD749C /* ApIsolationTester.swift */; }; + EB3B9F712EF7151900D6704E /* ActiveNetworkInterface.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1325E72E7025D900FD749C /* ActiveNetworkInterface.swift */; }; + EB3B9F722EF7151900D6704E /* ApIsolation6Tester.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB1325E82E7025D900FD749C /* ApIsolation6Tester.swift */; }; + EB3B9F732EF7151900D6704E /* sharing_enums.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB99257F2E45D53E00357055 /* sharing_enums.pb.swift */; }; + EB3B9F7C2EF7151900D6704E /* Config.storekit in Resources */ = {isa = PBXBuildFile; fileRef = EBE5FF4A2EDB8D4B0019B380 /* Config.storekit */; }; + EB3B9F7D2EF7151900D6704E /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = EB5C36922E34EBBD0052EFD7 /* Localizable.xcstrings */; }; + EB3B9F7E2EF7151900D6704E /* License.txt in Resources */ = {isa = PBXBuildFile; fileRef = EB5C36E32E34EC0E0052EFD7 /* License.txt */; }; + EB3B9F7F2EF7151900D6704E /* DeviceListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 691F53BA2ABB70840089FD92 /* DeviceListCell.xib */; }; + EB3B9F802EF7151900D6704E /* ShareViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 699DEBA72AB0573200115D22 /* ShareViewController.xib */; }; + EB3B9F812EF7151900D6704E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 69DA9A1329E0BF5200A442DA /* Assets.xcassets */; }; + EB3B9F822EF7151900D6704E /* justMaybe.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = EB5C38382E38C1F60052EFD7 /* justMaybe.mp3 */; }; + EB3B9F832EF7151900D6704E /* InfoPlist.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = EB6E6B202ECBA95000E71D57 /* InfoPlist.xcstrings */; }; + EB3B9F842EF7151900D6704E /* timeIsNow.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = EBC05C8A2E33B59E00EECC18 /* timeIsNow.mp3 */; }; + EB3B9F8B2EF7153000D6704E /* QuickDropShareExtensionGitHub.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = EB3B9F892EF7151900D6704E /* QuickDropShareExtensionGitHub.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + EB3B9F8F2EF715A000D6704E /* SwiftProtobuf in Frameworks */ = {isa = PBXBuildFile; productRef = EB3B9F8E2EF715A000D6704E /* SwiftProtobuf */; }; + EB3B9F912EF715A000D6704E /* SwiftECC in Frameworks */ = {isa = PBXBuildFile; productRef = EB3B9F902EF715A000D6704E /* SwiftECC */; }; + EB3B9F932EF715A000D6704E /* BezelNotification in Frameworks */ = {isa = PBXBuildFile; productRef = EB3B9F922EF715A000D6704E /* BezelNotification */; }; + EB3B9F952EF715A000D6704E /* QRCode in Frameworks */ = {isa = PBXBuildFile; productRef = EB3B9F942EF715A000D6704E /* QRCode */; }; + EB3B9F972EF715A000D6704E /* LUI in Frameworks */ = {isa = PBXBuildFile; productRef = EB3B9F962EF715A000D6704E /* LUI */; }; + EB3B9F992EF715A000D6704E /* ZIPFoundation in Frameworks */ = {isa = PBXBuildFile; productRef = EB3B9F982EF715A000D6704E /* ZIPFoundation */; }; EB4F9D1F2EC26C8100A74A0F /* EXIFUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB4F9D1E2EC26C7C00A74A0F /* EXIFUtils.swift */; }; EB4F9D202EC26C8100A74A0F /* EXIFUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB4F9D1E2EC26C7C00A74A0F /* EXIFUtils.swift */; }; EB4F9D212EC26C8100A74A0F /* EXIFUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB4F9D1E2EC26C7C00A74A0F /* EXIFUtils.swift */; }; @@ -242,6 +361,13 @@ remoteGlobalIDString = 699DEBA02AB0573200115D22; remoteInfo = ShareExtension; }; + EB3B9F8C2EF7153000D6704E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 69DA9A0629E0BF5100A442DA /* Project object */; + proxyType = 1; + remoteGlobalIDString = EB3B9F4A2EF7151900D6704E; + remoteInfo = QuickDropShareExtensionGitHub; + }; EB950B352E52027F002D68FA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 69DA9A0629E0BF5100A442DA /* Project object */; @@ -293,6 +419,47 @@ name = "Embed Libraries"; runOnlyForDeploymentPostprocessing = 0; }; + EB3B9F412EF7150400D6704E /* Embed Foundation Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + EB3B9F8B2EF7153000D6704E /* QuickDropShareExtensionGitHub.appex in Embed Foundation Extensions */, + ); + name = "Embed Foundation Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; + EB3B9F432EF7150400D6704E /* Embed XPC Services */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(CONTENTS_FOLDER_PATH)/XPCServices"; + dstSubfolderSpec = 16; + files = ( + ); + name = "Embed XPC Services"; + runOnlyForDeploymentPostprocessing = 0; + }; + EB3B9F442EF7150400D6704E /* Embed Libraries */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Libraries"; + runOnlyForDeploymentPostprocessing = 0; + }; + EB3B9F852EF7151900D6704E /* Embed Libraries */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Libraries"; + runOnlyForDeploymentPostprocessing = 0; + }; EB950B382E52027F002D68FA /* Embed Foundation Extensions */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -343,6 +510,10 @@ EB2B41E32DC63AC80070FC39 /* SleepManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SleepManager.swift; sourceTree = ""; }; EB2F9BFA2DA04B67004010A2 /* Helpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Helpers.swift; sourceTree = ""; }; EB36435F2D73A29F009CDFF8 /* AudioManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioManager.swift; sourceTree = ""; }; + EB3B9F482EF7150400D6704E /* QuickDropGitHub.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = QuickDropGitHub.app; sourceTree = BUILT_PRODUCTS_DIR; }; + EB3B9F492EF7150400D6704E /* QuickDrop copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "QuickDrop copy-Info.plist"; path = "/Users/leonboettger/QuickDrop Backup with git/QuickDrop copy-Info.plist"; sourceTree = ""; }; + EB3B9F892EF7151900D6704E /* QuickDropShareExtensionGitHub.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = QuickDropShareExtensionGitHub.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + EB3B9F8A2EF7151900D6704E /* QuickDropShareExtension copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "QuickDropShareExtension copy-Info.plist"; path = "/Users/leonboettger/QuickDrop Backup with git/QuickDropShareExtension copy-Info.plist"; sourceTree = ""; }; EB4F9D1E2EC26C7C00A74A0F /* EXIFUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EXIFUtils.swift; sourceTree = ""; }; EB4F9D232EC27CF000A74A0F /* FileManager+DocumentsOpener.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FileManager+DocumentsOpener.swift"; sourceTree = ""; }; EB5C36922E34EBBD0052EFD7 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; @@ -422,6 +593,32 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EB3B9F302EF7150400D6704E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EB3B9F312EF7150400D6704E /* QRCode in Frameworks */, + EB3B9F322EF7150400D6704E /* BezelNotification in Frameworks */, + EB3B9F332EF7150400D6704E /* SwiftECC in Frameworks */, + EB3B9F342EF7150400D6704E /* SwiftProtobuf in Frameworks */, + EB3B9F352EF7150400D6704E /* LUI in Frameworks */, + EB3B9F362EF7150400D6704E /* ZIPFoundation in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB3B9F742EF7151900D6704E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EB3B9F952EF715A000D6704E /* QRCode in Frameworks */, + EB3B9F912EF715A000D6704E /* SwiftECC in Frameworks */, + EB3B9F8F2EF715A000D6704E /* SwiftProtobuf in Frameworks */, + EB3B9F932EF715A000D6704E /* BezelNotification in Frameworks */, + EB3B9F972EF715A000D6704E /* LUI in Frameworks */, + EB3B9F992EF715A000D6704E /* ZIPFoundation in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; EB5C37DF2E377C2E0052EFD7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -486,6 +683,8 @@ 698DFAEC29E353220064F247 /* Frameworks */, 69DA9A0F29E0BF5100A442DA /* Products */, EBC05C8B2E33B59E00EECC18 /* Resources */, + EB3B9F492EF7150400D6704E /* QuickDrop copy-Info.plist */, + EB3B9F8A2EF7151900D6704E /* QuickDropShareExtension copy-Info.plist */, ); sourceTree = ""; }; @@ -496,6 +695,8 @@ 699DEBA12AB0573200115D22 /* QuickDropShareExtension.appex */, EB5C37E22E377C2E0052EFD7 /* QuickDropiOS.app */, EB950B2D2E52027F002D68FA /* iOSShareExtension.appex */, + EB3B9F482EF7150400D6704E /* QuickDropGitHub.app */, + EB3B9F892EF7151900D6704E /* QuickDropShareExtensionGitHub.appex */, ); name = Products; sourceTree = ""; @@ -760,6 +961,53 @@ productReference = 69DA9A0E29E0BF5100A442DA /* QuickDrop.app */; productType = "com.apple.product-type.application"; }; + EB3B9EF02EF7150400D6704E /* QuickDropGitHub */ = { + isa = PBXNativeTarget; + buildConfigurationList = EB3B9F452EF7150400D6704E /* Build configuration list for PBXNativeTarget "QuickDropGitHub" */; + buildPhases = ( + EB3B9EFF2EF7150400D6704E /* Sources */, + EB3B9F302EF7150400D6704E /* Frameworks */, + EB3B9F372EF7150400D6704E /* Resources */, + EB3B9F412EF7150400D6704E /* Embed Foundation Extensions */, + EB3B9F432EF7150400D6704E /* Embed XPC Services */, + EB3B9F442EF7150400D6704E /* Embed Libraries */, + ); + buildRules = ( + ); + dependencies = ( + EB3B9F8D2EF7153000D6704E /* PBXTargetDependency */, + ); + name = QuickDropGitHub; + packageProductDependencies = ( + EB3B9EF32EF7150400D6704E /* BezelNotification */, + EB3B9EF52EF7150400D6704E /* SwiftProtobuf */, + EB3B9EF72EF7150400D6704E /* SwiftECC */, + EB3B9EF92EF7150400D6704E /* QRCode */, + EB3B9EFB2EF7150400D6704E /* LUI */, + EB3B9EFD2EF7150400D6704E /* ZIPFoundation */, + ); + productName = NearDrop; + productReference = EB3B9F482EF7150400D6704E /* QuickDropGitHub.app */; + productType = "com.apple.product-type.application"; + }; + EB3B9F4A2EF7151900D6704E /* QuickDropShareExtensionGitHub */ = { + isa = PBXNativeTarget; + buildConfigurationList = EB3B9F862EF7151900D6704E /* Build configuration list for PBXNativeTarget "QuickDropShareExtensionGitHub" */; + buildPhases = ( + EB3B9F4B2EF7151900D6704E /* Sources */, + EB3B9F742EF7151900D6704E /* Frameworks */, + EB3B9F7B2EF7151900D6704E /* Resources */, + EB3B9F852EF7151900D6704E /* Embed Libraries */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = QuickDropShareExtensionGitHub; + productName = ShareExtension; + productReference = EB3B9F892EF7151900D6704E /* QuickDropShareExtensionGitHub.appex */; + productType = "com.apple.product-type.app-extension"; + }; EB5C37E12E377C2E0052EFD7 /* QuickDropiOS */ = { isa = PBXNativeTarget; buildConfigurationList = EB5C37EA2E377C310052EFD7 /* Build configuration list for PBXNativeTarget "QuickDropiOS" */; @@ -879,6 +1127,8 @@ 699DEBA02AB0573200115D22 /* QuickDropShareExtension */, EB5C37E12E377C2E0052EFD7 /* QuickDropiOS */, EB950B2C2E52027F002D68FA /* iOSShareExtension */, + EB3B9EF02EF7150400D6704E /* QuickDropGitHub */, + EB3B9F4A2EF7151900D6704E /* QuickDropShareExtensionGitHub */, ); }; /* End PBXProject section */ @@ -916,6 +1166,38 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EB3B9F372EF7150400D6704E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB3B9F382EF7150400D6704E /* Config.storekit in Resources */, + EB3B9F392EF7150400D6704E /* Assets.xcassets in Resources */, + EB3B9F3A2EF7150400D6704E /* License.txt in Resources */, + EB3B9F3B2EF7150400D6704E /* Localizable.xcstrings in Resources */, + EB3B9F3C2EF7150400D6704E /* timeIsNow.mp3 in Resources */, + EB3B9F3D2EF7150400D6704E /* QuickDropIcon.icon in Resources */, + EB3B9F3E2EF7150400D6704E /* justMaybe.mp3 in Resources */, + EB3B9F3F2EF7150400D6704E /* InfoPlist.xcstrings in Resources */, + EB3B9F402EF7150400D6704E /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB3B9F7B2EF7151900D6704E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB3B9F7C2EF7151900D6704E /* Config.storekit in Resources */, + EB3B9F7D2EF7151900D6704E /* Localizable.xcstrings in Resources */, + EB3B9F7E2EF7151900D6704E /* License.txt in Resources */, + EB3B9F7F2EF7151900D6704E /* DeviceListCell.xib in Resources */, + EB3B9F802EF7151900D6704E /* ShareViewController.xib in Resources */, + EB3B9F812EF7151900D6704E /* Assets.xcassets in Resources */, + EB3B9F822EF7151900D6704E /* justMaybe.mp3 in Resources */, + EB3B9F832EF7151900D6704E /* InfoPlist.xcstrings in Resources */, + EB3B9F842EF7151900D6704E /* timeIsNow.mp3 in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; EB5C37E02E377C2E0052EFD7 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1050,6 +1332,108 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EB3B9EFF2EF7150400D6704E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB3B9F002EF7150400D6704E /* WelcomeScreen.swift in Sources */, + EB3B9F012EF7150400D6704E /* ChangeDeviceNameModifier.swift in Sources */, + EB3B9F022EF7150400D6704E /* AudioManager.swift in Sources */, + EB3B9F032EF7150400D6704E /* LaunchAtLogin.swift in Sources */, + EB3B9F042EF7150400D6704E /* SleepManager.swift in Sources */, + EB3B9F052EF7150400D6704E /* QuickDropToastView.swift in Sources */, + EB3B9F062EF7150400D6704E /* Helpers.swift in Sources */, + EB3B9F072EF7150400D6704E /* TrustedDevicesView.swift in Sources */, + EB3B9F082EF7150400D6704E /* TrustStore.swift in Sources */, + EB3B9F092EF7150400D6704E /* ErrorAlertHandler.swift in Sources */, + EB3B9F0A2EF7150400D6704E /* Settings.swift in Sources */, + EB3B9F0B2EF7150400D6704E /* Zip.swift in Sources */, + EB3B9F0C2EF7150400D6704E /* ukey.pb.swift in Sources */, + EB3B9F0D2EF7150400D6704E /* securemessage.pb.swift in Sources */, + EB3B9F0E2EF7150400D6704E /* offline_wire_formats.pb.swift in Sources */, + EB3B9F0F2EF7150400D6704E /* device_to_device_messages.pb.swift in Sources */, + EB3B9F102EF7150400D6704E /* wire_format.pb.swift in Sources */, + EB3B9F112EF7150400D6704E /* IdentityManager.swift in Sources */, + EB3B9F122EF7150400D6704E /* securegcm.pb.swift in Sources */, + EB3B9F132EF7150400D6704E /* ReceiveModel.swift in Sources */, + EB3B9F142EF7150400D6704E /* NearbyConnection.swift in Sources */, + EB3B9F152EF7150400D6704E /* DataModel.swift in Sources */, + EB3B9F162EF7150400D6704E /* OutboundNearbyConnection.swift in Sources */, + EB3B9F172EF7150400D6704E /* InboundNearbyConnection.swift in Sources */, + EB3B9F182EF7150400D6704E /* NearbyConnectionManager.swift in Sources */, + EB3B9F192EF7150400D6704E /* Configuration.swift in Sources */, + EB3B9F1A2EF7150400D6704E /* AttachmentDetails.swift in Sources */, + EB3B9F1B2EF7150400D6704E /* HKDF.swift in Sources */, + EB3B9F1C2EF7150400D6704E /* SmallSheetView.swift in Sources */, + EB3B9F1D2EF7150400D6704E /* License.swift in Sources */, + EB3B9F1E2EF7150400D6704E /* LicenseWindow.swift in Sources */, + EB3B9F1F2EF7150400D6704E /* EXIFUtils.swift in Sources */, + EB3B9F202EF7150400D6704E /* AppDelegate.swift in Sources */, + EB3B9F212EF7150400D6704E /* SettingsView.swift in Sources */, + EB3B9F222EF7150400D6704E /* TutorialView.swift in Sources */, + EB3B9F232EF7150400D6704E /* sharing_enums.pb.swift in Sources */, + EB3B9F242EF7150400D6704E /* PhotoManager.swift in Sources */, + EB3B9F252EF7150400D6704E /* Localized.swift in Sources */, + EB3B9F262EF7150400D6704E /* AppGroup.swift in Sources */, + EB3B9F272EF7150400D6704E /* ApIsolationIssueView.swift in Sources */, + EB3B9F282EF7150400D6704E /* FirewallIssueView.swift in Sources */, + EB3B9F292EF7150400D6704E /* SendToExtension.swift in Sources */, + EB3B9F2A2EF7150400D6704E /* ApIsolationTester.swift in Sources */, + EB3B9F2B2EF7150400D6704E /* ActiveNetworkInterface.swift in Sources */, + EB3B9F2C2EF7150400D6704E /* ApIsolation6Tester.swift in Sources */, + EB3B9F2D2EF7150400D6704E /* IssueView.swift in Sources */, + EB3B9F2E2EF7150400D6704E /* NetworkFilterIssueView.swift in Sources */, + EB3B9F2F2EF7150400D6704E /* IntroductionSplashView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB3B9F4B2EF7151900D6704E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB3B9F4C2EF7151900D6704E /* License.swift in Sources */, + EB3B9F4D2EF7151900D6704E /* Localized.swift in Sources */, + EB3B9F4E2EF7151900D6704E /* SendToExtension.swift in Sources */, + EB3B9F4F2EF7151900D6704E /* TrustStore.swift in Sources */, + EB3B9F502EF7151900D6704E /* HKDF.swift in Sources */, + EB3B9F512EF7151900D6704E /* NetworkFilterIssueView.swift in Sources */, + EB3B9F522EF7151900D6704E /* Configuration.swift in Sources */, + EB3B9F532EF7151900D6704E /* IssueView.swift in Sources */, + EB3B9F542EF7151900D6704E /* FirewallIssueView.swift in Sources */, + EB3B9F552EF7151900D6704E /* ApIsolationIssueView.swift in Sources */, + EB3B9F562EF7151900D6704E /* ShareViewController.swift in Sources */, + EB3B9F572EF7151900D6704E /* SmallSheetView.swift in Sources */, + EB3B9F582EF7151900D6704E /* Zip.swift in Sources */, + EB3B9F592EF7151900D6704E /* securemessage.pb.swift in Sources */, + EB3B9F5A2EF7151900D6704E /* securegcm.pb.swift in Sources */, + EB3B9F5B2EF7151900D6704E /* wire_format.pb.swift in Sources */, + EB3B9F5C2EF7151900D6704E /* ukey.pb.swift in Sources */, + EB3B9F5D2EF7151900D6704E /* device_to_device_messages.pb.swift in Sources */, + EB3B9F5E2EF7151900D6704E /* EXIFUtils.swift in Sources */, + EB3B9F5F2EF7151900D6704E /* Attachments.swift in Sources */, + EB3B9F602EF7151900D6704E /* Settings.swift in Sources */, + EB3B9F612EF7151900D6704E /* AppGroup.swift in Sources */, + EB3B9F622EF7151900D6704E /* AudioManager.swift in Sources */, + EB3B9F632EF7151900D6704E /* offline_wire_formats.pb.swift in Sources */, + EB3B9F642EF7151900D6704E /* IdentityManager.swift in Sources */, + EB3B9F652EF7151900D6704E /* ErrorAlertHandler.swift in Sources */, + EB3B9F662EF7151900D6704E /* DeviceListCell.swift in Sources */, + EB3B9F672EF7151900D6704E /* LaunchAtLogin.swift in Sources */, + EB3B9F682EF7151900D6704E /* SleepManager.swift in Sources */, + EB3B9F692EF7151900D6704E /* AttachmentDetails.swift in Sources */, + EB3B9F6A2EF7151900D6704E /* OutboundNearbyConnection.swift in Sources */, + EB3B9F6B2EF7151900D6704E /* DataModel.swift in Sources */, + EB3B9F6C2EF7151900D6704E /* NearbyConnection.swift in Sources */, + EB3B9F6D2EF7151900D6704E /* InboundNearbyConnection.swift in Sources */, + EB3B9F6E2EF7151900D6704E /* NearbyConnectionManager.swift in Sources */, + EB3B9F6F2EF7151900D6704E /* Helpers.swift in Sources */, + EB3B9F702EF7151900D6704E /* ApIsolationTester.swift in Sources */, + EB3B9F712EF7151900D6704E /* ActiveNetworkInterface.swift in Sources */, + EB3B9F722EF7151900D6704E /* ApIsolation6Tester.swift in Sources */, + EB3B9F732EF7151900D6704E /* sharing_enums.pb.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; EB5C37DE2E377C2E0052EFD7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1150,6 +1534,11 @@ target = 699DEBA02AB0573200115D22 /* QuickDropShareExtension */; targetProxy = 699DEBAC2AB0573200115D22 /* PBXContainerItemProxy */; }; + EB3B9F8D2EF7153000D6704E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EB3B9F4A2EF7151900D6704E /* QuickDropShareExtensionGitHub */; + targetProxy = EB3B9F8C2EF7153000D6704E /* PBXContainerItemProxy */; + }; EB950B362E52027F002D68FA /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = EB950B2C2E52027F002D68FA /* iOSShareExtension */; @@ -1336,7 +1725,7 @@ MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; - SHARED_BUILD = 101; + SHARED_BUILD = 102; SHARED_VERSION = 2.10; STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; @@ -1399,7 +1788,7 @@ MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; - SHARED_BUILD = 101; + SHARED_BUILD = 102; SHARED_VERSION = 2.10; STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_COMPILATION_MODE = wholemodule; @@ -1537,6 +1926,241 @@ }; name = Release; }; + EB3B9F462EF7150400D6704E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = QuickDropIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + AUTOMATION_APPLE_EVENTS = NO; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = QuickDrop/QuickDrop.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = "${SHARED_BUILD}"; + DEAD_CODE_STRIPPING = YES; + ENABLE_APP_SANDBOX = YES; + ENABLE_FILE_ACCESS_DOWNLOADS_FOLDER = readwrite; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_INCOMING_NETWORK_CONNECTIONS = YES; + ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES; + ENABLE_RESOURCE_ACCESS_AUDIO_INPUT = NO; + ENABLE_RESOURCE_ACCESS_BLUETOOTH = NO; + ENABLE_RESOURCE_ACCESS_CALENDARS = NO; + ENABLE_RESOURCE_ACCESS_CAMERA = NO; + ENABLE_RESOURCE_ACCESS_CONTACTS = NO; + ENABLE_RESOURCE_ACCESS_LOCATION = NO; + ENABLE_RESOURCE_ACCESS_PHOTO_LIBRARY = YES; + ENABLE_RESOURCE_ACCESS_PRINTING = NO; + ENABLE_RESOURCE_ACCESS_USB = NO; + ENABLE_USER_SELECTED_FILES = readwrite; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "QuickDrop copy-Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = QuickDrop; + INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; + INFOPLIST_KEY_LSUIElement = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 Leon Böttger"; + INFOPLIST_KEY_NSLocalNetworkUsageDescription = "Local network access is needed to detect devices and transfer files over your Wi-Fi network."; + INFOPLIST_KEY_NSMainNibFile = MainMenu; + INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "The add photos permission is required to save received photos and videos to your photo library."; + INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "The photo library permission is required to save received photos and videos to your photo library."; + INFOPLIST_KEY_NSPrincipalClass = NSApplication; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 12.0; + MARKETING_VERSION = "${SHARED_VERSION}"; + OTHER_SWIFT_FLAGS = ""; + PRODUCT_BUNDLE_IDENTIFIER = com.leonboettger.neardrop; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + REGISTER_APP_GROUPS = YES; + RUNTIME_EXCEPTION_ALLOW_DYLD_ENVIRONMENT_VARIABLES = NO; + RUNTIME_EXCEPTION_ALLOW_JIT = NO; + RUNTIME_EXCEPTION_ALLOW_UNSIGNED_EXECUTABLE_MEMORY = NO; + RUNTIME_EXCEPTION_DEBUGGING_TOOL = NO; + RUNTIME_EXCEPTION_DISABLE_EXECUTABLE_PAGE_PROTECTION = NO; + RUNTIME_EXCEPTION_DISABLE_LIBRARY_VALIDATION = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG GITHUB"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OBJC_BRIDGING_HEADER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + EB3B9F472EF7150400D6704E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = QuickDropIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + AUTOMATION_APPLE_EVENTS = NO; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = QuickDrop/QuickDrop.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = "${SHARED_BUILD}"; + DEAD_CODE_STRIPPING = YES; + ENABLE_APP_SANDBOX = YES; + ENABLE_FILE_ACCESS_DOWNLOADS_FOLDER = readwrite; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_INCOMING_NETWORK_CONNECTIONS = YES; + ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES; + ENABLE_RESOURCE_ACCESS_AUDIO_INPUT = NO; + ENABLE_RESOURCE_ACCESS_BLUETOOTH = NO; + ENABLE_RESOURCE_ACCESS_CALENDARS = NO; + ENABLE_RESOURCE_ACCESS_CAMERA = NO; + ENABLE_RESOURCE_ACCESS_CONTACTS = NO; + ENABLE_RESOURCE_ACCESS_LOCATION = NO; + ENABLE_RESOURCE_ACCESS_PHOTO_LIBRARY = YES; + ENABLE_RESOURCE_ACCESS_PRINTING = NO; + ENABLE_RESOURCE_ACCESS_USB = NO; + ENABLE_USER_SELECTED_FILES = readwrite; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "QuickDrop copy-Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = QuickDrop; + INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities"; + INFOPLIST_KEY_LSUIElement = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2025 Leon Böttger"; + INFOPLIST_KEY_NSLocalNetworkUsageDescription = "Local network access is needed to detect devices and transfer files over your Wi-Fi network."; + INFOPLIST_KEY_NSMainNibFile = MainMenu; + INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "The add photos permission is required to save received photos and videos to your photo library."; + INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "The photo library permission is required to save received photos and videos to your photo library."; + INFOPLIST_KEY_NSPrincipalClass = NSApplication; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 12.0; + MARKETING_VERSION = "${SHARED_VERSION}"; + OTHER_SWIFT_FLAGS = ""; + PRODUCT_BUNDLE_IDENTIFIER = com.leonboettger.neardrop; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + REGISTER_APP_GROUPS = YES; + RUNTIME_EXCEPTION_ALLOW_DYLD_ENVIRONMENT_VARIABLES = NO; + RUNTIME_EXCEPTION_ALLOW_JIT = NO; + RUNTIME_EXCEPTION_ALLOW_UNSIGNED_EXECUTABLE_MEMORY = NO; + RUNTIME_EXCEPTION_DEBUGGING_TOOL = NO; + RUNTIME_EXCEPTION_DISABLE_EXECUTABLE_PAGE_PROTECTION = NO; + RUNTIME_EXCEPTION_DISABLE_LIBRARY_VALIDATION = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = GITHUB; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OBJC_BRIDGING_HEADER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + EB3B9F872EF7151900D6704E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + AUTOMATION_APPLE_EVENTS = NO; + CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = "${SHARED_BUILD}"; + DEAD_CODE_STRIPPING = YES; + ENABLE_APP_SANDBOX = YES; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_INCOMING_NETWORK_CONNECTIONS = YES; + ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES; + ENABLE_RESOURCE_ACCESS_AUDIO_INPUT = NO; + ENABLE_RESOURCE_ACCESS_CALENDARS = NO; + ENABLE_RESOURCE_ACCESS_CAMERA = NO; + ENABLE_RESOURCE_ACCESS_CONTACTS = NO; + ENABLE_RESOURCE_ACCESS_LOCATION = NO; + ENABLE_RESOURCE_ACCESS_PHOTO_LIBRARY = YES; + ENABLE_USER_SELECTED_FILES = readonly; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "QuickDropShareExtension copy-Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = QuickDrop; + INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@executable_path/../../../../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 12.0; + MARKETING_VERSION = "${SHARED_VERSION}"; + OTHER_SWIFT_FLAGS = ""; + PRODUCT_BUNDLE_IDENTIFIER = com.leonboettger.neardrop.ShareExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + REGISTER_APP_GROUPS = YES; + RUNTIME_EXCEPTION_ALLOW_DYLD_ENVIRONMENT_VARIABLES = NO; + RUNTIME_EXCEPTION_ALLOW_JIT = NO; + RUNTIME_EXCEPTION_ALLOW_UNSIGNED_EXECUTABLE_MEMORY = NO; + RUNTIME_EXCEPTION_DEBUGGING_TOOL = NO; + RUNTIME_EXCEPTION_DISABLE_EXECUTABLE_PAGE_PROTECTION = NO; + RUNTIME_EXCEPTION_DISABLE_LIBRARY_VALIDATION = NO; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) EXTENSION GITHUB"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + EB3B9F882EF7151900D6704E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + AUTOMATION_APPLE_EVENTS = NO; + CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = "${SHARED_BUILD}"; + DEAD_CODE_STRIPPING = YES; + ENABLE_APP_SANDBOX = YES; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_INCOMING_NETWORK_CONNECTIONS = YES; + ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES; + ENABLE_RESOURCE_ACCESS_AUDIO_INPUT = NO; + ENABLE_RESOURCE_ACCESS_CALENDARS = NO; + ENABLE_RESOURCE_ACCESS_CAMERA = NO; + ENABLE_RESOURCE_ACCESS_CONTACTS = NO; + ENABLE_RESOURCE_ACCESS_LOCATION = NO; + ENABLE_RESOURCE_ACCESS_PHOTO_LIBRARY = YES; + ENABLE_USER_SELECTED_FILES = readonly; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "QuickDropShareExtension copy-Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = QuickDrop; + INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@executable_path/../../../../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 12.0; + MARKETING_VERSION = "${SHARED_VERSION}"; + OTHER_SWIFT_FLAGS = ""; + PRODUCT_BUNDLE_IDENTIFIER = com.leonboettger.neardrop.ShareExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + REGISTER_APP_GROUPS = YES; + RUNTIME_EXCEPTION_ALLOW_DYLD_ENVIRONMENT_VARIABLES = NO; + RUNTIME_EXCEPTION_ALLOW_JIT = NO; + RUNTIME_EXCEPTION_ALLOW_UNSIGNED_EXECUTABLE_MEMORY = NO; + RUNTIME_EXCEPTION_DEBUGGING_TOOL = NO; + RUNTIME_EXCEPTION_DISABLE_EXECUTABLE_PAGE_PROTECTION = NO; + RUNTIME_EXCEPTION_DISABLE_LIBRARY_VALIDATION = NO; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "EXTENSION GITHUB"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; EB5C37EB2E377C310052EFD7 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1720,6 +2344,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + EB3B9F452EF7150400D6704E /* Build configuration list for PBXNativeTarget "QuickDropGitHub" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB3B9F462EF7150400D6704E /* Debug */, + EB3B9F472EF7150400D6704E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EB3B9F862EF7151900D6704E /* Build configuration list for PBXNativeTarget "QuickDropShareExtensionGitHub" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB3B9F872EF7151900D6704E /* Debug */, + EB3B9F882EF7151900D6704E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; EB5C37EA2E377C310052EFD7 /* Build configuration list for PBXNativeTarget "QuickDropiOS" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1765,6 +2407,54 @@ minimumVersion = 2.1.0; }; }; + EB3B9EF42EF7150400D6704E /* XCRemoteSwiftPackageReference "BezelNotification" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/BlueHuskyStudios/BezelNotification.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.1.0; + }; + }; + EB3B9EF62EF7150400D6704E /* XCRemoteSwiftPackageReference "swift-protobuf" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/apple/swift-protobuf.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.0.0; + }; + }; + EB3B9EF82EF7150400D6704E /* XCRemoteSwiftPackageReference "SwiftECC" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/leif-ibsen/SwiftECC"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.0.0; + }; + }; + EB3B9EFA2EF7150400D6704E /* XCRemoteSwiftPackageReference "qrcode" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/dagronf/qrcode.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 26.10.0; + }; + }; + EB3B9EFC2EF7150400D6704E /* XCRemoteSwiftPackageReference "LUI" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/leonboe1/LUI.git"; + requirement = { + branch = main; + kind = branch; + }; + }; + EB3B9EFE2EF7150400D6704E /* XCRemoteSwiftPackageReference "ZIPFoundation" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/weichsel/ZIPFoundation.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 0.9.20; + }; + }; EB53D8C22EF496AB004C95BA /* XCRemoteSwiftPackageReference "ZIPFoundation" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/weichsel/ZIPFoundation.git"; @@ -1805,6 +2495,66 @@ package = EB2F9BFC2DA05F48004010A2 /* XCRemoteSwiftPackageReference "BezelNotification" */; productName = BezelNotification; }; + EB3B9EF32EF7150400D6704E /* BezelNotification */ = { + isa = XCSwiftPackageProductDependency; + package = EB3B9EF42EF7150400D6704E /* XCRemoteSwiftPackageReference "BezelNotification" */; + productName = BezelNotification; + }; + EB3B9EF52EF7150400D6704E /* SwiftProtobuf */ = { + isa = XCSwiftPackageProductDependency; + package = EB3B9EF62EF7150400D6704E /* XCRemoteSwiftPackageReference "swift-protobuf" */; + productName = SwiftProtobuf; + }; + EB3B9EF72EF7150400D6704E /* SwiftECC */ = { + isa = XCSwiftPackageProductDependency; + package = EB3B9EF82EF7150400D6704E /* XCRemoteSwiftPackageReference "SwiftECC" */; + productName = SwiftECC; + }; + EB3B9EF92EF7150400D6704E /* QRCode */ = { + isa = XCSwiftPackageProductDependency; + package = EB3B9EFA2EF7150400D6704E /* XCRemoteSwiftPackageReference "qrcode" */; + productName = QRCode; + }; + EB3B9EFB2EF7150400D6704E /* LUI */ = { + isa = XCSwiftPackageProductDependency; + package = EB3B9EFC2EF7150400D6704E /* XCRemoteSwiftPackageReference "LUI" */; + productName = LUI; + }; + EB3B9EFD2EF7150400D6704E /* ZIPFoundation */ = { + isa = XCSwiftPackageProductDependency; + package = EB3B9EFE2EF7150400D6704E /* XCRemoteSwiftPackageReference "ZIPFoundation" */; + productName = ZIPFoundation; + }; + EB3B9F8E2EF715A000D6704E /* SwiftProtobuf */ = { + isa = XCSwiftPackageProductDependency; + package = 69DA9A2429E189EF00A442DA /* XCRemoteSwiftPackageReference "swift-protobuf" */; + productName = SwiftProtobuf; + }; + EB3B9F902EF715A000D6704E /* SwiftECC */ = { + isa = XCSwiftPackageProductDependency; + package = 69DA9A3429E1994C00A442DA /* XCRemoteSwiftPackageReference "SwiftECC" */; + productName = SwiftECC; + }; + EB3B9F922EF715A000D6704E /* BezelNotification */ = { + isa = XCSwiftPackageProductDependency; + package = EB2F9BFC2DA05F48004010A2 /* XCRemoteSwiftPackageReference "BezelNotification" */; + productName = BezelNotification; + }; + EB3B9F942EF715A000D6704E /* QRCode */ = { + isa = XCSwiftPackageProductDependency; + package = EB9925832E45EF0900357055 /* XCRemoteSwiftPackageReference "qrcode" */; + productName = QRCode; + }; + EB3B9F962EF715A000D6704E /* LUI */ = { + isa = XCSwiftPackageProductDependency; + package = EB886E562E4E66420052B7D9 /* XCRemoteSwiftPackageReference "LUI" */; + productName = LUI; + }; + EB3B9F982EF715A000D6704E /* ZIPFoundation */ = { + isa = XCSwiftPackageProductDependency; + package = EB53D8C22EF496AB004C95BA /* XCRemoteSwiftPackageReference "ZIPFoundation" */; + productName = ZIPFoundation; + }; EB53D8C32EF496AB004C95BA /* ZIPFoundation */ = { isa = XCSwiftPackageProductDependency; package = EB53D8C22EF496AB004C95BA /* XCRemoteSwiftPackageReference "ZIPFoundation" */; diff --git a/QuickDrop.xcodeproj/xcshareddata/xcschemes/QuickDropGitHub.xcscheme b/QuickDrop.xcodeproj/xcshareddata/xcschemes/QuickDropGitHub.xcscheme new file mode 100644 index 0000000..36df8b8 --- /dev/null +++ b/QuickDrop.xcodeproj/xcshareddata/xcschemes/QuickDropGitHub.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/QuickDrop.xcodeproj/xcshareddata/xcschemes/QuickDropShareExtensionGitHub.xcscheme b/QuickDrop.xcodeproj/xcshareddata/xcschemes/QuickDropShareExtensionGitHub.xcscheme new file mode 100644 index 0000000..9a36736 --- /dev/null +++ b/QuickDrop.xcodeproj/xcshareddata/xcschemes/QuickDropShareExtensionGitHub.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/QuickDrop/AppDelegate.swift b/QuickDrop/AppDelegate.swift index 064fc99..23f46fc 100644 --- a/QuickDrop/AppDelegate.swift +++ b/QuickDrop/AppDelegate.swift @@ -87,6 +87,9 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele } else { // app launched before + #if GITHUB + log("[AppDelegate] Downloaded from GitHub.") + #else // user installed the app before the IAP was implemented, grant the plus version if !Settings.shared.isEligibleForIap { log("[AppDelegate] Granting QuickDrop+ for old user") @@ -100,6 +103,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele log("[AppDelegate] QuickDrop+ available") } } + #endif BezelNotification.show(messageText: "ReadyToReceive".localized(), icon: .receiveIcon) @@ -234,7 +238,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDele ) welcomeWindow = NSWindow( - contentRect: NSRect(x: 0, y: 0, width: 400, height: 280), + contentRect: NSRect(x: 0, y: 0, width: welcomeScreenWidth, height: welcomeScreenHeight), styleMask: [.titled, .closable], backing: .buffered, defer: false diff --git a/QuickDrop/InfoPlist.xcstrings b/QuickDrop/InfoPlist.xcstrings index 76552f8..2a07236 100644 --- a/QuickDrop/InfoPlist.xcstrings +++ b/QuickDrop/InfoPlist.xcstrings @@ -20,7 +20,7 @@ "en" : { "stringUnit" : { "state" : "new", - "value" : "QuickDrop" + "value" : "QuickDropGitHub" } } } diff --git a/QuickDrop/Localizable.xcstrings b/QuickDrop/Localizable.xcstrings index cdb3f81..3d27527 100644 --- a/QuickDrop/Localizable.xcstrings +++ b/QuickDrop/Localizable.xcstrings @@ -32832,6 +32832,239 @@ } } }, + "introduction_enable_share_extension_description_macos12" : { + "extractionState" : "manual", + "localizations" : { + "ar" : { + "stringUnit" : { + "state" : "translated", + "value" : "لإرسال الملفات من هذا الـ Mac، يمكنك تفعيل امتداد المشاركة. اضغط على متابعة، ثم اختر قائمة الامتدادات وفعّل خيار QuickDrop." + } + }, + "ca" : { + "stringUnit" : { + "state" : "translated", + "value" : "Per enviar fitxers des d’aquest Mac, activa l’extensió de compartició. Fes clic a Continua, tria el menú d’extensions i activa la casella per a QuickDrop." + } + }, + "cs" : { + "stringUnit" : { + "state" : "translated", + "value" : "Chcete-li odesílat soubory z tohoto Macu, můžete povolit rozšíření pro sdílení. Klikněte na Pokračovat, vyberte nabídku rozšíření a zaškrtněte políčko QuickDrop." + } + }, + "da" : { + "stringUnit" : { + "state" : "translated", + "value" : "For at sende filer fra denne Mac kan du aktivere delingsudvidelsen. Klik på Fortsæt, vælg derefter udvidelsesmenuen, og marker afkrydsningsfeltet for QuickDrop." + } + }, + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Um Dateien von diesem Mac zu senden, aktiviere die Share-Erweiterung. Klicke auf „Weiter“, wähle dann das Erweiterungsmenü und aktiviere das Kontrollkästchen für QuickDrop." + } + }, + "el" : { + "stringUnit" : { + "state" : "translated", + "value" : "Για να στείλετε αρχεία από αυτό το Mac, μπορείτε να ενεργοποιήσετε την επέκταση κοινοποίησης. Κάντε κλικ στο Συνέχεια, μετά επιλέξτε το μενού επεκτάσεων και ενεργοποιήστε το κουτάκι για το QuickDrop." + } + }, + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "To send files from this Mac, you may enable the share extension. Click on Continue, then choose the extensions menu, and enable the checkbox for QuickDrop." + } + }, + "en-AU" : { + "stringUnit" : { + "state" : "translated", + "value" : "To send files from this Mac, you may enable the share extension. Click on Continue, then choose the extensions menu, and enable the checkbox for QuickDrop." + } + }, + "en-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "To send files from this Mac, you may enable the share extension. Click on Continue, then choose the extensions menu, and enable the checkbox for QuickDrop." + } + }, + "en-GB" : { + "stringUnit" : { + "state" : "translated", + "value" : "To send files from this Mac, you may enable the share extension. Click on Continue, then choose the extensions menu, and enable the checkbox for QuickDrop." + } + }, + "es" : { + "stringUnit" : { + "state" : "translated", + "value" : "Para enviar archivos desde este Mac, activa la extensión de compartir. Haz clic en Continuar, luego ve al menú de extensiones y marca la casilla de QuickDrop." + } + }, + "es-419" : { + "stringUnit" : { + "state" : "translated", + "value" : "Para enviar archivos desde esta Mac, puedes habilitar la extensión para compartir. Haz clic en Continuar, luego elige el menú de extensiones y marca la casilla de QuickDrop." + } + }, + "fi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Jos haluat lähettää tiedostoja tältä Macilta, voit ottaa käyttöön jaon laajennuksen. Napsauta Jatka, valitse laajennusvalikko ja ota QuickDrop käyttöön valitsemalla sen valintaruutu." + } + }, + "fr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour envoyer des fichiers depuis ce Mac, vous pouvez activer l’extension de partage. Cliquez sur Continuer, puis choisissez le menu des extensions et cochez la case pour QuickDrop." + } + }, + "fr-CA" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pour envoyer des fichiers depuis ce Mac, vous pouvez activer l’extension de partage. Cliquez sur Continuer, puis ouvrez le menu des extensions et cochez la case pour QuickDrop." + } + }, + "he" : { + "stringUnit" : { + "state" : "translated", + "value" : "כדי לשלוח קבצים מהמחשב הזה, אפשר להפעיל את תוסף השיתוף. לחץ על 'המשך', בחר בתפריט התוספים, וסמן את תיבת הסימון של QuickDrop." + } + }, + "hi" : { + "stringUnit" : { + "state" : "translated", + "value" : "इस Mac से फ़ाइलें भेजने के लिए, आप शेयर एक्सटेंशन सक्षम कर सकते हैं। 'जारी रखें' पर क्लिक करें, फिर एक्सटेंशन मेनू चुनें और QuickDrop के लिए चेकबॉक्स चुनें।" + } + }, + "hr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Da biste slali datoteke s ovog Maca, omogućite ekstenziju za dijeljenje. Kliknite Nastavi, zatim odaberite izbornik ekstenzija i označite QuickDrop." + } + }, + "hu" : { + "stringUnit" : { + "state" : "translated", + "value" : "Fájlok küldéséhez erről a Mac-ről engedélyezze a megosztási bővítményt. Kattintson a Folytatásra, válassza a bővítmények menüt, majd jelölje be a QuickDrop jelölőnégyzetét." + } + }, + "id" : { + "stringUnit" : { + "state" : "translated", + "value" : "Untuk mengirim file dari Mac ini, Anda dapat mengaktifkan ekstensi berbagi. Klik Lanjutkan, lalu pilih menu ekstensi, dan aktifkan kotak centang untuk QuickDrop." + } + }, + "it" : { + "stringUnit" : { + "state" : "translated", + "value" : "Per inviare file da questo Mac, puoi abilitare l'estensione di condivisione. Fai clic su Continua, poi scegli il menu delle estensioni e attiva la casella di controllo per QuickDrop." + } + }, + "ja" : { + "stringUnit" : { + "state" : "translated", + "value" : "このMacからファイルを送信するには、共有機能拡張を有効にしてください。「続ける」をクリックし、拡張機能メニューを開いて、QuickDropのチェックボックスを有効にします。" + } + }, + "ko" : { + "stringUnit" : { + "state" : "translated", + "value" : "이 Mac에서 파일을 보내려면 공유 확장 기능을 활성화하세요. 계속을 클릭한 다음, 확장 메뉴에서 QuickDrop 체크박스를 선택하세요." + } + }, + "ms" : { + "stringUnit" : { + "state" : "translated", + "value" : "Untuk menghantar fail dari Mac ini, anda boleh aktifkan ekstensi perkongsian. Klik Teruskan, kemudian pilih menu ekstensi, dan aktifkan kotak semak untuk QuickDrop." + } + }, + "nb" : { + "stringUnit" : { + "state" : "translated", + "value" : "For å sende filer fra denne Macen, kan du aktivere delingsutvidelsen. Klikk på Fortsett, velg deretter utvidelsesmenyen og aktiver avkrysningsboksen for QuickDrop." + } + }, + "nl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Om bestanden vanaf deze Mac te verzenden, kun je de deel-extensie inschakelen. Klik op Doorgaan, kies het extensiemenu en vink het selectievakje voor QuickDrop aan." + } + }, + "pl" : { + "stringUnit" : { + "state" : "translated", + "value" : "Aby wysyłać pliki z tego Maca, możesz włączyć rozszerzenie udostępniania. Kliknij Dalej, wybierz menu rozszerzeń i zaznacz pole wyboru QuickDrop." + } + }, + "pt-BR" : { + "stringUnit" : { + "state" : "translated", + "value" : "Para enviar arquivos deste Mac, ative a extensão de compartilhamento. Clique em Continuar, depois escolha o menu de extensões e marque a caixa de seleção para o QuickDrop." + } + }, + "pt-PT" : { + "stringUnit" : { + "state" : "translated", + "value" : "Para enviar ficheiros deste Mac, pode ativar a extensão de partilha. Clique em Continuar, depois escolha o menu de extensões e ative a caixa de seleção para o QuickDrop." + } + }, + "ro" : { + "stringUnit" : { + "state" : "translated", + "value" : "Pentru a trimite fișiere de pe acest Mac, poți activa extensia de partajare. Apasă Continuă, apoi mergi la meniul de extensii și bifează caseta pentru QuickDrop." + } + }, + "ru" : { + "stringUnit" : { + "state" : "translated", + "value" : "Чтобы отправлять файлы с этого Mac, вы можете включить расширение для обмена. Нажмите «Продолжить», затем выберите меню расширений и поставьте галочку напротив QuickDrop." + } + }, + "sv" : { + "stringUnit" : { + "state" : "translated", + "value" : "För att skicka filer från denna Mac kan du aktivera delningstillägget. Klicka på Fortsätt, välj sedan tilläggsmenyn och markera kryssrutan för QuickDrop." + } + }, + "th" : { + "stringUnit" : { + "state" : "translated", + "value" : "หากต้องการส่งไฟล์จาก Mac เครื่องนี้ คุณสามารถเปิดใช้งานส่วนขยายการแชร์ได้ คลิก 'ดำเนินการต่อ' จากนั้นเลือกเมนูส่วนขยาย และเปิดใช้งานช่องเลือกสำหรับ QuickDrop" + } + }, + "tr" : { + "stringUnit" : { + "state" : "translated", + "value" : "Bu Mac'ten dosya göndermek için paylaşım uzantısını etkinleştirebilirsiniz. Devam Et'e tıklayın, ardından uzantılar menüsünü seçin ve QuickDrop kutucuğunu işaretleyin." + } + }, + "uk" : { + "stringUnit" : { + "state" : "translated", + "value" : "Щоб надіслати файли з цього Mac, увімкніть розширення для спільного доступу. Натисніть «Продовжити», відкрийте меню розширень і поставте галочку біля QuickDrop." + } + }, + "vi" : { + "stringUnit" : { + "state" : "translated", + "value" : "Để gửi tệp từ máy Mac này, bạn có thể bật tiện ích chia sẻ. Nhấp Tiếp tục, sau đó chọn menu tiện ích và bật ô chọn cho QuickDrop." + } + }, + "zh-Hans" : { + "stringUnit" : { + "state" : "translated", + "value" : "如需从此 Mac 发送文件,请启用共享扩展。点击“继续”,然后选择扩展菜单,并勾选 QuickDrop 的复选框。" + } + }, + "zh-Hant" : { + "stringUnit" : { + "state" : "translated", + "value" : "若要從這台 Mac 傳送檔案,請啟用分享擴充功能。點擊「繼續」,然後選擇擴充功能選單,勾選 QuickDrop。" + } + } + } + }, "introduction_enable_share_extension_skip_message" : { "extractionState" : "manual", "localizations" : { diff --git a/QuickDrop/Settings.swift b/QuickDrop/Settings.swift index 80cb6b9..eb0ed87 100644 --- a/QuickDrop/Settings.swift +++ b/QuickDrop/Settings.swift @@ -16,8 +16,12 @@ class Settings: ObservableObject { // MARK: - Published UserDefaults Backed Properties + #if GITHUB + let gotPlus = true + #else @Published var gotPlus = UserDefaults.standard.bool(forKey: UserDefaultsKeys.plusVersion.rawValue) { didSet { UserDefaults.standard.set(gotPlus, forKey: UserDefaultsKeys.plusVersion.rawValue) }} + #endif @Published var automaticallyAcceptFiles: Bool = UserDefaults.standard.bool(forKey: UserDefaultsKeys.automaticallyAcceptFiles.rawValue) diff --git a/QuickDrop/View/Introduction/IntroductionSplashView.swift b/QuickDrop/View/Introduction/IntroductionSplashView.swift index d3e441d..2648818 100644 --- a/QuickDrop/View/Introduction/IntroductionSplashView.swift +++ b/QuickDrop/View/Introduction/IntroductionSplashView.swift @@ -256,7 +256,10 @@ enum IntroductionPage: CaseIterable { case .localNetworkAccess: return "introduction_local_network_access_description" case .enableShareExtension: - return "introduction_enable_share_extension_description" + if #available(macOS 13.0, *) { + return "introduction_enable_share_extension_description" + } + return "introduction_enable_share_extension_description_macos12" case .finished: return "introduction_finished_description" } @@ -298,9 +301,9 @@ enum IntroductionPage: CaseIterable { func presentNextPage() -> IntroductionPage? { switch self { case .splash: - return NearbyConnectionManager.shared.isConnectedToLocalNetwork ? .localNetworkAccess : .noWifi + return NearbyConnectionManager.shared.isConnectedToLocalNetwork ? firstPermissionPane() : .noWifi case .noWifi: - return .localNetworkAccess + return firstPermissionPane() case .localNetworkAccess: return .enableShareExtension case .enableShareExtension: @@ -310,6 +313,14 @@ enum IntroductionPage: CaseIterable { } } + private func firstPermissionPane() -> IntroductionPage { + if #available(macOS 15.0, *) { + // Local network access is requested first on macOS 15+ + return .localNetworkAccess + } + return .enableShareExtension + } + func canContinue() -> Bool { switch self { case .noWifi: diff --git a/QuickDrop/View/WelcomeScreen.swift b/QuickDrop/View/WelcomeScreen.swift index df217c1..3ec2e08 100644 --- a/QuickDrop/View/WelcomeScreen.swift +++ b/QuickDrop/View/WelcomeScreen.swift @@ -8,6 +8,9 @@ import SwiftUI import UniformTypeIdentifiers +let welcomeScreenWidth: CGFloat = 1000 +let welcomeScreenHeight: CGFloat = 600 + struct WelcomeScreen: View { internal init( @@ -125,7 +128,7 @@ struct WelcomeScreen: View { } } .animation(.easeInOut, value: openedIntroduction) - .frame(width: 1000, height: 600) + .frame(width: welcomeScreenWidth, height: welcomeScreenHeight) } func openPrivacyPolicy() { diff --git a/QuickDropShareExtension copy-Info.plist b/QuickDropShareExtension copy-Info.plist new file mode 100644 index 0000000..2018939 --- /dev/null +++ b/QuickDropShareExtension copy-Info.plist @@ -0,0 +1,20 @@ + + + + + NSExtension + + NSExtensionAttributes + + NSExtensionActivationRule + SUBQUERY(extensionItems, $extensionItem, TRUEPREDICATE).@count > 0 + + NSExtensionPointIdentifier + com.apple.share-services + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).ShareViewController + + UIDesignRequiresCompatibility + + + diff --git a/QuickDropiOS/Configuration.swift b/QuickDropiOS/Configuration.swift index 9e6319b..447e3a2 100644 --- a/QuickDropiOS/Configuration.swift +++ b/QuickDropiOS/Configuration.swift @@ -14,9 +14,11 @@ let configuration = LUIConfiguration( plusVersionInfo: GetPlusViewInformation(lifetimeID: "plusversion", monthlyID: "quickdrop.monthly", yearlyID: "quickdrop.yearly", plusViewHeader: isMac() ? "plusview_title" : nil, description: isMac() ? "plusview_description" : "plusview_description_phone", onBoughtPlusVersionAlertMessage: "plusview_success_description", plusVersionFeatures: [], settingsLabelColor: .orange, settingsFooter: "plusview_footer_phone"), setPlusVersion: { result in + #if !GITHUB DispatchQueue.main.async { Settings.shared.gotPlus = result } + #endif }, hasRoundedFont: false,