Migrate environment to SignalMessaging.

This commit is contained in:
Matthew Chen 2017-12-01 15:17:29 -05:00
parent 9ea954bec2
commit c817aa51b3
34 changed files with 615 additions and 325 deletions

View File

@ -15,7 +15,6 @@
340CB2241EAC155C0001CAA1 /* ContactsViewHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 340CB2231EAC155C0001CAA1 /* ContactsViewHelper.m */; };
340CB2271EAC25820001CAA1 /* UpdateGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 340CB2261EAC25820001CAA1 /* UpdateGroupViewController.m */; };
341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */ = {isa = PBXBuildFile; fileRef = 341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */; };
342FCE6B1EF9C375002690AD /* OWS105AttachmentFilePaths.m in Sources */ = {isa = PBXBuildFile; fileRef = 342FCE6A1EF9C375002690AD /* OWS105AttachmentFilePaths.m */; };
3430FE181F7751D4000EC51B /* GiphyAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3430FE171F7751D4000EC51B /* GiphyAPI.swift */; };
34330A5A1E7875FB00DF2FB9 /* fontawesome-webfont.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 34330A591E7875FB00DF2FB9 /* fontawesome-webfont.ttf */; };
34330A5C1E787A9800DF2FB9 /* dripicons-v2.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 34330A5B1E787A9800DF2FB9 /* dripicons-v2.ttf */; };
@ -25,7 +24,7 @@
343A65981FC4CFE7000477A1 /* ConversationScrollButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 343A65961FC4CFE6000477A1 /* ConversationScrollButton.m */; };
343D3D9B1E9283F100165CA4 /* BlockListUIUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 343D3D9A1E9283F100165CA4 /* BlockListUIUtils.m */; };
34480B361FD0929200BC14EF /* ShareAppExtensionContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 34480B351FD0929200BC14EF /* ShareAppExtensionContext.m */; };
34480B491FD0A60200BC14EF /* OWSMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 34480B481FD0A60200BC14EF /* OWSMath.h */; };
34480B491FD0A60200BC14EF /* OWSMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 34480B481FD0A60200BC14EF /* OWSMath.h */; settings = {ATTRIBUTES = (Public, ); }; };
34480B521FD0A7A400BC14EF /* OWSLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 34480B4A1FD0A7A200BC14EF /* OWSLogger.h */; settings = {ATTRIBUTES = (Public, ); }; };
34480B531FD0A7A400BC14EF /* OWSLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 34480B4B1FD0A7A300BC14EF /* OWSLogger.m */; };
34480B551FD0A7A400BC14EF /* DebugLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 34480B4D1FD0A7A300BC14EF /* DebugLogger.h */; };
@ -48,6 +47,31 @@
346129341FD1A88700532771 /* OWSSwiftUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 346129331FD1A88700532771 /* OWSSwiftUtils.swift */; };
346129391FD1B47300532771 /* OWSPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 346129371FD1B47200532771 /* OWSPreferences.h */; settings = {ATTRIBUTES = (Public, ); }; };
3461293A1FD1B47300532771 /* OWSPreferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 346129381FD1B47200532771 /* OWSPreferences.m */; };
3461293C1FD1D46A00532771 /* OWSMath.m in Sources */ = {isa = PBXBuildFile; fileRef = 3461293B1FD1D46900532771 /* OWSMath.m */; };
3461293E1FD1D72B00532771 /* ExperienceUpgradeFinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3461293D1FD1D72B00532771 /* ExperienceUpgradeFinder.swift */; };
3461295A1FD1D74C00532771 /* Environment.h in Headers */ = {isa = PBXBuildFile; fileRef = 346129401FD1D74B00532771 /* Environment.h */; settings = {ATTRIBUTES = (Public, ); }; };
3461295B1FD1D74C00532771 /* Environment.m in Sources */ = {isa = PBXBuildFile; fileRef = 346129411FD1D74B00532771 /* Environment.m */; };
3461296F1FD1D74C00532771 /* Release.h in Headers */ = {isa = PBXBuildFile; fileRef = 346129561FD1D74B00532771 /* Release.h */; };
346129701FD1D74C00532771 /* Release.m in Sources */ = {isa = PBXBuildFile; fileRef = 346129571FD1D74B00532771 /* Release.m */; };
346129711FD1D74C00532771 /* SignalKeyingStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 346129581FD1D74B00532771 /* SignalKeyingStorage.h */; };
346129721FD1D74C00532771 /* SignalKeyingStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 346129591FD1D74B00532771 /* SignalKeyingStorage.m */; };
346129731FD1E01700532771 /* PromiseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 451DE9F11DC1585F00810E42 /* PromiseKit.framework */; };
346129741FD1E02D00532771 /* PromiseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 451DE9F11DC1585F00810E42 /* PromiseKit.framework */; };
346129761FD1E0B500532771 /* WeakTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 346129751FD1E0B500532771 /* WeakTimer.swift */; };
346129891FD1E2AB00532771 /* OWS100RemoveTSRecipientsMigration.m in Sources */ = {isa = PBXBuildFile; fileRef = 346129791FD1E2AB00532771 /* OWS100RemoveTSRecipientsMigration.m */; };
3461298A1FD1E2AB00532771 /* OWS101ExistingUsersBlockOnIdentityChange.m in Sources */ = {isa = PBXBuildFile; fileRef = 3461297B1FD1E2AB00532771 /* OWS101ExistingUsersBlockOnIdentityChange.m */; };
3461298B1FD1E2AB00532771 /* OWS102MoveLoggingPreferenceToUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 3461297D1FD1E2AB00532771 /* OWS102MoveLoggingPreferenceToUserDefaults.m */; };
3461298C1FD1E2AB00532771 /* OWS103EnableVideoCalling.m in Sources */ = {isa = PBXBuildFile; fileRef = 3461297F1FD1E2AB00532771 /* OWS103EnableVideoCalling.m */; };
3461298D1FD1E2AB00532771 /* OWS104CreateRecipientIdentities.m in Sources */ = {isa = PBXBuildFile; fileRef = 346129811FD1E2AB00532771 /* OWS104CreateRecipientIdentities.m */; };
3461298E1FD1E2AB00532771 /* OWS105AttachmentFilePaths.m in Sources */ = {isa = PBXBuildFile; fileRef = 346129831FD1E2AB00532771 /* OWS105AttachmentFilePaths.m */; };
3461298F1FD1E2AB00532771 /* OWS106EnsureProfileComplete.swift in Sources */ = {isa = PBXBuildFile; fileRef = 346129841FD1E2AB00532771 /* OWS106EnsureProfileComplete.swift */; };
346129911FD1E2AB00532771 /* OWSDatabaseMigrationRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 346129881FD1E2AB00532771 /* OWSDatabaseMigrationRunner.m */; };
346129951FD1E30000532771 /* OWSDatabaseMigration.h in Headers */ = {isa = PBXBuildFile; fileRef = 346129931FD1E30000532771 /* OWSDatabaseMigration.h */; settings = {ATTRIBUTES = (Public, ); }; };
346129961FD1E30000532771 /* OWSDatabaseMigration.m in Sources */ = {isa = PBXBuildFile; fileRef = 346129941FD1E30000532771 /* OWSDatabaseMigration.m */; };
346129991FD1E4DA00532771 /* SignalApp.m in Sources */ = {isa = PBXBuildFile; fileRef = 346129971FD1E4D900532771 /* SignalApp.m */; };
3461299C1FD1EA9E00532771 /* NotificationsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3461299B1FD1EA9E00532771 /* NotificationsManager.m */; };
3461299F1FD1EFE200532771 /* CryptoTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 3461299D1FD1EFE200532771 /* CryptoTools.h */; };
346129A01FD1EFE200532771 /* CryptoTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 3461299E1FD1EFE200532771 /* CryptoTools.m */; };
346B66311F4E29B200E5122F /* CropScaleImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 346B66301F4E29B200E5122F /* CropScaleImageViewController.swift */; };
3471B1DA1EB7C63600F6AEC8 /* NewNonContactConversationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3471B1D91EB7C63600F6AEC8 /* NewNonContactConversationViewController.m */; };
3472229F1EB22FFE00E53955 /* AddToGroupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3472229E1EB22FFE00E53955 /* AddToGroupViewController.m */; };
@ -143,18 +167,14 @@
34FD93701E3BD43A00109093 /* OWSAnyTouchGestureRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 34FD936F1E3BD43A00109093 /* OWSAnyTouchGestureRecognizer.m */; };
450449391F45EE7D002D1ADA /* NSString+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 450449381F45EE7D002D1ADA /* NSString+OWS.m */; };
4504493A1F45EE7D002D1ADA /* NSString+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 450449381F45EE7D002D1ADA /* NSString+OWS.m */; };
450573FE1E78A06D00615BB4 /* OWS103EnableVideoCalling.m in Sources */ = {isa = PBXBuildFile; fileRef = 450573FD1E78A06D00615BB4 /* OWS103EnableVideoCalling.m */; };
4505C2BF1E648EA300CEBF41 /* ExperienceUpgrade.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4505C2BE1E648EA300CEBF41 /* ExperienceUpgrade.swift */; };
4505C2C01E648EA300CEBF41 /* ExperienceUpgrade.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4505C2BE1E648EA300CEBF41 /* ExperienceUpgrade.swift */; };
4505C2C21E648F7A00CEBF41 /* ExperienceUpgradeFinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4505C2C11E648F7A00CEBF41 /* ExperienceUpgradeFinder.swift */; };
4505C2C31E648F7A00CEBF41 /* ExperienceUpgradeFinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4505C2C11E648F7A00CEBF41 /* ExperienceUpgradeFinder.swift */; };
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 */; };
451686AB1F520CDA00AC3D4B /* MultiDeviceProfileKeyUpdateJob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 451686AA1F520CDA00AC3D4B /* MultiDeviceProfileKeyUpdateJob.swift */; };
451686AC1F520CDA00AC3D4B /* MultiDeviceProfileKeyUpdateJob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 451686AA1F520CDA00AC3D4B /* MultiDeviceProfileKeyUpdateJob.swift */; };
4516E3FF1DD2193B00DC4206 /* OWS101ExistingUsersBlockOnIdentityChange.m in Sources */ = {isa = PBXBuildFile; fileRef = 4516E3FE1DD2193B00DC4206 /* OWS101ExistingUsersBlockOnIdentityChange.m */; };
4517642A1DE939FD00EDB8B9 /* ContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 451764281DE939FD00EDB8B9 /* ContactCell.xib */; };
4517642B1DE939FD00EDB8B9 /* ContactCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 451764291DE939FD00EDB8B9 /* ContactCell.swift */; };
451A13B11E13DED2000A50FD /* CallNotificationsAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 451A13B01E13DED2000A50FD /* CallNotificationsAdapter.swift */; };
@ -193,7 +213,6 @@
45360B901F9527DA00FA666C /* SearcherTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45360B8F1F9527DA00FA666C /* SearcherTest.swift */; };
45360B911F952AA900FA666C /* MarqueeLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45E5A6981F61E6DD001E4A8A /* MarqueeLabel.swift */; };
45360B921F952AB400FA666C /* OWSFlatButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C04D7F1F6195E6004308B3 /* OWSFlatButton.swift */; };
45387B041E36D650005D00B3 /* OWS102MoveLoggingPreferenceToUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 45387B031E36D650005D00B3 /* OWS102MoveLoggingPreferenceToUserDefaults.m */; };
4539B5861F79348F007141FF /* PushRegistrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4539B5851F79348F007141FF /* PushRegistrationManager.swift */; };
4539B5871F79348F007141FF /* PushRegistrationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4539B5851F79348F007141FF /* PushRegistrationManager.swift */; };
4542F0941EB9372700C7EE92 /* SystemContactsFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4542F0931EB9372700C7EE92 /* SystemContactsFetcher.swift */; };
@ -210,15 +229,10 @@
455AC69E1F4F8B0300134004 /* ImageCacheTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 455AC69D1F4F8B0300134004 /* ImageCacheTest.swift */; };
45638BDC1F3DD0D400128435 /* DebugUICalling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45638BDB1F3DD0D400128435 /* DebugUICalling.swift */; };
45638BDF1F3DDB2200128435 /* MessageSender+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45638BDE1F3DDB2200128435 /* MessageSender+Promise.swift */; };
4563ADF11F22BD7100DEB8C7 /* OWS106EnsureProfileComplete.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4563ADF01F22BD7100DEB8C7 /* OWS106EnsureProfileComplete.swift */; };
45666EC61D99483D008FE134 /* OWSAvatarBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 45666EC51D99483D008FE134 /* OWSAvatarBuilder.m */; };
45666EC91D994C0D008FE134 /* OWSGroupAvatarBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 45666EC81D994C0D008FE134 /* OWSGroupAvatarBuilder.m */; };
45666F581D9B2880008FE134 /* OWSScrubbingLogFormatterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 45666F571D9B2880008FE134 /* OWSScrubbingLogFormatterTest.m */; };
45666F761D9BFE00008FE134 /* OWS100RemoveTSRecipientsMigration.m in Sources */ = {isa = PBXBuildFile; fileRef = 45666F751D9BFE00008FE134 /* OWS100RemoveTSRecipientsMigration.m */; };
45666F7B1D9C0533008FE134 /* OWSDatabaseMigration.m in Sources */ = {isa = PBXBuildFile; fileRef = 45666F7A1D9C0533008FE134 /* OWSDatabaseMigration.m */; };
45666F7E1D9C0814008FE134 /* OWSDatabaseMigrationRunner.m in Sources */ = {isa = PBXBuildFile; fileRef = 45666F7D1D9C0814008FE134 /* OWSDatabaseMigrationRunner.m */; };
456AC8341E3A775E00A3C7FC /* Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F170D51E315310003FC1F2 /* Weak.swift */; };
456AC8351E3A776300A3C7FC /* WeakTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F170CB1E310E22003FC1F2 /* WeakTimer.swift */; };
456C38961DC7B882007536A7 /* PromiseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 451DE9F11DC1585F00810E42 /* PromiseKit.framework */; };
456F6E201E2411A000FD2210 /* CallService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4574A5D51DD6704700C6B692 /* CallService.swift */; };
456F6E211E2411B400FD2210 /* CallUIAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45794E851E00620000066731 /* CallUIAdapter.swift */; };
@ -233,7 +247,6 @@
45847E871E4283C30080EAB3 /* Intents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45847E861E4283C30080EAB3 /* Intents.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
45855F371D9498A40084F340 /* OWSContactAvatarBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 45855F361D9498A40084F340 /* OWSContactAvatarBuilder.m */; };
45855F381D9498A40084F340 /* OWSContactAvatarBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 45855F361D9498A40084F340 /* OWSContactAvatarBuilder.m */; };
4585C4601ED4FD0400896AEA /* OWS104CreateRecipientIdentities.m in Sources */ = {isa = PBXBuildFile; fileRef = 4585C45F1ED4FD0400896AEA /* OWS104CreateRecipientIdentities.m */; };
4585C4681ED8F8D200896AEA /* SafetyNumberConfirmationAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4585C4671ED8F8D200896AEA /* SafetyNumberConfirmationAlert.swift */; };
458967111DC117CC00E9DD21 /* AccountManagerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 458967101DC117CC00E9DD21 /* AccountManagerTest.swift */; };
458D51481FCCD82500B5BC53 /* GSR4.crt in Resources */ = {isa = PBXBuildFile; fileRef = 458D51401FCCD82400B5BC53 /* GSR4.crt */; };
@ -281,7 +294,6 @@
45F170AD1E2F0351003FC1F2 /* CallAudioSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F170AB1E2F0351003FC1F2 /* CallAudioSession.swift */; };
45F170BB1E2FC5D3003FC1F2 /* CallAudioService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F170BA1E2FC5D3003FC1F2 /* CallAudioService.swift */; };
45F170BC1E2FC5D3003FC1F2 /* CallAudioService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F170BA1E2FC5D3003FC1F2 /* CallAudioService.swift */; };
45F170CC1E310E22003FC1F2 /* WeakTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F170CB1E310E22003FC1F2 /* WeakTimer.swift */; };
45F170D61E315310003FC1F2 /* Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F170D51E315310003FC1F2 /* Weak.swift */; };
45F3AEB61DFDE7900080CE33 /* AvatarImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F3AEB51DFDE7900080CE33 /* AvatarImageView.swift */; };
45F3AEB71DFDE7900080CE33 /* AvatarImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45F3AEB51DFDE7900080CE33 /* AvatarImageView.swift */; };
@ -294,13 +306,10 @@
45FBC5D21DF8592E00E9B410 /* SignalCall.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45FBC5D01DF8592E00E9B410 /* SignalCall.swift */; };
4AC4EA13C8A444455DAB351F /* Pods_SignalMessaging.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 264242150E87D10A357DB07B /* Pods_SignalMessaging.framework */; };
70377AAB1918450100CAF501 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70377AAA1918450100CAF501 /* MobileCoreServices.framework */; };
7038632718F70C0700D4A43F /* CryptoTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 7038632418F70C0700D4A43F /* CryptoTools.m */; };
768A1A2B17FC9CD300E00ED8 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 768A1A2A17FC9CD300E00ED8 /* libz.dylib */; };
76C87F19181EFCE600C4ACAB /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76C87F18181EFCE600C4ACAB /* MediaPlayer.framework */; };
76EB054018170B33006006FC /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 76EB03C318170B33006006FC /* AppDelegate.m */; };
76EB057A18170B33006006FC /* OWSContactsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 76EB040918170B33006006FC /* OWSContactsManager.m */; };
76EB058218170B33006006FC /* Environment.m in Sources */ = {isa = PBXBuildFile; fileRef = 76EB041318170B33006006FC /* Environment.m */; };
76EB058A18170B33006006FC /* Release.m in Sources */ = {isa = PBXBuildFile; fileRef = 76EB041B18170B33006006FC /* Release.m */; };
76EB063A18170B33006006FC /* FunctionalUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 76EB04EB18170B33006006FC /* FunctionalUtil.m */; };
76EB063C18170B33006006FC /* NumberUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 76EB04ED18170B33006006FC /* NumberUtil.m */; };
76EB063E18170B33006006FC /* Operation.m in Sources */ = {isa = PBXBuildFile; fileRef = 76EB04EF18170B33006006FC /* Operation.m */; };
@ -335,7 +344,6 @@
B609597C1C2C0FC6004E8797 /* iRate.m in Sources */ = {isa = PBXBuildFile; fileRef = B609597B1C2C0FC6004E8797 /* iRate.m */; };
B60C16651988999D00E97A6C /* VersionMigrations.m in Sources */ = {isa = PBXBuildFile; fileRef = B60C16641988999D00E97A6C /* VersionMigrations.m */; };
B60EDE041A05A01700D73516 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B60EDE031A05A01700D73516 /* AudioToolbox.framework */; };
B6258B331C29E2E60014138E /* NotificationsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B6258B321C29E2E60014138E /* NotificationsManager.m */; };
B625CD561ABB589C00E8B23C /* NewMessage.aifc in Resources */ = {isa = PBXBuildFile; fileRef = B625CD551ABB589C00E8B23C /* NewMessage.aifc */; };
B633C5861A1D190B0059AC12 /* call@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B633C5041A1D190B0059AC12 /* call@2x.png */; };
B633C58D1A1D190B0059AC12 /* contact_default_feed.png in Resources */ = {isa = PBXBuildFile; fileRef = B633C50B1A1D190B0059AC12 /* contact_default_feed.png */; };
@ -352,10 +360,6 @@
B660F6DB1C29868000687D6E /* FunctionalUtilTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B660F6AD1C29868000687D6E /* FunctionalUtilTest.m */; };
B660F6E01C29868000687D6E /* UtilTest.m in Sources */ = {isa = PBXBuildFile; fileRef = B660F6B41C29868000687D6E /* UtilTest.m */; };
B660F7171C29988E00687D6E /* OWSContactsManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 76EB040918170B33006006FC /* OWSContactsManager.m */; };
B660F7181C29988E00687D6E /* CryptoTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 7038632418F70C0700D4A43F /* CryptoTools.m */; };
B660F71B1C29988E00687D6E /* Environment.m in Sources */ = {isa = PBXBuildFile; fileRef = 76EB041318170B33006006FC /* Environment.m */; };
B660F7201C29988E00687D6E /* Release.m in Sources */ = {isa = PBXBuildFile; fileRef = 76EB041B18170B33006006FC /* Release.m */; };
B660F7211C29988E00687D6E /* SignalKeyingStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B1013B196D213F007E3930 /* SignalKeyingStorage.m */; };
B660F7221C29988E00687D6E /* VersionMigrations.m in Sources */ = {isa = PBXBuildFile; fileRef = B60C16641988999D00E97A6C /* VersionMigrations.m */; };
B660F7561C29988E00687D6E /* PushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B9ECFB198B31BA00C620D3 /* PushManager.m */; };
B660F7721C29988E00687D6E /* AppStoreRating.m in Sources */ = {isa = PBXBuildFile; fileRef = B6DA6B061B8A2F9A00CA6F98 /* AppStoreRating.m */; };
@ -370,7 +374,6 @@
B67EBF5D19194AC60084CCFD /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = B67EBF5C19194AC60084CCFD /* Settings.bundle */; };
B68112EA1A4D9EC400BA82FF /* UIImage+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = B68112E91A4D9EC400BA82FF /* UIImage+OWS.m */; };
B69CD25119773E79005CE69A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B69CD25019773E79005CE69A /* XCTest.framework */; };
B6B1013C196D213F007E3930 /* SignalKeyingStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B1013B196D213F007E3930 /* SignalKeyingStorage.m */; };
B6B226971BE4B7D200860F4D /* ContactsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6B226961BE4B7D200860F4D /* ContactsUI.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
B6B9ECFC198B31BA00C620D3 /* PushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B9ECFB198B31BA00C620D3 /* PushManager.m */; };
B6DA6B071B8A2F9A00CA6F98 /* AppStoreRating.m in Sources */ = {isa = PBXBuildFile; fileRef = B6DA6B061B8A2F9A00CA6F98 /* AppStoreRating.m */; };
@ -486,8 +489,6 @@
341458471FBE11C4005ABCF9 /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = translations/fa.lproj/Localizable.strings; sourceTree = "<group>"; };
341F2C0D1F2B8AE700D07D6B /* DebugUIMisc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugUIMisc.h; sourceTree = "<group>"; };
341F2C0E1F2B8AE700D07D6B /* DebugUIMisc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DebugUIMisc.m; sourceTree = "<group>"; };
342FCE691EF9C375002690AD /* OWS105AttachmentFilePaths.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWS105AttachmentFilePaths.h; path = Migrations/OWS105AttachmentFilePaths.h; sourceTree = "<group>"; };
342FCE6A1EF9C375002690AD /* OWS105AttachmentFilePaths.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWS105AttachmentFilePaths.m; path = Migrations/OWS105AttachmentFilePaths.m; sourceTree = "<group>"; };
3430FE171F7751D4000EC51B /* GiphyAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GiphyAPI.swift; sourceTree = "<group>"; };
34330A591E7875FB00DF2FB9 /* fontawesome-webfont.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "fontawesome-webfont.ttf"; sourceTree = "<group>"; };
34330A5B1E787A9800DF2FB9 /* dripicons-v2.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "dripicons-v2.ttf"; sourceTree = "<group>"; };
@ -574,6 +575,38 @@
346129331FD1A88700532771 /* OWSSwiftUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OWSSwiftUtils.swift; sourceTree = "<group>"; };
346129371FD1B47200532771 /* OWSPreferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSPreferences.h; sourceTree = "<group>"; };
346129381FD1B47200532771 /* OWSPreferences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSPreferences.m; sourceTree = "<group>"; };
3461293B1FD1D46900532771 /* OWSMath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSMath.m; sourceTree = "<group>"; };
3461293D1FD1D72B00532771 /* ExperienceUpgradeFinder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ExperienceUpgradeFinder.swift; path = ExperienceUpgrades/ExperienceUpgradeFinder.swift; sourceTree = "<group>"; };
346129401FD1D74B00532771 /* Environment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Environment.h; sourceTree = "<group>"; };
346129411FD1D74B00532771 /* Environment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Environment.m; sourceTree = "<group>"; };
346129561FD1D74B00532771 /* Release.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Release.h; sourceTree = "<group>"; };
346129571FD1D74B00532771 /* Release.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Release.m; sourceTree = "<group>"; };
346129581FD1D74B00532771 /* SignalKeyingStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SignalKeyingStorage.h; sourceTree = "<group>"; };
346129591FD1D74B00532771 /* SignalKeyingStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SignalKeyingStorage.m; sourceTree = "<group>"; };
346129751FD1E0B500532771 /* WeakTimer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WeakTimer.swift; sourceTree = "<group>"; };
346129781FD1E2AB00532771 /* OWS100RemoveTSRecipientsMigration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWS100RemoveTSRecipientsMigration.h; sourceTree = "<group>"; };
346129791FD1E2AB00532771 /* OWS100RemoveTSRecipientsMigration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWS100RemoveTSRecipientsMigration.m; sourceTree = "<group>"; };
3461297A1FD1E2AB00532771 /* OWS101ExistingUsersBlockOnIdentityChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWS101ExistingUsersBlockOnIdentityChange.h; sourceTree = "<group>"; };
3461297B1FD1E2AB00532771 /* OWS101ExistingUsersBlockOnIdentityChange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWS101ExistingUsersBlockOnIdentityChange.m; sourceTree = "<group>"; };
3461297C1FD1E2AB00532771 /* OWS102MoveLoggingPreferenceToUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWS102MoveLoggingPreferenceToUserDefaults.h; sourceTree = "<group>"; };
3461297D1FD1E2AB00532771 /* OWS102MoveLoggingPreferenceToUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWS102MoveLoggingPreferenceToUserDefaults.m; sourceTree = "<group>"; };
3461297E1FD1E2AB00532771 /* OWS103EnableVideoCalling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWS103EnableVideoCalling.h; sourceTree = "<group>"; };
3461297F1FD1E2AB00532771 /* OWS103EnableVideoCalling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWS103EnableVideoCalling.m; sourceTree = "<group>"; };
346129801FD1E2AB00532771 /* OWS104CreateRecipientIdentities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWS104CreateRecipientIdentities.h; sourceTree = "<group>"; };
346129811FD1E2AB00532771 /* OWS104CreateRecipientIdentities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWS104CreateRecipientIdentities.m; sourceTree = "<group>"; };
346129821FD1E2AB00532771 /* OWS105AttachmentFilePaths.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWS105AttachmentFilePaths.h; sourceTree = "<group>"; };
346129831FD1E2AB00532771 /* OWS105AttachmentFilePaths.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWS105AttachmentFilePaths.m; sourceTree = "<group>"; };
346129841FD1E2AB00532771 /* OWS106EnsureProfileComplete.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OWS106EnsureProfileComplete.swift; sourceTree = "<group>"; };
346129871FD1E2AB00532771 /* OWSDatabaseMigrationRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSDatabaseMigrationRunner.h; sourceTree = "<group>"; };
346129881FD1E2AB00532771 /* OWSDatabaseMigrationRunner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSDatabaseMigrationRunner.m; sourceTree = "<group>"; };
346129931FD1E30000532771 /* OWSDatabaseMigration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSDatabaseMigration.h; sourceTree = "<group>"; };
346129941FD1E30000532771 /* OWSDatabaseMigration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSDatabaseMigration.m; sourceTree = "<group>"; };
346129971FD1E4D900532771 /* SignalApp.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SignalApp.m; sourceTree = "<group>"; };
346129981FD1E4DA00532771 /* SignalApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SignalApp.h; sourceTree = "<group>"; };
3461299A1FD1EA9E00532771 /* NotificationsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotificationsManager.h; sourceTree = "<group>"; };
3461299B1FD1EA9E00532771 /* NotificationsManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NotificationsManager.m; sourceTree = "<group>"; };
3461299D1FD1EFE200532771 /* CryptoTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoTools.h; sourceTree = "<group>"; };
3461299E1FD1EFE200532771 /* CryptoTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CryptoTools.m; sourceTree = "<group>"; };
346B66301F4E29B200E5122F /* CropScaleImageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CropScaleImageViewController.swift; sourceTree = "<group>"; };
3471B1D81EB7C63600F6AEC8 /* NewNonContactConversationViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NewNonContactConversationViewController.h; sourceTree = "<group>"; };
3471B1D91EB7C63600F6AEC8 /* NewNonContactConversationViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NewNonContactConversationViewController.m; sourceTree = "<group>"; };
@ -743,18 +776,13 @@
435EAC2E5E22D3F087EB3192 /* Pods-SignalShareExtension.app store release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalShareExtension.app store release.xcconfig"; path = "Pods/Target Support Files/Pods-SignalShareExtension/Pods-SignalShareExtension.app store release.xcconfig"; sourceTree = "<group>"; };
450449371F45EE7D002D1ADA /* NSString+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSString+OWS.h"; path = "util/NSString+OWS.h"; sourceTree = "<group>"; };
450449381F45EE7D002D1ADA /* NSString+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSString+OWS.m"; path = "util/NSString+OWS.m"; sourceTree = "<group>"; };
450573FC1E78A06D00615BB4 /* OWS103EnableVideoCalling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWS103EnableVideoCalling.h; path = Migrations/OWS103EnableVideoCalling.h; sourceTree = "<group>"; };
450573FD1E78A06D00615BB4 /* OWS103EnableVideoCalling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWS103EnableVideoCalling.m; path = Migrations/OWS103EnableVideoCalling.m; sourceTree = "<group>"; };
4505C2BE1E648EA300CEBF41 /* ExperienceUpgrade.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ExperienceUpgrade.swift; path = ExperienceUpgrades/ExperienceUpgrade.swift; sourceTree = "<group>"; };
4505C2C11E648F7A00CEBF41 /* ExperienceUpgradeFinder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExperienceUpgradeFinder.swift; sourceTree = "<group>"; };
4509E7991DD653700025A59F /* WebRTC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebRTC.framework; path = Carthage/Build/iOS/WebRTC.framework; sourceTree = "<group>"; };
450D19111F85236600970622 /* RemoteVideoView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteVideoView.h; sourceTree = "<group>"; };
450D19121F85236600970622 /* RemoteVideoView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RemoteVideoView.m; sourceTree = "<group>"; };
450DF2041E0D74AC003D14BE /* Platform.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Platform.swift; sourceTree = "<group>"; };
450DF2081E0DD2C6003D14BE /* UserNotificationsAdaptee.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; name = UserNotificationsAdaptee.swift; path = UserInterface/Notifications/UserNotificationsAdaptee.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
451686AA1F520CDA00AC3D4B /* MultiDeviceProfileKeyUpdateJob.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MultiDeviceProfileKeyUpdateJob.swift; sourceTree = "<group>"; };
4516E3FD1DD2193B00DC4206 /* OWS101ExistingUsersBlockOnIdentityChange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWS101ExistingUsersBlockOnIdentityChange.h; path = Migrations/OWS101ExistingUsersBlockOnIdentityChange.h; sourceTree = "<group>"; };
4516E3FE1DD2193B00DC4206 /* OWS101ExistingUsersBlockOnIdentityChange.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWS101ExistingUsersBlockOnIdentityChange.m; path = Migrations/OWS101ExistingUsersBlockOnIdentityChange.m; sourceTree = "<group>"; };
451764281DE939FD00EDB8B9 /* ContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactCell.xib; sourceTree = "<group>"; };
451764291DE939FD00EDB8B9 /* ContactCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContactCell.swift; sourceTree = "<group>"; };
451A13B01E13DED2000A50FD /* CallNotificationsAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; name = CallNotificationsAdapter.swift; path = ../UserInterface/Notifications/CallNotificationsAdapter.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
@ -781,8 +809,6 @@
453518A01FC63DD500210559 /* StorageCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorageCoordinator.swift; sourceTree = "<group>"; };
45360B8C1F9521F800FA666C /* Searcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Searcher.swift; sourceTree = "<group>"; };
45360B8F1F9527DA00FA666C /* SearcherTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearcherTest.swift; sourceTree = "<group>"; };
45387B021E36D650005D00B3 /* OWS102MoveLoggingPreferenceToUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWS102MoveLoggingPreferenceToUserDefaults.h; path = Migrations/OWS102MoveLoggingPreferenceToUserDefaults.h; sourceTree = "<group>"; };
45387B031E36D650005D00B3 /* OWS102MoveLoggingPreferenceToUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWS102MoveLoggingPreferenceToUserDefaults.m; path = Migrations/OWS102MoveLoggingPreferenceToUserDefaults.m; sourceTree = "<group>"; };
4539B5851F79348F007141FF /* PushRegistrationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PushRegistrationManager.swift; sourceTree = "<group>"; };
453CC0361D08E1A60040EBA3 /* sn */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sn; path = translations/sn.lproj/Localizable.strings; sourceTree = "<group>"; };
4542F0931EB9372700C7EE92 /* SystemContactsFetcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SystemContactsFetcher.swift; sourceTree = "<group>"; };
@ -796,18 +822,11 @@
455AC69D1F4F8B0300134004 /* ImageCacheTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageCacheTest.swift; sourceTree = "<group>"; };
45638BDB1F3DD0D400128435 /* DebugUICalling.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DebugUICalling.swift; sourceTree = "<group>"; };
45638BDE1F3DDB2200128435 /* MessageSender+Promise.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "MessageSender+Promise.swift"; sourceTree = "<group>"; };
4563ADF01F22BD7100DEB8C7 /* OWS106EnsureProfileComplete.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OWS106EnsureProfileComplete.swift; sourceTree = "<group>"; };
45666EC41D99483D008FE134 /* OWSAvatarBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSAvatarBuilder.h; sourceTree = "<group>"; };
45666EC51D99483D008FE134 /* OWSAvatarBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSAvatarBuilder.m; sourceTree = "<group>"; };
45666EC71D994C0D008FE134 /* OWSGroupAvatarBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSGroupAvatarBuilder.h; sourceTree = "<group>"; };
45666EC81D994C0D008FE134 /* OWSGroupAvatarBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSGroupAvatarBuilder.m; sourceTree = "<group>"; };
45666F571D9B2880008FE134 /* OWSScrubbingLogFormatterTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSScrubbingLogFormatterTest.m; sourceTree = "<group>"; };
45666F741D9BFE00008FE134 /* OWS100RemoveTSRecipientsMigration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWS100RemoveTSRecipientsMigration.h; path = Migrations/OWS100RemoveTSRecipientsMigration.h; sourceTree = "<group>"; };
45666F751D9BFE00008FE134 /* OWS100RemoveTSRecipientsMigration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWS100RemoveTSRecipientsMigration.m; path = Migrations/OWS100RemoveTSRecipientsMigration.m; sourceTree = "<group>"; };
45666F791D9C0533008FE134 /* OWSDatabaseMigration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWSDatabaseMigration.h; path = Migrations/OWSDatabaseMigration.h; sourceTree = "<group>"; };
45666F7A1D9C0533008FE134 /* OWSDatabaseMigration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWSDatabaseMigration.m; path = Migrations/OWSDatabaseMigration.m; sourceTree = "<group>"; };
45666F7C1D9C0814008FE134 /* OWSDatabaseMigrationRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWSDatabaseMigrationRunner.h; path = Migrations/OWSDatabaseMigrationRunner.h; sourceTree = "<group>"; };
45666F7D1D9C0814008FE134 /* OWSDatabaseMigrationRunner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWSDatabaseMigrationRunner.m; path = Migrations/OWSDatabaseMigrationRunner.m; sourceTree = "<group>"; };
456D0FD51F63094D008499CD /* km */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = km; path = translations/km.lproj/Localizable.strings; sourceTree = "<group>"; };
456D0FD81F631F4E008499CD /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = translations/lt.lproj/Localizable.strings; sourceTree = "<group>"; };
456F6E2E1E261D1000FD2210 /* PeerConnectionClientTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerConnectionClientTest.swift; sourceTree = "<group>"; };
@ -818,8 +837,6 @@
45847E861E4283C30080EAB3 /* Intents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Intents.framework; path = System/Library/Frameworks/Intents.framework; sourceTree = SDKROOT; };
45855F351D9498A40084F340 /* OWSContactAvatarBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSContactAvatarBuilder.h; sourceTree = "<group>"; };
45855F361D9498A40084F340 /* OWSContactAvatarBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSContactAvatarBuilder.m; sourceTree = "<group>"; };
4585C45E1ED4FD0400896AEA /* OWS104CreateRecipientIdentities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWS104CreateRecipientIdentities.h; path = Migrations/OWS104CreateRecipientIdentities.h; sourceTree = "<group>"; };
4585C45F1ED4FD0400896AEA /* OWS104CreateRecipientIdentities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWS104CreateRecipientIdentities.m; path = Migrations/OWS104CreateRecipientIdentities.m; sourceTree = "<group>"; };
4585C4651ED5DF7A00896AEA /* ProfileFetcherJob.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProfileFetcherJob.swift; sourceTree = "<group>"; };
4585C4671ED8F8D200896AEA /* SafetyNumberConfirmationAlert.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafetyNumberConfirmationAlert.swift; sourceTree = "<group>"; };
4589670F1DC117CC00E9DD21 /* SignalTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SignalTests-Bridging-Header.h"; sourceTree = "<group>"; };
@ -866,7 +883,6 @@
45F170AB1E2F0351003FC1F2 /* CallAudioSession.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallAudioSession.swift; sourceTree = "<group>"; };
45F170B31E2F0A6A003FC1F2 /* RTCAudioSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCAudioSession.h; sourceTree = "<group>"; };
45F170BA1E2FC5D3003FC1F2 /* CallAudioService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallAudioService.swift; sourceTree = "<group>"; };
45F170CB1E310E22003FC1F2 /* WeakTimer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WeakTimer.swift; sourceTree = "<group>"; };
45F170D51E315310003FC1F2 /* Weak.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Weak.swift; sourceTree = "<group>"; };
45F3AEB51DFDE7900080CE33 /* AvatarImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AvatarImageView.swift; sourceTree = "<group>"; };
45F659721E1BD99C00444429 /* CallKitCallUIAdaptee.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CallKitCallUIAdaptee.swift; sourceTree = "<group>"; };
@ -875,8 +891,6 @@
45FBC5D01DF8592E00E9B410 /* SignalCall.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignalCall.swift; sourceTree = "<group>"; };
69349DE607F5BA6036C9AC60 /* Pods-SignalShareExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SignalShareExtension.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SignalShareExtension/Pods-SignalShareExtension.debug.xcconfig"; sourceTree = "<group>"; };
70377AAA1918450100CAF501 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
7038632318F70C0700D4A43F /* CryptoTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoTools.h; sourceTree = "<group>"; };
7038632418F70C0700D4A43F /* CryptoTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CryptoTools.m; sourceTree = "<group>"; };
748A5CAEDD7C919FC64C6807 /* Pods_SignalTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SignalTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
768A1A2A17FC9CD300E00ED8 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
76C87F18181EFCE600C4ACAB /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; };
@ -884,10 +898,6 @@
76EB03C318170B33006006FC /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
76EB040818170B33006006FC /* OWSContactsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSContactsManager.h; sourceTree = "<group>"; };
76EB040918170B33006006FC /* OWSContactsManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSContactsManager.m; sourceTree = "<group>"; };
76EB041218170B33006006FC /* Environment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Environment.h; sourceTree = "<group>"; };
76EB041318170B33006006FC /* Environment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Environment.m; sourceTree = "<group>"; };
76EB041A18170B33006006FC /* Release.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Release.h; sourceTree = "<group>"; };
76EB041B18170B33006006FC /* Release.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Release.m; sourceTree = "<group>"; };
76EB04EA18170B33006006FC /* FunctionalUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionalUtil.h; sourceTree = "<group>"; };
76EB04EB18170B33006006FC /* FunctionalUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FunctionalUtil.m; sourceTree = "<group>"; };
76EB04EC18170B33006006FC /* NumberUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberUtil.h; sourceTree = "<group>"; };
@ -931,8 +941,6 @@
B60C16631988999D00E97A6C /* VersionMigrations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VersionMigrations.h; sourceTree = "<group>"; };
B60C16641988999D00E97A6C /* VersionMigrations.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VersionMigrations.m; sourceTree = "<group>"; };
B60EDE031A05A01700D73516 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
B6258B311C29E2E60014138E /* NotificationsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotificationsManager.h; sourceTree = "<group>"; };
B6258B321C29E2E60014138E /* NotificationsManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = NotificationsManager.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
B625CD551ABB589C00E8B23C /* NewMessage.aifc */ = {isa = PBXFileReference; lastKnownFileType = file; path = NewMessage.aifc; sourceTree = "<group>"; };
B633C5041A1D190B0059AC12 /* call@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "call@2x.png"; sourceTree = "<group>"; };
B633C50B1A1D190B0059AC12 /* contact_default_feed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = contact_default_feed.png; sourceTree = "<group>"; };
@ -987,8 +995,6 @@
B69C2D1A1AA5447600A640C2 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = translations/ca.lproj/Localizable.strings; sourceTree = "<group>"; };
B69C2D1B1AA5448300A640C2 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = translations/cs.lproj/Localizable.strings; sourceTree = "<group>"; };
B69CD25019773E79005CE69A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
B6B1013A196D213F007E3930 /* SignalKeyingStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SignalKeyingStorage.h; sourceTree = "<group>"; };
B6B1013B196D213F007E3930 /* SignalKeyingStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SignalKeyingStorage.m; sourceTree = "<group>"; };
B6B226961BE4B7D200860F4D /* ContactsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ContactsUI.framework; path = System/Library/Frameworks/ContactsUI.framework; sourceTree = SDKROOT; };
B6B9ECFA198B31BA00C620D3 /* PushManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = PushManager.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
B6B9ECFB198B31BA00C620D3 /* PushManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = PushManager.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
@ -1043,6 +1049,7 @@
files = (
453518A21FC63E2900210559 /* SignalMessaging.framework in Frameworks */,
2AE2882E4C2B96BFFF9EE27C /* Pods_SignalShareExtension.framework in Frameworks */,
346129731FD1E01700532771 /* PromiseKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1051,6 +1058,7 @@
buildActionMask = 2147483647;
files = (
4AC4EA13C8A444455DAB351F /* Pods_SignalMessaging.framework in Frameworks */,
346129741FD1E02D00532771 /* PromiseKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1137,16 +1145,20 @@
34480B471FD0A60200BC14EF /* utils */ = {
isa = PBXGroup;
children = (
3461299D1FD1EFE200532771 /* CryptoTools.h */,
3461299E1FD1EFE200532771 /* CryptoTools.m */,
34480B4D1FD0A7A300BC14EF /* DebugLogger.h */,
34480B4E1FD0A7A300BC14EF /* DebugLogger.m */,
34480B4A1FD0A7A200BC14EF /* OWSLogger.h */,
34480B4B1FD0A7A300BC14EF /* OWSLogger.m */,
34480B481FD0A60200BC14EF /* OWSMath.h */,
3461293B1FD1D46900532771 /* OWSMath.m */,
346129371FD1B47200532771 /* OWSPreferences.h */,
346129381FD1B47200532771 /* OWSPreferences.m */,
34480B4F1FD0A7A300BC14EF /* OWSScrubbingLogFormatter.h */,
34480B511FD0A7A400BC14EF /* OWSScrubbingLogFormatter.m */,
346129331FD1A88700532771 /* OWSSwiftUtils.swift */,
346129751FD1E0B500532771 /* WeakTimer.swift */,
);
path = utils;
sourceTree = "<group>";
@ -1188,6 +1200,51 @@
path = ConversationView;
sourceTree = "<group>";
};
3461293F1FD1D74B00532771 /* environment */ = {
isa = PBXGroup;
children = (
346129401FD1D74B00532771 /* Environment.h */,
346129411FD1D74B00532771 /* Environment.m */,
346129921FD1E30000532771 /* migrations */,
346129561FD1D74B00532771 /* Release.h */,
346129571FD1D74B00532771 /* Release.m */,
346129581FD1D74B00532771 /* SignalKeyingStorage.h */,
346129591FD1D74B00532771 /* SignalKeyingStorage.m */,
);
path = environment;
sourceTree = "<group>";
};
346129771FD1E2AB00532771 /* Migrations */ = {
isa = PBXGroup;
children = (
346129781FD1E2AB00532771 /* OWS100RemoveTSRecipientsMigration.h */,
346129791FD1E2AB00532771 /* OWS100RemoveTSRecipientsMigration.m */,
3461297A1FD1E2AB00532771 /* OWS101ExistingUsersBlockOnIdentityChange.h */,
3461297B1FD1E2AB00532771 /* OWS101ExistingUsersBlockOnIdentityChange.m */,
3461297C1FD1E2AB00532771 /* OWS102MoveLoggingPreferenceToUserDefaults.h */,
3461297D1FD1E2AB00532771 /* OWS102MoveLoggingPreferenceToUserDefaults.m */,
3461297E1FD1E2AB00532771 /* OWS103EnableVideoCalling.h */,
3461297F1FD1E2AB00532771 /* OWS103EnableVideoCalling.m */,
346129801FD1E2AB00532771 /* OWS104CreateRecipientIdentities.h */,
346129811FD1E2AB00532771 /* OWS104CreateRecipientIdentities.m */,
346129821FD1E2AB00532771 /* OWS105AttachmentFilePaths.h */,
346129831FD1E2AB00532771 /* OWS105AttachmentFilePaths.m */,
346129841FD1E2AB00532771 /* OWS106EnsureProfileComplete.swift */,
346129871FD1E2AB00532771 /* OWSDatabaseMigrationRunner.h */,
346129881FD1E2AB00532771 /* OWSDatabaseMigrationRunner.m */,
);
path = Migrations;
sourceTree = "<group>";
};
346129921FD1E30000532771 /* migrations */ = {
isa = PBXGroup;
children = (
346129931FD1E30000532771 /* OWSDatabaseMigration.h */,
346129941FD1E30000532771 /* OWSDatabaseMigration.m */,
);
path = migrations;
sourceTree = "<group>";
};
34B3F8331E8DF1700035BE1A /* ViewControllers */ = {
isa = PBXGroup;
children = (
@ -1404,7 +1461,7 @@
isa = PBXGroup;
children = (
4505C2BE1E648EA300CEBF41 /* ExperienceUpgrade.swift */,
4505C2C11E648F7A00CEBF41 /* ExperienceUpgradeFinder.swift */,
3461293D1FD1D72B00532771 /* ExperienceUpgradeFinder.swift */,
);
name = ExperienceUpgrades;
sourceTree = "<group>";
@ -1452,6 +1509,7 @@
isa = PBXGroup;
children = (
34480B5C1FD0A98800BC14EF /* categories */,
3461293F1FD1D74B00532771 /* environment */,
453518951FC63DBF00210559 /* Info.plist */,
34480B5A1FD0A7E300BC14EF /* SignalMessaging-Prefix.pch */,
453518941FC63DBF00210559 /* SignalMessaging.h */,
@ -1473,30 +1531,6 @@
name = Signaling;
sourceTree = "<group>";
};
45666F731D9BFDB9008FE134 /* Migrations */ = {
isa = PBXGroup;
children = (
45666F741D9BFE00008FE134 /* OWS100RemoveTSRecipientsMigration.h */,
45666F751D9BFE00008FE134 /* OWS100RemoveTSRecipientsMigration.m */,
4516E3FD1DD2193B00DC4206 /* OWS101ExistingUsersBlockOnIdentityChange.h */,
4516E3FE1DD2193B00DC4206 /* OWS101ExistingUsersBlockOnIdentityChange.m */,
45387B021E36D650005D00B3 /* OWS102MoveLoggingPreferenceToUserDefaults.h */,
45387B031E36D650005D00B3 /* OWS102MoveLoggingPreferenceToUserDefaults.m */,
450573FC1E78A06D00615BB4 /* OWS103EnableVideoCalling.h */,
450573FD1E78A06D00615BB4 /* OWS103EnableVideoCalling.m */,
4585C45E1ED4FD0400896AEA /* OWS104CreateRecipientIdentities.h */,
4585C45F1ED4FD0400896AEA /* OWS104CreateRecipientIdentities.m */,
342FCE691EF9C375002690AD /* OWS105AttachmentFilePaths.h */,
342FCE6A1EF9C375002690AD /* OWS105AttachmentFilePaths.m */,
45666F791D9C0533008FE134 /* OWSDatabaseMigration.h */,
45666F7A1D9C0533008FE134 /* OWSDatabaseMigration.m */,
45666F7C1D9C0814008FE134 /* OWSDatabaseMigrationRunner.h */,
45666F7D1D9C0814008FE134 /* OWSDatabaseMigrationRunner.m */,
4563ADF01F22BD7100DEB8C7 /* OWS106EnsureProfileComplete.swift */,
);
name = Migrations;
sourceTree = "<group>";
};
45794E841E0061CF00066731 /* UserInterface */ = {
isa = PBXGroup;
children = (
@ -1590,15 +1624,6 @@
path = Speakerbox;
sourceTree = "<group>";
};
70DBA29918CFE98500771DAD /* crypto */ = {
isa = PBXGroup;
children = (
7038632318F70C0700D4A43F /* CryptoTools.h */,
7038632418F70C0700D4A43F /* CryptoTools.m */,
);
path = crypto;
sourceTree = "<group>";
};
76EB03C118170B33006006FC /* src */ = {
isa = PBXGroup;
children = (
@ -1606,7 +1631,6 @@
76EB03C318170B33006006FC /* AppDelegate.m */,
76EB03FE18170B33006006FC /* call */,
76EB040318170B33006006FC /* contact */,
70DBA29918CFE98500771DAD /* crypto */,
76EB041118170B33006006FC /* environment */,
45D231751DC7E8C50034FA89 /* Jobs */,
457F3AC01D14A0F700C51351 /* Models */,
@ -1649,19 +1673,15 @@
76EB041118170B33006006FC /* environment */ = {
isa = PBXGroup;
children = (
76EB041218170B33006006FC /* Environment.h */,
76EB041318170B33006006FC /* Environment.m */,
4505C2BD1E648E6E00CEBF41 /* ExperienceUpgrades */,
45666F731D9BFDB9008FE134 /* Migrations */,
B6258B311C29E2E60014138E /* NotificationsManager.h */,
B6258B321C29E2E60014138E /* NotificationsManager.m */,
76EB041A18170B33006006FC /* Release.h */,
76EB041B18170B33006006FC /* Release.m */,
B6B1013A196D213F007E3930 /* SignalKeyingStorage.h */,
B6B1013B196D213F007E3930 /* SignalKeyingStorage.m */,
346129771FD1E2AB00532771 /* Migrations */,
3461299A1FD1EA9E00532771 /* NotificationsManager.h */,
3461299B1FD1EA9E00532771 /* NotificationsManager.m */,
4539B5851F79348F007141FF /* PushRegistrationManager.swift */,
346129981FD1E4DA00532771 /* SignalApp.h */,
346129971FD1E4D900532771 /* SignalApp.m */,
B60C16631988999D00E97A6C /* VersionMigrations.h */,
B60C16641988999D00E97A6C /* VersionMigrations.m */,
4539B5851F79348F007141FF /* PushRegistrationManager.swift */,
);
path = environment;
sourceTree = "<group>";
@ -1719,7 +1739,6 @@
B97940261832BD2400BD66CB /* UIUtil.m */,
76EB04FB18170B33006006FC /* Util.h */,
45F170D51E315310003FC1F2 /* Weak.swift */,
45F170CB1E310E22003FC1F2 /* WeakTimer.swift */,
45B72DD91FD5E70600151AF6 /* ConversationSearcher.swift */,
);
path = util;
@ -2043,13 +2062,18 @@
34480B491FD0A60200BC14EF /* OWSMath.h in Headers */,
34480B521FD0A7A400BC14EF /* OWSLogger.h in Headers */,
34480B551FD0A7A400BC14EF /* DebugLogger.h in Headers */,
346129711FD1D74C00532771 /* SignalKeyingStorage.h in Headers */,
3461296F1FD1D74C00532771 /* Release.h in Headers */,
34480B571FD0A7A400BC14EF /* OWSScrubbingLogFormatter.h in Headers */,
346129951FD1E30000532771 /* OWSDatabaseMigration.h in Headers */,
34480B611FD0A98800BC14EF /* UIColor+OWS.h in Headers */,
453518961FC63DBF00210559 /* SignalMessaging.h in Headers */,
3461295A1FD1D74C00532771 /* Environment.h in Headers */,
34480B631FD0A98800BC14EF /* UIView+OWS.h in Headers */,
346129391FD1B47300532771 /* OWSPreferences.h in Headers */,
34480B5B1FD0A7E300BC14EF /* SignalMessaging-Prefix.pch in Headers */,
34480B681FD0AA9400BC14EF /* UIFont+OWS.h in Headers */,
3461299F1FD1EFE200532771 /* CryptoTools.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2677,14 +2701,21 @@
buildActionMask = 2147483647;
files = (
453518A11FC63DD500210559 /* StorageCoordinator.swift in Sources */,
346129761FD1E0B500532771 /* WeakTimer.swift in Sources */,
346129701FD1D74C00532771 /* Release.m in Sources */,
34480B621FD0A98800BC14EF /* UIColor+OWS.m in Sources */,
34480B531FD0A7A400BC14EF /* OWSLogger.m in Sources */,
34480B641FD0A98800BC14EF /* UIView+OWS.m in Sources */,
3461293A1FD1B47300532771 /* OWSPreferences.m in Sources */,
34480B671FD0AA9400BC14EF /* UIFont+OWS.m in Sources */,
346129961FD1E30000532771 /* OWSDatabaseMigration.m in Sources */,
346129341FD1A88700532771 /* OWSSwiftUtils.swift in Sources */,
346129A01FD1EFE200532771 /* CryptoTools.m in Sources */,
3461295B1FD1D74C00532771 /* Environment.m in Sources */,
34480B591FD0A7A400BC14EF /* OWSScrubbingLogFormatter.m in Sources */,
346129721FD1D74C00532771 /* SignalKeyingStorage.m in Sources */,
34480B561FD0A7A400BC14EF /* DebugLogger.m in Sources */,
3461293C1FD1D46A00532771 /* OWSMath.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2694,6 +2725,7 @@
files = (
34B3F8761E8DF1700035BE1A /* CodeVerificationViewController.m in Sources */,
76EB063E18170B33006006FC /* Operation.m in Sources */,
3461293E1FD1D72B00532771 /* ExperienceUpgradeFinder.swift in Sources */,
34D1F0BD1F8D108C0066283D /* AttachmentUploadView.m in Sources */,
34D1F0BA1F8800D90066283D /* OWSAudioMessageView.m in Sources */,
34B3F8741E8DF1700035BE1A /* AttachmentSharing.m in Sources */,
@ -2703,7 +2735,6 @@
34D99C931F2937CC00D284D6 /* OWSAnalytics.swift in Sources */,
34D9134B1F62D4A500722898 /* SignalAttachment.swift in Sources */,
34B3F88E1E8DF1700035BE1A /* PrivacySettingsTableViewController.m in Sources */,
4505C2C21E648F7A00CEBF41 /* ExperienceUpgradeFinder.swift in Sources */,
341F2C0F1F2B8AE700D07D6B /* DebugUIMisc.m in Sources */,
34E3EF0D1EFC235B007F6822 /* DebugUIDiskUsage.m in Sources */,
34D1F0871F8678AA0066283D /* ConversationViewItem.m in Sources */,
@ -2713,6 +2744,7 @@
451A13B11E13DED2000A50FD /* CallNotificationsAdapter.swift in Sources */,
450DF2091E0DD2C6003D14BE /* UserNotificationsAdaptee.swift in Sources */,
34D1F0821F8678AA0066283D /* ConversationHeaderView.m in Sources */,
346129911FD1E2AB00532771 /* OWSDatabaseMigrationRunner.m in Sources */,
340CB2241EAC155C0001CAA1 /* ContactsViewHelper.m in Sources */,
45B72DDA1FD5E70600151AF6 /* ConversationSearcher.swift in Sources */,
34D1F0AB1F867BFC0066283D /* OWSContactOffersCell.m in Sources */,
@ -2726,10 +2758,9 @@
34D1F0A91F867BFC0066283D /* ConversationViewCell.m in Sources */,
34CA1C251F706B5400E51C51 /* NSAttributedString+OWS.m in Sources */,
4542F0961EBB9E9A00C7EE92 /* Promise+retainUntilComplete.swift in Sources */,
4516E3FF1DD2193B00DC4206 /* OWS101ExistingUsersBlockOnIdentityChange.m in Sources */,
3461298B1FD1E2AB00532771 /* OWS102MoveLoggingPreferenceToUserDefaults.m in Sources */,
4505C2BF1E648EA300CEBF41 /* ExperienceUpgrade.swift in Sources */,
34CCAF381F0C0599004084F4 /* AppUpdateNag.m in Sources */,
45387B041E36D650005D00B3 /* OWS102MoveLoggingPreferenceToUserDefaults.m in Sources */,
EF764C351DB67CC5000D9A87 /* UIViewController+Permissions.m in Sources */,
45CD81EF1DC030E7004C9430 /* AccountManager.swift in Sources */,
45794E861E00620000066731 /* CallUIAdapter.swift in Sources */,
@ -2740,6 +2771,7 @@
34C04D801F6195E6004308B3 /* OWSFlatButton.swift in Sources */,
458DE9D91DEE7B360071BB03 /* OWSWebRTCDataProtos.pb.m in Sources */,
76EB063C18170B33006006FC /* NumberUtil.m in Sources */,
346129891FD1E2AB00532771 /* OWS100RemoveTSRecipientsMigration.m in Sources */,
34CA1C291F7164F700E51C51 /* MediaMessageView.swift in Sources */,
3400C7961EAF99F4008A8584 /* SelectThreadViewController.m in Sources */,
34D5CCB11EAE7E7F005515DB /* SelectRecipientViewController.m in Sources */,
@ -2758,18 +2790,13 @@
34E3EF101EFC2684007F6822 /* DebugUIPage.m in Sources */,
34D1F0AE1F867BFC0066283D /* OWSMessageCell.m in Sources */,
451686AB1F520CDA00AC3D4B /* MultiDeviceProfileKeyUpdateJob.swift in Sources */,
76EB058A18170B33006006FC /* Release.m in Sources */,
45D231771DC7E8F10034FA89 /* SessionResetJob.swift in Sources */,
34D9134D1F66DB7C00722898 /* ModalActivityIndicatorViewController.swift in Sources */,
4563ADF11F22BD7100DEB8C7 /* OWS106EnsureProfileComplete.swift in Sources */,
76EB057A18170B33006006FC /* OWSContactsManager.m in Sources */,
76EB064218170B33006006FC /* StringUtil.m in Sources */,
452037D11EE84975004E4CDF /* DebugUISessionState.m in Sources */,
342FCE6B1EF9C375002690AD /* OWS105AttachmentFilePaths.m in Sources */,
D221A09A169C9E5E00537ABF /* main.m in Sources */,
345671011E89A5F1006EE662 /* ThreadUtil.m in Sources */,
4585C4601ED4FD0400896AEA /* OWS104CreateRecipientIdentities.m in Sources */,
B6258B331C29E2E60014138E /* NotificationsManager.m in Sources */,
34B3F87B1E8DF1700035BE1A /* ExperienceUpgradesPageViewController.swift in Sources */,
34533F181EA8D2070006114F /* OWSAudioAttachmentPlayer.m in Sources */,
452EA09E1EA7ABE00078744B /* AttachmentPointerView.swift in Sources */,
@ -2778,12 +2805,12 @@
34B3F87C1E8DF1700035BE1A /* FingerprintViewController.m in Sources */,
4523149C1F7D7F81003A428C /* OWSMessagesBubbleImageFactory.swift in Sources */,
45638BDC1F3DD0D400128435 /* DebugUICalling.swift in Sources */,
76EB058218170B33006006FC /* Environment.m in Sources */,
450449391F45EE7D002D1ADA /* NSString+OWS.m in Sources */,
45464DBC1DFA041F001D3FD6 /* DataChannelMessage.swift in Sources */,
34E3E5681EC4B19400495BAC /* AudioProgressView.swift in Sources */,
34D1F0521F7E8EA30066283D /* GiphyDownloader.swift in Sources */,
450DF2051E0D74AC003D14BE /* Platform.swift in Sources */,
346129991FD1E4DA00532771 /* SignalApp.m in Sources */,
34BECE301F7ABCF800D7438D /* GifPickerLayout.swift in Sources */,
3472229F1EB22FFE00E53955 /* AddToGroupViewController.m in Sources */,
343A65951FC47D5E000477A1 /* DebugUISyncMessages.m in Sources */,
@ -2808,11 +2835,9 @@
45F170AC1E2F0351003FC1F2 /* CallAudioSession.swift in Sources */,
34D1F0B71F87F8850066283D /* OWSGenericAttachmentView.m in Sources */,
34B3F8801E8DF1700035BE1A /* InviteFlow.swift in Sources */,
45F170CC1E310E22003FC1F2 /* WeakTimer.swift in Sources */,
34B3F8871E8DF1700035BE1A /* NotificationSettingsViewController.m in Sources */,
458E38371D668EBF0094BD24 /* OWSDeviceProvisioningURLParser.m in Sources */,
4517642B1DE939FD00EDB8B9 /* ContactCell.swift in Sources */,
450573FE1E78A06D00615BB4 /* OWS103EnableVideoCalling.m in Sources */,
34B3F8751E8DF1700035BE1A /* CallViewController.swift in Sources */,
34D8C0281ED3673300188D7C /* DebugUITableViewController.m in Sources */,
3497DBEC1ECE257500DB2605 /* OWSCountryMetadata.m in Sources */,
@ -2827,7 +2852,7 @@
45C0DC1B1E68FE9000E04C47 /* UIApplication+OWS.swift in Sources */,
45638BDF1F3DDB2200128435 /* MessageSender+Promise.swift in Sources */,
45F3AEB61DFDE7900080CE33 /* AvatarImageView.swift in Sources */,
7038632718F70C0700D4A43F /* CryptoTools.m in Sources */,
3461298A1FD1E2AB00532771 /* OWS101ExistingUsersBlockOnIdentityChange.m in Sources */,
45FBC5C81DF8575700E9B410 /* CallKitCallManager.swift in Sources */,
34B3F8911E8DF1710035BE1A /* ShowGroupMembersViewController.m in Sources */,
4539B5861F79348F007141FF /* PushRegistrationManager.swift in Sources */,
@ -2848,10 +2873,11 @@
451DE9FD1DC1A28200810E42 /* SyncPushTokensJob.swift in Sources */,
34D99C8C1F27B13B00D284D6 /* OWSViewController.m in Sources */,
34D1F0841F8678AA0066283D /* ConversationInputToolbar.m in Sources */,
45666F761D9BFE00008FE134 /* OWS100RemoveTSRecipientsMigration.m in Sources */,
340CB2271EAC25820001CAA1 /* UpdateGroupViewController.m in Sources */,
3461298C1FD1E2AB00532771 /* OWS103EnableVideoCalling.m in Sources */,
34B3F89F1E8DF5490035BE1A /* OWSTableViewController.m in Sources */,
3400C7931EAF89CD008A8584 /* SendExternalFileViewController.m in Sources */,
3461298E1FD1E2AB00532771 /* OWS105AttachmentFilePaths.m in Sources */,
FCC81A981A44558300DFEC7D /* UIDevice+TSHardwareVersion.m in Sources */,
3400C7991EAFB772008A8584 /* ThreadViewHelper.m in Sources */,
76EB054018170B33006006FC /* AppDelegate.m in Sources */,
@ -2864,26 +2890,26 @@
B609597C1C2C0FC6004E8797 /* iRate.m in Sources */,
4574A5D61DD6704700C6B692 /* CallService.swift in Sources */,
34B3F8721E8DF1700035BE1A /* AdvancedSettingsTableViewController.m in Sources */,
3461299C1FD1EA9E00532771 /* NotificationsManager.m in Sources */,
45F170D61E315310003FC1F2 /* Weak.swift in Sources */,
4521C3C01F59F3BA00B4C582 /* TextFieldHelper.swift in Sources */,
34B3F8891E8DF1700035BE1A /* OWSConversationSettingsViewController.m in Sources */,
34C42D671F4734ED0072EC04 /* TSUnreadIndicatorInteraction.m in Sources */,
34B3F87E1E8DF1700035BE1A /* InboxTableViewCell.m in Sources */,
B6B1013C196D213F007E3930 /* SignalKeyingStorage.m in Sources */,
34D5CC961EA6AFAD005515DB /* OWSContactsSyncing.m in Sources */,
45E2E9201E153B3D00457AA0 /* Strings.swift in Sources */,
34B3F88B1E8DF1700035BE1A /* OWSLinkedDevicesTableViewController.m in Sources */,
45666F7E1D9C0814008FE134 /* OWSDatabaseMigrationRunner.m in Sources */,
4579431E1E7C8CE9008ED0C0 /* Pastelog.m in Sources */,
34C42D661F4734ED0072EC04 /* OWSContactOffersInteraction.m in Sources */,
34B3F8941E8DF1710035BE1A /* HomeViewController.m in Sources */,
34E8BF381EE9E2FD00F5F4CA /* FingerprintViewScanController.m in Sources */,
346B66311F4E29B200E5122F /* CropScaleImageViewController.swift in Sources */,
45E5A6991F61E6DE001E4A8A /* MarqueeLabel.swift in Sources */,
3461298D1FD1E2AB00532771 /* OWS104CreateRecipientIdentities.m in Sources */,
34D1F0B01F867BFC0066283D /* OWSSystemMessageCell.m in Sources */,
45A663C51F92EC760027B59E /* GroupTableViewCell.swift in Sources */,
34B3F87D1E8DF1700035BE1A /* FullImageViewController.m in Sources */,
45666F7B1D9C0533008FE134 /* OWSDatabaseMigration.m in Sources */,
3461298F1FD1E2AB00532771 /* OWS106EnsureProfileComplete.swift in Sources */,
34D1F0861F8678AA0066283D /* ConversationViewController.m in Sources */,
B90418E6183E9DD40038554A /* DateUtil.m in Sources */,
459311FC1D75C948008DD4F0 /* OWSDeviceTableViewCell.m in Sources */,
@ -2894,7 +2920,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4505C2C31E648F7A00CEBF41 /* ExperienceUpgradeFinder.swift in Sources */,
456F6E241E24133E00FD2210 /* CallKitCallUIAdaptee.swift in Sources */,
451DA3C81F14898E008E2423 /* Strings.swift in Sources */,
456F6E251E24216100FD2210 /* DataChannelMessage.swift in Sources */,
@ -2907,18 +2932,13 @@
452C46901E427E200087B011 /* OutboundCallInitiator.swift in Sources */,
451DE9F81DC18C9500810E42 /* AccountManager.swift in Sources */,
B660F7171C29988E00687D6E /* OWSContactsManager.m in Sources */,
B660F7181C29988E00687D6E /* CryptoTools.m in Sources */,
B660F71B1C29988E00687D6E /* Environment.m in Sources */,
451DA3CA1F148A9F008E2423 /* DeviceSleepManager.swift in Sources */,
B660F7201C29988E00687D6E /* Release.m in Sources */,
45BB93391E688E14001E3939 /* UIDevice+featureSupport.swift in Sources */,
B660F7211C29988E00687D6E /* SignalKeyingStorage.m in Sources */,
B660F7221C29988E00687D6E /* VersionMigrations.m in Sources */,
4521C3C11F59F3BA00B4C582 /* TextFieldHelper.swift in Sources */,
45D231781DC7E8F10034FA89 /* SessionResetJob.swift in Sources */,
458967111DC117CC00E9DD21 /* AccountManagerTest.swift in Sources */,
45F659831E1BE77000444429 /* NonCallKitCallUIAdaptee.swift in Sources */,
456AC8351E3A776300A3C7FC /* WeakTimer.swift in Sources */,
340B02BA1FA0D6C700F9CFEC /* ConversationViewItemTest.m in Sources */,
458E383A1D6699FA0094BD24 /* OWSDeviceProvisioningURLParserTest.m in Sources */,
452D1EE81DCA90D100A57EC4 /* MesssagesBubblesSizeCalculatorTest.swift in Sources */,
@ -3331,6 +3351,10 @@
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = U68MSDN6DR;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/iOS",
);
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
@ -3392,6 +3416,10 @@
DEVELOPMENT_TEAM = U68MSDN6DR;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/iOS",
);
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
@ -3457,6 +3485,10 @@
DEVELOPMENT_TEAM = U68MSDN6DR;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/iOS",
);
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
@ -3511,6 +3543,10 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/iOS",
);
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
@ -3580,6 +3616,10 @@
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/iOS",
);
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
@ -3653,6 +3693,10 @@
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Carthage/Build/iOS",
);
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;

View File

@ -25,6 +25,7 @@
#import "VersionMigrations.h"
#import "ViewControllerUtils.h"
#import <AxolotlKit/SessionCipher.h>
#import <SignalMessaging/OWSMath.h>
#import <SignalMessaging/SignalMessaging.h>
#import <SignalServiceKit/NSUserDefaults+OWS.h>
#import <SignalServiceKit/OWSBatchMessageProcessor.h>
@ -126,15 +127,10 @@ static NSString *const kURLHostVerifyPrefix = @"verify";
[self startupLogging];
// Set the seed the generator for rand().
//
// We should always use arc4random() instead of rand(), but we
// still want to ensure that any third-party code that uses rand()
// gets random values.
srand((unsigned int)time(NULL));
SetRandFunctionSeed();
// XXX - careful when moving this. It must happen before we initialize TSStorageManager.
[self verifyDBKeysAvailableBeforeBackgroundLaunch];
[TSStorageManager verifyDBKeysAvailableBeforeBackgroundLaunch];
// Prevent the device from sleeping during database view async registration
// (e.g. long database upgrades).
@ -858,23 +854,6 @@ static NSString *const kURLHostVerifyPrefix = @"verify";
completionHandler:completionHandler];
}
/**
* The user must unlock the device once after reboot before the database encryption key can be accessed.
*/
- (void)verifyDBKeysAvailableBeforeBackgroundLaunch
{
if (UIApplication.sharedApplication.applicationState != UIApplicationStateBackground) {
return;
}
if (![TSStorageManager isDatabasePasswordAccessible]) {
DDLogInfo(
@"%@ exiting because we are in the background and the database password is not accessible.", self.logTag);
[DDLog flushLog];
exit(0);
}
}
- (void)databaseViewRegistrationComplete
{
DDLogInfo(@"%@ databaseViewRegistrationComplete", self.logTag);

View File

@ -6,6 +6,7 @@
#import "Environment.h"
#import "OWSMessageSender.h"
#import "OWSTableViewController.h"
#import "SignalApp.h"
#import "ThreadUtil.h"
#import <SignalServiceKit/Cryptography.h>
#import <SignalServiceKit/NSDate+OWS.h>
@ -484,8 +485,8 @@ NS_ASSUME_NONNULL_BEGIN
thread = [TSGroupThread getOrCreateThreadWithGroupModel:groupModel transaction:transaction];
}];
OWSAssert(thread);
[Environment presentConversationForThread:thread];
[SignalApp.sharedApp presentConversationForThread:thread];
}
@end

View File

@ -10,6 +10,7 @@
#import "NewNonContactConversationViewController.h"
#import "OWSTableViewController.h"
#import "Signal-Swift.h"
#import "SignalApp.h"
#import "UIColor+OWS.h"
#import "UIUtil.h"
#import "UIView+OWS.h"
@ -813,7 +814,7 @@ NS_ASSUME_NONNULL_BEGIN
OWSAssert(thread != nil);
[self dismissViewControllerAnimated:YES
completion:^() {
[Environment presentConversationForThread:thread withCompose:YES];
[SignalApp.sharedApp presentConversationForThread:thread withCompose:YES];
}];
}

View File

@ -14,6 +14,7 @@
#import "OWSNavigationController.h"
#import "OWSTableViewController.h"
#import "Signal-Swift.h"
#import "SignalApp.h"
#import "SignalKeyingStorage.h"
#import "TSOutgoingMessage.h"
#import "UIUtil.h"
@ -460,7 +461,7 @@ const NSUInteger kNewGroupViewControllerAvatarWidth = 68;
[self dismissViewControllerAnimated:YES
completion:^{
// Pop to new group thread.
[Environment presentConversationForThread:thread];
[SignalApp.sharedApp presentConversationForThread:thread];
}];
});
@ -479,7 +480,7 @@ const NSUInteger kNewGroupViewControllerAvatarWidth = 68;
failedMessageType:TSErrorMessageGroupCreationFailed]
save];
[Environment presentConversationForThread:thread];
[SignalApp.sharedApp presentConversationForThread:thread];
}];
});
};

View File

@ -6,6 +6,7 @@
#import "Environment.h"
#import "NSString+OWS.h"
#import "Signal-Swift.h"
#import "SignalApp.h"
#import "ThreadUtil.h"
#import "UIColor+OWS.h"
#import "UIFont+OWS.h"
@ -67,7 +68,7 @@ NS_ASSUME_NONNULL_BEGIN
[ThreadUtil addThreadToProfileWhitelistIfEmptyContactThread:thread];
[ThreadUtil sendMessageWithAttachment:self.attachment inThread:thread messageSender:self.messageSender];
[Environment presentConversationForThread:thread];
[SignalApp.sharedApp presentConversationForThread:thread];
}
- (BOOL)canSelectBlockedContact

View File

@ -10,6 +10,7 @@
#import "HomeViewController.h"
#import "OWSContactsManager.h"
#import "Signal-Swift.h"
#import "SignalApp.h"
#import "UIUtil.h"
#import "ViewControllerUtils.h"
#import <AddressBookUI/AddressBookUI.h>
@ -408,12 +409,12 @@ NS_ASSUME_NONNULL_BEGIN
{
OWSAssert(recipientId.length > 0);
[Environment presentConversationForRecipientId:recipientId withCompose:YES];
[SignalApp.sharedApp presentConversationForRecipientId:recipientId withCompose:YES];
}
- (void)callMember:(NSString *)recipientId
{
[Environment callRecipientId:recipientId];
[SignalApp.sharedApp callRecipientId:recipientId];
}
- (void)showSafetyNumberView:(NSString *)recipientId

View File

@ -3,12 +3,9 @@
//
#import "OWSDatabaseMigrationRunner.h"
#import "OWS100RemoveTSRecipientsMigration.h"
#import "OWS102MoveLoggingPreferenceToUserDefaults.h"
#import "OWS103EnableVideoCalling.h"
#import "OWS104CreateRecipientIdentities.h"
#import "OWS105AttachmentFilePaths.h"
#import "OWSDatabaseMigration.h"
#import "Signal-Swift.h"
#import <SignalServiceKit/AppContext.h>
NS_ASSUME_NONNULL_BEGIN
@ -28,14 +25,7 @@ NS_ASSUME_NONNULL_BEGIN
- (NSArray<OWSDatabaseMigration *> *)allMigrations
{
return @[
[[OWS100RemoveTSRecipientsMigration alloc] initWithStorageManager:self.storageManager],
[[OWS102MoveLoggingPreferenceToUserDefaults alloc] initWithStorageManager:self.storageManager],
[[OWS103EnableVideoCalling alloc] initWithStorageManager:self.storageManager],
// OWS104CreateRecipientIdentities is run separately. See runSafeBlockingMigrations.
[[OWS105AttachmentFilePaths alloc] initWithStorageManager:self.storageManager],
[[OWS106EnsureProfileComplete alloc] initWithStorageManager:self.storageManager]
];
return CurrentAppContext().allMigrations;
}
- (void)assumeAllExistingMigrationsRun

View File

@ -0,0 +1,43 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
@class AccountManager;
@class CallService;
@class CallUIAdapter;
@class HomeViewController;
@class NotificationsManager;
@class OWSMessageFetcherJob;
@class OWSWebRTCCallMessageHandler;
@class OutboundCallInitiator;
@class TSThread;
@interface SignalApp : NSObject
@property (nonatomic) HomeViewController *homeViewController;
@property (nonatomic, readonly) OWSWebRTCCallMessageHandler *callMessageHandler;
@property (nonatomic, readonly) CallService *callService;
@property (nonatomic, readonly) CallUIAdapter *callUIAdapter;
@property (nonatomic, readonly) OutboundCallInitiator *outboundCallInitiator;
@property (nonatomic, readonly) OWSMessageFetcherJob *messageFetcherJob;
@property (nonatomic, readonly) NotificationsManager *notificationsManager;
@property (nonatomic, readonly) AccountManager *accountManager;
- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)sharedApp;
#pragma mark - View Convenience Methods
- (void)presentConversationForRecipientId:(NSString *)recipientId;
- (void)presentConversationForRecipientId:(NSString *)recipientId withCompose:(BOOL)compose;
- (void)callRecipientId:(NSString *)recipientId;
- (void)presentConversationForThreadId:(NSString *)threadId;
- (void)presentConversationForThread:(TSThread *)thread;
- (void)presentConversationForThread:(TSThread *)thread withCompose:(BOOL)compose;
#pragma mark - Methods
+ (void)resetAppData;
@end

View File

@ -2,79 +2,59 @@
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "Environment.h"
#import "SignalApp.h"
#import "ConversationViewController.h"
#import "DebugLogger.h"
#import "HomeViewController.h"
#import "Signal-Swift.h"
#import "SignalKeyingStorage.h"
#import "TSContactThread.h"
#import "TSGroupThread.h"
#import <SignalServiceKit/ContactsUpdater.h>
#import <SignalServiceKit/OWSMessageReceiver.h>
#import <SignalServiceKit/OWSSignalService.h>
#import <SignalServiceKit/TSContactThread.h>
#import <SignalServiceKit/TSGroupThread.h>
#import <SignalServiceKit/TSStorageManager.h>
#import <SignalServiceKit/Threading.h>
static Environment *environment = nil;
@interface SignalApp ()
@implementation Environment
@property (nonatomic) OWSWebRTCCallMessageHandler *callMessageHandler;
@property (nonatomic) CallService *callService;
@property (nonatomic) OutboundCallInitiator *outboundCallInitiator;
@property (nonatomic) OWSMessageFetcherJob *messageFetcherJob;
@property (nonatomic) NotificationsManager *notificationsManager;
@property (nonatomic) AccountManager *accountManager;
@synthesize accountManager = _accountManager,
callMessageHandler = _callMessageHandler,
callService = _callService,
contactsManager = _contactsManager,
contactsUpdater = _contactsUpdater,
messageFetcherJob = _messageFetcherJob,
messageSender = _messageSender,
networkManager = _networkManager,
notificationsManager = _notificationsManager,
preferences = _preferences,
outboundCallInitiator = _outboundCallInitiator;
@end
+ (Environment *)getCurrent {
NSAssert((environment != nil), @"Environment is not defined.");
return environment;
#pragma mark -
@implementation SignalApp
+ (instancetype)sharedApp
{
static SignalApp *sharedApp = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedApp = [[self alloc] initDefault];
});
return sharedApp;
}
+ (void)setCurrent:(Environment *)curEnvironment {
environment = curEnvironment;
}
- (instancetype)initWithContactsManager:(OWSContactsManager *)contactsManager
contactsUpdater:(ContactsUpdater *)contactsUpdater
networkManager:(TSNetworkManager *)networkManager
messageSender:(OWSMessageSender *)messageSender
- (instancetype)initDefault
{
self = [super init];
if (!self) {
return self;
}
_contactsManager = contactsManager;
_contactsUpdater = contactsUpdater;
_networkManager = networkManager;
_messageSender = messageSender;
OWSSingletonAssert();
return self;
}
- (AccountManager *)accountManager
{
@synchronized (self) {
if (!_accountManager) {
_accountManager = [[AccountManager alloc] initWithTextSecureAccountManager:[TSAccountManager sharedInstance]
preferences:self.preferences];
}
}
return _accountManager;
}
#pragma mark - Singletons
- (OWSWebRTCCallMessageHandler *)callMessageHandler
{
@synchronized (self) {
@synchronized(self)
{
if (!_callMessageHandler) {
_callMessageHandler = [[OWSWebRTCCallMessageHandler alloc] initWithAccountManager:self.accountManager
callService:self.callService
@ -87,7 +67,8 @@ static Environment *environment = nil;
- (CallService *)callService
{
@synchronized (self) {
@synchronized(self)
{
if (!_callService) {
OWSAssert(self.accountManager);
OWSAssert(self.contactsManager);
@ -109,7 +90,8 @@ static Environment *environment = nil;
- (OutboundCallInitiator *)outboundCallInitiator
{
@synchronized (self) {
@synchronized(self)
{
if (!_outboundCallInitiator) {
OWSAssert(self.contactsManager);
OWSAssert(self.contactsUpdater);
@ -121,24 +103,6 @@ static Environment *environment = nil;
return _outboundCallInitiator;
}
- (OWSContactsManager *)contactsManager
{
OWSAssert(_contactsManager != nil);
return _contactsManager;
}
- (ContactsUpdater *)contactsUpdater
{
OWSAssert(_contactsUpdater != nil);
return _contactsUpdater;
}
- (TSNetworkManager *)networkManager
{
OWSAssert(_networkManager != nil);
return _networkManager;
}
- (OWSMessageFetcherJob *)messageFetcherJob
{
@synchronized(self)
@ -153,15 +117,10 @@ static Environment *environment = nil;
return _messageFetcherJob;
}
- (OWSMessageSender *)messageSender
{
OWSAssert(_messageSender != nil);
return _messageSender;
}
- (NotificationsManager *)notificationsManager
{
@synchronized (self) {
@synchronized(self)
{
if (!_notificationsManager) {
_notificationsManager = [NotificationsManager new];
}
@ -170,49 +129,37 @@ static Environment *environment = nil;
return _notificationsManager;
}
+ (OWSPreferences *)preferences
- (AccountManager *)accountManager
{
OWSAssert([Environment getCurrent] != nil);
OWSAssert([Environment getCurrent].preferences != nil);
return [Environment getCurrent].preferences;
}
- (OWSPreferences *)preferences
{
@synchronized (self) {
if (!_preferences) {
_preferences = [OWSPreferences new];
@synchronized(self)
{
if (!_accountManager) {
_accountManager = [[AccountManager alloc] initWithTextSecureAccountManager:[TSAccountManager sharedInstance]
preferences:self.preferences];
}
}
return _preferences;
return _accountManager;
}
- (void)setHomeViewController:(HomeViewController *)homeViewController
{
_homeViewController = homeViewController;
}
#pragma mark - View Convenience Methods
- (void)setSignUpFlowNavigationController:(UINavigationController *)navigationController {
_signUpFlowNavigationController = navigationController;
}
+ (void)presentConversationForRecipientId:(NSString *)recipientId
- (void)presentConversationForRecipientId:(NSString *)recipientId
{
[self presentConversationForRecipientId:recipientId keyboardOnViewAppearing:YES callOnViewAppearing:NO];
}
+ (void)presentConversationForRecipientId:(NSString *)recipientId withCompose:(BOOL)compose
- (void)presentConversationForRecipientId:(NSString *)recipientId withCompose:(BOOL)compose
{
[self presentConversationForRecipientId:recipientId keyboardOnViewAppearing:compose callOnViewAppearing:NO];
}
+ (void)callRecipientId:(NSString *)recipientId
- (void)callRecipientId:(NSString *)recipientId
{
[self presentConversationForRecipientId:recipientId keyboardOnViewAppearing:NO callOnViewAppearing:YES];
}
+ (void)presentConversationForRecipientId:(NSString *)recipientId
- (void)presentConversationForRecipientId:(NSString *)recipientId
keyboardOnViewAppearing:(BOOL)keyboardOnViewAppearing
callOnViewAppearing:(BOOL)callOnViewAppearing
{
@ -231,7 +178,7 @@ static Environment *environment = nil;
});
}
+ (void)presentConversationForThreadId:(NSString *)threadId
- (void)presentConversationForThreadId:(NSString *)threadId
{
OWSAssert(threadId.length > 0);
@ -244,17 +191,17 @@ static Environment *environment = nil;
[self presentConversationForThread:thread];
}
+ (void)presentConversationForThread:(TSThread *)thread
- (void)presentConversationForThread:(TSThread *)thread
{
[self presentConversationForThread:thread withCompose:YES];
}
+ (void)presentConversationForThread:(TSThread *)thread withCompose:(BOOL)compose
- (void)presentConversationForThread:(TSThread *)thread withCompose:(BOOL)compose
{
[self presentConversationForThread:thread keyboardOnViewAppearing:compose callOnViewAppearing:NO];
}
+ (void)presentConversationForThread:(TSThread *)thread
- (void)presentConversationForThread:(TSThread *)thread
keyboardOnViewAppearing:(BOOL)keyboardOnViewAppearing
callOnViewAppearing:(BOOL)callOnViewAppearing
{
@ -277,14 +224,16 @@ static Environment *environment = nil;
}
}
Environment *env = [self getCurrent];
[env.homeViewController presentThread:thread
keyboardOnViewAppearing:keyboardOnViewAppearing
callOnViewAppearing:callOnViewAppearing];
[self.homeViewController presentThread:thread
keyboardOnViewAppearing:keyboardOnViewAppearing
callOnViewAppearing:callOnViewAppearing];
});
}
+ (void)resetAppData {
#pragma mark - Methods
+ (void)resetAppData
{
// This _should_ be wiped out below.
DDLogError(@"%@ %s", self.logTag, __PRETTY_FUNCTION__);
[DDLog flushLog];

View File

@ -7,6 +7,7 @@
#import "NotificationsManager.h"
#import "OWSContactsManager.h"
#import "Signal-Swift.h"
#import "SignalApp.h"
#import "ThreadUtil.h"
#import <SignalServiceKit/NSDate+OWS.h>
#import <SignalServiceKit/OWSDevice.h>
@ -141,7 +142,7 @@ NSString *const Signal_Message_MarkAsRead_Identifier = @"Signal_Message_MarkAsRe
NSString *_Nullable threadId = notification.userInfo[Signal_Thread_UserInfo_Key];
if (threadId) {
[Environment presentConversationForThreadId:threadId];
[SignalApp.sharedApp presentConversationForThreadId:threadId];
} else {
OWSFail(@"%@ threadId was unexpectedly nil in %s", self.logTag, __PRETTY_FUNCTION__);
}
@ -246,7 +247,7 @@ NSString *const Signal_Message_MarkAsRead_Identifier = @"Signal_Message_MarkAsRe
NSString *threadId = notification.userInfo[Signal_Thread_UserInfo_Key];
if (threadId) {
[Environment presentConversationForThreadId:threadId];
[SignalApp.sharedApp presentConversationForThreadId:threadId];
} else {
OWSFail(@"%@ threadId was unexpectedly nil in action with identifier: %@", self.logTag, identifier);
}
@ -255,7 +256,7 @@ NSString *const Signal_Message_MarkAsRead_Identifier = @"Signal_Message_MarkAsRe
OWSFail(@"%@ Unhandled action with identifier: %@", self.logTag, identifier);
NSString *threadId = notification.userInfo[Signal_Thread_UserInfo_Key];
if (threadId) {
[Environment presentConversationForThreadId:threadId];
[SignalApp.sharedApp presentConversationForThreadId:threadId];
} else {
OWSFail(@"%@ threadId was unexpectedly nil in action with identifier: %@", self.logTag, identifier);
}

View File

@ -3,6 +3,11 @@
//
#import "MainAppContext.h"
#import "OWS100RemoveTSRecipientsMigration.h"
#import "OWS102MoveLoggingPreferenceToUserDefaults.h"
#import "OWS103EnableVideoCalling.h"
#import "OWS104CreateRecipientIdentities.h"
#import "OWS105AttachmentFilePaths.h"
NS_ASSUME_NONNULL_BEGIN
@ -45,6 +50,18 @@ NS_ASSUME_NONNULL_BEGIN
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:value];
}
- (NSArray<OWSDatabaseMigration *> *)allMigrations
{
return @[
[[OWS100RemoveTSRecipientsMigration alloc] initWithStorageManager:self.storageManager],
[[OWS102MoveLoggingPreferenceToUserDefaults alloc] initWithStorageManager:self.storageManager],
[[OWS103EnableVideoCalling alloc] initWithStorageManager:self.storageManager],
// OWS104CreateRecipientIdentities is run separately. See runSafeBlockingMigrations.
[[OWS105AttachmentFilePaths alloc] initWithStorageManager:self.storageManager],
[[OWS106EnsureProfileComplete alloc] initWithStorageManager:self.storageManager]
];
}
@end
NS_ASSUME_NONNULL_END

View File

@ -11,4 +11,6 @@ FOUNDATION_EXPORT double SignalMessagingVersionNumber;
FOUNDATION_EXPORT const unsigned char SignalMessagingVersionString[];
// The public headers of the framework
#import <SignalMessaging/Environment.h>
#import <SignalMessaging/OWSDatabaseMigration.h>
#import <SignalMessaging/OWSLogger.h>

View File

@ -13,21 +13,13 @@
*
**/
@class ContactsUpdater;
@class OWSContactsManager;
@class OWSMessageSender;
@class TSGroupThread;
@class TSNetworkManager;
@class TSThread;
@class UINavigationController;
@class OWSContactsManager;
@class OutboundCallInitiator;
@class HomeViewController;
@class TSGroupThread;
@class ContactsUpdater;
@class TSNetworkManager;
@class AccountManager;
@class OWSWebRTCCallMessageHandler;
@class CallUIAdapter;
@class CallService;
@class OWSMessageSender;
@class NotificationsManager;
@class OWSMessageFetcherJob;
@interface Environment : NSObject
@ -36,20 +28,12 @@
networkManager:(TSNetworkManager *)networkManager
messageSender:(OWSMessageSender *)messageSender;
@property (nonatomic, readonly) AccountManager *accountManager;
@property (nonatomic, readonly) OWSWebRTCCallMessageHandler *callMessageHandler;
@property (nonatomic, readonly) CallUIAdapter *callUIAdapter;
@property (nonatomic, readonly) CallService *callService;
@property (nonatomic, readonly) OWSContactsManager *contactsManager;
@property (nonatomic, readonly) OutboundCallInitiator *outboundCallInitiator;
@property (nonatomic, readonly) ContactsUpdater *contactsUpdater;
@property (nonatomic, readonly) TSNetworkManager *networkManager;
@property (nonatomic, readonly) NotificationsManager *notificationsManager;
@property (nonatomic, readonly) OWSMessageSender *messageSender;
@property (nonatomic, readonly) OWSPreferences *preferences;
@property (nonatomic, readonly) OWSMessageFetcherJob *messageFetcherJob;
@property (nonatomic, readonly) HomeViewController *homeViewController;
@property (nonatomic, readonly, weak) UINavigationController *signUpFlowNavigationController;
+ (Environment *)getCurrent;
@ -57,16 +41,6 @@
+ (OWSPreferences *)preferences;
+ (void)resetAppData;
- (void)setHomeViewController:(HomeViewController *)homeViewController;
- (void)setSignUpFlowNavigationController:(UINavigationController *)signUpFlowNavigationController;
+ (void)presentConversationForRecipientId:(NSString *)recipientId;
+ (void)presentConversationForRecipientId:(NSString *)recipientId withCompose:(BOOL)compose;
+ (void)callRecipientId:(NSString *)recipientId;
+ (void)presentConversationForThreadId:(NSString *)threadId;
+ (void)presentConversationForThread:(TSThread *)thread;
+ (void)presentConversationForThread:(TSThread *)thread withCompose:(BOOL)compose;
@end

View File

@ -0,0 +1,117 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "Environment.h"
#import "DebugLogger.h"
#import "SignalKeyingStorage.h"
#import <SignalServiceKit/ContactsUpdater.h>
#import <SignalServiceKit/OWSMessageReceiver.h>
#import <SignalServiceKit/OWSSignalService.h>
#import <SignalServiceKit/TSContactThread.h>
#import <SignalServiceKit/TSGroupThread.h>
#import <SignalServiceKit/Threading.h>
static Environment *environment = nil;
@interface Environment ()
@property (nonatomic) OWSContactsManager *contactsManager;
@property (nonatomic) ContactsUpdater *contactsUpdater;
@property (nonatomic) TSNetworkManager *networkManager;
@property (nonatomic) OWSMessageSender *messageSender;
@property (nonatomic) OWSPreferences *preferences;
@property (nonatomic, weak) UINavigationController *signUpFlowNavigationController;
@end
#pragma mark -
@implementation Environment
+ (Environment *)getCurrent
{
NSAssert((environment != nil), @"Environment is not defined.");
return environment;
}
+ (void)setCurrent:(Environment *)curEnvironment
{
environment = curEnvironment;
}
- (instancetype)initWithContactsManager:(OWSContactsManager *)contactsManager
contactsUpdater:(ContactsUpdater *)contactsUpdater
networkManager:(TSNetworkManager *)networkManager
messageSender:(OWSMessageSender *)messageSender
{
self = [super init];
if (!self) {
return self;
}
_contactsManager = contactsManager;
_contactsUpdater = contactsUpdater;
_networkManager = networkManager;
_messageSender = messageSender;
OWSSingletonAssert();
return self;
}
- (OWSContactsManager *)contactsManager
{
OWSAssert(_contactsManager);
return _contactsManager;
}
- (ContactsUpdater *)contactsUpdater
{
OWSAssert(_contactsUpdater);
return _contactsUpdater;
}
- (TSNetworkManager *)networkManager
{
OWSAssert(_networkManager);
return _networkManager;
}
- (OWSMessageSender *)messageSender
{
OWSAssert(_messageSender);
return _messageSender;
}
+ (OWSPreferences *)preferences
{
OWSAssert([Environment getCurrent]);
OWSAssert([Environment getCurrent].preferences);
return [Environment getCurrent].preferences;
}
- (OWSPreferences *)preferences
{
@synchronized(self)
{
if (!_preferences) {
_preferences = [OWSPreferences new];
}
}
return _preferences;
}
- (void)setSignUpFlowNavigationController:(UINavigationController *)navigationController
{
_signUpFlowNavigationController = navigationController;
}
@end

View File

@ -45,7 +45,8 @@
}
// TODELETE
+ (Environment *)unitTestEnvironment:(NSArray *)testingAndLegacyOptions {
+ (Environment *)unitTestEnvironment:(NSArray *)testingAndLegacyOptions
{
TSNetworkManager *networkManager = [TSNetworkManager sharedManager];
OWSContactsManager *contactsManager = [OWSContactsManager new];
ContactsUpdater *contactsUpdater = [ContactsUpdater sharedUpdater];

View File

@ -2,8 +2,8 @@
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "CryptoTools.h"
#import "SignalKeyingStorage.h"
#import "CryptoTools.h"
#import "TSStorageManager.h"
#import "Util.h"
@ -15,39 +15,46 @@
@implementation SignalKeyingStorage
+ (void)generateSignaling {
+ (void)generateSignaling
{
[self storeData:[CryptoTools generateSecureRandomData:SIGNALING_MAC_KEY_LENGTH] forKey:SIGNALING_MAC_KEY];
[self storeData:[CryptoTools generateSecureRandomData:SIGNALING_CIPHER_KEY_LENGTH] forKey:SIGNALING_CIPHER_KEY];
[self storeData:[CryptoTools generateSecureRandomData:SIGNALING_EXTRA_KEY_LENGTH] forKey:SIGNALING_EXTRA_KEY];
}
+ (int64_t)getAndIncrementOneTimeCounter {
+ (int64_t)getAndIncrementOneTimeCounter
{
__block int64_t oldCounter;
oldCounter = [[self stringForKey:PASSWORD_COUNTER_KEY] longLongValue];
oldCounter = [[self stringForKey:PASSWORD_COUNTER_KEY] longLongValue];
int64_t newCounter = (oldCounter == INT64_MAX) ? INT64_MIN : (oldCounter + 1);
[self storeString:[@(newCounter) stringValue] forKey:PASSWORD_COUNTER_KEY];
return newCounter;
}
+ (NSData *)signalingCipherKey {
+ (NSData *)signalingCipherKey
{
return [self dataForKey:SIGNALING_CIPHER_KEY andVerifyLength:SIGNALING_CIPHER_KEY_LENGTH];
}
+ (NSData *)signalingMacKey {
+ (NSData *)signalingMacKey
{
return [self dataForKey:SIGNALING_MAC_KEY andVerifyLength:SIGNALING_MAC_KEY_LENGTH];
}
+ (NSData *)signalingExtraKey {
+ (NSData *)signalingExtraKey
{
return [self dataForKey:SIGNALING_EXTRA_KEY andVerifyLength:SIGNALING_EXTRA_KEY_LENGTH];
}
#pragma mark Keychain wrapper methods
+ (void)storeData:(NSData *)data forKey:(NSString *)key {
+ (void)storeData:(NSData *)data forKey:(NSString *)key
{
[TSStorageManager.sharedManager setObject:data forKey:key inCollection:SignalKeyingCollection];
}
+ (NSData *)dataForKey:(NSString *)key andVerifyLength:(uint)length {
+ (NSData *)dataForKey:(NSString *)key andVerifyLength:(uint)length
{
NSData *data = [self dataForKey:key];
if (data.length != length) {
@ -57,15 +64,18 @@
return data;
}
+ (NSData *)dataForKey:(NSString *)key {
+ (NSData *)dataForKey:(NSString *)key
{
return [TSStorageManager.sharedManager dataForKey:key inCollection:SignalKeyingCollection];
}
+ (NSString *)stringForKey:(NSString *)key {
+ (NSString *)stringForKey:(NSString *)key
{
return [TSStorageManager.sharedManager stringForKey:key inCollection:SignalKeyingCollection];
}
+ (void)storeString:(NSString *)string forKey:(NSString *)key {
+ (void)storeString:(NSString *)string forKey:(NSString *)key
{
[TSStorageManager.sharedManager setObject:string forKey:key inCollection:SignalKeyingCollection];
}

View File

@ -2,7 +2,7 @@
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#include <SignalServiceKit/TSYapDatabaseObject.h>
#import <SignalServiceKit/TSYapDatabaseObject.h>
NS_ASSUME_NONNULL_BEGIN

View File

@ -8,6 +8,8 @@
@interface CryptoTools : NSObject
/// Returns data composed of 'length' cryptographically unpredictable bytes sampled uniformly from [0, 256).
//
// TODO: Is this redundant with: [SecurityUtils generateRandomBytes]?
+ (NSData *)generateSecureRandomData:(NSUInteger)length;
@end

View File

@ -6,9 +6,10 @@
@implementation CryptoTools
+ (NSData *)generateSecureRandomData:(NSUInteger)length {
+ (NSData *)generateSecureRandomData:(NSUInteger)length
{
NSMutableData *d = [NSMutableData dataWithLength:length];
OSStatus status = SecRandomCopyBytes(kSecRandomDefault, length, [d mutableBytes]);
OSStatus status = SecRandomCopyBytes(kSecRandomDefault, length, [d mutableBytes]);
if (status != noErr) {
[SecurityFailure raise:@"SecRandomCopyBytes failed"];
}

View File

@ -27,4 +27,6 @@ static inline CGFloat CGFloatInverseLerp(CGFloat value, CGFloat minValue, CGFloa
return (value - minValue) / (maxValue - minValue);
}
void SetRandFunctionSeed(void);
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,19 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "OWSMath.h"
NS_ASSUME_NONNULL_BEGIN
void SetRandFunctionSeed(void)
{
// Set the seed the generator for rand().
//
// We should always use arc4random() instead of rand(), but we
// still want to ensure that any third-party code that uses rand()
// gets random values.
srand((unsigned int)time(NULL));
}
NS_ASSUME_NONNULL_END

View File

@ -65,6 +65,8 @@ NS_ASSUME_NONNULL_BEGIN
+ (void)migrateToSharedData;
+ (void)verifyDBKeysAvailableBeforeBackgroundLaunch;
@end
NS_ASSUME_NONNULL_END

View File

@ -718,6 +718,23 @@ void setDatabaseInitialized()
[TSAttachmentStream deleteAttachments];
}
/**
* The user must unlock the device once after reboot before the database encryption key can be accessed.
*/
+ (void)verifyDBKeysAvailableBeforeBackgroundLaunch
{
if (CurrentAppContext().isMainApp && CurrentAppContext().mainApplicationState != UIApplicationStateBackground) {
return;
}
if (![TSStorageManager isDatabasePasswordAccessible]) {
DDLogInfo(
@"%@ exiting because we are in the background and the database password is not accessible.", self.logTag);
[DDLog flushLog];
exit(0);
}
}
@end
NS_ASSUME_NONNULL_END

View File

@ -6,6 +6,8 @@ NS_ASSUME_NONNULL_BEGIN
typedef void (^BackgroundTaskExpirationHandler)(void);
@class OWSDatabaseMigration;
@protocol AppContext <NSObject>
- (BOOL)isMainApp;
@ -28,6 +30,8 @@ typedef void (^BackgroundTaskExpirationHandler)(void);
- (BOOL)isRTL;
- (NSArray<OWSDatabaseMigration *> *)allMigrations;
@end
id<AppContext> CurrentAppContext(void);

View File

@ -26,7 +26,66 @@ class ShareViewController: UINavigationController, SAELoadViewDelegate {
_ = AppVersion()
//[self startupLogging];
startupLogging()
SetRandFunctionSeed()
// XXX - careful when moving this. It must happen before we initialize TSStorageManager.
TSStorageManager.verifyDBKeysAvailableBeforeBackgroundLaunch()
// // Prevent the device from sleeping during database view async registration
// // (e.g. long database upgrades).
// //
// // This block will be cleared in databaseViewRegistrationComplete.
// [DeviceSleepManager.sharedInstance addBlockWithBlockObject:self];
//
// [self setupEnvironment];
//
// [UIUtil applySignalAppearence];
//
// if (getenv("runningTests_dontStartApp")) {
// return YES;
// }
//
// self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//
// // Show the launch screen until the async database view registrations are complete.
// self.window.rootViewController = [self loadingRootViewController];
//
// [self.window makeKeyAndVisible];
//
// // performUpdateCheck must be invoked after Environment has been initialized because
// // upgrade process may depend on Environment.
// [VersionMigrations performUpdateCheck];
//
// // Accept push notification when app is not open
// NSDictionary *remoteNotif = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
// if (remoteNotif) {
// DDLogInfo(@"Application was launched by tapping a push notification.");
// [self application:application didReceiveRemoteNotification:remoteNotif];
// }
//
// [self prepareScreenProtection];
//
// self.contactsSyncing = [[OWSContactsSyncing alloc] initWithContactsManager:[Environment getCurrent].contactsManager
// identityManager:[OWSIdentityManager sharedManager]
// messageSender:[Environment getCurrent].messageSender
// profileManager:[OWSProfileManager sharedManager]];
//
// [[NSNotificationCenter defaultCenter] addObserver:self
// selector:@selector(databaseViewRegistrationComplete)
// name:kNSNotificationName_DatabaseViewRegistrationComplete
// object:nil];
// [[NSNotificationCenter defaultCenter] addObserver:self
// selector:@selector(registrationStateDidChange)
// name:kNSNotificationName_RegistrationStateDidChange
// object:nil];
//
// DDLogInfo(@"%@ application: didFinishLaunchingWithOptions completed.", self.logTag);
//
// [OWSAnalytics appLaunchDidBegin];
//
// return YES;
Logger.debug("\(self.logTag()) \(#function)")
@ -35,6 +94,52 @@ class ShareViewController: UINavigationController, SAELoadViewDelegate {
self.isNavigationBarHidden = false
}
func startupLogging() {
Logger.info("iOS Version: \(UIDevice.current.systemVersion)}")
let locale = NSLocale.current as NSLocale
if let localeIdentifier = locale.object(forKey:NSLocale.Key.identifier) as? String,
localeIdentifier.count > 0 {
Logger.info("Locale Identifier: \(localeIdentifier)")
} else {
owsFail("Locale Identifier: Unknown")
}
if let countryCode = locale.object(forKey:NSLocale.Key.countryCode) as? String,
countryCode.count > 0 {
Logger.info("Country Code: \(countryCode)")
} else {
owsFail("Country Code: Unknown")
}
if let languageCode = locale.object(forKey:NSLocale.Key.languageCode) as? String,
languageCode.count > 0 {
Logger.info("Language Code: \(languageCode)")
} else {
owsFail("Language Code: Unknown")
}
}
func setupEnvironment() {
[Environment setCurrent:[Release releaseEnvironment]]
// // Encryption/Descryption mutates session state and must be synchronized on a serial queue.
// [SessionCipher setSessionCipherDispatchQueue:[OWSDispatch sessionStoreQueue]];
//
// TextSecureKitEnv *sharedEnv =
// [[TextSecureKitEnv alloc] initWithCallMessageHandler:[Environment getCurrent].callMessageHandler
// contactsManager:[Environment getCurrent].contactsManager
// messageSender:[Environment getCurrent].messageSender
// notificationsManager:[Environment getCurrent].notificationsManager
// profileManager:OWSProfileManager.sharedManager];
// [TextSecureKitEnv setSharedEnv:sharedEnv];
//
// [[TSStorageManager sharedManager] setupDatabaseWithSafeBlockingMigrations:^{
// [VersionMigrations runSafeBlockingMigrations];
// }];
// [[Environment getCurrent].contactsManager startObserving];
}
// MARK: View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()

View File

@ -9,6 +9,7 @@
#import "UIFont+OWS.h"
#import "UIView+OWS.h"
#import <Foundation/Foundation.h>
#import <SignalMessaging/OWSMath.h>
#import <SignalMessaging/OWSPreferences.h>
#import <SignalServiceKit/AppContext.h>
#import <SignalServiceKit/AppVersion.h>

View File

@ -49,6 +49,11 @@ NS_ASSUME_NONNULL_BEGIN
OWSFail(@"%@ called %s.", self.logTag, __PRETTY_FUNCTION__);
}
- (NSArray<OWSDatabaseMigration *> *)allMigrations
{
return @[];
}
@end
NS_ASSUME_NONNULL_END