diff --git a/.gitmodules b/.gitmodules index fc827623b..e69de29bb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +0,0 @@ -[submodule "ThirdParty/Carthage"] - path = ThirdParty/Carthage - url = https://github.com/loki-project/session-ios-carthage.git -[submodule "ThirdParty/WebRTC"] - path = ThirdParty/WebRTC - url = https://github.com/signalapp/signal-webrtc-ios-artifacts diff --git a/Session.xcodeproj/project.pbxproj b/Session.xcodeproj/project.pbxproj index c34ebbfd4..0f921a3f9 100644 --- a/Session.xcodeproj/project.pbxproj +++ b/Session.xcodeproj/project.pbxproj @@ -70,8 +70,6 @@ 34BECE301F7ABCF800D7438D /* GifPickerLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BECE2F1F7ABCF800D7438D /* GifPickerLayout.swift */; }; 34C3C78D20409F320000134C /* Opening.m4r in Resources */ = {isa = PBXBuildFile; fileRef = 34C3C78C20409F320000134C /* Opening.m4r */; }; 34C3C78F2040A4F70000134C /* sonarping.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 34C3C78E2040A4F70000134C /* sonarping.mp3 */; }; - 34C4E2572118957600BEA353 /* OWSWebRTCDataProtos.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C4E2552118957600BEA353 /* OWSWebRTCDataProtos.pb.swift */; }; - 34C4E2582118957600BEA353 /* WebRTCProto.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C4E2562118957600BEA353 /* WebRTCProto.swift */; }; 34CF0787203E6B78005C4D61 /* busy_tone_ansi.caf in Resources */ = {isa = PBXBuildFile; fileRef = 34CF0783203E6B77005C4D61 /* busy_tone_ansi.caf */; }; 34CF0788203E6B78005C4D61 /* ringback_tone_ansi.caf in Resources */ = {isa = PBXBuildFile; fileRef = 34CF0784203E6B77005C4D61 /* ringback_tone_ansi.caf */; }; 34CF078A203E6B78005C4D61 /* end_call_tone_cept.caf in Resources */ = {isa = PBXBuildFile; fileRef = 34CF0786203E6B78005C4D61 /* end_call_tone_cept.caf */; }; @@ -103,8 +101,6 @@ 3681EBBAC430992520DBD9AC /* Pods_SessionShareExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 200605FD180CB8B89F566B41 /* Pods_SessionShareExtension.framework */; }; 4503F1BE20470A5B00CEE724 /* classic-quiet.aifc in Resources */ = {isa = PBXBuildFile; fileRef = 4503F1BB20470A5B00CEE724 /* classic-quiet.aifc */; }; 4503F1BF20470A5B00CEE724 /* classic.aifc in Resources */ = {isa = PBXBuildFile; fileRef = 4503F1BC20470A5B00CEE724 /* classic.aifc */; }; - 4509E79A1DD653700025A59F /* WebRTC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4509E7991DD653700025A59F /* WebRTC.framework */; }; - 450D19131F85236600970622 /* RemoteVideoView.m in Sources */ = {isa = PBXBuildFile; fileRef = 450D19121F85236600970622 /* RemoteVideoView.m */; }; 450DF2051E0D74AC003D14BE /* Platform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 450DF2041E0D74AC003D14BE /* Platform.swift */; }; 450DF2091E0DD2C6003D14BE /* UserNotificationsAdaptee.swift in Sources */ = {isa = PBXBuildFile; fileRef = 450DF2081E0DD2C6003D14BE /* UserNotificationsAdaptee.swift */; }; 451166C01FD86B98000739BA /* AccountManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 451166BF1FD86B98000739BA /* AccountManager.swift */; }; @@ -299,6 +295,14 @@ B8CCF63723961D6D0091D419 /* NewPrivateChatVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8CCF63623961D6D0091D419 /* NewPrivateChatVC.swift */; }; B8CCF63F23975CFB0091D419 /* JoinPublicChatVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8CCF63E23975CFB0091D419 /* JoinPublicChatVC.swift */; }; B8CCF6432397711F0091D419 /* SettingsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8CCF6422397711F0091D419 /* SettingsVC.swift */; }; + B8D64FBB25BA78310029CFC0 /* SessionMessagingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A6F025539DE700C340D1 /* SessionMessagingKit.framework */; }; + B8D64FBC25BA78310029CFC0 /* SessionProtocolKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A8622553B41A00C340D1 /* SessionProtocolKit.framework */; }; + B8D64FBD25BA78310029CFC0 /* SessionSnodeKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A59F255385C100C340D1 /* SessionSnodeKit.framework */; }; + B8D64FBE25BA78310029CFC0 /* SessionUtilitiesKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A679255388CC00C340D1 /* SessionUtilitiesKit.framework */; }; + B8D64FC725BA78520029CFC0 /* SessionMessagingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A6F025539DE700C340D1 /* SessionMessagingKit.framework */; }; + B8D64FC825BA78520029CFC0 /* SessionProtocolKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A8622553B41A00C340D1 /* SessionProtocolKit.framework */; }; + B8D64FC925BA78520029CFC0 /* SessionSnodeKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A59F255385C100C340D1 /* SessionSnodeKit.framework */; }; + B8D64FCB25BA78A90029CFC0 /* SignalUtilitiesKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C33FD9AB255A548A00E217F9 /* SignalUtilitiesKit.framework */; }; B90418E6183E9DD40038554A /* DateUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = B90418E5183E9DD40038554A /* DateUtil.m */; }; B9EB5ABD1884C002007CBB57 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9EB5ABC1884C002007CBB57 /* MessageUI.framework */; }; C300A5B22554AF9800555489 /* VisibleMessage+Profile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C300A5B12554AF9800555489 /* VisibleMessage+Profile.swift */; }; @@ -827,6 +831,62 @@ remoteGlobalIDString = 7BC01A3A241F40AB00BC7C55; remoteInfo = LokiPushNotificationService; }; + B8D64FB325BA78270029CFC0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D221A080169C9E5E00537ABF /* Project object */; + proxyType = 1; + remoteGlobalIDString = C3C2A6EF25539DE700C340D1; + remoteInfo = SessionMessagingKit; + }; + B8D64FB525BA78270029CFC0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D221A080169C9E5E00537ABF /* Project object */; + proxyType = 1; + remoteGlobalIDString = C3C2A8612553B41A00C340D1; + remoteInfo = SessionProtocolKit; + }; + B8D64FB725BA78270029CFC0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D221A080169C9E5E00537ABF /* Project object */; + proxyType = 1; + remoteGlobalIDString = C3C2A59E255385C100C340D1; + remoteInfo = SessionSnodeKit; + }; + B8D64FB925BA78270029CFC0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D221A080169C9E5E00537ABF /* Project object */; + proxyType = 1; + remoteGlobalIDString = C3C2A678255388CC00C340D1; + remoteInfo = SessionUtilitiesKit; + }; + B8D64FBF25BA784A0029CFC0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D221A080169C9E5E00537ABF /* Project object */; + proxyType = 1; + remoteGlobalIDString = C3C2A6EF25539DE700C340D1; + remoteInfo = SessionMessagingKit; + }; + B8D64FC125BA784A0029CFC0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D221A080169C9E5E00537ABF /* Project object */; + proxyType = 1; + remoteGlobalIDString = C3C2A8612553B41A00C340D1; + remoteInfo = SessionProtocolKit; + }; + B8D64FC325BA784A0029CFC0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D221A080169C9E5E00537ABF /* Project object */; + proxyType = 1; + remoteGlobalIDString = C3C2A59E255385C100C340D1; + remoteInfo = SessionSnodeKit; + }; + B8D64FC525BA784A0029CFC0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D221A080169C9E5E00537ABF /* Project object */; + proxyType = 1; + remoteGlobalIDString = C3C2A678255388CC00C340D1; + remoteInfo = SessionUtilitiesKit; + }; C331FF202558F9D300070591 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D221A080169C9E5E00537ABF /* Project object */; @@ -1021,8 +1081,6 @@ 34BECE2F1F7ABCF800D7438D /* GifPickerLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GifPickerLayout.swift; sourceTree = ""; }; 34C3C78C20409F320000134C /* Opening.m4r */ = {isa = PBXFileReference; lastKnownFileType = file; path = Opening.m4r; sourceTree = ""; }; 34C3C78E2040A4F70000134C /* sonarping.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; name = sonarping.mp3; path = Session/Meta/AudioFiles/sonarping.mp3; sourceTree = SOURCE_ROOT; }; - 34C4E2552118957600BEA353 /* OWSWebRTCDataProtos.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OWSWebRTCDataProtos.pb.swift; sourceTree = ""; }; - 34C4E2562118957600BEA353 /* WebRTCProto.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebRTCProto.swift; sourceTree = ""; }; 34CA1C261F7156F300E51C51 /* MessageDetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageDetailViewController.swift; sourceTree = ""; }; 34CF0783203E6B77005C4D61 /* busy_tone_ansi.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = busy_tone_ansi.caf; path = Session/Meta/AudioFiles/busy_tone_ansi.caf; sourceTree = SOURCE_ROOT; }; 34CF0784203E6B77005C4D61 /* ringback_tone_ansi.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = ringback_tone_ansi.caf; path = Session/Meta/AudioFiles/ringback_tone_ansi.caf; sourceTree = SOURCE_ROOT; }; @@ -1076,8 +1134,6 @@ 4503F1BB20470A5B00CEE724 /* classic-quiet.aifc */ = {isa = PBXFileReference; lastKnownFileType = file; path = "classic-quiet.aifc"; sourceTree = ""; }; 4503F1BC20470A5B00CEE724 /* classic.aifc */ = {isa = PBXFileReference; lastKnownFileType = file; path = classic.aifc; sourceTree = ""; }; 4509E7991DD653700025A59F /* WebRTC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebRTC.framework; path = ThirdParty/WebRTC/Build/WebRTC.framework; sourceTree = ""; }; - 450D19111F85236600970622 /* RemoteVideoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteVideoView.h; sourceTree = ""; }; - 450D19121F85236600970622 /* RemoteVideoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RemoteVideoView.m; sourceTree = ""; }; 450DF2041E0D74AC003D14BE /* Platform.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Platform.swift; sourceTree = ""; }; 450DF2081E0DD2C6003D14BE /* UserNotificationsAdaptee.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = UserNotificationsAdaptee.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 451166BF1FD86B98000739BA /* AccountManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountManager.swift; sourceTree = ""; }; @@ -1838,8 +1894,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B8D64FC725BA78520029CFC0 /* SessionMessagingKit.framework in Frameworks */, + B8D64FC825BA78520029CFC0 /* SessionProtocolKit.framework in Frameworks */, + B8D64FC925BA78520029CFC0 /* SessionSnodeKit.framework in Frameworks */, C3D90A5C25773A25002C9DF5 /* SessionUtilitiesKit.framework in Frameworks */, C3402FE52559036600EA6424 /* SessionUIKit.framework in Frameworks */, + B8D64FCB25BA78A90029CFC0 /* SignalUtilitiesKit.framework in Frameworks */, 3681EBBAC430992520DBD9AC /* Pods_SessionShareExtension.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1848,6 +1908,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B8D64FBB25BA78310029CFC0 /* SessionMessagingKit.framework in Frameworks */, + B8D64FBC25BA78310029CFC0 /* SessionProtocolKit.framework in Frameworks */, + B8D64FBD25BA78310029CFC0 /* SessionSnodeKit.framework in Frameworks */, + B8D64FBE25BA78310029CFC0 /* SessionUtilitiesKit.framework in Frameworks */, C38EF00C255B61CC007E1867 /* SignalUtilitiesKit.framework in Frameworks */, 75A5E31037A6F0E5677F3B5C /* Pods_SessionNotificationServiceExtension.framework in Frameworks */, ); @@ -1920,7 +1984,6 @@ 455A16DD1F1FEA0000F86704 /* Metal.framework in Frameworks */, 455A16DE1F1FEA0000F86704 /* MetalKit.framework in Frameworks */, 45847E871E4283C30080EAB3 /* Intents.framework in Frameworks */, - 4509E79A1DD653700025A59F /* WebRTC.framework in Frameworks */, 4520D8D51D417D8E00123472 /* Photos.framework in Frameworks */, 4C9CA25D217E676900607C63 /* ZXingObjC.framework in Frameworks */, B6B226971BE4B7D200860F4D /* ContactsUI.framework in Frameworks */, @@ -2042,8 +2105,6 @@ 76EB03C118170B33006006FC /* Utilities */ = { isa = PBXGroup; children = ( - 34C4E2552118957600BEA353 /* OWSWebRTCDataProtos.pb.swift */, - 34C4E2562118957600BEA353 /* WebRTCProto.swift */, 451166BF1FD86B98000739BA /* AccountManager.swift */, 4C090A1A210FD9C7001FD7F9 /* HapticFeedback.swift */, 34D5CCA71EAE3D30005515DB /* AvatarViewHelper.h */, @@ -2892,8 +2953,6 @@ children = ( C36096B925AD1ACF008B62B2 /* GIFs */, 34E3E5671EC4B19400495BAC /* AudioProgressView.swift */, - 450D19111F85236600970622 /* RemoteVideoView.h */, - 450D19121F85236600970622 /* RemoteVideoView.m */, 346B66301F4E29B200E5122F /* CropScaleImageViewController.swift */, 34969559219B605E00DCFE74 /* ImagePickerController.swift */, 45B9EE9A200E91FB005D2F2D /* MediaDetailViewController.h */, @@ -3824,6 +3883,10 @@ buildRules = ( ); dependencies = ( + B8D64FC025BA784A0029CFC0 /* PBXTargetDependency */, + B8D64FC225BA784A0029CFC0 /* PBXTargetDependency */, + B8D64FC425BA784A0029CFC0 /* PBXTargetDependency */, + B8D64FC625BA784A0029CFC0 /* PBXTargetDependency */, C3D90A5525773A1A002C9DF5 /* PBXTargetDependency */, C3D90A5925773A1A002C9DF5 /* PBXTargetDependency */, ); @@ -3844,6 +3907,10 @@ buildRules = ( ); dependencies = ( + B8D64FB425BA78270029CFC0 /* PBXTargetDependency */, + B8D64FB625BA78270029CFC0 /* PBXTargetDependency */, + B8D64FB825BA78270029CFC0 /* PBXTargetDependency */, + B8D64FBA25BA78270029CFC0 /* PBXTargetDependency */, C3D90A7125773A44002C9DF5 /* PBXTargetDependency */, ); name = SessionNotificationServiceExtension; @@ -3974,7 +4041,6 @@ D221A086169C9E5E00537ABF /* Frameworks */, D221A087169C9E5E00537ABF /* Resources */, 59C9DBA462715B5C999FFB02 /* [CP] Embed Pods Frameworks */, - 451DE9EE1DC1546A00810E42 /* [Carthage] Copy Frameworks */, 453518771FC635DD00210559 /* Embed App Extensions */, 4535189F1FC63DBF00210559 /* Embed Frameworks */, ); @@ -4348,21 +4414,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 451DE9EE1DC1546A00810E42 /* [Carthage] Copy Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "$(SRCROOT)/ThirdParty/WebRTC/Build/WebRTC.framework", - ); - name = "[Carthage] Copy Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/usr/local/bin/carthage copy-frameworks\n"; - }; 4B4609DACEC6E462A2394D2F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -4979,7 +5030,6 @@ files = ( C396DAF52518408B00FF6DC5 /* CSV.swift in Sources */, B8CCF63723961D6D0091D419 /* NewPrivateChatVC.swift in Sources */, - 34C4E2582118957600BEA353 /* WebRTCProto.swift in Sources */, C396DAF12518408B00FF6DC5 /* EnumeratedView.swift in Sources */, 34D1F0BD1F8D108C0066283D /* AttachmentUploadView.m in Sources */, 452EC6DF205E9E30000E787C /* MediaGalleryViewController.swift in Sources */, @@ -5010,7 +5060,6 @@ EF764C351DB67CC5000D9A87 /* UIViewController+Permissions.m in Sources */, 45CD81EF1DC030E7004C9430 /* SyncPushTokensJob.swift in Sources */, C396DAF32518408B00FF6DC5 /* Description.swift in Sources */, - 450D19131F85236600970622 /* RemoteVideoView.m in Sources */, 34129B8621EF877A005457A8 /* LinkPreviewView.swift in Sources */, 34386A54207D271D009F5D9C /* NeverClearView.swift in Sources */, 451166C01FD86B98000739BA /* AccountManager.swift in Sources */, @@ -5134,7 +5183,6 @@ 340FC8AE204DAC8D007AEB0F /* OWSSoundSettingsViewController.m in Sources */, 340FC8B0204DAC8D007AEB0F /* AddToBlockListViewController.m in Sources */, 3496957321A301A100DCFE74 /* OWSBackupJob.m in Sources */, - 34C4E2572118957600BEA353 /* OWSWebRTCDataProtos.pb.swift in Sources */, B894D0752339EDCF00B4D94D /* NukeDataModal.swift in Sources */, 346B66311F4E29B200E5122F /* CropScaleImageViewController.swift in Sources */, 45E5A6991F61E6DE001E4A8A /* MarqueeLabel.swift in Sources */, @@ -5163,6 +5211,46 @@ target = 7BC01A3A241F40AB00BC7C55 /* SessionNotificationServiceExtension */; targetProxy = 7BC01A40241F40AB00BC7C55 /* PBXContainerItemProxy */; }; + B8D64FB425BA78270029CFC0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C3C2A6EF25539DE700C340D1 /* SessionMessagingKit */; + targetProxy = B8D64FB325BA78270029CFC0 /* PBXContainerItemProxy */; + }; + B8D64FB625BA78270029CFC0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C3C2A8612553B41A00C340D1 /* SessionProtocolKit */; + targetProxy = B8D64FB525BA78270029CFC0 /* PBXContainerItemProxy */; + }; + B8D64FB825BA78270029CFC0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C3C2A59E255385C100C340D1 /* SessionSnodeKit */; + targetProxy = B8D64FB725BA78270029CFC0 /* PBXContainerItemProxy */; + }; + B8D64FBA25BA78270029CFC0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C3C2A678255388CC00C340D1 /* SessionUtilitiesKit */; + targetProxy = B8D64FB925BA78270029CFC0 /* PBXContainerItemProxy */; + }; + B8D64FC025BA784A0029CFC0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C3C2A6EF25539DE700C340D1 /* SessionMessagingKit */; + targetProxy = B8D64FBF25BA784A0029CFC0 /* PBXContainerItemProxy */; + }; + B8D64FC225BA784A0029CFC0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C3C2A8612553B41A00C340D1 /* SessionProtocolKit */; + targetProxy = B8D64FC125BA784A0029CFC0 /* PBXContainerItemProxy */; + }; + B8D64FC425BA784A0029CFC0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C3C2A59E255385C100C340D1 /* SessionSnodeKit */; + targetProxy = B8D64FC325BA784A0029CFC0 /* PBXContainerItemProxy */; + }; + B8D64FC625BA784A0029CFC0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C3C2A678255388CC00C340D1 /* SessionUtilitiesKit */; + targetProxy = B8D64FC525BA784A0029CFC0 /* PBXContainerItemProxy */; + }; C331FF212558F9D300070591 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = C331FF1A2558F9D300070591 /* SessionUIKit */; @@ -5264,7 +5352,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 164; + CURRENT_PROJECT_VERSION = 168; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5285,7 +5373,7 @@ INFOPLIST_FILE = SessionShareExtension/Meta/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 1.7.5; + MARKETING_VERSION = 1.7.6; MTL_ENABLE_DEBUG_INFO = YES; PRODUCT_BUNDLE_IDENTIFIER = "com.loki-project.loki-messenger.ShareExtension"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -5333,7 +5421,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 164; + CURRENT_PROJECT_VERSION = 168; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -5359,7 +5447,7 @@ INFOPLIST_FILE = SessionShareExtension/Meta/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 1.7.5; + MARKETING_VERSION = 1.7.6; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_BUNDLE_IDENTIFIER = "com.loki-project.loki-messenger.ShareExtension"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -5394,7 +5482,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 164; + CURRENT_PROJECT_VERSION = 168; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5413,7 +5501,7 @@ INFOPLIST_FILE = SessionNotificationServiceExtension/Meta/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 1.7.5; + MARKETING_VERSION = 1.7.6; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = "com.loki-project.loki-messenger.NotificationServiceExtension"; @@ -5464,7 +5552,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 164; + CURRENT_PROJECT_VERSION = 168; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -5488,7 +5576,7 @@ INFOPLIST_FILE = SessionNotificationServiceExtension/Meta/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 1.7.5; + MARKETING_VERSION = 1.7.6; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = "com.loki-project.loki-messenger.NotificationServiceExtension"; @@ -5506,6 +5594,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = C88965DE4F4EC4FC919BEC4E /* Pods-SessionUIKit.debug.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -5559,6 +5648,7 @@ baseConfigurationReference = C1A746BC424B531D8ED478F6 /* Pods-SessionUIKit.app store release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -6343,10 +6433,7 @@ ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(PROJECT_DIR)/ThirdParty/WebRTC/Build", - "$(PROJECT_DIR)/ThirdParty/Carthage/Build/iOS", - ); + FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/ThirdParty/Carthage/Build/iOS"; GCC_NO_COMMON_BLOCKS = YES; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", @@ -6421,10 +6508,7 @@ CODE_SIGN_IDENTITY = "iPhone Distribution"; ENABLE_BITCODE = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(PROJECT_DIR)/ThirdParty/WebRTC/Build", - "$(PROJECT_DIR)/ThirdParty/Carthage/Build/iOS", - ); + FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/ThirdParty/Carthage/Build/iOS"; GCC_NO_COMMON_BLOCKS = YES; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES; @@ -6483,7 +6567,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 164; + CURRENT_PROJECT_VERSION = 168; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -6519,7 +6603,7 @@ "$(SRCROOT)", ); LLVM_LTO = NO; - MARKETING_VERSION = 1.7.5; + MARKETING_VERSION = 1.7.6; OTHER_LDFLAGS = "$(inherited)"; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = "com.loki-project.loki-messenger"; @@ -6551,7 +6635,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 164; + CURRENT_PROJECT_VERSION = 168; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -6587,7 +6671,7 @@ "$(SRCROOT)", ); LLVM_LTO = NO; - MARKETING_VERSION = 1.7.5; + MARKETING_VERSION = 1.7.6; OTHER_LDFLAGS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = "com.loki-project.loki-messenger"; PRODUCT_NAME = Session; diff --git a/Session/Conversations/MenuActionsViewController.swift b/Session/Conversations/MenuActionsViewController.swift index f9357a4b8..15ac746d3 100644 --- a/Session/Conversations/MenuActionsViewController.swift +++ b/Session/Conversations/MenuActionsViewController.swift @@ -311,6 +311,7 @@ class MenuActionSheetView: UIView, MenuActionViewDelegate { case .failed: Logger.debug("failed") unhighlightAllActionViews() + default: break } } diff --git a/Session/Conversations/Views & Cells/LinkPreviewView.swift b/Session/Conversations/Views & Cells/LinkPreviewView.swift index d8b3b0abe..1b765fb0f 100644 --- a/Session/Conversations/Views & Cells/LinkPreviewView.swift +++ b/Session/Conversations/Views & Cells/LinkPreviewView.swift @@ -2,7 +2,7 @@ // Copyright (c) 2019 Open Whisper Systems. All rights reserved. // -public extension CGPoint { +extension CGPoint { public func offsetBy(dx: CGFloat) -> CGPoint { return CGPoint(x: x + dx, y: y) } diff --git a/Session/Media Viewing & Editing/PhotoCapture.swift b/Session/Media Viewing & Editing/PhotoCapture.swift index f445273e7..6c0eda63b 100644 --- a/Session/Media Viewing & Editing/PhotoCapture.swift +++ b/Session/Media Viewing & Editing/PhotoCapture.swift @@ -599,24 +599,6 @@ class PhotoCaptureOutputAdaptee: NSObject, ImageCaptureOutput { } completion() } - - // for legacy (iOS10) devices - func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photoSampleBuffer: CMSampleBuffer?, previewPhoto previewPhotoSampleBuffer: CMSampleBuffer?, resolvedSettings: AVCaptureResolvedPhotoSettings, bracketSettings: AVCaptureBracketedStillImageSettings?, error: Error?) { - if #available(iOS 11, *) { - owsFailDebug("unexpectedly calling legacy method.") - } - - guard let photoSampleBuffer = photoSampleBuffer else { - owsFailDebug("sampleBuffer was unexpectedly nil") - return - } - - let data = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(photoSampleBuffer) - DispatchQueue.main.async { - self.delegate?.captureOutputDidFinishProcessing(photoData: data, error: error) - } - completion() - } } } @@ -687,6 +669,7 @@ extension AVCaptureVideoOrientation: CustomStringConvertible { return "AVCaptureVideoOrientation.landscapeRight" case .landscapeLeft: return "AVCaptureVideoOrientation.landscapeLeft" + default: preconditionFailure() } } } @@ -708,6 +691,7 @@ extension UIDeviceOrientation: CustomStringConvertible { return "UIDeviceOrientation.faceUp" case .faceDown: return "UIDeviceOrientation.faceDown" + default: preconditionFailure() } } } @@ -731,6 +715,7 @@ extension UIImage.Orientation: CustomStringConvertible { return "UIImageOrientation.leftMirrored" case .rightMirrored: return "UIImageOrientation.rightMirrored" + default: preconditionFailure() } } } diff --git a/Session/Media Viewing & Editing/PhotoCaptureViewController.swift b/Session/Media Viewing & Editing/PhotoCaptureViewController.swift index 930548282..b7b61333c 100644 --- a/Session/Media Viewing & Editing/PhotoCaptureViewController.swift +++ b/Session/Media Viewing & Editing/PhotoCaptureViewController.swift @@ -330,6 +330,7 @@ class PhotoCaptureViewController: OWSViewController { imageName = "ic_flash_mode_on" case .off: imageName = "ic_flash_mode_off" + default: preconditionFailure() } self.flashModeControl.setImage(imageName: imageName) @@ -520,6 +521,7 @@ class CaptureButton: UIView { self.superview?.layoutIfNeeded() } delegate?.didCancelLongPressCaptureButton(self) + default: break } } } diff --git a/Session/Media Viewing & Editing/RemoteVideoView.h b/Session/Media Viewing & Editing/RemoteVideoView.h deleted file mode 100644 index 353789890..000000000 --- a/Session/Media Viewing & Editing/RemoteVideoView.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2017 Open Whisper Systems. All rights reserved. -// - -#import - -NS_ASSUME_NONNULL_BEGIN - -/** - * Drives the full screen remote video. This is *not* a swift class - * so we can take advantage of some compile time constants from WebRTC - */ -@interface RemoteVideoView : UIView - -@end - -NS_ASSUME_NONNULL_END diff --git a/Session/Media Viewing & Editing/RemoteVideoView.m b/Session/Media Viewing & Editing/RemoteVideoView.m deleted file mode 100644 index 4104d5ad0..000000000 --- a/Session/Media Viewing & Editing/RemoteVideoView.m +++ /dev/null @@ -1,165 +0,0 @@ -// -// Copyright (c) 2019 Open Whisper Systems. All rights reserved. -// - -#import "RemoteVideoView.h" -#import "UIFont+OWS.h" -#import "UIView+OWS.h" -#import -#import -#import -#import -#import -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface RemoteVideoView () - -@property (nonatomic, readonly) __kindof UIView *videoRenderer; - -// Used for legacy EAGLVideoView -@property (nullable, nonatomic) NSArray *remoteVideoConstraints; - -@end - -@implementation RemoteVideoView - -- (instancetype)init -{ - self = [super init]; - if (!self) { - return self; - } - - _remoteVideoConstraints = @[]; - -// Currently RTC only supports metal on 64bit machines -#if defined(__arm64__) - // On 64-bit, iOS9+: uses the MetalKit backed view for improved battery/rendering performance. - if (_videoRenderer == nil) { - - // It is insufficient to check the RTC_SUPPORTS_METAL macro to determine Metal support. - // RTCMTLVideoView requires the MTKView class, available only in iOS9+ - // So check that it exists before proceeding. - if ([MTKView class]) { - RTCMTLVideoView *rtcMetalView = [[RTCMTLVideoView alloc] initWithFrame:CGRectZero]; - rtcMetalView.videoContentMode = UIViewContentModeScaleAspectFill; - _videoRenderer = rtcMetalView; - [self addSubview:_videoRenderer]; - [_videoRenderer autoPinEdgesToSuperviewEdges]; - // HACK: Although RTCMTLVideo view is positioned to the top edge of the screen - // It's inner (private) MTKView is below the status bar. - for (UIView *subview in [_videoRenderer subviews]) { - if ([subview isKindOfClass:[MTKView class]]) { - [subview autoPinEdgesToSuperviewEdges]; - } else { - OWSFailDebug(@"New subviews added to MTLVideoView. Reconsider this hack."); - } - } - } - } -#endif - - // On 32-bit iOS9+ systems, use the legacy EAGL backed view. - if (_videoRenderer == nil) { - RTCEAGLVideoView *eaglVideoView = [RTCEAGLVideoView new]; - eaglVideoView.delegate = self; - _videoRenderer = eaglVideoView; - [self addSubview:_videoRenderer]; - // Pinning legacy RTCEAGL view discards aspect ratio. - // So we have a more verbose layout in the RTCEAGLVideoViewDelegate methods - // [_videoRenderer autoPinEdgesToSuperviewEdges]; - } - - // We want the rendered video to go edge-to-edge. - _videoRenderer.layoutMargins = UIEdgeInsetsZero; - - return self; -} - -#pragma mark - RTCVideoRenderer - -/** The size of the frame. */ -- (void)setSize:(CGSize)size -{ - [self.videoRenderer setSize:size]; -} - -#pragma mark - RTCVideoViewDelegate - -- (void)videoView:(id)videoRenderer didChangeVideoSize:(CGSize)remoteVideoSize -{ - OWSAssertIsOnMainThread(); - - if (![videoRenderer isKindOfClass:[RTCEAGLVideoView class]]) { - OWSFailDebug(@"Unexpected videoRenderer: %@", videoRenderer); - return; - } - RTCEAGLVideoView *videoView = (RTCEAGLVideoView *)videoRenderer; - - if (remoteVideoSize.height <= 0) { - OWSFailDebug(@"Illegal video height: %f", remoteVideoSize.height); - return; - } - - CGFloat aspectRatio = remoteVideoSize.width / remoteVideoSize.height; - OWSLogVerbose(@"Remote video size: width: %f height: %f ratio: %f", - remoteVideoSize.width, - remoteVideoSize.height, - aspectRatio); - - UIView *containingView = self.superview; - if (containingView == nil) { - OWSLogDebug(@"Cannot layout video view without superview"); - return; - } - - [NSLayoutConstraint deactivateConstraints:self.remoteVideoConstraints]; - - NSMutableArray *constraints = [NSMutableArray new]; - if (remoteVideoSize.width > 0 && remoteVideoSize.height > 0 && containingView.bounds.size.width > 0 - && containingView.bounds.size.height > 0) { - - // to approximate "scale to fill" contentMode - // - Pin aspect ratio - // - Width and height is *at least* as wide as superview - [constraints addObject:[videoView autoPinToAspectRatioWithSize:remoteVideoSize]]; - [constraints addObject:[videoView autoSetDimension:ALDimensionWidth - toSize:containingView.width - relation:NSLayoutRelationGreaterThanOrEqual]]; - [constraints addObject:[videoView autoSetDimension:ALDimensionHeight - toSize:containingView.height - relation:NSLayoutRelationGreaterThanOrEqual]]; - [constraints addObjectsFromArray:[videoView autoCenterInSuperview]]; - - // Low priority constraints force view to be no larger than necessary. - [NSLayoutConstraint autoSetPriority:UILayoutPriorityDefaultLow - forConstraints:^{ - [constraints addObjectsFromArray:[videoView autoPinEdgesToSuperviewEdges]]; - }]; - - } else { - [constraints addObjectsFromArray:[videoView autoPinEdgesToSuperviewEdges]]; - } - - self.remoteVideoConstraints = [constraints copy]; - // We need to force relayout to occur immediately (and not - // wait for a UIKit layout/render pass) or the remoteVideoView - // (which presumably is updating its CALayer directly) will - // ocassionally appear to have bad frames. - [videoView setNeedsLayout]; - [[videoView superview] setNeedsLayout]; - [videoView layoutIfNeeded]; - [[videoView superview] layoutIfNeeded]; -} - -/** The frame to be displayed. */ -- (void)renderFrame:(nullable RTCVideoFrame *)frame -{ - [self.videoRenderer renderFrame:frame]; -} - -@end - -NS_ASSUME_NONNULL_END diff --git a/Session/Meta/AppDelegate.m b/Session/Meta/AppDelegate.m index f7b21eb7b..f4e570081 100644 --- a/Session/Meta/AppDelegate.m +++ b/Session/Meta/AppDelegate.m @@ -32,7 +32,6 @@ #import #import -@import WebRTC; @import Intents; NSString *const AppDelegateStoryboardMain = @"Main"; @@ -371,8 +370,6 @@ static NSTimeInterval launchStartedAt; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - RTCInitializeSSL(); - if ([self.tsAccountManager isRegistered]) { // At this point, potentially lengthy DB locking migrations could be running. // Avoid blocking app launch by putting all further possible DB access in async block diff --git a/Session/Meta/Session-Info.plist b/Session/Meta/Session-Info.plist index 2943e555a..cfd13c124 100644 --- a/Session/Meta/Session-Info.plist +++ b/Session/Meta/Session-Info.plist @@ -8,8 +8,6 @@ 0.36.0 OSXVersion 10.15.6 - WebRTCCommit - 1445d719bf05280270e9f77576f80f973fd847f8 M73 CFBundleDevelopmentRegion en @@ -65,7 +63,7 @@ NSContactsUsageDescription Signal uses your contacts to find users you know. We do not store your contacts on the server. NSFaceIDUsageDescription - Session's Screen Lock feature uses Face ID. + Session's Screen Lock feature uses Face ID. NSMicrophoneUsageDescription Session needs access to your microphone to record media. NSPhotoLibraryAddUsageDescription diff --git a/Session/Meta/Signal-Bridging-Header.h b/Session/Meta/Signal-Bridging-Header.h index 52b0662f6..900f868e9 100644 --- a/Session/Meta/Signal-Bridging-Header.h +++ b/Session/Meta/Signal-Bridging-Header.h @@ -33,7 +33,6 @@ #import "OWSQuotedMessageView.h" #import "OWSWindowManager.h" #import "PrivacySettingsTableViewController.h" -#import "RemoteVideoView.h" #import "OWSQRCodeScanningViewController.h" #import "SignalApp.h" #import "UIViewController+Permissions.h" @@ -88,6 +87,4 @@ #import #import #import -#import -#import #import diff --git a/Session/Meta/SignalApp.h b/Session/Meta/SignalApp.h index ef9abb5c7..190dc2333 100644 --- a/Session/Meta/SignalApp.h +++ b/Session/Meta/SignalApp.h @@ -12,7 +12,6 @@ NS_ASSUME_NONNULL_BEGIN @class HomeVC; @class OWSMessageFetcherJob; @class OWSNavigationController; -@class OWSWebRTCCallMessageHandler; @class OutboundCallInitiator; @class TSThread; diff --git a/Session/Utilities/AppUpdateNag.swift b/Session/Utilities/AppUpdateNag.swift index 6694966ec..eee81cde8 100644 --- a/Session/Utilities/AppUpdateNag.swift +++ b/Session/Utilities/AppUpdateNag.swift @@ -21,6 +21,7 @@ class AppUpdateNag: NSObject { public func showAppUpgradeNagIfNecessary() { return + /* guard let currentVersion = self.currentVersion else { owsFailDebug("currentVersion was unexpectedly nil") return @@ -49,6 +50,7 @@ class AppUpdateNag: NSObject { }.catch { error in Logger.error("failed with error: \(error)") }.retainUntilComplete() + */ } // MARK: - Internal @@ -110,7 +112,7 @@ class AppUpdateNag: NSObject { // Only show nag if we are "at rest" in the home view or registration view without any // alerts or dialogs showing. - guard let frontmostViewController = UIApplication.shared.frontmostViewController else { + guard UIApplication.shared.frontmostViewController != nil else { owsFailDebug("frontmostViewController was unexpectedly nil") return } diff --git a/Session/Utilities/OWSWebRTCDataProtos.pb.swift b/Session/Utilities/OWSWebRTCDataProtos.pb.swift deleted file mode 100644 index 5ffff701b..000000000 --- a/Session/Utilities/OWSWebRTCDataProtos.pb.swift +++ /dev/null @@ -1,317 +0,0 @@ -// DO NOT EDIT. -// -// Generated by the Swift generator plugin for the protocol buffer compiler. -// Source: OWSWebRTCDataProtos.proto -// -// For information on using the generated types, please see the documenation: -// https://github.com/apple/swift-protobuf/ - -//* -// Copyright (C) 2014-2016 Open Whisper Systems -// -// Licensed according to the LICENSE file in this repository. - -/// iOS - since we use a modern proto-compiler, we must specify -/// the legacy proto format. - -import Foundation -import SwiftProtobuf - -// If the compiler emits an error on this type, it is because this file -// was generated by a version of the `protoc` Swift plug-in that is -// incompatible with the version of SwiftProtobuf to which you are linking. -// Please ensure that your are building against the same version of the API -// that was used to generate this file. -fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck { - struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {} - typealias Version = _2 -} - -struct WebRTCProtos_Connected { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - /// @required - var id: UInt64 { - get {return _id ?? 0} - set {_id = newValue} - } - /// Returns true if `id` has been explicitly set. - var hasID: Bool {return self._id != nil} - /// Clears the value of `id`. Subsequent reads from it will return its default value. - mutating func clearID() {self._id = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} - - fileprivate var _id: UInt64? = nil -} - -struct WebRTCProtos_Hangup { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - /// @required - var id: UInt64 { - get {return _id ?? 0} - set {_id = newValue} - } - /// Returns true if `id` has been explicitly set. - var hasID: Bool {return self._id != nil} - /// Clears the value of `id`. Subsequent reads from it will return its default value. - mutating func clearID() {self._id = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} - - fileprivate var _id: UInt64? = nil -} - -struct WebRTCProtos_VideoStreamingStatus { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - /// @required - var id: UInt64 { - get {return _id ?? 0} - set {_id = newValue} - } - /// Returns true if `id` has been explicitly set. - var hasID: Bool {return self._id != nil} - /// Clears the value of `id`. Subsequent reads from it will return its default value. - mutating func clearID() {self._id = nil} - - var enabled: Bool { - get {return _enabled ?? false} - set {_enabled = newValue} - } - /// Returns true if `enabled` has been explicitly set. - var hasEnabled: Bool {return self._enabled != nil} - /// Clears the value of `enabled`. Subsequent reads from it will return its default value. - mutating func clearEnabled() {self._enabled = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} - - fileprivate var _id: UInt64? = nil - fileprivate var _enabled: Bool? = nil -} - -struct WebRTCProtos_Data { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var connected: WebRTCProtos_Connected { - get {return _storage._connected ?? WebRTCProtos_Connected()} - set {_uniqueStorage()._connected = newValue} - } - /// Returns true if `connected` has been explicitly set. - var hasConnected: Bool {return _storage._connected != nil} - /// Clears the value of `connected`. Subsequent reads from it will return its default value. - mutating func clearConnected() {_storage._connected = nil} - - var hangup: WebRTCProtos_Hangup { - get {return _storage._hangup ?? WebRTCProtos_Hangup()} - set {_uniqueStorage()._hangup = newValue} - } - /// Returns true if `hangup` has been explicitly set. - var hasHangup: Bool {return _storage._hangup != nil} - /// Clears the value of `hangup`. Subsequent reads from it will return its default value. - mutating func clearHangup() {_storage._hangup = nil} - - var videoStreamingStatus: WebRTCProtos_VideoStreamingStatus { - get {return _storage._videoStreamingStatus ?? WebRTCProtos_VideoStreamingStatus()} - set {_uniqueStorage()._videoStreamingStatus = newValue} - } - /// Returns true if `videoStreamingStatus` has been explicitly set. - var hasVideoStreamingStatus: Bool {return _storage._videoStreamingStatus != nil} - /// Clears the value of `videoStreamingStatus`. Subsequent reads from it will return its default value. - mutating func clearVideoStreamingStatus() {_storage._videoStreamingStatus = nil} - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} - - fileprivate var _storage = _StorageClass.defaultInstance -} - -// MARK: - Code below here is support for the SwiftProtobuf runtime. - -fileprivate let _protobuf_package = "WebRTCProtos" - -extension WebRTCProtos_Connected: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = _protobuf_package + ".Connected" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "id"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularUInt64Field(value: &self._id) - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if let v = self._id { - try visitor.visitSingularUInt64Field(value: v, fieldNumber: 1) - } - try unknownFields.traverse(visitor: &visitor) - } - - func _protobuf_generated_isEqualTo(other: WebRTCProtos_Connected) -> Bool { - if self._id != other._id {return false} - if unknownFields != other.unknownFields {return false} - return true - } -} - -extension WebRTCProtos_Hangup: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = _protobuf_package + ".Hangup" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "id"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularUInt64Field(value: &self._id) - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if let v = self._id { - try visitor.visitSingularUInt64Field(value: v, fieldNumber: 1) - } - try unknownFields.traverse(visitor: &visitor) - } - - func _protobuf_generated_isEqualTo(other: WebRTCProtos_Hangup) -> Bool { - if self._id != other._id {return false} - if unknownFields != other.unknownFields {return false} - return true - } -} - -extension WebRTCProtos_VideoStreamingStatus: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = _protobuf_package + ".VideoStreamingStatus" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "id"), - 2: .same(proto: "enabled"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularUInt64Field(value: &self._id) - case 2: try decoder.decodeSingularBoolField(value: &self._enabled) - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if let v = self._id { - try visitor.visitSingularUInt64Field(value: v, fieldNumber: 1) - } - if let v = self._enabled { - try visitor.visitSingularBoolField(value: v, fieldNumber: 2) - } - try unknownFields.traverse(visitor: &visitor) - } - - func _protobuf_generated_isEqualTo(other: WebRTCProtos_VideoStreamingStatus) -> Bool { - if self._id != other._id {return false} - if self._enabled != other._enabled {return false} - if unknownFields != other.unknownFields {return false} - return true - } -} - -extension WebRTCProtos_Data: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = _protobuf_package + ".Data" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .same(proto: "connected"), - 2: .same(proto: "hangup"), - 3: .same(proto: "videoStreamingStatus"), - ] - - fileprivate class _StorageClass { - var _connected: WebRTCProtos_Connected? = nil - var _hangup: WebRTCProtos_Hangup? = nil - var _videoStreamingStatus: WebRTCProtos_VideoStreamingStatus? = nil - - static let defaultInstance = _StorageClass() - - private init() {} - - init(copying source: _StorageClass) { - _connected = source._connected - _hangup = source._hangup - _videoStreamingStatus = source._videoStreamingStatus - } - } - - fileprivate mutating func _uniqueStorage() -> _StorageClass { - if !isKnownUniquelyReferenced(&_storage) { - _storage = _StorageClass(copying: _storage) - } - return _storage - } - - mutating func decodeMessage(decoder: inout D) throws { - _ = _uniqueStorage() - try withExtendedLifetime(_storage) { (_storage: _StorageClass) in - while let fieldNumber = try decoder.nextFieldNumber() { - switch fieldNumber { - case 1: try decoder.decodeSingularMessageField(value: &_storage._connected) - case 2: try decoder.decodeSingularMessageField(value: &_storage._hangup) - case 3: try decoder.decodeSingularMessageField(value: &_storage._videoStreamingStatus) - default: break - } - } - } - } - - func traverse(visitor: inout V) throws { - try withExtendedLifetime(_storage) { (_storage: _StorageClass) in - if let v = _storage._connected { - try visitor.visitSingularMessageField(value: v, fieldNumber: 1) - } - if let v = _storage._hangup { - try visitor.visitSingularMessageField(value: v, fieldNumber: 2) - } - if let v = _storage._videoStreamingStatus { - try visitor.visitSingularMessageField(value: v, fieldNumber: 3) - } - } - try unknownFields.traverse(visitor: &visitor) - } - - func _protobuf_generated_isEqualTo(other: WebRTCProtos_Data) -> Bool { - if _storage !== other._storage { - let storagesAreEqual: Bool = withExtendedLifetime((_storage, other._storage)) { (_args: (_StorageClass, _StorageClass)) in - let _storage = _args.0 - let other_storage = _args.1 - if _storage._connected != other_storage._connected {return false} - if _storage._hangup != other_storage._hangup {return false} - if _storage._videoStreamingStatus != other_storage._videoStreamingStatus {return false} - return true - } - if !storagesAreEqual {return false} - } - if unknownFields != other.unknownFields {return false} - return true - } -} diff --git a/Session/Utilities/WebRTCProto.swift b/Session/Utilities/WebRTCProto.swift deleted file mode 100644 index 3a3d2f0c1..000000000 --- a/Session/Utilities/WebRTCProto.swift +++ /dev/null @@ -1,392 +0,0 @@ -// -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. -// - -import Foundation - -// WARNING: This code is generated. Only edit within the markers. - -public enum WebRTCProtoError: Error { - case invalidProtobuf(description: String) -} - -// MARK: - WebRTCProtoConnected - -@objc public class WebRTCProtoConnected: NSObject { - - // MARK: - WebRTCProtoConnectedBuilder - - @objc public class func builder(id: UInt64) -> WebRTCProtoConnectedBuilder { - return WebRTCProtoConnectedBuilder(id: id) - } - - @objc public class WebRTCProtoConnectedBuilder: NSObject { - - private var proto = WebRTCProtos_Connected() - - @objc fileprivate override init() {} - - @objc fileprivate init(id: UInt64) { - super.init() - - setId(id) - } - - @objc public func setId(_ valueParam: UInt64) { - proto.id = valueParam - } - - @objc public func build() throws -> WebRTCProtoConnected { - return try WebRTCProtoConnected.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try WebRTCProtoConnected.parseProto(proto).serializedData() - } - } - - fileprivate let proto: WebRTCProtos_Connected - - @objc public let id: UInt64 - - private init(proto: WebRTCProtos_Connected, - id: UInt64) { - self.proto = proto - self.id = id - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> WebRTCProtoConnected { - let proto = try WebRTCProtos_Connected(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: WebRTCProtos_Connected) throws -> WebRTCProtoConnected { - guard proto.hasID else { - throw WebRTCProtoError.invalidProtobuf(description: "\(logTag) missing required field: id") - } - let id = proto.id - - // MARK: - Begin Validation Logic for WebRTCProtoConnected - - - // MARK: - End Validation Logic for WebRTCProtoConnected - - - let result = WebRTCProtoConnected(proto: proto, - id: id) - return result - } -} - -#if DEBUG - -extension WebRTCProtoConnected { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension WebRTCProtoConnected.WebRTCProtoConnectedBuilder { - @objc public func buildIgnoringErrors() -> WebRTCProtoConnected? { - return try! self.build() - } -} - -#endif - -// MARK: - WebRTCProtoHangup - -@objc public class WebRTCProtoHangup: NSObject { - - // MARK: - WebRTCProtoHangupBuilder - - @objc public class func builder(id: UInt64) -> WebRTCProtoHangupBuilder { - return WebRTCProtoHangupBuilder(id: id) - } - - @objc public class WebRTCProtoHangupBuilder: NSObject { - - private var proto = WebRTCProtos_Hangup() - - @objc fileprivate override init() {} - - @objc fileprivate init(id: UInt64) { - super.init() - - setId(id) - } - - @objc public func setId(_ valueParam: UInt64) { - proto.id = valueParam - } - - @objc public func build() throws -> WebRTCProtoHangup { - return try WebRTCProtoHangup.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try WebRTCProtoHangup.parseProto(proto).serializedData() - } - } - - fileprivate let proto: WebRTCProtos_Hangup - - @objc public let id: UInt64 - - private init(proto: WebRTCProtos_Hangup, - id: UInt64) { - self.proto = proto - self.id = id - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> WebRTCProtoHangup { - let proto = try WebRTCProtos_Hangup(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: WebRTCProtos_Hangup) throws -> WebRTCProtoHangup { - guard proto.hasID else { - throw WebRTCProtoError.invalidProtobuf(description: "\(logTag) missing required field: id") - } - let id = proto.id - - // MARK: - Begin Validation Logic for WebRTCProtoHangup - - - // MARK: - End Validation Logic for WebRTCProtoHangup - - - let result = WebRTCProtoHangup(proto: proto, - id: id) - return result - } -} - -#if DEBUG - -extension WebRTCProtoHangup { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension WebRTCProtoHangup.WebRTCProtoHangupBuilder { - @objc public func buildIgnoringErrors() -> WebRTCProtoHangup? { - return try! self.build() - } -} - -#endif - -// MARK: - WebRTCProtoVideoStreamingStatus - -@objc public class WebRTCProtoVideoStreamingStatus: NSObject { - - // MARK: - WebRTCProtoVideoStreamingStatusBuilder - - @objc public class func builder(id: UInt64) -> WebRTCProtoVideoStreamingStatusBuilder { - return WebRTCProtoVideoStreamingStatusBuilder(id: id) - } - - @objc public class WebRTCProtoVideoStreamingStatusBuilder: NSObject { - - private var proto = WebRTCProtos_VideoStreamingStatus() - - @objc fileprivate override init() {} - - @objc fileprivate init(id: UInt64) { - super.init() - - setId(id) - } - - @objc public func setId(_ valueParam: UInt64) { - proto.id = valueParam - } - - @objc public func setEnabled(_ valueParam: Bool) { - proto.enabled = valueParam - } - - @objc public func build() throws -> WebRTCProtoVideoStreamingStatus { - return try WebRTCProtoVideoStreamingStatus.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try WebRTCProtoVideoStreamingStatus.parseProto(proto).serializedData() - } - } - - fileprivate let proto: WebRTCProtos_VideoStreamingStatus - - @objc public let id: UInt64 - - @objc public var enabled: Bool { - return proto.enabled - } - @objc public var hasEnabled: Bool { - return proto.hasEnabled - } - - private init(proto: WebRTCProtos_VideoStreamingStatus, - id: UInt64) { - self.proto = proto - self.id = id - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> WebRTCProtoVideoStreamingStatus { - let proto = try WebRTCProtos_VideoStreamingStatus(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: WebRTCProtos_VideoStreamingStatus) throws -> WebRTCProtoVideoStreamingStatus { - guard proto.hasID else { - throw WebRTCProtoError.invalidProtobuf(description: "\(logTag) missing required field: id") - } - let id = proto.id - - // MARK: - Begin Validation Logic for WebRTCProtoVideoStreamingStatus - - - // MARK: - End Validation Logic for WebRTCProtoVideoStreamingStatus - - - let result = WebRTCProtoVideoStreamingStatus(proto: proto, - id: id) - return result - } -} - -#if DEBUG - -extension WebRTCProtoVideoStreamingStatus { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension WebRTCProtoVideoStreamingStatus.WebRTCProtoVideoStreamingStatusBuilder { - @objc public func buildIgnoringErrors() -> WebRTCProtoVideoStreamingStatus? { - return try! self.build() - } -} - -#endif - -// MARK: - WebRTCProtoData - -@objc public class WebRTCProtoData: NSObject { - - // MARK: - WebRTCProtoDataBuilder - - @objc public class func builder() -> WebRTCProtoDataBuilder { - return WebRTCProtoDataBuilder() - } - - @objc public class WebRTCProtoDataBuilder: NSObject { - - private var proto = WebRTCProtos_Data() - - @objc fileprivate override init() {} - - @objc public func setConnected(_ valueParam: WebRTCProtoConnected) { - proto.connected = valueParam.proto - } - - @objc public func setHangup(_ valueParam: WebRTCProtoHangup) { - proto.hangup = valueParam.proto - } - - @objc public func setVideoStreamingStatus(_ valueParam: WebRTCProtoVideoStreamingStatus) { - proto.videoStreamingStatus = valueParam.proto - } - - @objc public func build() throws -> WebRTCProtoData { - return try WebRTCProtoData.parseProto(proto) - } - - @objc public func buildSerializedData() throws -> Data { - return try WebRTCProtoData.parseProto(proto).serializedData() - } - } - - fileprivate let proto: WebRTCProtos_Data - - @objc public let connected: WebRTCProtoConnected? - - @objc public let hangup: WebRTCProtoHangup? - - @objc public let videoStreamingStatus: WebRTCProtoVideoStreamingStatus? - - private init(proto: WebRTCProtos_Data, - connected: WebRTCProtoConnected?, - hangup: WebRTCProtoHangup?, - videoStreamingStatus: WebRTCProtoVideoStreamingStatus?) { - self.proto = proto - self.connected = connected - self.hangup = hangup - self.videoStreamingStatus = videoStreamingStatus - } - - @objc - public func serializedData() throws -> Data { - return try self.proto.serializedData() - } - - @objc public class func parseData(_ serializedData: Data) throws -> WebRTCProtoData { - let proto = try WebRTCProtos_Data(serializedData: serializedData) - return try parseProto(proto) - } - - fileprivate class func parseProto(_ proto: WebRTCProtos_Data) throws -> WebRTCProtoData { - var connected: WebRTCProtoConnected? - if proto.hasConnected { - connected = try WebRTCProtoConnected.parseProto(proto.connected) - } - - var hangup: WebRTCProtoHangup? - if proto.hasHangup { - hangup = try WebRTCProtoHangup.parseProto(proto.hangup) - } - - var videoStreamingStatus: WebRTCProtoVideoStreamingStatus? - if proto.hasVideoStreamingStatus { - videoStreamingStatus = try WebRTCProtoVideoStreamingStatus.parseProto(proto.videoStreamingStatus) - } - - // MARK: - Begin Validation Logic for WebRTCProtoData - - - // MARK: - End Validation Logic for WebRTCProtoData - - - let result = WebRTCProtoData(proto: proto, - connected: connected, - hangup: hangup, - videoStreamingStatus: videoStreamingStatus) - return result - } -} - -#if DEBUG - -extension WebRTCProtoData { - @objc public func serializedDataIgnoringErrors() -> Data? { - return try! self.serializedData() - } -} - -extension WebRTCProtoData.WebRTCProtoDataBuilder { - @objc public func buildIgnoringErrors() -> WebRTCProtoData? { - return try! self.build() - } -} - -#endif diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift index 3f2afc0dd..39a3ba501 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift @@ -16,6 +16,11 @@ extension MessageReceiver { case let message as VisibleMessage: try handleVisibleMessage(message, associatedWithProto: proto, openGroupID: openGroupID, isBackgroundPoll: isBackgroundPoll, using: transaction) default: fatalError() } + var isMainAppAndActive = false + if let sharedUserDefaults = UserDefaults(suiteName: "group.com.loki-project.loki-messenger") { + isMainAppAndActive = sharedUserDefaults.bool(forKey: "isMainAppActive") + } + guard isMainAppAndActive else { return } // Touch the thread to update the home screen preview let storage = SNMessagingKitConfiguration.shared.storage guard let threadID = storage.getOrCreateThread(for: message.sender!, groupPublicKey: message.groupPublicKey, openGroupID: openGroupID, using: transaction) else { return } diff --git a/SessionMessagingKit/Utilities/OWSAudioSession.swift b/SessionMessagingKit/Utilities/OWSAudioSession.swift index eb534c60a..1f9653118 100644 --- a/SessionMessagingKit/Utilities/OWSAudioSession.swift +++ b/SessionMessagingKit/Utilities/OWSAudioSession.swift @@ -3,7 +3,7 @@ // import Foundation -import WebRTC +import AVFoundation @objc(OWSAudioActivity) public class AudioActivity: NSObject { @@ -176,45 +176,4 @@ public class OWSAudioSession: NSObject { owsFailDebug("failed with error: \(error)") } } - - // MARK: - WebRTC Audio - - /** - * By default WebRTC starts the audio session (PlayAndRecord) immediately upon creating the peer connection - * but we want to create the peer connection and set up all the signaling channels before we prompt the user - * for an incoming call. Without manually handling the session, this would result in the user seeing a recording - * permission requested (and recording banner) before they even know they have an incoming call. - * - * By using the `useManualAudio` and `isAudioEnabled` attributes of the RTCAudioSession we can delay recording until - * it makes sense. - */ - - /** - * The private class that manages AVAudioSession for WebRTC - */ - private let rtcAudioSession = RTCAudioSession.sharedInstance() - - /** - * This must be called before any audio tracks are added to the peerConnection, else we'll start recording before all - * our signaling is set up. - */ - @objc - public func configureRTCAudio() { - Logger.info("") - rtcAudioSession.useManualAudio = true - } - - /** - * Because we useManualAudio with our RTCAudioSession, we have to start/stop the recording audio session ourselves. - * See header for details on manual audio. - */ - @objc - public var isRTCAudioEnabled: Bool { - get { - return rtcAudioSession.isAudioEnabled - } - set { - rtcAudioSession.isAudioEnabled = newValue - } - } } diff --git a/SessionShareExtension/ShareViewController.swift b/SessionShareExtension/ShareViewController.swift index 6383cf785..5491e73dd 100644 --- a/SessionShareExtension/ShareViewController.swift +++ b/SessionShareExtension/ShareViewController.swift @@ -83,15 +83,14 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed // We shouldn't set up our environment until after we've consulted isReadyForAppExtensions. AppSetup.setupEnvironment(appSpecificSingletonBlock: { SSKEnvironment.shared.notificationsManager = NoopNotificationsManager() - }, - migrationCompletion: { [weak self] in - AssertIsOnMainThread() + }, migrationCompletion: { [weak self] in + AssertIsOnMainThread() - guard let strongSelf = self else { return } + guard let strongSelf = self else { return } - // performUpdateCheck must be invoked after Environment has been initialized because - // upgrade process may depend on Environment. - strongSelf.versionMigrationsDidComplete() + // performUpdateCheck must be invoked after Environment has been initialized because + // upgrade process may depend on Environment. + strongSelf.versionMigrationsDidComplete() }) let shareViewNavigationController = OWSNavigationController() @@ -112,7 +111,7 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed Logger.debug("setup is slow - showing loading screen") strongSelf.showPrimaryViewController(loadViewController) - }.retainUntilComplete() + }.retainUntilComplete() // We don't need to use "screen protection" in the SAE. @@ -180,7 +179,7 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed // Avoid blocking app launch by putting all further possible DB access in async block DispatchQueue.global().async { [weak self] in guard let _ = self else { return } - Logger.info("running post launch block for registered user: \(TSAccountManager.localNumber)") + Logger.info("running post launch block for registered user: \(TSAccountManager.localNumber()!)") // We don't need to use OWSDisappearingMessagesJob in the SAE. @@ -199,7 +198,7 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed if tsAccountManager.isRegistered() { DispatchQueue.main.async { [weak self] in guard let _ = self else { return } - Logger.info("running post launch block for registered user: \(TSAccountManager.localNumber)") + Logger.info("running post launch block for registered user: \(TSAccountManager.localNumber()!)") // We don't need to use the TSSocketManager in the SAE. @@ -258,7 +257,7 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed AppReadiness.setAppIsReady() if tsAccountManager.isRegistered() { - Logger.info("localNumber: \(TSAccountManager.localNumber)") + Logger.info("localNumber: \(TSAccountManager.localNumber()!)") // We don't need to use messageFetcherJob in the SAE. @@ -290,7 +289,7 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed Logger.debug("") if tsAccountManager.isRegistered() { - Logger.info("localNumber: \(TSAccountManager.localNumber)") + Logger.info("localNumber: \(TSAccountManager.localNumber()!)") // We don't need to use ExperienceUpgradeFinder in the SAE. @@ -659,12 +658,8 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed var visualMediaItemProviders = [NSItemProvider]() var hasNonVisualMedia = false for attachment in attachments { - guard let itemProvider = attachment as? NSItemProvider else { - owsFailDebug("Unexpected attachment type: \(String(describing: attachment))") - continue - } - if isVisualMediaItem(itemProvider: itemProvider) { - visualMediaItemProviders.append(itemProvider) + if isVisualMediaItem(itemProvider: attachment) { + visualMediaItemProviders.append(attachment) } else { hasNonVisualMedia = true } @@ -690,15 +685,11 @@ public class ShareViewController: UIViewController, ShareViewDelegate, SAEFailed } return isUrlItem(itemProvider: itemProvider) }) { - if let itemProvider = preferredAttachment as? NSItemProvider { - return [itemProvider] - } else { - owsFailDebug("Unexpected attachment type: \(String(describing: preferredAttachment))") - } + return [preferredAttachment] } // else return whatever is available - if let itemProvider = inputItem.attachments?.first as? NSItemProvider { + if let itemProvider = inputItem.attachments?.first { return [itemProvider] } else { owsFailDebug("Missing attachment.") diff --git a/SessionUtilitiesKit/Database/Storage.swift b/SessionUtilitiesKit/Database/Storage.swift index a2e2dcbc5..02f1dbd96 100644 --- a/SessionUtilitiesKit/Database/Storage.swift +++ b/SessionUtilitiesKit/Database/Storage.swift @@ -52,6 +52,7 @@ public final class Storage : NSObject { @discardableResult public static func write(with block: @escaping (YapDatabaseReadWriteTransaction) -> Void, completion: @escaping () -> Void) -> Promise { + print(owsStorage) let (promise, seal) = Promise.pending() serialQueue.async { owsStorage.dbReadWriteConnection.readWrite { transaction in diff --git a/SignalUtilitiesKit/Configuration.swift b/SignalUtilitiesKit/Configuration.swift index b69c8dddd..a498baeb8 100644 --- a/SignalUtilitiesKit/Configuration.swift +++ b/SignalUtilitiesKit/Configuration.swift @@ -5,10 +5,19 @@ extension OWSPrimaryStorage : OWSPrimaryStorageProtocol { } @objc(SNConfiguration) public final class Configuration : NSObject { - + private static let sharedSenderKeysDelegate = SharedSenderKeysImpl() + + private final class SharedSenderKeysImpl : SharedSenderKeysDelegate { + + func requestSenderKey(for groupPublicKey: String, senderPublicKey: String, using transaction: Any) { + // Do nothing + } + } + @objc public static func performMainSetup() { SNMessagingKit.configure(storage: Storage.shared) SNSnodeKit.configure(storage: Storage.shared) + SNProtocolKit.configure(storage: Storage.shared, sharedSenderKeysDelegate: sharedSenderKeysDelegate) SNUtilitiesKit.configure(owsPrimaryStorage: OWSPrimaryStorage.shared(), maxFileSize: UInt(Double(FileServerAPI.maxFileSize) / FileServerAPI.fileSizeORMultiplier)) } } diff --git a/SignalUtilitiesKit/Meta/SignalUtilitiesKit.h b/SignalUtilitiesKit/Meta/SignalUtilitiesKit.h index 23acc2c83..670ac0efe 100644 --- a/SignalUtilitiesKit/Meta/SignalUtilitiesKit.h +++ b/SignalUtilitiesKit/Meta/SignalUtilitiesKit.h @@ -10,22 +10,38 @@ FOUNDATION_EXPORT const unsigned char SignalUtilitiesKitVersionString[]; #import #import +#import #import +#import +#import +#import #import +#import +#import #import +#import +#import #import #import #import #import +#import #import #import +#import +#import #import #import #import #import +#import #import #import +#import +#import +#import #import +#import #import #import #import @@ -37,7 +53,10 @@ FOUNDATION_EXPORT const unsigned char SignalUtilitiesKitVersionString[]; #import #import #import +#import #import +#import +#import #import #import #import diff --git a/SignalUtilitiesKit/Utilities/VersionMigrations.m b/SignalUtilitiesKit/Utilities/VersionMigrations.m index 2e4c75e1c..221ae165d 100644 --- a/SignalUtilitiesKit/Utilities/VersionMigrations.m +++ b/SignalUtilitiesKit/Utilities/VersionMigrations.m @@ -49,7 +49,7 @@ NS_ASSUME_NONNULL_BEGIN if (!previousVersion) { OWSLogInfo(@"No previous version found. Probably first launch since install - nothing to migrate."); OWSDatabaseMigrationRunner *runner = [[OWSDatabaseMigrationRunner alloc] init]; - [runner assumeAllExistingMigrationsRun]; + dispatch_async(dispatch_get_main_queue(), ^{ completion(); }); diff --git a/ThirdParty/Cartfile b/ThirdParty/Cartfile deleted file mode 100644 index e69de29bb..000000000 diff --git a/ThirdParty/Cartfile.resolved b/ThirdParty/Cartfile.resolved deleted file mode 100644 index e69de29bb..000000000 diff --git a/ThirdParty/Carthage b/ThirdParty/Carthage deleted file mode 160000 index bb128340b..000000000 --- a/ThirdParty/Carthage +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bb128340bcefe46794f38d569be6ea21a9fbd750 diff --git a/ThirdParty/WebRTC b/ThirdParty/WebRTC deleted file mode 160000 index 1445d719b..000000000 --- a/ThirdParty/WebRTC +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1445d719bf05280270e9f77576f80f973fd847f8