Fixed a hang, removed redundant libs, files and code
Fixed an issue where returning the app from the background would result in the app staying permanently on the splash screen Included a CRC32 implementation so we can drop the CryptoSwift dependenciy (using CryptoKit everywhere else) Removed 'SocketRocket' (unused) Removed the `xcode_14_3_workaround` post-install hook (fixed with CocoaPods 1.12.1) Removed the `enable_fts5_support` post-install hook (enabled by default since GRDB 6.7.0 so redundant) Removed the `enable_whole_module_optimization_for_crypto_swift` post-install hook (dropped CryptoSwift support) Cleared out a bunch of headers from the Signal-Bridging-header file (direct imports instead to reduce incremental build sizes) Deleted some unused code
This commit is contained in:
parent
5e2e103ee1
commit
d0be7f786c
39
Podfile
39
Podfile
|
@ -6,16 +6,16 @@ inhibit_all_warnings!
|
|||
|
||||
# Dependencies to be included in the app and all extensions/frameworks
|
||||
abstract_target 'GlobalDependencies' do
|
||||
pod 'CryptoSwift'
|
||||
# FIXME: If https://github.com/jedisct1/swift-sodium/pull/249 gets resolved then revert this back to the standard pod
|
||||
pod 'Sodium', :git => 'https://github.com/oxen-io/session-ios-swift-sodium.git', branch: 'session-build'
|
||||
pod 'GRDB.swift/SQLCipher'
|
||||
|
||||
# FIXME: Would be nice to migrate from CocoaPods to SwiftPackageManager (should allow us to speed up build time), haven't gone through all of the dependencies but currently unfortunately SQLCipher doesn't support SPM (for more info see: https://github.com/sqlcipher/sqlcipher/issues/371)
|
||||
pod 'SQLCipher', '~> 4.5.3'
|
||||
|
||||
# FIXME: We want to remove this once it's been long enough since the migration to GRDB
|
||||
pod 'YapDatabase/SQLCipher', :git => 'https://github.com/oxen-io/session-ios-yap-database.git', branch: 'signal-release'
|
||||
pod 'WebRTC-lib'
|
||||
pod 'SocketRocket', '~> 0.5.1'
|
||||
|
||||
target 'Session' do
|
||||
pod 'Reachability'
|
||||
|
@ -100,23 +100,7 @@ end
|
|||
|
||||
# Actions to perform post-install
|
||||
post_install do |installer|
|
||||
enable_whole_module_optimization_for_crypto_swift(installer)
|
||||
set_minimum_deployment_target(installer)
|
||||
enable_fts5_support(installer)
|
||||
|
||||
#FIXME: Remove this workaround once an official fix is released (hopefully Cocoapods 1.12.1)
|
||||
xcode_14_3_workaround(installer)
|
||||
end
|
||||
|
||||
def enable_whole_module_optimization_for_crypto_swift(installer)
|
||||
installer.pods_project.targets.each do |target|
|
||||
if target.name.end_with? "CryptoSwift"
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['GCC_OPTIMIZATION_LEVEL'] = 'fast'
|
||||
config.build_settings['SWIFT_OPTIMIZATION_LEVEL'] = '-O'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def set_minimum_deployment_target(installer)
|
||||
|
@ -126,22 +110,3 @@ def set_minimum_deployment_target(installer)
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
# This is to ensure we enable support for FastTextSearch5 (might not be enabled by default)
|
||||
# For more info see https://github.com/groue/GRDB.swift/blob/master/Documentation/FullTextSearch.md#enabling-fts5-support
|
||||
def enable_fts5_support(installer)
|
||||
installer.pods_project.targets.select { |target| target.name == "GRDB.swift" }.each do |target|
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['OTHER_SWIFT_FLAGS'] = "$(inherited) -D SQLITE_ENABLE_FTS5"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Workaround for Xcode 14.3:
|
||||
# Sourced from https://github.com/flutter/flutter/issues/123852#issuecomment-1493232105
|
||||
def xcode_14_3_workaround(installer)
|
||||
system('sed -i \'\' \'44s/readlink/readlink -f/\' \'Pods/Target Support Files/Pods-GlobalDependencies-FrameworkAndExtensionDependencies-ExtendedDependencies-SessionMessagingKit-SessionMessagingKitTests/Pods-GlobalDependencies-FrameworkAndExtensionDependencies-ExtendedDependencies-SessionMessagingKit-SessionMessagingKitTests-frameworks.sh\'')
|
||||
system('sed -i \'\' \'44s/readlink/readlink -f/\' \'Pods/Target Support Files/Pods-GlobalDependencies-FrameworkAndExtensionDependencies-ExtendedDependencies-SessionUtilitiesKit-SessionUtilitiesKitTests/Pods-GlobalDependencies-FrameworkAndExtensionDependencies-ExtendedDependencies-SessionUtilitiesKit-SessionUtilitiesKitTests-frameworks.sh\'')
|
||||
system('sed -i \'\' \'44s/readlink/readlink -f/\' \'Pods/Target Support Files/Pods-GlobalDependencies-Session/Pods-GlobalDependencies-Session-frameworks.sh\'')
|
||||
system('sed -i \'\' \'44s/readlink/readlink -f/\' \'Pods/Target Support Files/Pods-GlobalDependencies-Session-SessionTests/Pods-GlobalDependencies-Session-SessionTests-frameworks.sh\'')
|
||||
end
|
||||
|
|
12
Podfile.lock
12
Podfile.lock
|
@ -2,7 +2,6 @@ PODS:
|
|||
- CocoaLumberjack (3.8.0):
|
||||
- CocoaLumberjack/Core (= 3.8.0)
|
||||
- CocoaLumberjack/Core (3.8.0)
|
||||
- CryptoSwift (1.4.2)
|
||||
- Curve25519Kit (2.1.0):
|
||||
- CocoaLumberjack
|
||||
- SignalCoreKit
|
||||
|
@ -35,7 +34,6 @@ PODS:
|
|||
- SignalCoreKit (1.0.0):
|
||||
- CocoaLumberjack
|
||||
- OpenSSL-Universal
|
||||
- SocketRocket (0.5.1)
|
||||
- Sodium (0.9.1)
|
||||
- SQLCipher (4.5.3):
|
||||
- SQLCipher/standard (= 4.5.3)
|
||||
|
@ -115,7 +113,6 @@ PODS:
|
|||
- ZXingObjC/All (3.6.5)
|
||||
|
||||
DEPENDENCIES:
|
||||
- CryptoSwift
|
||||
- Curve25519Kit (from `https://github.com/oxen-io/session-ios-curve-25519-kit.git`, branch `session-version`)
|
||||
- DifferenceKit
|
||||
- GRDB.swift/SQLCipher
|
||||
|
@ -126,7 +123,6 @@ DEPENDENCIES:
|
|||
- Reachability
|
||||
- SAMKeychain
|
||||
- SignalCoreKit (from `https://github.com/oxen-io/session-ios-core-kit`, branch `session-version`)
|
||||
- SocketRocket (~> 0.5.1)
|
||||
- Sodium (from `https://github.com/oxen-io/session-ios-swift-sodium.git`, branch `session-build`)
|
||||
- SQLCipher (~> 4.5.3)
|
||||
- SwiftProtobuf (~> 1.5.0)
|
||||
|
@ -138,7 +134,6 @@ DEPENDENCIES:
|
|||
SPEC REPOS:
|
||||
https://github.com/CocoaPods/Specs.git:
|
||||
- CocoaLumberjack
|
||||
- CryptoSwift
|
||||
- DifferenceKit
|
||||
- GRDB.swift
|
||||
- libwebp
|
||||
|
@ -149,7 +144,6 @@ SPEC REPOS:
|
|||
- Quick
|
||||
- Reachability
|
||||
- SAMKeychain
|
||||
- SocketRocket
|
||||
- SQLCipher
|
||||
- SwiftProtobuf
|
||||
- WebRTC-lib
|
||||
|
@ -190,7 +184,6 @@ CHECKOUT OPTIONS:
|
|||
|
||||
SPEC CHECKSUMS:
|
||||
CocoaLumberjack: 78abfb691154e2a9df8ded4350d504ee19d90732
|
||||
CryptoSwift: a532e74ed010f8c95f611d00b8bbae42e9fe7c17
|
||||
Curve25519Kit: e63f9859ede02438ae3defc5e1a87e09d1ec7ee6
|
||||
DifferenceKit: ab185c4d7f9cef8af3fcf593e5b387fb81e999ca
|
||||
GRDB.swift: fe420b1af49ec519c7e96e07887ee44f5dfa2b78
|
||||
|
@ -203,7 +196,6 @@ SPEC CHECKSUMS:
|
|||
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
|
||||
SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c
|
||||
SignalCoreKit: 1fbd8732163ef76de16cd1107d1fa3684b607e5d
|
||||
SocketRocket: d57c7159b83c3c6655745cd15302aa24b6bae531
|
||||
Sodium: a7d42cb46e789d2630fa552d35870b416ed055ae
|
||||
SQLCipher: 57fa9f863fa4a3ed9dd3c90ace52315db8c0fdca
|
||||
SwiftProtobuf: 241400280f912735c1e1b9fe675fdd2c6c4d42e2
|
||||
|
@ -212,6 +204,6 @@ SPEC CHECKSUMS:
|
|||
YYImage: f1ddd15ac032a58b78bbed1e012b50302d318331
|
||||
ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb
|
||||
|
||||
PODFILE CHECKSUM: 5a4993725a7d48be883663a52df2a5de45d2d099
|
||||
PODFILE CHECKSUM: 68799237a4dc046f5ac25c573af03b559f5b10c4
|
||||
|
||||
COCOAPODS: 1.11.3
|
||||
COCOAPODS: 1.12.1
|
||||
|
|
|
@ -219,8 +219,6 @@
|
|||
B8856D7B256F14F4001CE70E /* UIView+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = C38EF23E255B6D66007E1867 /* UIView+OWS.m */; };
|
||||
B8856D8D256F1502001CE70E /* UIView+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C38EF23D255B6D66007E1867 /* UIView+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
B8856DE6256F15F2001CE70E /* String+SSK.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB3F255A580C00E217F9 /* String+SSK.swift */; };
|
||||
B8856DEF256F161F001CE70E /* NSString+SSK.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB45255A580C00E217F9 /* NSString+SSK.m */; };
|
||||
B8856DF8256F1633001CE70E /* NSString+SSK.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB12255A580800E217F9 /* NSString+SSK.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
B8856E09256F1676001CE70E /* UIDevice+featureSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38EF237255B6D65007E1867 /* UIDevice+featureSupport.swift */; };
|
||||
B8856E1A256F1700001CE70E /* OWSMath.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB14255A580800E217F9 /* OWSMath.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
B886B4A72398B23E00211ABE /* QRCodeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B886B4A62398B23E00211ABE /* QRCodeVC.swift */; };
|
||||
|
@ -284,8 +282,6 @@
|
|||
C32C5A24256DB7DB003C73A2 /* SNUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB6B255A580F00E217F9 /* SNUserDefaults.swift */; };
|
||||
C32C5A48256DB8F0003C73A2 /* BuildConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAA8255A57FF00E217F9 /* BuildConfiguration.swift */; };
|
||||
C32C5A88256DBCF9003C73A2 /* MessageReceiver+ClosedGroups.swift in Sources */ = {isa = PBXBuildFile; fileRef = C32C5A87256DBCF9003C73A2 /* MessageReceiver+ClosedGroups.swift */; };
|
||||
C32C5B48256DC211003C73A2 /* NSNotificationCenter+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB6C255A580F00E217F9 /* NSNotificationCenter+OWS.m */; };
|
||||
C32C5B51256DC219003C73A2 /* NSNotificationCenter+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB3B255A580B00E217F9 /* NSNotificationCenter+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C32C5C3D256DCBAF003C73A2 /* AppReadiness.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB75255A581000E217F9 /* AppReadiness.m */; };
|
||||
C32C5C46256DCBB2003C73A2 /* AppReadiness.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDB01255A580700E217F9 /* AppReadiness.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C32C5D83256DD5B6003C73A2 /* SSKKeychainStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDBBC255A581600E217F9 /* SSKKeychainStorage.swift */; };
|
||||
|
@ -320,10 +316,8 @@
|
|||
C33FD9C5255A54EF00E217F9 /* SessionUtilitiesKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C2A679255388CC00C340D1 /* SessionUtilitiesKit.framework */; };
|
||||
C33FDC29255A581F00E217F9 /* ReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA6F255A57FA00E217F9 /* ReachabilityManager.swift */; };
|
||||
C33FDC45255A581F00E217F9 /* AppVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA8B255A57FD00E217F9 /* AppVersion.m */; };
|
||||
C33FDC50255A582000E217F9 /* OWSDispatch.h in Headers */ = {isa = PBXBuildFile; fileRef = C33FDA96255A57FE00E217F9 /* OWSDispatch.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C33FDC58255A582000E217F9 /* ReverseDispatchQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDA9E255A57FF00E217F9 /* ReverseDispatchQueue.swift */; };
|
||||
C33FDC78255A582000E217F9 /* TSConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDABE255A580100E217F9 /* TSConstants.m */; };
|
||||
C33FDC7D255A582000E217F9 /* OWSDispatch.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAC3255A580200E217F9 /* OWSDispatch.m */; };
|
||||
C33FDC98255A582000E217F9 /* SwiftSingletons.swift in Sources */ = {isa = PBXBuildFile; fileRef = C33FDADE255A580400E217F9 /* SwiftSingletons.swift */; };
|
||||
C33FDC9A255A582000E217F9 /* ByteParser.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDAE0255A580400E217F9 /* ByteParser.m */; };
|
||||
C33FDCD1255A582000E217F9 /* FunctionalUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = C33FDB17255A580800E217F9 /* FunctionalUtil.m */; };
|
||||
|
@ -367,10 +361,6 @@
|
|||
C38EF00C255B61CC007E1867 /* SignalUtilitiesKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C33FD9AB255A548A00E217F9 /* SignalUtilitiesKit.framework */; };
|
||||
C38EF22B255B6D5D007E1867 /* ShareViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38EF226255B6D5D007E1867 /* ShareViewDelegate.swift */; };
|
||||
C38EF22C255B6D5D007E1867 /* OWSVideoPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38EF227255B6D5D007E1867 /* OWSVideoPlayer.swift */; };
|
||||
C38EF245255B6D67007E1867 /* UIFont+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = C38EF238255B6D66007E1867 /* UIFont+OWS.m */; };
|
||||
C38EF246255B6D67007E1867 /* UIFont+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C38EF239255B6D66007E1867 /* UIFont+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C38EF247255B6D67007E1867 /* NSAttributedString+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = C38EF23A255B6D66007E1867 /* NSAttributedString+OWS.m */; };
|
||||
C38EF24C255B6D67007E1867 /* NSAttributedString+OWS.h in Headers */ = {isa = PBXBuildFile; fileRef = C38EF23F255B6D67007E1867 /* NSAttributedString+OWS.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
C38EF24D255B6D67007E1867 /* UIView+OWS.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38EF240255B6D67007E1867 /* UIView+OWS.swift */; };
|
||||
C38EF24E255B6D67007E1867 /* Collection+OWS.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38EF241255B6D67007E1867 /* Collection+OWS.swift */; };
|
||||
C38EF2B3255B6D9C007E1867 /* UIViewController+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38EF2B1255B6D9C007E1867 /* UIViewController+Utilities.swift */; };
|
||||
|
@ -1435,11 +1425,9 @@
|
|||
C33FDA87255A57FC00E217F9 /* TypingIndicators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TypingIndicators.swift; sourceTree = "<group>"; };
|
||||
C33FDA8B255A57FD00E217F9 /* AppVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppVersion.m; sourceTree = "<group>"; };
|
||||
C33FDA8E255A57FD00E217F9 /* OWSFileSystem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSFileSystem.m; sourceTree = "<group>"; };
|
||||
C33FDA96255A57FE00E217F9 /* OWSDispatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSDispatch.h; sourceTree = "<group>"; };
|
||||
C33FDA9E255A57FF00E217F9 /* ReverseDispatchQueue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReverseDispatchQueue.swift; sourceTree = "<group>"; };
|
||||
C33FDAA8255A57FF00E217F9 /* BuildConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BuildConfiguration.swift; sourceTree = "<group>"; };
|
||||
C33FDABE255A580100E217F9 /* TSConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TSConstants.m; sourceTree = "<group>"; };
|
||||
C33FDAC3255A580200E217F9 /* OWSDispatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSDispatch.m; sourceTree = "<group>"; };
|
||||
C33FDADE255A580400E217F9 /* SwiftSingletons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftSingletons.swift; sourceTree = "<group>"; };
|
||||
C33FDAE0255A580400E217F9 /* ByteParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ByteParser.m; sourceTree = "<group>"; };
|
||||
C33FDAEF255A580500E217F9 /* NSData+Image.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Image.m"; sourceTree = "<group>"; };
|
||||
|
@ -1448,7 +1436,6 @@
|
|||
C33FDAFC255A580600E217F9 /* MIMETypeUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MIMETypeUtil.h; sourceTree = "<group>"; };
|
||||
C33FDAFD255A580600E217F9 /* LRUCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LRUCache.swift; sourceTree = "<group>"; };
|
||||
C33FDB01255A580700E217F9 /* AppReadiness.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppReadiness.h; sourceTree = "<group>"; };
|
||||
C33FDB12255A580800E217F9 /* NSString+SSK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+SSK.h"; sourceTree = "<group>"; };
|
||||
C33FDB14255A580800E217F9 /* OWSMath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSMath.h; sourceTree = "<group>"; };
|
||||
C33FDB17255A580800E217F9 /* FunctionalUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FunctionalUtil.m; sourceTree = "<group>"; };
|
||||
C33FDB1C255A580900E217F9 /* UIImage+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+OWS.h"; sourceTree = "<group>"; };
|
||||
|
@ -1457,11 +1444,9 @@
|
|||
C33FDB34255A580B00E217F9 /* ClosedGroupPoller.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClosedGroupPoller.swift; sourceTree = "<group>"; };
|
||||
C33FDB38255A580B00E217F9 /* OWSBackgroundTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSBackgroundTask.h; sourceTree = "<group>"; };
|
||||
C33FDB3A255A580B00E217F9 /* Poller.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Poller.swift; sourceTree = "<group>"; };
|
||||
C33FDB3B255A580B00E217F9 /* NSNotificationCenter+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNotificationCenter+OWS.h"; sourceTree = "<group>"; };
|
||||
C33FDB3F255A580C00E217F9 /* String+SSK.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+SSK.swift"; sourceTree = "<group>"; };
|
||||
C33FDB40255A580C00E217F9 /* SignalIOSProto.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SignalIOSProto.swift; sourceTree = "<group>"; };
|
||||
C33FDB41255A580C00E217F9 /* MIMETypeUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MIMETypeUtil.m; sourceTree = "<group>"; };
|
||||
C33FDB45255A580C00E217F9 /* NSString+SSK.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+SSK.m"; sourceTree = "<group>"; };
|
||||
C33FDB49255A580C00E217F9 /* WeakTimer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WeakTimer.swift; sourceTree = "<group>"; };
|
||||
C33FDB4C255A580D00E217F9 /* AppVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppVersion.h; sourceTree = "<group>"; };
|
||||
C33FDB51255A580D00E217F9 /* NSUserDefaults+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSUserDefaults+OWS.h"; sourceTree = "<group>"; };
|
||||
|
@ -1469,7 +1454,6 @@
|
|||
C33FDB68255A580F00E217F9 /* ContentProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContentProxy.swift; sourceTree = "<group>"; };
|
||||
C33FDB69255A580F00E217F9 /* FeatureFlags.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeatureFlags.swift; sourceTree = "<group>"; };
|
||||
C33FDB6B255A580F00E217F9 /* SNUserDefaults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SNUserDefaults.swift; sourceTree = "<group>"; };
|
||||
C33FDB6C255A580F00E217F9 /* NSNotificationCenter+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNotificationCenter+OWS.m"; sourceTree = "<group>"; };
|
||||
C33FDB75255A581000E217F9 /* AppReadiness.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppReadiness.m; sourceTree = "<group>"; };
|
||||
C33FDB77255A581000E217F9 /* NSUserDefaults+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSUserDefaults+OWS.m"; sourceTree = "<group>"; };
|
||||
C33FDB78255A581000E217F9 /* OWSOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSOperation.m; sourceTree = "<group>"; };
|
||||
|
@ -1523,12 +1507,8 @@
|
|||
C38EF226255B6D5D007E1867 /* ShareViewDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ShareViewDelegate.swift; path = SignalUtilitiesKit/Utilities/ShareViewDelegate.swift; sourceTree = SOURCE_ROOT; };
|
||||
C38EF227255B6D5D007E1867 /* OWSVideoPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OWSVideoPlayer.swift; path = "SignalUtilitiesKit/Media Viewing & Editing/OWSVideoPlayer.swift"; sourceTree = SOURCE_ROOT; };
|
||||
C38EF237255B6D65007E1867 /* UIDevice+featureSupport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UIDevice+featureSupport.swift"; path = "SessionUtilitiesKit/General/UIDevice+featureSupport.swift"; sourceTree = SOURCE_ROOT; };
|
||||
C38EF238255B6D66007E1867 /* UIFont+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIFont+OWS.m"; path = "SignalUtilitiesKit/Utilities/UIFont+OWS.m"; sourceTree = SOURCE_ROOT; };
|
||||
C38EF239255B6D66007E1867 /* UIFont+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIFont+OWS.h"; path = "SignalUtilitiesKit/Utilities/UIFont+OWS.h"; sourceTree = SOURCE_ROOT; };
|
||||
C38EF23A255B6D66007E1867 /* NSAttributedString+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+OWS.m"; path = "SignalUtilitiesKit/Utilities/NSAttributedString+OWS.m"; sourceTree = SOURCE_ROOT; };
|
||||
C38EF23D255B6D66007E1867 /* UIView+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIView+OWS.h"; path = "SessionUtilitiesKit/General/UIView+OWS.h"; sourceTree = SOURCE_ROOT; };
|
||||
C38EF23E255B6D66007E1867 /* UIView+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIView+OWS.m"; path = "SessionUtilitiesKit/General/UIView+OWS.m"; sourceTree = SOURCE_ROOT; };
|
||||
C38EF23F255B6D67007E1867 /* NSAttributedString+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+OWS.h"; path = "SignalUtilitiesKit/Utilities/NSAttributedString+OWS.h"; sourceTree = SOURCE_ROOT; };
|
||||
C38EF240255B6D67007E1867 /* UIView+OWS.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UIView+OWS.swift"; path = "SignalUtilitiesKit/Utilities/UIView+OWS.swift"; sourceTree = SOURCE_ROOT; };
|
||||
C38EF241255B6D67007E1867 /* Collection+OWS.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "Collection+OWS.swift"; path = "SignalUtilitiesKit/Utilities/Collection+OWS.swift"; sourceTree = SOURCE_ROOT; };
|
||||
C38EF281255B6D84007E1867 /* OWSAudioSession.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OWSAudioSession.swift; path = SessionMessagingKit/Utilities/OWSAudioSession.swift; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -2635,11 +2615,7 @@
|
|||
B8BC00BF257D90E30032E807 /* General.swift */,
|
||||
C3C2A5CE2553860700C340D1 /* Logging.swift */,
|
||||
C33FDAFD255A580600E217F9 /* LRUCache.swift */,
|
||||
C33FDB3B255A580B00E217F9 /* NSNotificationCenter+OWS.h */,
|
||||
C33FDB6C255A580F00E217F9 /* NSNotificationCenter+OWS.m */,
|
||||
C33FDA7A255A57FB00E217F9 /* NSRegularExpression+SSK.swift */,
|
||||
C33FDB12255A580800E217F9 /* NSString+SSK.h */,
|
||||
C33FDB45255A580C00E217F9 /* NSString+SSK.m */,
|
||||
C352A3762557859C00338F3E /* NSTimer+Proxying.h */,
|
||||
C352A36C2557858D00338F3E /* NSTimer+Proxying.m */,
|
||||
7B1D74AF27C365960030B423 /* Timer+MainThread.swift */,
|
||||
|
@ -3404,10 +3380,6 @@
|
|||
FD71161D28D9772700B47552 /* UIViewController+OWS.swift */,
|
||||
C38EF2B1255B6D9C007E1867 /* UIViewController+Utilities.swift */,
|
||||
C38EF307255B6DBE007E1867 /* UIGestureRecognizer+OWS.swift */,
|
||||
C38EF239255B6D66007E1867 /* UIFont+OWS.h */,
|
||||
C38EF238255B6D66007E1867 /* UIFont+OWS.m */,
|
||||
C33FDA96255A57FE00E217F9 /* OWSDispatch.h */,
|
||||
C33FDAC3255A580200E217F9 /* OWSDispatch.m */,
|
||||
C33FDBF9255A581C00E217F9 /* OWSError.h */,
|
||||
C33FDC0B255A581D00E217F9 /* OWSError.m */,
|
||||
C33FDBA1255A581400E217F9 /* OWSOperation.h */,
|
||||
|
@ -3442,8 +3414,6 @@
|
|||
C38EF3AE255B6DE5007E1867 /* OrderedDictionary.swift */,
|
||||
C38EF226255B6D5D007E1867 /* ShareViewDelegate.swift */,
|
||||
C38EF2FA255B6DBD007E1867 /* Bench.swift */,
|
||||
C38EF23F255B6D67007E1867 /* NSAttributedString+OWS.h */,
|
||||
C38EF23A255B6D66007E1867 /* NSAttributedString+OWS.m */,
|
||||
);
|
||||
path = Utilities;
|
||||
sourceTree = "<group>";
|
||||
|
@ -4447,14 +4417,11 @@
|
|||
C33FDDD0255A582000E217F9 /* FunctionalUtil.h in Headers */,
|
||||
C33FDD5B255A582000E217F9 /* OWSOperation.h in Headers */,
|
||||
C33FDD7C255A582000E217F9 /* SSKAsserts.h in Headers */,
|
||||
C38EF24C255B6D67007E1867 /* NSAttributedString+OWS.h in Headers */,
|
||||
C33FDDCC255A582000E217F9 /* TSConstants.h in Headers */,
|
||||
C33FDDBD255A582000E217F9 /* ByteParser.h in Headers */,
|
||||
C33FDDB3255A582000E217F9 /* OWSError.h in Headers */,
|
||||
C38EF35E255B6DCC007E1867 /* OWSViewController.h in Headers */,
|
||||
C38EF246255B6D67007E1867 /* UIFont+OWS.h in Headers */,
|
||||
C33FD9AF255A548A00E217F9 /* SignalUtilitiesKit.h in Headers */,
|
||||
C33FDC50255A582000E217F9 /* OWSDispatch.h in Headers */,
|
||||
C33FDD06255A582000E217F9 /* AppVersion.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
@ -4475,12 +4442,10 @@
|
|||
C3D9E38A256760390040E4F3 /* OWSFileSystem.h in Headers */,
|
||||
C3D9E379256760340040E4F3 /* MIMETypeUtil.h in Headers */,
|
||||
C3D9E50E25677A510040E4F3 /* DataSource.h in Headers */,
|
||||
B8856DF8256F1633001CE70E /* NSString+SSK.h in Headers */,
|
||||
C3D9E4FD256778E30040E4F3 /* NSData+Image.h in Headers */,
|
||||
C3D9E4E3256778720040E4F3 /* UIImage+OWS.h in Headers */,
|
||||
B8856E1A256F1700001CE70E /* OWSMath.h in Headers */,
|
||||
C352A3772557864000338F3E /* NSTimer+Proxying.h in Headers */,
|
||||
C32C5B51256DC219003C73A2 /* NSNotificationCenter+OWS.h in Headers */,
|
||||
FD30036A2A3ADEC100B5A5FB /* CExceptionHelper.h in Headers */,
|
||||
C3C2A67D255388CC00C340D1 /* SessionUtilitiesKit.h in Headers */,
|
||||
C32C6018256E07F9003C73A2 /* NSUserDefaults+OWS.h in Headers */,
|
||||
|
@ -5486,8 +5451,6 @@
|
|||
files = (
|
||||
C38EF3C6255B6DE7007E1867 /* ImageEditorModel.swift in Sources */,
|
||||
C38EF3C3255B6DE7007E1867 /* ImageEditorTextItem.swift in Sources */,
|
||||
C33FDC7D255A582000E217F9 /* OWSDispatch.m in Sources */,
|
||||
C38EF247255B6D67007E1867 /* NSAttributedString+OWS.m in Sources */,
|
||||
C33FDD49255A582000E217F9 /* ParamParser.swift in Sources */,
|
||||
C38EF3C5255B6DE7007E1867 /* OWSViewController+ImageEditor.swift in Sources */,
|
||||
C38EF385255B6DD2007E1867 /* AttachmentTextToolbar.swift in Sources */,
|
||||
|
@ -5496,7 +5459,6 @@
|
|||
C38EF389255B6DD2007E1867 /* AttachmentTextView.swift in Sources */,
|
||||
C38EF3FF255B6DF7007E1867 /* TappableView.swift in Sources */,
|
||||
C38EF3C2255B6DE7007E1867 /* ImageEditorPaletteView.swift in Sources */,
|
||||
C38EF245255B6D67007E1867 /* UIFont+OWS.m in Sources */,
|
||||
C38EF36F255B6DCC007E1867 /* OWSViewController.m in Sources */,
|
||||
C38EF3FB255B6DF7007E1867 /* UIAlertController+OWS.swift in Sources */,
|
||||
C38EF30C255B6DBF007E1867 /* ScreenLock.swift in Sources */,
|
||||
|
@ -5648,7 +5610,6 @@
|
|||
7B7CB192271508AD0079FF93 /* CallRingTonePlayer.swift in Sources */,
|
||||
FD848B8B283DC509000E298B /* PagedDatabaseObserver.swift in Sources */,
|
||||
B8856E09256F1676001CE70E /* UIDevice+featureSupport.swift in Sources */,
|
||||
B8856DEF256F161F001CE70E /* NSString+SSK.m in Sources */,
|
||||
FD09C5E2282212B3000CE219 /* JobDependencies.swift in Sources */,
|
||||
FDED2E3C282E1B5D00B2CD2A /* UICollectionView+ReusableView.swift in Sources */,
|
||||
FDF8487B29405906007DCAE5 /* HTTPHeader.swift in Sources */,
|
||||
|
@ -5676,7 +5637,6 @@
|
|||
FD09797D27FBDB2000936362 /* Notification+Utilities.swift in Sources */,
|
||||
FDC6D7602862B3F600B04575 /* Dependencies.swift in Sources */,
|
||||
C3C2AC2E2553CBEB00C340D1 /* String+Trimming.swift in Sources */,
|
||||
C32C5B48256DC211003C73A2 /* NSNotificationCenter+OWS.m in Sources */,
|
||||
FD17D7C727F5207C00122BE0 /* DatabaseMigrator+Utilities.swift in Sources */,
|
||||
FD848B9328420164000E298B /* UnicodeScalar+Utilities.swift in Sources */,
|
||||
FD09796B27F6C67500936362 /* Failable.swift in Sources */,
|
||||
|
@ -6417,7 +6377,7 @@
|
|||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 411;
|
||||
CURRENT_PROJECT_VERSION = 412;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEVELOPMENT_TEAM = SUQ8J2PCT7;
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
|
@ -6489,7 +6449,7 @@
|
|||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 411;
|
||||
CURRENT_PROJECT_VERSION = 412;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = SUQ8J2PCT7;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
|
@ -6554,7 +6514,7 @@
|
|||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 411;
|
||||
CURRENT_PROJECT_VERSION = 412;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEVELOPMENT_TEAM = SUQ8J2PCT7;
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
|
@ -6628,7 +6588,7 @@
|
|||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 411;
|
||||
CURRENT_PROJECT_VERSION = 412;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = SUQ8J2PCT7;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
|
@ -7536,7 +7496,7 @@
|
|||
CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CURRENT_PROJECT_VERSION = 411;
|
||||
CURRENT_PROJECT_VERSION = 412;
|
||||
DEVELOPMENT_TEAM = SUQ8J2PCT7;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -7607,7 +7567,7 @@
|
|||
CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CURRENT_PROJECT_VERSION = 411;
|
||||
CURRENT_PROJECT_VERSION = 412;
|
||||
DEVELOPMENT_TEAM = SUQ8J2PCT7;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
|
|
@ -5,6 +5,7 @@ import CallKit
|
|||
import GRDB
|
||||
import SessionMessagingKit
|
||||
import SignalCoreKit
|
||||
import SignalUtilitiesKit
|
||||
|
||||
public final class SessionCallManager: NSObject, CallManagerProtocol {
|
||||
let provider: CXProvider?
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
import WebRTC
|
||||
import Foundation
|
||||
import SessionUtilitiesKit
|
||||
import SignalCoreKit
|
||||
|
||||
#if targetEnvironment(simulator)
|
||||
// Note: 'RTCMTLVideoView' doesn't seem to work on the simulator so use 'RTCEAGLVideoView' instead
|
||||
|
|
|
@ -4,6 +4,7 @@ import UIKit
|
|||
import GRDB
|
||||
import SignalUtilitiesKit
|
||||
import SignalCoreKit
|
||||
import SessionUIKit
|
||||
|
||||
public class StyledSearchController: UISearchController {
|
||||
public override var preferredStatusBarStyle: UIStatusBarStyle {
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
import UIKit
|
||||
import SessionUIKit
|
||||
import SignalCoreKit
|
||||
import SignalUtilitiesKit
|
||||
|
||||
class EmojiSkinTonePicker: UIView {
|
||||
let emoji: Emoji
|
||||
|
|
|
@ -5,6 +5,7 @@ import YYImage
|
|||
import SessionUIKit
|
||||
import SessionMessagingKit
|
||||
import SignalCoreKit
|
||||
import SignalUtilitiesKit
|
||||
|
||||
public class MediaView: UIView {
|
||||
static let contentMode: UIView.ContentMode = .scaleAspectFill
|
||||
|
|
|
@ -4,6 +4,7 @@ import UIKit
|
|||
import SignalUtilitiesKit
|
||||
import SessionUtilitiesKit
|
||||
import SessionMessagingKit
|
||||
import SessionUIKit
|
||||
|
||||
final class DateHeaderCell: MessageCell {
|
||||
// MARK: - UI
|
||||
|
|
|
@ -4,6 +4,7 @@ import UIKit
|
|||
import SignalUtilitiesKit
|
||||
import SessionUtilitiesKit
|
||||
import SessionMessagingKit
|
||||
import SessionUIKit
|
||||
|
||||
final class UnreadMarkerCell: MessageCell {
|
||||
public static let height: CGFloat = 32
|
||||
|
|
|
@ -7,6 +7,7 @@ import DifferenceKit
|
|||
import SessionUIKit
|
||||
import SessionMessagingKit
|
||||
import SessionUtilitiesKit
|
||||
import SessionSnodeKit
|
||||
|
||||
class ThreadDisappearingMessagesSettingsViewModel: SessionTableViewModel<ThreadDisappearingMessagesSettingsViewModel.NavButton, ThreadDisappearingMessagesSettingsViewModel.Section, ThreadDisappearingMessagesSettingsViewModel.Item> {
|
||||
// MARK: - Config
|
||||
|
|
|
@ -144,7 +144,7 @@ final class ConversationTitleView: UIView {
|
|||
subtitleLabel?.attributedText = NSAttributedString(
|
||||
string: FullConversationCell.mutePrefix,
|
||||
attributes: [
|
||||
.font: UIFont.ows_elegantIconsFont(10),
|
||||
.font: UIFont(name: "ElegantIcons", size: 10) as Any,
|
||||
.foregroundColor: textPrimary
|
||||
]
|
||||
)
|
||||
|
|
|
@ -4,6 +4,7 @@ import UIKit
|
|||
import GRDB
|
||||
import SessionUIKit
|
||||
import SessionMessagingKit
|
||||
import SignalUtilitiesKit
|
||||
|
||||
final class NewConversationVC: BaseVC, ThemedNavigation, UITableViewDelegate, UITableViewDataSource {
|
||||
private let newConversationViewModel = NewConversationViewModel()
|
||||
|
|
|
@ -4,6 +4,7 @@ import Foundation
|
|||
import Combine
|
||||
import YYImage
|
||||
import SignalUtilitiesKit
|
||||
import SignalCoreKit
|
||||
|
||||
class GifPickerCell: UICollectionViewCell {
|
||||
|
||||
|
|
|
@ -217,7 +217,7 @@ class GifPickerViewController: OWSViewController, UISearchBarDelegate, UICollect
|
|||
|
||||
private func createErrorLabel(text: String) -> UILabel {
|
||||
let label: UILabel = UILabel()
|
||||
label.font = .ows_mediumFont(withSize: 20)
|
||||
label.font = UIFont.systemFont(ofSize: 20, weight: .medium)
|
||||
label.text = text
|
||||
label.themeTextColor = .textPrimary
|
||||
label.textAlignment = .center
|
||||
|
|
|
@ -5,6 +5,7 @@ import Combine
|
|||
import CoreServices
|
||||
import SignalUtilitiesKit
|
||||
import SessionUtilitiesKit
|
||||
import SignalCoreKit
|
||||
|
||||
// There's no UTI type for webp!
|
||||
enum GiphyFormat {
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
//
|
||||
|
||||
import Foundation
|
||||
import SignalUtilitiesKit
|
||||
|
||||
@objc class OWSImagePickerController: UIImagePickerController {
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import AVFoundation
|
|||
import CoreServices
|
||||
import SessionMessagingKit
|
||||
import SessionUtilitiesKit
|
||||
import SignalCoreKit
|
||||
|
||||
protocol PhotoCaptureDelegate: AnyObject {
|
||||
func photoCapture(_ photoCapture: PhotoCapture, didFinishProcessingAttachment attachment: SignalAttachment)
|
||||
|
|
|
@ -601,7 +601,7 @@ class RecordingTimerView: UIView {
|
|||
|
||||
private lazy var label: UILabel = {
|
||||
let label: UILabel = UILabel()
|
||||
label.font = .ows_monospacedDigitFont(withSize: 20)
|
||||
label.font = UIFont.monospacedDigitSystemFont(ofSize: 20, weight: .regular)
|
||||
label.themeTextColor = .textPrimary
|
||||
label.textAlignment = .center
|
||||
label.layer.shadowOffset = CGSize.zero
|
||||
|
|
|
@ -5,6 +5,7 @@ import Combine
|
|||
import Photos
|
||||
import SignalUtilitiesKit
|
||||
import SignalCoreKit
|
||||
import SessionUIKit
|
||||
|
||||
class SendMediaNavigationController: UINavigationController {
|
||||
public override var preferredStatusBarStyle: UIStatusBarStyle {
|
||||
|
@ -596,7 +597,10 @@ private class DoneButton: UIView {
|
|||
|
||||
private lazy var badgeLabel: UILabel = {
|
||||
let result: UILabel = UILabel()
|
||||
result.font = .ows_dynamicTypeSubheadline.ows_monospaced()
|
||||
result.font = UIFont.monospacedDigitSystemFont(
|
||||
ofSize: UIFont.preferredFont(forTextStyle: .subheadline).pointSize,
|
||||
weight: .regular
|
||||
)
|
||||
result.themeTextColor = .black // Will render on the primary color so should always be black
|
||||
result.textAlignment = .center
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
||||
|
||||
import UIKit
|
||||
import SignalUtilitiesKit
|
||||
|
||||
// MARK: - InteractivelyDismissableViewController
|
||||
|
||||
|
|
|
@ -27,8 +27,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
|
|||
// MARK: - Lifecycle
|
||||
|
||||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||||
// Log something immediately to make it easier to track app launches (and crashes during launch)
|
||||
SNLog("Launching \(SessionApp.versionInfo)")
|
||||
startTime = CACurrentMediaTime()
|
||||
|
||||
// These should be the first things we do (the startup process can fail without them)
|
||||
|
@ -288,8 +286,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
|
|||
Configuration.performMainSetup()
|
||||
JobRunner.add(executor: SyncPushTokensJob.self, for: .syncPushTokens)
|
||||
|
||||
// Setup the UI and trigger any post-UI setup actions
|
||||
self.ensureRootViewController(calledFrom: lifecycleMethod) { [weak self] in
|
||||
// Setup the UI if needed, then trigger any post-UI setup actions
|
||||
self.ensureRootViewController(calledFrom: lifecycleMethod) { [weak self] success in
|
||||
// If we didn't successfully ensure the rootViewController then don't continue as
|
||||
// the user is in an invalid state (and should have already been shown a modal)
|
||||
guard success else { return }
|
||||
|
||||
/// Trigger any launch-specific jobs and start the JobRunner with `JobRunner.appDidFinishLaunching()` some
|
||||
/// of these jobs (eg. DisappearingMessages job) can impact the interactions which get fetched to display on the home
|
||||
/// screen, if the PagedDatabaseObserver hasn't been setup yet then the home screen can show stale (ie. deleted)
|
||||
|
@ -483,11 +485,16 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
|
|||
|
||||
private func ensureRootViewController(
|
||||
calledFrom lifecycleMethod: LifecycleMethod,
|
||||
onComplete: (() -> ())? = nil
|
||||
onComplete: @escaping ((Bool) -> ()) = { _ in }
|
||||
) {
|
||||
guard (AppReadiness.isAppReady() || lifecycleMethod == .finishLaunching) && Storage.shared.isValid && !hasInitialRootViewController else {
|
||||
return
|
||||
}
|
||||
let hasInitialRootViewController: Bool = self.hasInitialRootViewController
|
||||
|
||||
// Always call the completion block and indicate whether we successfully created the UI
|
||||
guard
|
||||
Storage.shared.isValid &&
|
||||
(AppReadiness.isAppReady() || lifecycleMethod == .finishLaunching) &&
|
||||
!hasInitialRootViewController
|
||||
else { return DispatchQueue.main.async { onComplete(hasInitialRootViewController) } }
|
||||
|
||||
/// Start a timeout for the creation of the rootViewController setup process (if it takes too long then we want to give the user
|
||||
/// the option to export their logs)
|
||||
|
@ -541,7 +548,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
|
|||
}
|
||||
|
||||
// Setup is completed so run any post-setup tasks
|
||||
onComplete?()
|
||||
onComplete(true)
|
||||
}
|
||||
|
||||
// Navigate to the approriate screen depending on the onboarding state
|
||||
|
|
|
@ -4,6 +4,7 @@ import Foundation
|
|||
import SessionUtilitiesKit
|
||||
import SessionMessagingKit
|
||||
import SignalCoreKit
|
||||
import SessionUIKit
|
||||
|
||||
public struct SessionApp {
|
||||
// FIXME: Refactor this to be protocol based for unit testing (or even dynamic based on view hierarchy - do want to avoid needing to use the main thread to access them though)
|
||||
|
|
|
@ -2,32 +2,9 @@
|
|||
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <SessionUIKit/SessionUIKit.h>
|
||||
|
||||
// Separate iOS Frameworks from other imports.
|
||||
#import "AVAudioSession+OWS.h"
|
||||
#import "OWSAudioPlayer.h"
|
||||
#import "OWSBezierPathView.h"
|
||||
#import "OWSMessageTimerView.h"
|
||||
#import "OWSWindowManager.h"
|
||||
#import "MainAppContext.h"
|
||||
#import <PureLayout/PureLayout.h>
|
||||
#import <Reachability/Reachability.h>
|
||||
#import <SignalCoreKit/Cryptography.h>
|
||||
#import <SessionMessagingKit/OWSAudioPlayer.h>
|
||||
#import <SignalUtilitiesKit/OWSViewController.h>
|
||||
#import <SignalUtilitiesKit/UIFont+OWS.h>
|
||||
#import <SessionUtilitiesKit/UIView+OWS.h>
|
||||
#import <SignalUtilitiesKit/AppVersion.h>
|
||||
#import <SessionUtilitiesKit/DataSource.h>
|
||||
#import <SessionUtilitiesKit/MIMETypeUtil.h>
|
||||
#import <SessionUtilitiesKit/NSData+Image.h>
|
||||
#import <SessionUtilitiesKit/NSNotificationCenter+OWS.h>
|
||||
#import <SessionUtilitiesKit/NSString+SSK.h>
|
||||
#import <SignalUtilitiesKit/OWSDispatch.h>
|
||||
#import <SignalUtilitiesKit/OWSError.h>
|
||||
#import <SessionUtilitiesKit/OWSFileSystem.h>
|
||||
#import <SessionUtilitiesKit/UIImage+OWS.h>
|
||||
#import <YYImage/YYImage.h>
|
||||
|
|
|
@ -5,6 +5,7 @@ import Combine
|
|||
import PushKit
|
||||
import GRDB
|
||||
import SignalUtilitiesKit
|
||||
import SignalCoreKit
|
||||
|
||||
public enum PushRegistrationError: Error {
|
||||
case assertionError(description: String)
|
||||
|
|
|
@ -6,6 +6,7 @@ import Sodium
|
|||
import GRDB
|
||||
import SessionUtilitiesKit
|
||||
import SessionMessagingKit
|
||||
import SessionSnodeKit
|
||||
|
||||
enum Onboarding {
|
||||
private static let profileNameRetrievalIdentifier: Atomic<UUID?> = Atomic(nil)
|
||||
|
|
|
@ -100,7 +100,7 @@ private class CaptionView: UIView {
|
|||
let textView: CaptionTextView = {
|
||||
let textView = CaptionTextView()
|
||||
|
||||
textView.font = UIFont.ows_dynamicTypeBody
|
||||
textView.font = UIFont.preferredFont(forTextStyle: .body)
|
||||
textView.themeTextColor = .textPrimary
|
||||
textView.themeBackgroundColor = .clear
|
||||
textView.isEditable = false
|
||||
|
|
|
@ -492,7 +492,7 @@ public final class FullConversationCell: UITableViewCell, SwipeActionOptimisticC
|
|||
case (true, false):
|
||||
self.snippetLabel.attributedText = NSAttributedString(
|
||||
string: FullConversationCell.mutePrefix,
|
||||
attributes: [ .font: UIFont.ows_elegantIconsFont(10) ]
|
||||
attributes: [ .font: UIFont(name: "ElegantIcons", size: 10) as Any ]
|
||||
)
|
||||
.appending(attrString)
|
||||
|
||||
|
@ -547,7 +547,7 @@ public final class FullConversationCell: UITableViewCell, SwipeActionOptimisticC
|
|||
result.append(NSAttributedString(
|
||||
string: FullConversationCell.mutePrefix,
|
||||
attributes: [
|
||||
.font: UIFont.ows_elegantIconsFont(10),
|
||||
.font: UIFont(name: "ElegantIcons", size: 10) as Any,
|
||||
.foregroundColor: textColor
|
||||
]
|
||||
))
|
||||
|
@ -562,7 +562,7 @@ public final class FullConversationCell: UITableViewCell, SwipeActionOptimisticC
|
|||
result.append(NSAttributedString(
|
||||
string: " ",
|
||||
attributes: [
|
||||
.font: UIFont.ows_elegantIconsFont(10),
|
||||
.font: UIFont(name: "ElegantIcons", size: 10) as Any,
|
||||
.foregroundColor: textColor
|
||||
]
|
||||
))
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
typedef void (^ConfigureShapeLayerBlock)(CAShapeLayer *_Nonnull layer, CGRect bounds);
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
||||
|
||||
import Foundation
|
||||
import CryptoKit
|
||||
import Clibsodium
|
||||
import Sodium
|
||||
import Curve25519Kit
|
||||
|
@ -108,10 +109,10 @@ extension Sodium {
|
|||
/// pubkeys (this doesn't affect verification at all)
|
||||
public func sogsSignature(message: Bytes, secretKey: Bytes, blindedSecretKey ka: Bytes, blindedPublicKey kA: Bytes) -> Bytes? {
|
||||
/// H_rh = sha512(s.encode()).digest()[32:]
|
||||
let H_rh: Bytes = Bytes(secretKey.sha512().suffix(32))
|
||||
let H_rh: Bytes = Bytes(SHA512.hash(data: secretKey).suffix(32))
|
||||
|
||||
/// r = salt.crypto_core_ed25519_scalar_reduce(sha512_multipart(H_rh, kA, message_parts))
|
||||
let combinedHashBytes: Bytes = (H_rh + kA + message).sha512()
|
||||
let combinedHashBytes: Bytes = SHA512.hash(data: H_rh + kA + message).bytes
|
||||
let rPtr: UnsafeMutablePointer<UInt8> = UnsafeMutablePointer<UInt8>.allocate(capacity: Sodium.scalarLength)
|
||||
|
||||
_ = combinedHashBytes.withUnsafeBytes { (combinedHashPtr: UnsafeRawBufferPointer) -> Int32 in
|
||||
|
@ -129,7 +130,7 @@ extension Sodium {
|
|||
|
||||
/// HRAM = salt.crypto_core_ed25519_scalar_reduce(sha512_multipart(sig_R, kA, message_parts))
|
||||
let sig_RBytes: Bytes = Data(bytes: sig_RPtr, count: Sodium.noClampLength).bytes
|
||||
let HRAMHashBytes: Bytes = (sig_RBytes + kA + message).sha512()
|
||||
let HRAMHashBytes: Bytes = SHA512.hash(data: sig_RBytes + kA + message).bytes
|
||||
let HRAMPtr: UnsafeMutablePointer<UInt8> = UnsafeMutablePointer<UInt8>.allocate(capacity: Sodium.scalarLength)
|
||||
|
||||
_ = HRAMHashBytes.withUnsafeBytes { (HRAMHashPtr: UnsafeRawBufferPointer) -> Int32 in
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#import <UIKit/UIKit.h>
|
||||
|
||||
// Separate iOS Frameworks from other imports.
|
||||
#import <SignalUtilitiesKit/UIFont+OWS.h>
|
||||
#import <SessionUtilitiesKit/UIView+OWS.h>
|
||||
#import <SessionUtilitiesKit/AppContext.h>
|
||||
#import <SessionMessagingKit/AppReadiness.h>
|
||||
|
|
|
@ -16,7 +16,7 @@ public extension Data {
|
|||
var bytes: [UInt8] { return Array(self) }
|
||||
|
||||
func toHexString() -> String {
|
||||
return bytes.map { String(format: "%02x", $0) }.joined()
|
||||
return bytes.toHexString()
|
||||
}
|
||||
|
||||
init(hex: String) {
|
||||
|
@ -71,4 +71,12 @@ public extension Array where Element == UInt8 {
|
|||
append(b)
|
||||
}
|
||||
}
|
||||
|
||||
func toHexString() -> String {
|
||||
return map { String(format: "%02x", $0) }.joined()
|
||||
}
|
||||
|
||||
func toBase64(options: Data.Base64EncodingOptions = []) -> String {
|
||||
Data(self).base64EncodedString(options: options)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,26 @@
|
|||
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
||||
|
||||
import Foundation
|
||||
import CryptoSwift
|
||||
|
||||
/// Based on [mnemonic.js](https://github.com/loki-project/loki-messenger/blob/development/libloki/modules/mnemonic.js) .
|
||||
public enum Mnemonic {
|
||||
/// This implementation was sourced from https://gist.github.com/antfarm/695fa78e0730b67eb094c77d53942216
|
||||
enum CRC32 {
|
||||
static let table: [UInt32] = {
|
||||
(0...255).map { i -> UInt32 in
|
||||
(0..<8).reduce(UInt32(i), { c, _ in
|
||||
((0xEDB88320 * (c % 2)) ^ (c >> 1))
|
||||
})
|
||||
}
|
||||
}()
|
||||
|
||||
static func checksum(bytes: [UInt8]) -> UInt32 {
|
||||
return ~(bytes.reduce(~UInt32(0), { crc, byte in
|
||||
(crc >> 8) ^ table[(Int(crc) ^ Int(byte)) & 0xFF]
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
public struct Language: Hashable {
|
||||
fileprivate let filename: String
|
||||
fileprivate let prefixLength: UInt
|
||||
|
@ -147,7 +163,7 @@ public enum Mnemonic {
|
|||
}
|
||||
|
||||
private static func determineChecksumIndex(for x: [String], prefixLength: UInt) -> Int {
|
||||
let checksum = Array(x.map { $0.prefix(length: prefixLength) }.joined().utf8).crc32()
|
||||
let checksum = CRC32.checksum(bytes: Array(x.map { $0.prefix(length: prefixLength) }.joined().utf8))
|
||||
|
||||
return Int(checksum) % x.count
|
||||
}
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
// We often use notifications as way to publish events.
|
||||
//
|
||||
// We never need these events to be received synchronously,
|
||||
// so we should always send them asynchronously to avoid any
|
||||
// possible risk of deadlock. These methods also ensure that
|
||||
// the notifications are always fired on the main thread.
|
||||
@interface NSNotificationCenter (OWS)
|
||||
|
||||
- (void)postNotificationNameAsync:(NSNotificationName)name object:(nullable id)object;
|
||||
- (void)postNotificationNameAsync:(NSNotificationName)name
|
||||
object:(nullable id)object
|
||||
userInfo:(nullable NSDictionary *)userInfo;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -1,29 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "NSNotificationCenter+OWS.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@implementation NSNotificationCenter (OWS)
|
||||
|
||||
- (void)postNotificationNameAsync:(NSNotificationName)name object:(nullable id)object
|
||||
{
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self postNotificationName:name object:object];
|
||||
});
|
||||
}
|
||||
|
||||
- (void)postNotificationNameAsync:(NSNotificationName)name
|
||||
object:(nullable id)object
|
||||
userInfo:(nullable NSDictionary *)userInfo
|
||||
{
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self postNotificationName:name object:object userInfo:userInfo];
|
||||
});
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -1,15 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSString (SSK)
|
||||
|
||||
- (NSString *)rtlSafeAppend:(NSString *)string;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -1,23 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "NSString+SSK.h"
|
||||
#import "AppContext.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@implementation NSString (SSK)
|
||||
|
||||
- (NSString *)rtlSafeAppend:(NSString *)string
|
||||
{
|
||||
if (CurrentAppContext().isRTL) {
|
||||
return [string stringByAppendingString:self];
|
||||
} else {
|
||||
return [self stringByAppendingString:string];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -10,10 +10,6 @@ public extension String {
|
|||
return (self as NSString).digitsOnly()
|
||||
}
|
||||
|
||||
func rtlSafeAppend(_ string: String) -> String {
|
||||
return (self as NSString).rtlSafeAppend(string)
|
||||
}
|
||||
|
||||
func substring(from index: Int) -> String {
|
||||
return String(self[self.index(self.startIndex, offsetBy: index)...])
|
||||
}
|
||||
|
|
|
@ -7,8 +7,6 @@ FOUNDATION_EXPORT const unsigned char SessionUtilitiesKitVersionString[];
|
|||
#import <SessionUtilitiesKit/DataSource.h>
|
||||
#import <SessionUtilitiesKit/MIMETypeUtil.h>
|
||||
#import <SessionUtilitiesKit/NSData+Image.h>
|
||||
#import <SessionUtilitiesKit/NSNotificationCenter+OWS.h>
|
||||
#import <SessionUtilitiesKit/NSString+SSK.h>
|
||||
#import <SessionUtilitiesKit/NSTimer+Proxying.h>
|
||||
#import <SessionUtilitiesKit/NSUserDefaults+OWS.h>
|
||||
#import <SessionUtilitiesKit/OWSFileSystem.h>
|
||||
|
|
|
@ -128,7 +128,7 @@ class AttachmentCaptionToolbar: UIView, UITextViewDelegate {
|
|||
textView.themeBackgroundColor = .clear
|
||||
textView.themeTintColor = .textPrimary
|
||||
|
||||
textView.font = UIFont.ows_dynamicTypeBody
|
||||
textView.font = UIFont.preferredFont(forTextStyle: .body)
|
||||
textView.themeTextColor = .textPrimary
|
||||
textView.textContainerInset = UIEdgeInsets(top: 7, left: 7, bottom: 7, right: 7)
|
||||
|
||||
|
|
|
@ -260,15 +260,15 @@ public class MediaMessageView: UIView, OWSAudioPlayerDelegate {
|
|||
// Styling
|
||||
switch mode {
|
||||
case .attachmentApproval:
|
||||
label.font = UIFont.ows_boldFont(withSize: ScaleFromIPhone5To7Plus(16, 22))
|
||||
label.font = UIFont.boldSystemFont(ofSize: ScaleFromIPhone5To7Plus(16, 22))
|
||||
label.themeTextColor = .textPrimary
|
||||
|
||||
case .large:
|
||||
label.font = UIFont.ows_regularFont(withSize: ScaleFromIPhone5To7Plus(18, 24))
|
||||
label.font = UIFont.systemFont(ofSize: ScaleFromIPhone5To7Plus(18, 24))
|
||||
label.themeTextColor = .primary
|
||||
|
||||
case .small:
|
||||
label.font = UIFont.ows_regularFont(withSize: ScaleFromIPhone5To7Plus(14, 14))
|
||||
label.font = UIFont.systemFont(ofSize: ScaleFromIPhone5To7Plus(14, 14))
|
||||
label.themeTextColor = .primary
|
||||
}
|
||||
|
||||
|
@ -315,15 +315,15 @@ public class MediaMessageView: UIView, OWSAudioPlayerDelegate {
|
|||
// Styling
|
||||
switch mode {
|
||||
case .attachmentApproval:
|
||||
label.font = UIFont.ows_regularFont(withSize: ScaleFromIPhone5To7Plus(12, 18))
|
||||
label.font = UIFont.systemFont(ofSize: ScaleFromIPhone5To7Plus(12, 18))
|
||||
label.themeTextColor = .textSecondary
|
||||
|
||||
case .large:
|
||||
label.font = UIFont.ows_regularFont(withSize: ScaleFromIPhone5To7Plus(18, 24))
|
||||
label.font = UIFont.systemFont(ofSize: ScaleFromIPhone5To7Plus(18, 24))
|
||||
label.themeTextColor = .primary
|
||||
|
||||
case .small:
|
||||
label.font = UIFont.ows_regularFont(withSize: ScaleFromIPhone5To7Plus(14, 14))
|
||||
label.font = UIFont.systemFont(ofSize: ScaleFromIPhone5To7Plus(14, 14))
|
||||
label.themeTextColor = .primary
|
||||
}
|
||||
|
||||
|
@ -332,7 +332,7 @@ public class MediaMessageView: UIView, OWSAudioPlayerDelegate {
|
|||
// We only load Link Previews for HTTPS urls so append an explanation for not
|
||||
if let linkPreviewURL: String = linkPreviewInfo?.url {
|
||||
if let targetUrl: URL = URL(string: linkPreviewURL), targetUrl.scheme?.lowercased() != "https" {
|
||||
label.font = UIFont.ows_regularFont(withSize: Values.verySmallFontSize)
|
||||
label.font = UIFont.systemFont(ofSize: Values.verySmallFontSize)
|
||||
label.text = "vc_share_link_previews_unsecure".localized()
|
||||
label.themeTextColor = (mode == .attachmentApproval ?
|
||||
.textSecondary :
|
||||
|
@ -585,7 +585,7 @@ public class MediaMessageView: UIView, OWSAudioPlayerDelegate {
|
|||
// This error case is handled already in the 'subtitleLabel' creation
|
||||
}
|
||||
else {
|
||||
self?.subtitleLabel.font = UIFont.ows_regularFont(withSize: Values.verySmallFontSize)
|
||||
self?.subtitleLabel.font = UIFont.systemFont(ofSize: Values.verySmallFontSize)
|
||||
self?.subtitleLabel.text = "vc_share_link_previews_error".localized()
|
||||
self?.subtitleLabel.themeTextColor = (self?.mode == .attachmentApproval ?
|
||||
.textSecondary :
|
||||
|
|
|
@ -10,12 +10,9 @@ FOUNDATION_EXPORT const unsigned char SignalUtilitiesKitVersionString[];
|
|||
#import <SignalUtilitiesKit/AppVersion.h>
|
||||
#import <SignalUtilitiesKit/ByteParser.h>
|
||||
#import <SignalUtilitiesKit/FunctionalUtil.h>
|
||||
#import <SignalUtilitiesKit/NSAttributedString+OWS.h>
|
||||
#import <SignalUtilitiesKit/NSURLSessionDataTask+StatusCode.h>
|
||||
#import <SignalUtilitiesKit/OWSDispatch.h>
|
||||
#import <SignalUtilitiesKit/OWSError.h>
|
||||
#import <SignalUtilitiesKit/OWSOperation.h>
|
||||
#import <SignalUtilitiesKit/OWSViewController.h>
|
||||
#import <SignalUtilitiesKit/SSKAsserts.h>
|
||||
#import <SignalUtilitiesKit/TSConstants.h>
|
||||
#import <SignalUtilitiesKit/UIFont+OWS.h>
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSAttributedString (OWS)
|
||||
|
||||
- (NSAttributedString *)rtlSafeAppend:(NSString *)text attributes:(NSDictionary *)attributes;
|
||||
- (NSAttributedString *)rtlSafeAppend:(NSAttributedString *)string;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -1,39 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "NSAttributedString+OWS.h"
|
||||
#import <SessionUtilitiesKit/AppContext.h>
|
||||
#import <SignalCoreKit/OWSAsserts.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@implementation NSAttributedString (OWS)
|
||||
|
||||
- (NSAttributedString *)rtlSafeAppend:(NSString *)text attributes:(NSDictionary *)attributes
|
||||
{
|
||||
OWSAssertDebug(text);
|
||||
OWSAssertDebug(attributes);
|
||||
|
||||
NSAttributedString *substring = [[NSAttributedString alloc] initWithString:text attributes:attributes];
|
||||
return [self rtlSafeAppend:substring];
|
||||
}
|
||||
|
||||
- (NSAttributedString *)rtlSafeAppend:(NSAttributedString *)string
|
||||
{
|
||||
OWSAssertDebug(string);
|
||||
|
||||
NSMutableAttributedString *result = [NSMutableAttributedString new];
|
||||
if (CurrentAppContext().isRTL) {
|
||||
[result appendAttributedString:string];
|
||||
[result appendAttributedString:self];
|
||||
} else {
|
||||
[result appendAttributedString:self];
|
||||
[result appendAttributedString:string];
|
||||
}
|
||||
return [result copy];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -1,23 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface OWSDispatch : NSObject
|
||||
|
||||
/**
|
||||
* Attachment downloading
|
||||
*/
|
||||
+ (dispatch_queue_t)attachmentsQueue;
|
||||
|
||||
/**
|
||||
* Serial message sending queue
|
||||
*/
|
||||
+ (dispatch_queue_t)sendingQueue;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -1,34 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "OWSDispatch.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@implementation OWSDispatch
|
||||
|
||||
+ (dispatch_queue_t)attachmentsQueue
|
||||
{
|
||||
static dispatch_once_t onceToken;
|
||||
static dispatch_queue_t queue;
|
||||
dispatch_once(&onceToken, ^{
|
||||
queue = dispatch_queue_create("org.whispersystems.signal.attachments", NULL);
|
||||
});
|
||||
return queue;
|
||||
}
|
||||
|
||||
+ (dispatch_queue_t)sendingQueue
|
||||
{
|
||||
static dispatch_once_t onceToken;
|
||||
static dispatch_queue_t queue;
|
||||
dispatch_once(&onceToken, ^{
|
||||
dispatch_queue_attr_t attributes = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INITIATED, 0);
|
||||
queue = dispatch_queue_create("org.whispersystems.signal.sendQueue", attributes);
|
||||
});
|
||||
return queue;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -1,63 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface UIFont (OWS)
|
||||
|
||||
+ (UIFont *)ows_thinFontWithSize:(CGFloat)size;
|
||||
|
||||
+ (UIFont *)ows_lightFontWithSize:(CGFloat)size;
|
||||
|
||||
+ (UIFont *)ows_regularFontWithSize:(CGFloat)size;
|
||||
|
||||
+ (UIFont *)ows_mediumFontWithSize:(CGFloat)size;
|
||||
|
||||
+ (UIFont *)ows_boldFontWithSize:(CGFloat)size;
|
||||
|
||||
+ (UIFont *)ows_monospacedDigitFontWithSize:(CGFloat)size;
|
||||
|
||||
#pragma mark - Icon Fonts
|
||||
|
||||
+ (UIFont *)ows_fontAwesomeFont:(CGFloat)size;
|
||||
+ (UIFont *)ows_dripIconsFont:(CGFloat)size;
|
||||
+ (UIFont *)ows_elegantIconsFont:(CGFloat)size;
|
||||
|
||||
#pragma mark - Dynamic Type
|
||||
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeTitle1Font;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeTitle2Font;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeTitle3Font;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeHeadlineFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeBodyFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeSubheadlineFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeFootnoteFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeCaption1Font;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeCaption2Font;
|
||||
|
||||
#pragma mark - Dynamic Type Clamped
|
||||
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeLargeTitle1ClampedFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeTitle1ClampedFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeTitle2ClampedFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeTitle3ClampedFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeHeadlineClampedFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeBodyClampedFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeSubheadlineClampedFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeFootnoteClampedFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeCaption1ClampedFont;
|
||||
@property (class, readonly, nonatomic) UIFont *ows_dynamicTypeCaption2ClampedFont;
|
||||
|
||||
#pragma mark - Styles
|
||||
|
||||
- (UIFont *)ows_italic;
|
||||
- (UIFont *)ows_bold;
|
||||
- (UIFont *)ows_mediumWeight;
|
||||
- (UIFont *)ows_monospaced;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
|
@ -1,234 +0,0 @@
|
|||
//
|
||||
// Copyright (c) 2019 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "UIFont+OWS.h"
|
||||
#import <SignalCoreKit/OWSAsserts.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@implementation UIFont (OWS)
|
||||
|
||||
+ (UIFont *)ows_thinFontWithSize:(CGFloat)size
|
||||
{
|
||||
return [UIFont systemFontOfSize:size weight:UIFontWeightThin];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_lightFontWithSize:(CGFloat)size
|
||||
{
|
||||
return [UIFont systemFontOfSize:size weight:UIFontWeightLight];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_regularFontWithSize:(CGFloat)size
|
||||
{
|
||||
return [UIFont systemFontOfSize:size weight:UIFontWeightRegular];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_mediumFontWithSize:(CGFloat)size
|
||||
{
|
||||
return [UIFont systemFontOfSize:size weight:UIFontWeightMedium];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_boldFontWithSize:(CGFloat)size
|
||||
{
|
||||
return [UIFont boldSystemFontOfSize:size];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_monospacedDigitFontWithSize:(CGFloat)size;
|
||||
{
|
||||
return [self monospacedDigitSystemFontOfSize:size weight:UIFontWeightRegular];
|
||||
}
|
||||
|
||||
#pragma mark - Icon Fonts
|
||||
|
||||
+ (UIFont *)ows_fontAwesomeFont:(CGFloat)size
|
||||
{
|
||||
return [UIFont fontWithName:@"FontAwesome" size:size];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dripIconsFont:(CGFloat)size
|
||||
{
|
||||
return [UIFont fontWithName:@"dripicons-v2" size:size];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_elegantIconsFont:(CGFloat)size
|
||||
{
|
||||
return [UIFont fontWithName:@"ElegantIcons" size:size];
|
||||
}
|
||||
|
||||
#pragma mark - Dynamic Type
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeTitle1Font
|
||||
{
|
||||
return [UIFont preferredFontForTextStyle:UIFontTextStyleTitle1];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeTitle2Font
|
||||
{
|
||||
return [UIFont preferredFontForTextStyle:UIFontTextStyleTitle2];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeTitle3Font
|
||||
{
|
||||
return [UIFont preferredFontForTextStyle:UIFontTextStyleTitle3];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeHeadlineFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeBodyFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyle:UIFontTextStyleBody];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeSubheadlineFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeFootnoteFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyle:UIFontTextStyleFootnote];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeCaption1Font
|
||||
{
|
||||
return [UIFont preferredFontForTextStyle:UIFontTextStyleCaption1];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeCaption2Font
|
||||
{
|
||||
return [UIFont preferredFontForTextStyle:UIFontTextStyleCaption2];
|
||||
}
|
||||
|
||||
#pragma mark - Dynamic Type Clamped
|
||||
|
||||
+ (UIFont *)preferredFontForTextStyleClamped:(UIFontTextStyle)fontTextStyle
|
||||
{
|
||||
// We clamp the dynamic type sizes at the max size available
|
||||
// without "larger accessibility sizes" enabled.
|
||||
static NSDictionary<UIFontTextStyle, NSNumber *> *maxPointSizeMap = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
NSMutableDictionary<UIFontTextStyle, NSNumber *> *map = [@{
|
||||
UIFontTextStyleTitle1 : @(34.0),
|
||||
UIFontTextStyleTitle2 : @(28.0),
|
||||
UIFontTextStyleTitle3 : @(26.0),
|
||||
UIFontTextStyleHeadline : @(23.0),
|
||||
UIFontTextStyleBody : @(23.0),
|
||||
UIFontTextStyleSubheadline : @(21.0),
|
||||
UIFontTextStyleFootnote : @(19.0),
|
||||
UIFontTextStyleCaption1 : @(18.0),
|
||||
UIFontTextStyleCaption2 : @(17.0),
|
||||
} mutableCopy];
|
||||
map[UIFontTextStyleLargeTitle] = @(40.0);
|
||||
maxPointSizeMap = map;
|
||||
});
|
||||
|
||||
UIFont *font = [UIFont preferredFontForTextStyle:fontTextStyle];
|
||||
NSNumber *_Nullable maxPointSize = maxPointSizeMap[fontTextStyle];
|
||||
if (maxPointSize) {
|
||||
if (maxPointSize.floatValue < font.pointSize) {
|
||||
return [font fontWithSize:maxPointSize.floatValue];
|
||||
}
|
||||
} else {
|
||||
OWSFailDebug(@"Missing max point size for style: %@", fontTextStyle);
|
||||
}
|
||||
|
||||
return font;
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeLargeTitle1ClampedFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyleClamped:UIFontTextStyleLargeTitle];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeTitle1ClampedFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyleClamped:UIFontTextStyleTitle1];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeTitle2ClampedFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyleClamped:UIFontTextStyleTitle2];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeTitle3ClampedFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyleClamped:UIFontTextStyleTitle3];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeHeadlineClampedFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyleClamped:UIFontTextStyleHeadline];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeBodyClampedFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyleClamped:UIFontTextStyleBody];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeSubheadlineClampedFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyleClamped:UIFontTextStyleSubheadline];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeFootnoteClampedFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyleClamped:UIFontTextStyleFootnote];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeCaption1ClampedFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyleClamped:UIFontTextStyleCaption1];
|
||||
}
|
||||
|
||||
+ (UIFont *)ows_dynamicTypeCaption2ClampedFont
|
||||
{
|
||||
return [UIFont preferredFontForTextStyleClamped:UIFontTextStyleCaption2];
|
||||
}
|
||||
|
||||
#pragma mark - Styles
|
||||
|
||||
- (UIFont *)ows_italic
|
||||
{
|
||||
return [self styleWithSymbolicTraits:UIFontDescriptorTraitItalic];
|
||||
}
|
||||
|
||||
- (UIFont *)ows_bold
|
||||
{
|
||||
return [self styleWithSymbolicTraits:UIFontDescriptorTraitBold];
|
||||
}
|
||||
|
||||
- (UIFont *)styleWithSymbolicTraits:(UIFontDescriptorSymbolicTraits)symbolicTraits
|
||||
{
|
||||
UIFontDescriptor *fontDescriptor = [self.fontDescriptor fontDescriptorWithSymbolicTraits:symbolicTraits];
|
||||
UIFont *font = [UIFont fontWithDescriptor:fontDescriptor size:0];
|
||||
OWSAssertDebug(font);
|
||||
return font ?: self;
|
||||
}
|
||||
|
||||
- (UIFont *)ows_mediumWeight
|
||||
{
|
||||
// The recommended approach of deriving "medium" weight fonts for dynamic
|
||||
// type fonts is:
|
||||
//
|
||||
// [UIFontDescriptor fontDescriptorByAddingAttributes:...]
|
||||
//
|
||||
// But this doesn't seem to work in practice on iOS 11 using UIFontWeightMedium.
|
||||
|
||||
UIFont *derivedFont = [UIFont systemFontOfSize:self.pointSize weight:UIFontWeightMedium];
|
||||
return derivedFont;
|
||||
}
|
||||
|
||||
- (UIFont *)ows_monospaced
|
||||
{
|
||||
return [self.class ows_monospacedDigitFontWithSize:self.pointSize];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
Loading…
Reference in New Issue