diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 59b0d1dbbb..45330d9440 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -628,7 +628,6 @@ 8821334E2304E72700353626 /* NonContactTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8821334D2304E72700353626 /* NonContactTableViewCell.swift */; }; 8827004C232071C500F01C46 /* OWSWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8827004B232071C500F01C46 /* OWSWindow.swift */; }; 8827004E23208A1900F01C46 /* AppearanceSettingsTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8827004D23208A1900F01C46 /* AppearanceSettingsTableViewController.swift */; }; - 882E0B7723C7BD1900E8CE49 /* NotificationServiceExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 885AC56423AB42430077705E /* NotificationServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 8835DDF9230CEDC300DC6B66 /* RecipientPickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8835DDF8230CEDC300DC6B66 /* RecipientPickerViewController.m */; }; 8835DDFD230CEE8900DC6B66 /* RecipientPickerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8835DDFC230CEE8900DC6B66 /* RecipientPickerDelegate.swift */; }; 8835DE01230DBF7E00DC6B66 /* ComposeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8835DE00230DBF7E00DC6B66 /* ComposeViewController.swift */; }; @@ -642,7 +641,6 @@ 8855DF87238F1E0C0066D96F /* EmojiReactorsTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8855DF86238F1E0C0066D96F /* EmojiReactorsTableView.swift */; }; 8855DF89238F2E690066D96F /* EmojiCountsCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8855DF88238F2E690066D96F /* EmojiCountsCollectionView.swift */; }; 88594E5A2335B08000390B19 /* AudioMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88594E592335B08000390B19 /* AudioMessageView.swift */; }; - 885AC56723AB42430077705E /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 885AC56623AB42430077705E /* NotificationService.swift */; }; 885C35502370DFD50004BA35 /* OWSSyncManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 885C354F2370DFD50004BA35 /* OWSSyncManager.swift */; }; 8861DED02445349C00BB4145 /* LinkingTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8861DECF2445349B00BB4145 /* LinkingTextView.swift */; }; 886F08A7234958970085C27F /* InputAccessoryViewPlaceholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 886F08A6234958970085C27F /* InputAccessoryViewPlaceholder.swift */; }; @@ -658,13 +656,11 @@ 8889007523DBD0B400F40186 /* ProfileNameReminder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8889007423DBD0B400F40186 /* ProfileNameReminder.swift */; }; 888C828223D795FA0059464B /* pinCreationFail.json in Resources */ = {isa = PBXBuildFile; fileRef = 888C827F23D795F90059464B /* pinCreationFail.json */; }; 888C828323D795FA0059464B /* pinCreationInProgress.json in Resources */ = {isa = PBXBuildFile; fileRef = 888C828023D795FA0059464B /* pinCreationInProgress.json */; }; - 888F188623AC5A9E000780E9 /* SignalMessaging.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 453518921FC63DBF00210559 /* SignalMessaging.framework */; }; 88905E9E229CCA96004E4234 /* ExpirationNagView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88905E9D229CCA96004E4234 /* ExpirationNagView.swift */; }; 88A357B923639384009D6B9A /* MemberActionSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A357B823639384009D6B9A /* MemberActionSheet.swift */; }; 88A505F423DA16E10005C012 /* ExperienceUpgradeManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A505F323DA16E10005C012 /* ExperienceUpgradeManager.swift */; }; 88A505FA23DBA1360005C012 /* IntroducingPINs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A505F923DBA1360005C012 /* IntroducingPINs.swift */; }; 88A505FC23DBAE4F0005C012 /* Reactions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A505FB23DBAE4F0005C012 /* Reactions.swift */; }; - 88A595E323AB48E80029E835 /* NotificationServiceExtensionContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A595E223AB48E80029E835 /* NotificationServiceExtensionContext.swift */; }; 88A9419524099F7E000E9700 /* attachment_dark.json in Resources */ = {isa = PBXBuildFile; fileRef = 88A9419424099F7E000E9700 /* attachment_dark.json */; }; 88A9419724099F85000E9700 /* attachment_light.json in Resources */ = {isa = PBXBuildFile; fileRef = 88A9419624099F85000E9700 /* attachment_light.json */; }; 88A941992409A391000E9700 /* LottieToggleButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88A941982409A391000E9700 /* LottieToggleButton.swift */; }; @@ -734,7 +730,6 @@ D221A0E8169DFFC500537ABF /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D221A0E7169DFFC500537ABF /* AVFoundation.framework */; }; D24B5BD5169F568C00681372 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D24B5BD4169F568C00681372 /* AudioToolbox.framework */; }; D2AEACDC16C426DA00C364C0 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2AEACDB16C426DA00C364C0 /* CFNetwork.framework */; }; - DA2448EB739FFD5100E94059 /* Pods_NotificationServiceExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EFF2FAAECC00C2F8262444B8 /* Pods_NotificationServiceExtension.framework */; }; E1368CBE18A1C36B00109378 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9EB5ABC1884C002007CBB57 /* MessageUI.framework */; }; FC3BD9881A30A790005B96BB /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC3BD9871A30A790005B96BB /* Social.framework */; }; FCB11D8C1A129A76002F93FB /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FCB11D8B1A129A76002F93FB /* CoreMedia.framework */; }; @@ -783,20 +778,6 @@ remoteGlobalIDString = D221A088169C9E5E00537ABF; remoteInfo = Signal; }; - 885AC56923AB42430077705E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D221A080169C9E5E00537ABF /* Project object */; - proxyType = 1; - remoteGlobalIDString = 885AC56323AB42430077705E; - remoteInfo = NotificationServiceExtension; - }; - 888F188423AC5A93000780E9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D221A080169C9E5E00537ABF /* Project object */; - proxyType = 1; - remoteGlobalIDString = 453518911FC63DBF00210559; - remoteInfo = SignalMessaging; - }; B6AFCEBA19A93DA60098CFCB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D221A080169C9E5E00537ABF /* Project object */; @@ -813,7 +794,6 @@ dstPath = ""; dstSubfolderSpec = 13; files = ( - 882E0B7723C7BD1900E8CE49 /* NotificationServiceExtension.appex in Embed App Extensions */, 453518721FC635DD00210559 /* SignalShareExtension.appex in Embed App Extensions */, ); name = "Embed App Extensions"; @@ -1574,7 +1554,6 @@ 8855DF86238F1E0C0066D96F /* EmojiReactorsTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiReactorsTableView.swift; sourceTree = ""; }; 8855DF88238F2E690066D96F /* EmojiCountsCollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiCountsCollectionView.swift; sourceTree = ""; }; 88594E592335B08000390B19 /* AudioMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioMessageView.swift; sourceTree = ""; }; - 885AC56423AB42430077705E /* NotificationServiceExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = NotificationServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 885AC56623AB42430077705E /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; 885AC56823AB42430077705E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 885AC57023AB428C0077705E /* NotificationServiceExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationServiceExtension.entitlements; sourceTree = ""; }; @@ -1757,15 +1736,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 885AC56123AB42430077705E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 888F188623AC5A9E000780E9 /* SignalMessaging.framework in Frameworks */, - DA2448EB739FFD5100E94059 /* Pods_NotificationServiceExtension.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; D221A086169C9E5E00537ABF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -3290,7 +3260,6 @@ 453518681FC635DD00210559 /* SignalShareExtension.appex */, 453518921FC63DBF00210559 /* SignalMessaging.framework */, 4C10B1C323176D250099396B /* SignalPerformanceTests.xctest */, - 885AC56423AB42430077705E /* NotificationServiceExtension.appex */, ); name = Products; sourceTree = ""; @@ -3519,25 +3488,6 @@ productReference = 4C10B1C323176D250099396B /* SignalPerformanceTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 885AC56323AB42430077705E /* NotificationServiceExtension */ = { - isa = PBXNativeTarget; - buildConfigurationList = 885AC56F23AB42430077705E /* Build configuration list for PBXNativeTarget "NotificationServiceExtension" */; - buildPhases = ( - DD22029638F7E2469D6F373D /* [CP] Check Pods Manifest.lock */, - 885AC56023AB42430077705E /* Sources */, - 885AC56123AB42430077705E /* Frameworks */, - 885AC56223AB42430077705E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 888F188523AC5A93000780E9 /* PBXTargetDependency */, - ); - name = NotificationServiceExtension; - productName = NotificationServiceExtension; - productReference = 885AC56423AB42430077705E /* NotificationServiceExtension.appex */; - productType = "com.apple.product-type.app-extension"; - }; D221A088169C9E5E00537ABF /* Signal */ = { isa = PBXNativeTarget; buildConfigurationList = D221A0BC169C9E5F00537ABF /* Build configuration list for PBXNativeTarget "Signal" */; @@ -3557,7 +3507,6 @@ dependencies = ( 453518711FC635DD00210559 /* PBXTargetDependency */, 453518981FC63DBF00210559 /* PBXTargetDependency */, - 885AC56A23AB42430077705E /* PBXTargetDependency */, ); name = Signal; productName = RedPhone; @@ -3622,11 +3571,6 @@ LastSwiftMigration = 1020; ProvisioningStyle = Automatic; }; - 885AC56323AB42430077705E = { - CreatedOnToolsVersion = 11.2.1; - DevelopmentTeam = U68MSDN6DR; - ProvisioningStyle = Automatic; - }; D221A088169C9E5E00537ABF = { DevelopmentTeam = U68MSDN6DR; LastSwiftMigration = 1020; @@ -3753,7 +3697,6 @@ 453518671FC635DD00210559 /* SignalShareExtension */, 453518911FC63DBF00210559 /* SignalMessaging */, 4C10B17F23176D250099396B /* SignalPerformanceTests */, - 885AC56323AB42430077705E /* NotificationServiceExtension */, ); }; /* End PBXProject section */ @@ -3791,13 +3734,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 885AC56223AB42430077705E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; D221A087169C9E5E00537ABF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -4229,28 +4165,6 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-SignalTests/Pods-SignalTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - DD22029638F7E2469D6F373D /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-NotificationServiceExtension-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; F4C416F20E3CB0B25DC10C56 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -4500,15 +4414,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 885AC56023AB42430077705E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 88A595E323AB48E80029E835 /* NotificationServiceExtensionContext.swift in Sources */, - 885AC56723AB42430077705E /* NotificationService.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; D221A085169C9E5E00537ABF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4869,16 +4774,6 @@ target = D221A088169C9E5E00537ABF /* Signal */; targetProxy = 4C10B18323176D250099396B /* PBXContainerItemProxy */; }; - 885AC56A23AB42430077705E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 885AC56323AB42430077705E /* NotificationServiceExtension */; - targetProxy = 885AC56923AB42430077705E /* PBXContainerItemProxy */; - }; - 888F188523AC5A93000780E9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 453518911FC63DBF00210559 /* SignalMessaging */; - targetProxy = 888F188423AC5A93000780E9 /* PBXContainerItemProxy */; - }; B6AFCEBB19A93DA60098CFCB /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = D221A088169C9E5E00537ABF /* Signal */; @@ -5735,185 +5630,6 @@ }; name = "Testable Release"; }; - 885AC56C23AB42430077705E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 981DAA2DEFCE9F8757D7C71A /* Pods-NotificationServiceExtension.debug.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = NotificationServiceExtension/NotificationServiceExtension.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = U68MSDN6DR; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - INFOPLIST_FILE = NotificationServiceExtension/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.3; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = org.whispersystems.signal.NotificationServiceExtension; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 885AC56D23AB42430077705E /* App Store Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = DCFF39FE94636EAFEAF06C70 /* Pods-NotificationServiceExtension.app store release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_ENTITLEMENTS = "NotificationServiceExtension/NotificationServiceExtension-AppStore.entitlements"; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = U68MSDN6DR; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = NotificationServiceExtension/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.3; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = org.whispersystems.signal.NotificationServiceExtension; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = "App Store Release"; - }; - 885AC56E23AB42430077705E /* Testable Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 80A8593EDA963AA130D319BA /* Pods-NotificationServiceExtension.testable release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_ENTITLEMENTS = NotificationServiceExtension/NotificationServiceExtension.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = U68MSDN6DR; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = NotificationServiceExtension/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.3; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = org.whispersystems.signal.NotificationServiceExtension; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = "Testable Release"; - }; D221A0BA169C9E5F00537ABF /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6360,16 +6076,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = "App Store Release"; }; - 885AC56F23AB42430077705E /* Build configuration list for PBXNativeTarget "NotificationServiceExtension" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 885AC56C23AB42430077705E /* Debug */, - 885AC56D23AB42430077705E /* App Store Release */, - 885AC56E23AB42430077705E /* Testable Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "App Store Release"; - }; D221A083169C9E5E00537ABF /* Build configuration list for PBXProject "Signal" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Signal/Images.xcassets/add-members-256.imageset/Contents.json b/Signal/Images.xcassets/add-members-256.imageset/Contents.json new file mode 100644 index 0000000000..fd24f19ba6 --- /dev/null +++ b/Signal/Images.xcassets/add-members-256.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "add-members-256.pdf", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/add-members-256.imageset/add-members-256.pdf b/Signal/Images.xcassets/add-members-256.imageset/add-members-256.pdf new file mode 100644 index 0000000000..7f5607afba --- /dev/null +++ b/Signal/Images.xcassets/add-members-256.imageset/add-members-256.pdf @@ -0,0 +1,79 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 51.200195 51.200012 cm +0.000000 0.000000 0.000000 scn +153.599991 85.759979 m +87.040001 85.759979 l +87.040001 153.599976 l +67.839996 153.599976 l +67.839996 85.759979 l +0.000000 85.759979 l +0.000000 66.559975 l +67.839996 66.559975 l +67.839996 -0.000015 l +87.040001 -0.000015 l +87.040001 66.559975 l +153.599991 66.559975 l +153.599991 85.759979 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 418 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 256.000000 256.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000000508 00000 n +0000000530 00000 n +0000000705 00000 n +0000000779 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +838 +%%EOF \ No newline at end of file diff --git a/Signal/Images.xcassets/chevron-down-256.imageset/Contents.json b/Signal/Images.xcassets/chevron-down-256.imageset/Contents.json new file mode 100644 index 0000000000..4fdb8d112e --- /dev/null +++ b/Signal/Images.xcassets/chevron-down-256.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "view-all-256.pdf", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/chevron-down-256.imageset/view-all-256.pdf b/Signal/Images.xcassets/chevron-down-256.imageset/view-all-256.pdf new file mode 100644 index 0000000000..3c4057860c --- /dev/null +++ b/Signal/Images.xcassets/chevron-down-256.imageset/view-all-256.pdf @@ -0,0 +1,73 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 44.799805 62.720032 cm +0.000000 0.000000 0.000000 scn +83.200005 0.000023 m +0.000000 84.480026 l +12.800001 97.280029 l +83.200005 28.160034 l +153.600006 97.280029 l +166.400009 84.480026 l +83.200005 0.000023 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 282 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 256.000000 256.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000000372 00000 n +0000000394 00000 n +0000000569 00000 n +0000000643 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +702 +%%EOF \ No newline at end of file diff --git a/Signal/Images.xcassets/invite-outline-256.imageset/Contents.json b/Signal/Images.xcassets/invite-outline-256.imageset/Contents.json new file mode 100644 index 0000000000..ed6809b46c --- /dev/null +++ b/Signal/Images.xcassets/invite-outline-256.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "invite-outline-256.pdf", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/invite-outline-256.imageset/invite-outline-256.pdf b/Signal/Images.xcassets/invite-outline-256.imageset/invite-outline-256.pdf new file mode 100644 index 0000000000..c981c2166f --- /dev/null +++ b/Signal/Images.xcassets/invite-outline-256.imageset/invite-outline-256.pdf @@ -0,0 +1,122 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 51.200012 64.000732 cm +0.000000 0.000000 0.000000 scn +108.857605 57.151955 m +116.088005 63.640022 121.179565 72.169281 123.459435 81.612579 c +125.739304 91.055878 125.100166 100.968697 121.626465 110.041023 c +118.152771 119.113342 112.008034 126.918129 104.004311 132.423950 c +96.000587 137.929764 86.514610 140.877441 76.800003 140.877441 c +67.085388 140.877441 57.599422 137.929764 49.595699 132.423950 c +41.591972 126.918129 35.447239 119.113342 31.973541 110.041023 c +28.499846 100.968697 27.860695 91.055878 30.140564 81.612579 c +32.420433 72.169281 37.512001 63.640022 44.742401 57.151955 c +32.387920 55.581207 21.029509 49.561310 12.793732 40.219337 c +4.557954 30.877373 0.009520 18.853874 0.000000 6.399948 c +0.000000 -0.000046 l +9.600000 -0.000046 l +9.600000 6.399948 l +9.613549 17.428795 14.000745 28.002052 21.799322 35.800636 c +29.597900 43.599213 40.171154 47.986404 51.200001 47.999954 c +102.400002 47.999954 l +113.428848 47.986404 124.002098 43.599213 131.800674 35.800636 c +139.599258 28.002052 143.986450 17.428795 144.000000 6.399948 c +144.000000 -0.000046 l +153.600006 -0.000046 l +153.600006 6.399948 l +153.590485 18.853874 149.042038 30.877373 140.806259 40.219337 c +132.570480 49.561310 121.212090 55.581207 108.857605 57.151955 c +h +76.800003 54.399956 m +69.205200 54.399956 61.780949 56.652077 55.466103 60.871529 c +49.151253 65.090973 44.229435 71.088226 41.323029 78.104912 c +38.416626 85.121597 37.656178 92.842552 39.137848 100.291428 c +40.619522 107.740295 44.276764 114.582520 49.647102 119.952858 c +55.017437 125.323196 61.859661 128.980438 69.308533 130.462112 c +76.757408 131.943787 84.478363 131.183334 91.495049 128.276932 c +98.511726 125.370522 104.508987 120.448700 108.728432 114.133858 c +112.947876 107.819008 115.200005 100.394760 115.200005 92.799957 c +115.200005 82.615646 111.154305 72.848450 103.952904 65.647049 c +96.751511 58.445656 86.984314 54.399956 76.800003 54.399956 c +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 192.000000 143.359863 cm +0.000000 0.000000 0.000000 scn +13.918750 13.919775 m +13.918750 0.000088 l +21.918749 0.000088 l +21.918749 13.919775 l +35.840000 13.919775 l +35.840000 21.919777 l +21.918749 21.919777 l +21.918749 35.840088 l +13.918750 35.840088 l +13.918750 21.919777 l +0.000000 21.919777 l +0.000000 13.919775 l +13.918750 13.919775 l +h +f* +n +Q + +endstream +endobj + +3 0 obj + 2380 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 255.999939 256.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000002470 00000 n +0000002493 00000 n +0000002668 00000 n +0000002742 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +2801 +%%EOF \ No newline at end of file diff --git a/Signal/Images.xcassets/invite-outline-40.imageset/Contents.json b/Signal/Images.xcassets/invite-outline-40.imageset/Contents.json new file mode 100644 index 0000000000..d8c9ca39e8 --- /dev/null +++ b/Signal/Images.xcassets/invite-outline-40.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "invite-outline-40.pdf", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/invite-outline-40.imageset/invite-outline-40.pdf b/Signal/Images.xcassets/invite-outline-40.imageset/invite-outline-40.pdf new file mode 100644 index 0000000000..8113957aa5 --- /dev/null +++ b/Signal/Images.xcassets/invite-outline-40.imageset/invite-outline-40.pdf @@ -0,0 +1,122 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 8.000000 10.000000 cm +0.000000 0.000000 0.000000 scn +17.009001 8.930100 m +18.138750 9.943861 18.934307 11.276557 19.290537 12.752072 c +19.646767 14.227588 19.546900 15.776465 19.004135 17.194016 c +18.461370 18.611567 17.501255 19.831064 16.250673 20.691349 c +15.000092 21.551632 13.517908 22.012207 12.000000 22.012207 c +10.482092 22.012207 8.999910 21.551632 7.749328 20.691349 c +6.498745 19.831064 5.538631 18.611567 4.995866 17.194016 c +4.453101 15.776465 4.353233 14.227588 4.709463 12.752072 c +5.065693 11.276557 5.861250 9.943861 6.991000 8.930100 c +5.060613 8.684671 3.285861 7.744061 1.999021 6.284379 c +0.712180 4.824696 0.001487 2.946026 0.000000 1.000099 c +0.000000 0.000099 l +1.500000 0.000099 l +1.500000 1.000099 l +1.502117 2.723356 2.187616 4.375427 3.406144 5.593956 c +4.624672 6.812484 6.276743 7.497983 8.000000 7.500100 c +16.000000 7.500100 l +17.723257 7.497983 19.375328 6.812484 20.593855 5.593956 c +21.812382 4.375427 22.497883 2.723356 22.500000 1.000099 c +22.500000 0.000099 l +24.000000 0.000099 l +24.000000 1.000099 l +23.998512 2.946026 23.287819 4.824696 22.000978 6.284379 c +20.714138 7.744061 18.939388 8.684671 17.009001 8.930100 c +h +12.000000 8.500100 m +10.813313 8.500100 9.653274 8.851995 8.666578 9.511283 c +7.679883 10.170571 6.910849 11.107643 6.456723 12.204000 c +6.002597 13.300356 5.883778 14.506756 6.115289 15.670642 c +6.346800 16.834528 6.918244 17.903625 7.757360 18.742741 c +8.596475 19.581856 9.665572 20.153299 10.829458 20.384811 c +11.993344 20.616323 13.199744 20.497503 14.296101 20.043377 c +15.392457 19.589251 16.329529 18.820217 16.988817 17.833523 c +17.648106 16.846827 18.000000 15.686789 18.000000 14.500100 c +18.000000 12.908801 17.367859 11.382677 16.242641 10.257459 c +15.117423 9.132240 13.591299 8.500100 12.000000 8.500100 c +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 30.000000 22.399902 cm +0.000000 0.000000 0.000000 scn +2.174805 2.175079 m +2.174805 0.000098 l +3.424805 0.000098 l +3.424805 2.175079 l +5.600000 2.175079 l +5.600000 3.425079 l +3.424805 3.425079 l +3.424805 5.600098 l +2.174805 5.600098 l +2.174805 3.425079 l +0.000000 3.425079 l +0.000000 2.175079 l +2.174805 2.175079 l +h +f* +n +Q + +endstream +endobj + +3 0 obj + 2221 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 40.000000 40.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000002311 00000 n +0000002334 00000 n +0000002507 00000 n +0000002581 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +2640 +%%EOF \ No newline at end of file diff --git a/Signal/Images.xcassets/phone-number-256.imageset/Contents.json b/Signal/Images.xcassets/phone-number-256.imageset/Contents.json new file mode 100644 index 0000000000..22907194c4 --- /dev/null +++ b/Signal/Images.xcassets/phone-number-256.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "invite-friends-256.pdf", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/phone-number-256.imageset/invite-friends-256.pdf b/Signal/Images.xcassets/phone-number-256.imageset/invite-friends-256.pdf new file mode 100644 index 0000000000..bbb0ffabd4 --- /dev/null +++ b/Signal/Images.xcassets/phone-number-256.imageset/invite-friends-256.pdf @@ -0,0 +1,101 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 73.599976 63.976318 cm +0.000000 0.000000 0.000000 scn +56.170994 -0.000092 m +66.093941 -0.000092 l +73.713356 37.122375 l +98.343536 37.122375 l +100.204086 46.956726 l +75.662506 46.956726 l +82.750328 81.952843 l +106.583130 81.952843 l +108.443680 91.698593 l +84.788078 91.698593 l +92.318886 128.023682 l +82.484535 128.023682 l +74.865120 91.698593 l +43.058521 91.698593 l +50.412136 128.023682 l +40.666382 128.023682 l +33.046970 91.698593 l +10.100147 91.698593 l +8.150995 81.952843 l +31.097820 81.952843 l +24.098597 46.956726 l +1.949151 46.956726 l +0.000000 37.122375 l +21.972250 37.122375 l +14.441438 -0.000092 l +24.187193 -0.000092 l +31.806602 37.122375 l +63.790401 37.122375 l +56.170994 -0.000092 l +h +33.844353 46.779533 m +40.932175 82.041443 l +72.915970 82.041443 l +65.916748 46.779533 l +33.844353 46.779533 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 883 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 256.000000 256.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000000973 00000 n +0000000995 00000 n +0000001170 00000 n +0000001244 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +1303 +%%EOF \ No newline at end of file diff --git a/Signal/Images.xcassets/phone-number-40.imageset/Contents.json b/Signal/Images.xcassets/phone-number-40.imageset/Contents.json new file mode 100644 index 0000000000..2c5c7e626e --- /dev/null +++ b/Signal/Images.xcassets/phone-number-40.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "invite-friends-40.pdf", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/phone-number-40.imageset/invite-friends-40.pdf b/Signal/Images.xcassets/phone-number-40.imageset/invite-friends-40.pdf new file mode 100644 index 0000000000..52111c6b23 --- /dev/null +++ b/Signal/Images.xcassets/phone-number-40.imageset/invite-friends-40.pdf @@ -0,0 +1,101 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 11.500000 9.996338 cm +0.000000 0.000000 0.000000 scn +8.776716 -0.000053 m +10.327178 -0.000053 l +11.517710 5.800332 l +15.366176 5.800332 l +15.656887 7.336949 l +11.822265 7.336949 l +12.929737 12.805094 l +16.653612 12.805094 l +16.944323 14.327868 l +13.248136 14.327868 l +14.424825 20.003662 l +12.888206 20.003662 l +11.697675 14.327868 l +6.727893 14.327868 l +7.876895 20.003662 l +6.354121 20.003662 l +5.163589 14.327868 l +1.578148 14.327868 l +1.273593 12.805094 l +4.859034 12.805094 l +3.765405 7.336949 l +0.304555 7.336949 l +0.000000 5.800332 l +3.433164 5.800332 l +2.256474 -0.000053 l +3.779249 -0.000053 l +4.969781 5.800332 l +9.967249 5.800332 l +8.776716 -0.000053 l +h +5.288179 7.309263 m +6.395651 12.818937 l +11.393120 12.818937 l +10.299491 7.309263 l +5.288179 7.309263 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 845 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 40.000000 40.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000000935 00000 n +0000000957 00000 n +0000001130 00000 n +0000001204 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +1263 +%%EOF \ No newline at end of file diff --git a/Signal/Images.xcassets/plus-256.imageset/Contents.json b/Signal/Images.xcassets/plus-256.imageset/Contents.json new file mode 100644 index 0000000000..fd24f19ba6 --- /dev/null +++ b/Signal/Images.xcassets/plus-256.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "add-members-256.pdf", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/plus-256.imageset/add-members-256.pdf b/Signal/Images.xcassets/plus-256.imageset/add-members-256.pdf new file mode 100644 index 0000000000..7f5607afba --- /dev/null +++ b/Signal/Images.xcassets/plus-256.imageset/add-members-256.pdf @@ -0,0 +1,79 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 51.200195 51.200012 cm +0.000000 0.000000 0.000000 scn +153.599991 85.759979 m +87.040001 85.759979 l +87.040001 153.599976 l +67.839996 153.599976 l +67.839996 85.759979 l +0.000000 85.759979 l +0.000000 66.559975 l +67.839996 66.559975 l +67.839996 -0.000015 l +87.040001 -0.000015 l +87.040001 66.559975 l +153.599991 66.559975 l +153.599991 85.759979 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 418 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 256.000000 256.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000000508 00000 n +0000000530 00000 n +0000000705 00000 n +0000000779 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +838 +%%EOF \ No newline at end of file diff --git a/Signal/Images.xcassets/view-all-256.imageset/Contents.json b/Signal/Images.xcassets/view-all-256.imageset/Contents.json new file mode 100644 index 0000000000..4fdb8d112e --- /dev/null +++ b/Signal/Images.xcassets/view-all-256.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "view-all-256.pdf", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/view-all-256.imageset/view-all-256.pdf b/Signal/Images.xcassets/view-all-256.imageset/view-all-256.pdf new file mode 100644 index 0000000000..3c4057860c --- /dev/null +++ b/Signal/Images.xcassets/view-all-256.imageset/view-all-256.pdf @@ -0,0 +1,73 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 44.799805 62.720032 cm +0.000000 0.000000 0.000000 scn +83.200005 0.000023 m +0.000000 84.480026 l +12.800001 97.280029 l +83.200005 28.160034 l +153.600006 97.280029 l +166.400009 84.480026 l +83.200005 0.000023 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 282 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 256.000000 256.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Type /Catalog + /Pages 5 0 R + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000000372 00000 n +0000000394 00000 n +0000000569 00000 n +0000000643 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +702 +%%EOF \ No newline at end of file diff --git a/Signal/src/ConversationSearch.swift b/Signal/src/ConversationSearch.swift index 69611f4bb8..c73270e106 100644 --- a/Signal/src/ConversationSearch.swift +++ b/Signal/src/ConversationSearch.swift @@ -217,12 +217,12 @@ public class SearchResultsBar: UIView { let upChevron = #imageLiteral(resourceName: "ic_chevron_up").withRenderingMode(.alwaysTemplate) showLessRecentButton = UIBarButtonItem(image: upChevron, style: .plain, target: self, action: #selector(didTapShowLessRecent)) showLessRecentButton.imageInsets = UIEdgeInsets(top: 2, left: leftExteriorChevronMargin, bottom: 2, right: leftInteriorChevronMargin) - showLessRecentButton.tintColor = UIColor.ows_accentBlue + showLessRecentButton.tintColor = Theme.accentBlueColor let downChevron = #imageLiteral(resourceName: "ic_chevron_down").withRenderingMode(.alwaysTemplate) showMoreRecentButton = UIBarButtonItem(image: downChevron, style: .plain, target: self, action: #selector(didTapShowMoreRecent)) showMoreRecentButton.imageInsets = UIEdgeInsets(top: 2, left: leftInteriorChevronMargin, bottom: 2, right: leftExteriorChevronMargin) - showMoreRecentButton.tintColor = UIColor.ows_accentBlue + showMoreRecentButton.tintColor = Theme.accentBlueColor let spacer1 = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) let spacer2 = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) diff --git a/Signal/src/ViewControllers/AppSettings/AppSettingsViewController.m b/Signal/src/ViewControllers/AppSettings/AppSettingsViewController.m index 56cca909e6..044861977d 100644 --- a/Signal/src/ViewControllers/AppSettings/AppSettingsViewController.m +++ b/Signal/src/ViewControllers/AppSettings/AppSettingsViewController.m @@ -205,7 +205,7 @@ : NSLocalizedString(@"SETTINGS_RELINK_BUTTON", @"Label for re-link button.") accessibilityIdentifier:ACCESSIBILITY_IDENTIFIER_WITH_NAME(self, @"reregister") selector:@selector(reregisterUser) - color:UIColor.ows_accentBlueColor]]; + color:Theme.accentBlueColor]]; [section addItem:[self destructiveButtonItemWithTitle:NSLocalizedString(@"SETTINGS_DELETE_DATA_BUTTON", @"Label for 'delete data' button.") accessibilityIdentifier:ACCESSIBILITY_IDENTIFIER_WITH_NAME(self, @"delete_data") diff --git a/Signal/src/ViewControllers/LocationPicker.swift b/Signal/src/ViewControllers/LocationPicker.swift index e05979339d..52374eab20 100644 --- a/Signal/src/ViewControllers/LocationPicker.swift +++ b/Signal/src/ViewControllers/LocationPicker.swift @@ -342,7 +342,7 @@ extension LocationPicker: MKMapViewDelegate { if annotation is MKUserLocation { return nil } let pin = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "annotation") - pin.pinTintColor = .ows_accentBlue + pin.pinTintColor = Theme.accentBlueColor pin.animatesDrop = annotation is MKPointAnnotation pin.rightCalloutAccessoryView = sendLocationButton() pin.canShowCallout = true @@ -351,7 +351,7 @@ extension LocationPicker: MKMapViewDelegate { func sendLocationButton() -> UIButton { let button = UIButton(frame: CGRect(x: 0, y: 0, width: 24, height: 24)) - button.setTemplateImageName("send-solid-24", tintColor: .ows_accentBlue) + button.setTemplateImageName("send-solid-24", tintColor: Theme.accentBlueColor) return button } @@ -464,7 +464,7 @@ public class Location: NSObject { snapshot.image.draw(at: .zero) let pinView = MKPinAnnotationView(annotation: nil, reuseIdentifier: nil) - pinView.pinTintColor = .ows_accentBlue + pinView.pinTintColor = Theme.accentBlueColor let pinImage = pinView.image var point = snapshot.point(for: self.coordinate) diff --git a/Signal/src/ViewControllers/NewGroupView/BaseGroupMemberViewController.swift b/Signal/src/ViewControllers/NewGroupView/BaseGroupMemberViewController.swift index db84bcdf13..35e188cdf8 100644 --- a/Signal/src/ViewControllers/NewGroupView/BaseGroupMemberViewController.swift +++ b/Signal/src/ViewControllers/NewGroupView/BaseGroupMemberViewController.swift @@ -76,7 +76,6 @@ public class BaseGroupMemberViewController: OWSViewController { private let recipientPicker = RecipientPickerViewController() - private let searchBar = OWSSearchBar() private let memberBar = NewGroupMembersBar() private let memberCountLabel = UILabel() private let memberCountWrapper = UIView() @@ -95,19 +94,6 @@ public class BaseGroupMemberViewController: OWSViewController { // First section. - if FeatureFlags.usernames { - searchBar.placeholder = NSLocalizedString("SEARCH_BY_NAME_OR_USERNAME_OR_NUMBER_PLACEHOLDER_TEXT", - comment: "Placeholder text indicating the user can search for contacts by name, username, or phone number.") - } else { - searchBar.placeholder = NSLocalizedString("SEARCH_BYNAMEORNUMBER_PLACEHOLDER_TEXT", - comment: "Placeholder text indicating the user can search for contacts by name or phone number.") - } - searchBar.accessibilityIdentifier = UIView.accessibilityIdentifier(in: self, - name: "member_search_bar") - searchBar.textField?.accessibilityIdentifier = UIView.accessibilityIdentifier(in: self, - name: "member_search_field") - - searchBar.delegate = self memberBar.delegate = self // Don't use dynamic type in this label. @@ -119,25 +105,17 @@ public class BaseGroupMemberViewController: OWSViewController { memberCountLabel.autoPinEdgesToSuperviewMargins() memberCountWrapper.layoutMargins = UIEdgeInsets(top: 0, leading: 12, bottom: 0, trailing: 12) - let firstSection = UIStackView(arrangedSubviews: [searchBar, memberBar, memberCountWrapper]) - firstSection.axis = .vertical - firstSection.alignment = .fill - view.addSubview(firstSection) - firstSection.autoPinWidthToSuperview() - firstSection.autoPin(toTopLayoutGuideOf: self, withInset: 0) - recipientPicker.allowsSelectingUnregisteredPhoneNumbers = false recipientPicker.shouldShowGroups = false recipientPicker.allowsSelectingUnregisteredPhoneNumbers = false - recipientPicker.shouldShowSearchBar = false recipientPicker.showUseAsyncSelection = true recipientPicker.delegate = self addChild(recipientPicker) view.addSubview(recipientPicker.view) + recipientPicker.view.autoPin(toTopLayoutGuideOf: self, withInset: 0) recipientPicker.view.autoPinEdge(toSuperviewSafeArea: .leading) recipientPicker.view.autoPinEdge(toSuperviewSafeArea: .trailing) - recipientPicker.view.autoPinEdge(.top, to: .bottom, of: firstSection) autoPinView(toBottomOfViewControllerOrKeyboard: recipientPicker.view, avoidNotch: false) updateMemberCount() @@ -210,7 +188,6 @@ public class BaseGroupMemberViewController: OWSViewController { groupMemberViewDelegate.groupMemberViewAddRecipient(recipient) recipientPicker.pickedRecipients = recipientSet.orderedMembers - self.searchBar.text = "" recipientPicker.clearSearchText() updateMemberBar() updateMemberCount() @@ -549,7 +526,7 @@ extension BaseGroupMemberViewController: RecipientPickerDelegate { if isPreExistingMember { imageView.setTemplateImageName("check-circle-solid-24", tintColor: Theme.washColor) } else if isCurrentMember { - imageView.setTemplateImageName("check-circle-solid-24", tintColor: .ows_accentBlue) + imageView.setTemplateImageName("check-circle-solid-24", tintColor: Theme.accentBlueColor) } else if isBlocked { // Use accessoryMessageForRecipient: to show blocked indicator. return nil @@ -559,11 +536,13 @@ extension BaseGroupMemberViewController: RecipientPickerDelegate { return imageView } - func recipientPickerTableViewWillBeginDragging(_ recipientPickerViewController: RecipientPickerViewController) { - _ = searchBar.resignFirstResponder() - } + func recipientPickerTableViewWillBeginDragging(_ recipientPickerViewController: RecipientPickerViewController) {} func recipientPickerNewGroupButtonWasPressed() {} + + func recipientPickerCustomHeaderViews() -> [UIView] { + return [memberBar, memberCountWrapper] + } } // MARK: - @@ -583,24 +562,3 @@ extension BaseGroupMemberViewController: OWSNavigationView { extension BaseGroupMemberViewController: NewGroupMembersBarDelegate { } - -// MARK: - - -extension BaseGroupMemberViewController: UISearchBarDelegate { - public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { - recipientPicker.customSearchQuery = searchText - } - - public func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { - searchBar.setShowsCancelButton(true, animated: true) - } - - public func searchBarTextDidEndEditing(_ searchBar: UISearchBar) { - searchBar.setShowsCancelButton(false, animated: true) - } - - public func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { - searchBar.text = nil - searchBar.resignFirstResponder() - } -} diff --git a/Signal/src/ViewControllers/NewGroupView/NewGroupConfirmViewController.swift b/Signal/src/ViewControllers/NewGroupView/NewGroupConfirmViewController.swift index 07040384cf..6a6ee557a7 100644 --- a/Signal/src/ViewControllers/NewGroupView/NewGroupConfirmViewController.swift +++ b/Signal/src/ViewControllers/NewGroupView/NewGroupConfirmViewController.swift @@ -99,6 +99,7 @@ public class NewGroupConfirmViewController: OWSViewController { firstSection.autoPinWidthToSuperview() firstSection.autoPin(toTopLayoutGuideOf: self, withInset: 8) + recipientTableView.customSectionHeaderFooterBackgroundColor = Theme.backgroundColor addChild(recipientTableView) view.addSubview(recipientTableView.view) diff --git a/Signal/src/ViewControllers/NewGroupView/NewGroupViewController.m b/Signal/src/ViewControllers/NewGroupView/NewGroupViewController.m index a0d52d835a..2b0c1b8318 100644 --- a/Signal/src/ViewControllers/NewGroupView/NewGroupViewController.m +++ b/Signal/src/ViewControllers/NewGroupView/NewGroupViewController.m @@ -490,6 +490,11 @@ NS_ASSUME_NONNULL_BEGIN OWSFailDebug(@"Invalid action."); } +- (NSArray *)recipientPickerCustomHeaderViews +{ + return @[]; +} + #pragma mark - OWSNavigationView - (BOOL)shouldCancelNavigationBack diff --git a/Signal/src/ViewControllers/OWSPinReminderViewController.swift b/Signal/src/ViewControllers/OWSPinReminderViewController.swift index 3427bc4b3f..df090302d9 100644 --- a/Signal/src/ViewControllers/OWSPinReminderViewController.swift +++ b/Signal/src/ViewControllers/OWSPinReminderViewController.swift @@ -167,7 +167,7 @@ public class PinReminderViewController: OWSViewController { // Secondary button let forgotButton = UIButton() forgotButton.setTitle(NSLocalizedString("PIN_REMINDER_FORGOT_PIN", comment: "Text asking if the user forgot their pin for the 'pin reminder' dialog."), for: .normal) - forgotButton.setTitleColor(.ows_accentBlue, for: .normal) + forgotButton.setTitleColor(Theme.accentBlueColor, for: .normal) forgotButton.titleLabel?.font = .ows_dynamicTypeSubheadlineClamped forgotButton.addTarget(self, action: #selector(forgotPressed), for: .touchUpInside) forgotButton.accessibilityIdentifier = "pinReminder.forgotButton" diff --git a/Signal/src/ViewControllers/OWSPinSetupViewController.swift b/Signal/src/ViewControllers/OWSPinSetupViewController.swift index 26676ec6b8..7c34b17230 100644 --- a/Signal/src/ViewControllers/OWSPinSetupViewController.swift +++ b/Signal/src/ViewControllers/OWSPinSetupViewController.swift @@ -278,7 +278,7 @@ public class PinSetupViewController: OWSViewController { pinStackRow.setContentHuggingVerticalHigh() pinStackRow.setCompressionResistanceVerticalHigh() - pinTypeToggle.setTitleColor(.ows_accentBlue, for: .normal) + pinTypeToggle.setTitleColor(Theme.accentBlueColor, for: .normal) pinTypeToggle.titleLabel?.font = .systemFont(ofSize: 15) pinTypeToggle.addTarget(self, action: #selector(togglePinType), for: .touchUpInside) pinTypeToggle.accessibilityIdentifier = "pinCreation.pinTypeToggle" diff --git a/Signal/src/ViewControllers/RecipientPicker/AddToBlockListViewController.swift b/Signal/src/ViewControllers/RecipientPicker/AddToBlockListViewController.swift index 6d68d75097..091a8c0318 100644 --- a/Signal/src/ViewControllers/RecipientPicker/AddToBlockListViewController.swift +++ b/Signal/src/ViewControllers/RecipientPicker/AddToBlockListViewController.swift @@ -24,6 +24,10 @@ class AddToBlockListViewController: OWSViewController { recipientPicker.delegate = self addChild(recipientPicker) view.addSubview(recipientPicker.view) + recipientPicker.view.autoPin(toTopLayoutGuideOf: self, withInset: 0) + recipientPicker.view.autoPinEdge(toSuperviewEdge: .leading) + recipientPicker.view.autoPinEdge(toSuperviewEdge: .trailing) + recipientPicker.view.autoPinEdge(toSuperviewEdge: .bottom) recipientPicker.findByPhoneNumberButtonTitle = NSLocalizedString( "BLOCK_LIST_VIEW_BLOCK_BUTTON", @@ -119,4 +123,6 @@ extension AddToBlockListViewController: RecipientPickerDelegate { func recipientPickerTableViewWillBeginDragging(_ recipientPickerViewController: RecipientPickerViewController) {} func recipientPickerNewGroupButtonWasPressed() {} + + func recipientPickerCustomHeaderViews() -> [UIView] { return [] } } diff --git a/Signal/src/ViewControllers/RecipientPicker/ComposeViewController.swift b/Signal/src/ViewControllers/RecipientPicker/ComposeViewController.swift index 60bde53e6d..28d0916043 100644 --- a/Signal/src/ViewControllers/RecipientPicker/ComposeViewController.swift +++ b/Signal/src/ViewControllers/RecipientPicker/ComposeViewController.swift @@ -14,6 +14,8 @@ class ComposeViewController: OWSViewController { title = NSLocalizedString("MESSAGE_COMPOSEVIEW_TITLE", comment: "Title for the compose view.") + view.backgroundColor = Theme.backgroundColor + let showNewGroupAsCell = RemoteConfig.groupsV2CreateGroups recipientPicker.allowsSelectingUnregisteredPhoneNumbers = false @@ -22,6 +24,10 @@ class ComposeViewController: OWSViewController { recipientPicker.delegate = self addChild(recipientPicker) view.addSubview(recipientPicker.view) + recipientPicker.view.autoPin(toTopLayoutGuideOf: self, withInset: 0) + recipientPicker.view.autoPinEdge(toSuperviewEdge: .leading) + recipientPicker.view.autoPinEdge(toSuperviewEdge: .trailing) + recipientPicker.view.autoPinEdge(toSuperviewEdge: .bottom) navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .stop, target: self, action: #selector(dismissPressed)) @@ -124,4 +130,6 @@ extension ComposeViewController: RecipientPickerDelegate { func recipientPickerNewGroupButtonWasPressed() { showNewGroupUI() } + + func recipientPickerCustomHeaderViews() -> [UIView] { return [] } } diff --git a/Signal/src/ViewControllers/RecipientPicker/RecipientPickerDelegate.swift b/Signal/src/ViewControllers/RecipientPicker/RecipientPickerDelegate.swift index 7ce0699331..32feabc6c1 100644 --- a/Signal/src/ViewControllers/RecipientPicker/RecipientPickerDelegate.swift +++ b/Signal/src/ViewControllers/RecipientPicker/RecipientPickerDelegate.swift @@ -33,6 +33,8 @@ protocol RecipientPickerDelegate: AnyObject { func recipientPickerTableViewWillBeginDragging(_ recipientPickerViewController: RecipientPickerViewController) func recipientPickerNewGroupButtonWasPressed() + + func recipientPickerCustomHeaderViews() -> [UIView] } @objc diff --git a/Signal/src/ViewControllers/RecipientPicker/RecipientPickerViewController.h b/Signal/src/ViewControllers/RecipientPicker/RecipientPickerViewController.h index eda832ec19..cdc5cac9f7 100644 --- a/Signal/src/ViewControllers/RecipientPicker/RecipientPickerViewController.h +++ b/Signal/src/ViewControllers/RecipientPicker/RecipientPickerViewController.h @@ -28,8 +28,6 @@ NS_ASSUME_NONNULL_BEGIN /// Defaults to `YES` @property (nonatomic) BOOL shouldShowAlphabetSlider; /// Defaults to `NO` -@property (nonatomic) BOOL shouldShowSearchBar; -/// Defaults to `NO` @property (nonatomic) BOOL shouldShowNewGroup; /// Defaults to `NO` @property (nonatomic) BOOL showUseAsyncSelection; @@ -40,8 +38,6 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, nullable) NSArray *pickedRecipients; -@property (nonatomic, nullable) NSString *customSearchQuery; - - (void)reloadContent; - (void)clearSearchText; diff --git a/Signal/src/ViewControllers/RecipientPicker/RecipientPickerViewController.m b/Signal/src/ViewControllers/RecipientPicker/RecipientPickerViewController.m index 1c0788ba48..ba4e14bd0d 100644 --- a/Signal/src/ViewControllers/RecipientPicker/RecipientPickerViewController.m +++ b/Signal/src/ViewControllers/RecipientPicker/RecipientPickerViewController.m @@ -47,13 +47,15 @@ const NSUInteger kMinimumSearchLength = 2; @property (nonatomic, readonly) FullTextSearcher *fullTextSearcher; +@property (nonatomic, readonly) UIStackView *signalContactsStackView; + @property (nonatomic, readonly) UIView *noSignalContactsView; @property (nonatomic, readonly) OWSTableViewController *tableViewController; @property (nonatomic, readonly) UILocalizedIndexedCollation *collation; -@property (nonatomic, readonly) UISearchBar *searchBar; +@property (nonatomic, nullable, readonly) UISearchBar *searchBar; @property (nonatomic, nullable) ComposeScreenSearchResultSet *searchResults; @property (nonatomic, nullable) NSString *lastSearchText; @property (nonatomic, nullable) OWSInviteFlow *inviteFlow; @@ -113,7 +115,6 @@ const NSUInteger kMinimumSearchLength = 2; _shouldShowGroups = YES; _shouldShowInvites = NO; _shouldShowAlphabetSlider = YES; - _shouldShowSearchBar = YES; return self; } @@ -121,6 +122,12 @@ const NSUInteger kMinimumSearchLength = 2; - (void)loadView { [super loadView]; + + _signalContactsStackView = [UIStackView new]; + self.signalContactsStackView.axis = UILayoutConstraintAxisVertical; + self.signalContactsStackView.alignment = UIStackViewAlignmentFill; + [self.view addSubview:self.signalContactsStackView]; + [self.signalContactsStackView autoPinEdgesToSuperviewEdges]; _searchResults = nil; _contactsViewHelper = [[ContactsViewHelper alloc] initWithDelegate:self]; @@ -128,41 +135,39 @@ const NSUInteger kMinimumSearchLength = 2; _collation = [UILocalizedIndexedCollation currentCollation]; // Search - if (self.shouldShowSearchBar) { - UISearchBar *searchBar = [OWSSearchBar new]; - _searchBar = searchBar; - searchBar.delegate = self; - if (SSKFeatureFlags.usernames) { - searchBar.placeholder = NSLocalizedString(@"SEARCH_BY_NAME_OR_USERNAME_OR_NUMBER_PLACEHOLDER_TEXT", - @"Placeholder text indicating the user can search for contacts by name, username, or phone number."); - } else { - searchBar.placeholder = NSLocalizedString(@"SEARCH_BYNAMEORNUMBER_PLACEHOLDER_TEXT", - @"Placeholder text indicating the user can search for contacts by name or phone number."); - } - [searchBar sizeToFit]; - SET_SUBVIEW_ACCESSIBILITY_IDENTIFIER(self, searchBar); - searchBar.textField.accessibilityIdentifier = ACCESSIBILITY_IDENTIFIER_WITH_NAME(self, @"contact_search"); + UISearchBar *searchBar = [OWSSearchBar new]; + _searchBar = searchBar; + searchBar.delegate = self; + if (SSKFeatureFlags.usernames) { + searchBar.placeholder = NSLocalizedString(@"SEARCH_BY_NAME_OR_USERNAME_OR_NUMBER_PLACEHOLDER_TEXT", + @"Placeholder text indicating the user can search for contacts by name, username, or phone number."); + } else { + searchBar.placeholder = NSLocalizedString(@"SEARCH_BYNAMEORNUMBER_PLACEHOLDER_TEXT", + @"Placeholder text indicating the user can search for contacts by name or phone number."); + } + [searchBar sizeToFit]; + SET_SUBVIEW_ACCESSIBILITY_IDENTIFIER(self, searchBar); + searchBar.textField.accessibilityIdentifier = ACCESSIBILITY_IDENTIFIER_WITH_NAME(self, @"contact_search"); + [self.signalContactsStackView addArrangedSubview:searchBar]; + [searchBar setCompressionResistanceVerticalHigh]; + [searchBar setContentHuggingVerticalHigh]; + + for (UIView *view in self.delegate.recipientPickerCustomHeaderViews) { + [self.signalContactsStackView addArrangedSubview:view]; } _tableViewController = [OWSTableViewController new]; _tableViewController.delegate = self; _tableViewController.tableViewStyle = UITableViewStylePlain; - // To automatically adjust our content inset appropriately on iOS9/10 - // 1. the tableViewController must be a childView - // 2. the scrollable view (tableView in this case) must be at index 0. [self addChildViewController:self.tableViewController]; - [self.view insertSubview:self.tableViewController.view atIndex:0]; + [self.signalContactsStackView addArrangedSubview:self.tableViewController.view]; + [self.tableViewController.view setCompressionResistanceVerticalLow]; + [self.tableViewController.view setContentHuggingVerticalLow]; // separatorStyle must be set _after_ the table view is added to the view hierarchy. self.tableViewController.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - - [self.tableViewController.view autoPinEdgesToSuperviewEdges]; - self.tableViewController.tableView.rowHeight = UITableViewAutomaticDimension; self.tableViewController.tableView.estimatedRowHeight = 60; - if (self.shouldShowSearchBar) { - _tableViewController.tableView.tableHeaderView = self.searchBar; - } _noSignalContactsView = [self createNoSignalContactsView]; self.noSignalContactsView.hidden = YES; @@ -256,15 +261,19 @@ const NSUInteger kMinimumSearchLength = 2; buttonStack.alignment = UIStackViewAlignmentFill; buttonStack.spacing = 16; - void (^addButton)(NSString *, SEL, NSString *, ThemeIcon) - = ^(NSString *title, SEL selector, NSString *accessibilityIdentifierName, ThemeIcon icon) { + void (^addButton)(NSString *, SEL, NSString *, ThemeIcon, NSUInteger) + = ^(NSString *title, + SEL selector, + NSString *accessibilityIdentifierName, + ThemeIcon icon, + NSUInteger innerIconSize) { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button addTarget:self action:selector forControlEvents:UIControlEventTouchUpInside]; SET_SUBVIEW_ACCESSIBILITY_IDENTIFIER(self, button); button.accessibilityIdentifier = ACCESSIBILITY_IDENTIFIER_WITH_NAME(self, accessibilityIdentifierName); [buttonStack addArrangedSubview:button]; - UIView *iconView = [OWSTableItem buildIconInCircleViewWithIcon:icon innerIconSize:28]; + UIView *iconView = [OWSTableItem buildIconInCircleViewWithIcon:icon innerIconSize:innerIconSize]; UILabel *label = [UILabel new]; label.text = title; @@ -289,7 +298,8 @@ const NSUInteger kMinimumSearchLength = 2; : @"Label for the 'create new group' button."), @selector(newGroupButtonPressed), @"newGroupButton", - ThemeIconComposeNewGroup); + ThemeIconComposeNewGroup, + 35); } if (self.allowsAddByPhoneNumber) { @@ -297,7 +307,8 @@ const NSUInteger kMinimumSearchLength = 2; @"Label for a button that lets users search for contacts by phone number"), @selector(hideBackgroundView), @"searchByPhoneNumberButton", - ThemeIconComposeFindByPhoneNumber); + ThemeIconComposeFindByPhoneNumber, + 42); } if (self.shouldShowInvites) { @@ -305,7 +316,8 @@ const NSUInteger kMinimumSearchLength = 2; "Label for the cell that presents the 'invite contacts' workflow."), @selector(presentInviteFlow), @"inviteContactsButton", - ThemeIconComposeInvite); + ThemeIconComposeInvite, + 38); } UIStackView *stackView = [[UIStackView alloc] initWithArrangedSubviews:@[ @@ -332,10 +344,6 @@ const NSUInteger kMinimumSearchLength = 2; [self.contactsViewHelper warmNonSignalContactsCacheAsync]; - if (self.shouldShowSearchBar) { - self.tableViewController.tableView.tableHeaderView = self.searchBar; - } - self.title = NSLocalizedString(@"MESSAGE_COMPOSEVIEW_TITLE", @""); } @@ -418,7 +426,7 @@ const NSUInteger kMinimumSearchLength = 2; NSString *cellName = NSLocalizedString(@"NEW_GROUP_BUTTON", comment : @"Label for the 'create new group' button."); UIView *iconView = [OWSTableItem buildIconInCircleViewWithIcon:ThemeIconComposeNewGroup - innerIconSize:28]; + innerIconSize:35]; UITableViewCell *cell = [OWSTableItem buildCellWithName:cellName iconView:iconView iconSpacing:kContactCellAvatarTextMargin]; @@ -444,7 +452,7 @@ const NSUInteger kMinimumSearchLength = 2; @"A label the cell that lets you add a new member to a group."); UIView *iconView = [OWSTableItem buildIconInCircleViewWithIcon:ThemeIconComposeFindByPhoneNumber - innerIconSize:28]; + innerIconSize:42]; UITableViewCell *cell = [OWSTableItem buildCellWithName:cellName iconView:iconView iconSpacing:kContactCellAvatarTextMargin]; @@ -472,7 +480,7 @@ const NSUInteger kMinimumSearchLength = 2; NSString *cellName = NSLocalizedString(@"INVITE_FRIENDS_CONTACT_TABLE_BUTTON", @"Label for the cell that presents the 'invite contacts' workflow."); UIView *iconView = [OWSTableItem buildIconInCircleViewWithIcon:ThemeIconComposeInvite - innerIconSize:28]; + innerIconSize:38]; UITableViewCell *cell = [OWSTableItem buildCellWithName:cellName iconView:iconView iconSpacing:kContactCellAvatarTextMargin]; @@ -505,8 +513,9 @@ const NSUInteger kMinimumSearchLength = 2; // If we have non-contact selections, add a title to the static section if (hadNonContactRecipient) { - staticSection.headerTitle = NSLocalizedString(@"NEW_GROUP_NON_CONTACTS_SECTION_TITLE", - @"a title for the selected section of the 'recipient picker' view."); + staticSection.customHeaderView = [self + buildSectionHeaderWithTitle:NSLocalizedString(@"NEW_GROUP_NON_CONTACTS_SECTION_TITLE", + @"a title for the selected section of the 'recipient picker' view.")]; } } @@ -641,12 +650,12 @@ const NSUInteger kMinimumSearchLength = 2; // To accomplish this we add a section with a blank title rather than omitting the section altogether, // in order for section indexes to match up correctly NSString *sectionTitle = contactItems.count > 0 ? self.collation.sectionTitles[i] : nil; - [contactSections addObject:[OWSTableSection sectionWithTitle:sectionTitle items:contactItems]]; + [contactSections addObject:[self buildSectionWithTitle:sectionTitle.uppercaseString items:contactItems]]; } } else { - OWSTableSection *contactsSection = [OWSTableSection new]; - contactsSection.headerTitle = NSLocalizedString(@"COMPOSE_MESSAGE_CONTACT_SECTION_TITLE", - @"Table section header for contact listing when composing a new message"); + OWSTableSection *contactsSection = + [self buildSectionWithTitle:NSLocalizedString(@"COMPOSE_MESSAGE_CONTACT_SECTION_TITLE", + @"Table section header for contact listing when composing a new message")]; for (SignalAccount *signalAccount in self.contactsViewHelper.signalAccounts) { [contactsSection @@ -659,6 +668,41 @@ const NSUInteger kMinimumSearchLength = 2; return [contactSections copy]; } +- (OWSTableSection *)buildSectionWithTitle:(nullable NSString *)sectionTitle +{ + return [self buildSectionWithTitle:sectionTitle items:@[]]; +} + +- (OWSTableSection *)buildSectionWithTitle:(nullable NSString *)sectionTitle items:(NSArray *)items +{ + OWSTableSection *section = [OWSTableSection new]; + [section addItems:items]; + + if (sectionTitle != nil) { + section.customHeaderView = [self buildSectionHeaderWithTitle:sectionTitle]; + } + + return section; +} + +- (UIView *)buildSectionHeaderWithTitle:(NSString *)sectionTitle +{ + UITextView *textView = [UITextView new]; + textView.backgroundColor = UIColor.clearColor; + textView.opaque = NO; + textView.editable = NO; + textView.contentInset = UIEdgeInsetsZero; + textView.textContainer.lineFragmentPadding = 0; + textView.scrollEnabled = NO; + textView.textColor = Theme.primaryTextColor; + textView.font = UIFont.ows_dynamicTypeBodyFont.ows_semibold; + textView.backgroundColor = Theme.washColor; + CGFloat tableEdgeInsets = UIDevice.currentDevice.isPlusSizePhone ? 20 : 16; + textView.textContainerInset = UIEdgeInsetsMake(5, tableEdgeInsets, 5, tableEdgeInsets); + textView.text = sectionTitle; + return textView; +} + - (NSArray *)contactsSectionsForSearchResults:(ComposeScreenSearchResultSet *)searchResults { __weak __typeof(self) weakSelf = self; @@ -672,9 +716,9 @@ const NSUInteger kMinimumSearchLength = 2; NSMutableSet *matchedAccountPhoneNumbers = [NSMutableSet new]; NSMutableSet *matchedAccountUsernames = [NSMutableSet new]; - OWSTableSection *contactsSection = [OWSTableSection new]; - contactsSection.headerTitle = NSLocalizedString(@"COMPOSE_MESSAGE_CONTACT_SECTION_TITLE", - @"Table section header for contact listing when composing a new message"); + OWSTableSection *contactsSection = + [self buildSectionWithTitle:NSLocalizedString(@"COMPOSE_MESSAGE_CONTACT_SECTION_TITLE", + @"Table section header for contact listing when composing a new message")]; OWSAssertIsOnMainThread(); [self.databaseStorage uiReadWithBlock:^(SDSAnyReadTransaction *transaction) { @@ -702,9 +746,9 @@ const NSUInteger kMinimumSearchLength = 2; if (self.shouldShowGroups) { // When searching, we include matching groups - OWSTableSection *groupSection = [OWSTableSection new]; - groupSection.headerTitle = NSLocalizedString(@"COMPOSE_MESSAGE_GROUP_SECTION_TITLE", - @"Table section header for group listing when composing a new message"); + OWSTableSection *groupSection = + [self buildSectionWithTitle:NSLocalizedString(@"COMPOSE_MESSAGE_GROUP_SECTION_TITLE", + @"Table section header for group listing when composing a new message")]; NSArray *filteredGroupThreads = searchResults.groupThreads; for (TSGroupThread *thread in filteredGroupThreads) { hasSearchResults = YES; @@ -716,9 +760,9 @@ const NSUInteger kMinimumSearchLength = 2; } } - OWSTableSection *phoneNumbersSection = [OWSTableSection new]; - phoneNumbersSection.headerTitle = NSLocalizedString(@"COMPOSE_MESSAGE_PHONE_NUMBER_SEARCH_SECTION_TITLE", - @"Table section header for phone number search when composing a new message"); + OWSTableSection *phoneNumbersSection = + [self buildSectionWithTitle:NSLocalizedString(@"COMPOSE_MESSAGE_PHONE_NUMBER_SEARCH_SECTION_TITLE", + @"Table section header for phone number search when composing a new message")]; NSArray *searchPhoneNumbers = [self parsePossibleSearchPhoneNumbers]; for (NSString *phoneNumber in searchPhoneNumbers) { @@ -796,9 +840,9 @@ const NSUInteger kMinimumSearchLength = 2; && ![matchedAccountUsernames containsObject:usernameMatch]) { hasSearchResults = YES; - OWSTableSection *usernameSection = [OWSTableSection new]; - usernameSection.headerTitle = NSLocalizedString(@"COMPOSE_MESSAGE_USERNAME_SEARCH_SECTION_TITLE", - @"Table section header for username search when composing a new message"); + OWSTableSection *usernameSection = [self + buildSectionWithTitle:NSLocalizedString(@"COMPOSE_MESSAGE_USERNAME_SEARCH_SECTION_TITLE", + @"Table section header for username search when composing a new message")]; [usernameSection addItem:[OWSTableItem itemWithCustomCellBlock:^{ @@ -904,12 +948,10 @@ const NSUInteger kMinimumSearchLength = 2; _isNoContactsModeActive = isNoContactsModeActive; if (isNoContactsModeActive) { - self.tableViewController.tableView.hidden = YES; - self.searchBar.hidden = YES; + self.signalContactsStackView.hidden = YES; self.noSignalContactsView.hidden = NO; } else { - self.tableViewController.tableView.hidden = NO; - self.searchBar.hidden = NO; + self.signalContactsStackView.hidden = NO; self.noSignalContactsView.hidden = YES; } @@ -918,7 +960,6 @@ const NSUInteger kMinimumSearchLength = 2; - (void)clearSearchText { - self.customSearchQuery = nil; self.searchBar.text = @""; [self searchTextDidChange]; } @@ -1216,16 +1257,9 @@ const NSUInteger kMinimumSearchLength = 2; return nil; } -- (void)setCustomSearchQuery:(nullable NSString *)customSearchQuery -{ - _customSearchQuery = customSearchQuery; - - [self searchTextDidChange]; -} - - (NSString *)searchText { - NSString *rawText = (self.customSearchQuery.length > 0 ? self.customSearchQuery : self.searchBar.text); + NSString *rawText = self.searchBar.text; return rawText.ows_stripped ?: @""; } diff --git a/Signal/src/ViewControllers/Registration/Onboarding2FAViewController.swift b/Signal/src/ViewControllers/Registration/Onboarding2FAViewController.swift index 2f012838a5..15bfaeeed8 100644 --- a/Signal/src/ViewControllers/Registration/Onboarding2FAViewController.swift +++ b/Signal/src/ViewControllers/Registration/Onboarding2FAViewController.swift @@ -118,7 +118,7 @@ public class Onboarding2FAViewController: OnboardingBaseViewController { pinStack.autoSetDimension(.width, toSize: 227) pinStackRow.setContentHuggingVerticalHigh() - pinTypeToggle.setTitleColor(.ows_accentBlue, for: .normal) + pinTypeToggle.setTitleColor(Theme.accentBlueColor, for: .normal) pinTypeToggle.titleLabel?.font = .ows_dynamicTypeSubheadlineClamped pinTypeToggle.addTarget(self, action: #selector(togglePinType), for: .touchUpInside) pinTypeToggle.accessibilityIdentifier = "pinCreation.pinTypeToggle" diff --git a/Signal/src/ViewControllers/Registration/OnboardingVerificationViewController.swift b/Signal/src/ViewControllers/Registration/OnboardingVerificationViewController.swift index 577bfae1e8..dfcd8e2752 100644 --- a/Signal/src/ViewControllers/Registration/OnboardingVerificationViewController.swift +++ b/Signal/src/ViewControllers/Registration/OnboardingVerificationViewController.swift @@ -437,12 +437,12 @@ public class OnboardingVerificationViewController: OnboardingBaseViewController codeStateLink.setTitle(title: NSLocalizedString("ONBOARDING_VERIFICATION_ORIGINAL_CODE_MISSING_LINK", comment: "Label for link that can be used when the original code did not arrive."), font: .ows_dynamicTypeBodyClamped, - titleColor: .ows_accentBlue) + titleColor: Theme.accentBlueColor) case .resent: codeStateLink.setTitle(title: NSLocalizedString("ONBOARDING_VERIFICATION_RESENT_CODE_MISSING_LINK", comment: "Label for link that can be used when the resent code did not arrive."), font: .ows_dynamicTypeBodyClamped, - titleColor: .ows_accentBlue) + titleColor: Theme.accentBlueColor) } } diff --git a/Signal/src/ViewControllers/ThreadSettings/ConversationSettingsViewController+Contents.swift b/Signal/src/ViewControllers/ThreadSettings/ConversationSettingsViewController+Contents.swift index 82de6208fe..4ff2723a54 100644 --- a/Signal/src/ViewControllers/ThreadSettings/ConversationSettingsViewController+Contents.swift +++ b/Signal/src/ViewControllers/ThreadSettings/ConversationSettingsViewController+Contents.swift @@ -589,7 +589,9 @@ extension ConversationSettingsViewController { cell.preservesSuperviewLayoutMargins = true cell.contentView.preservesSuperviewLayoutMargins = true - let iconView = OWSTableItem.buildIconInCircleView(icon: .settingsAddMembers, iconSize: kSmallAvatarSize) + let iconView = OWSTableItem.buildIconInCircleView(icon: .settingsAddMembers, + iconSize: kSmallAvatarSize, + innerIconSize: 22) let rowLabel = UILabel() rowLabel.text = NSLocalizedString("CONVERSATION_SETTINGS_ADD_MEMBERS", @@ -729,13 +731,13 @@ extension ConversationSettingsViewController { let iconView = OWSTableItem.buildIconInCircleView(icon: .settingsShowAllMembers, iconSize: kSmallAvatarSize, - innerIconSize: 12, + innerIconSize: 19, iconTintColor: Theme.secondaryTextAndIconColor) let rowLabel = UILabel() rowLabel.text = NSLocalizedString("CONVERSATION_SETTINGS_VIEW_ALL_MEMBERS", comment: "Label for 'view all members' button in conversation settings view.") - rowLabel.textColor = Theme.primaryTextColor + rowLabel.textColor = Theme.secondaryTextAndIconColor rowLabel.font = OWSTableItem.primaryLabelFont rowLabel.lineBreakMode = .byTruncatingTail diff --git a/Signal/src/ViewControllers/ThreadSettings/UpdateGroupViewController.m b/Signal/src/ViewControllers/ThreadSettings/UpdateGroupViewController.m index 02a6730859..8336b91b16 100644 --- a/Signal/src/ViewControllers/ThreadSettings/UpdateGroupViewController.m +++ b/Signal/src/ViewControllers/ThreadSettings/UpdateGroupViewController.m @@ -568,6 +568,11 @@ NS_ASSUME_NONNULL_BEGIN OWSFailDebug(@"Invalid action."); } +- (NSArray *)recipientPickerCustomHeaderViews +{ + return @[]; +} + #pragma mark - OWSNavigationView - (BOOL)shouldCancelNavigationBack diff --git a/Signal/src/views/DismissableTextField.swift b/Signal/src/views/DismissableTextField.swift index 24da5a7b0c..343313b6e7 100644 --- a/Signal/src/views/DismissableTextField.swift +++ b/Signal/src/views/DismissableTextField.swift @@ -18,7 +18,7 @@ class DismissInputBar: UIToolbar { let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) let dismissButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(didTapDone)) dismissButton.imageInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 40) - dismissButton.tintColor = UIColor.ows_accentBlue + dismissButton.tintColor = Theme.accentBlueColor self.items = [spacer, dismissButton] self.isTranslucent = false diff --git a/SignalMessaging/ViewControllers/MediaMessageView.swift b/SignalMessaging/ViewControllers/MediaMessageView.swift index 33e60c8bc0..d7c98a2cc9 100644 --- a/SignalMessaging/ViewControllers/MediaMessageView.swift +++ b/SignalMessaging/ViewControllers/MediaMessageView.swift @@ -323,7 +323,7 @@ public class MediaMessageView: UIView, OWSAudioPlayerDelegate { private var controlTintColor: UIColor { switch mode { case .small, .large: - return UIColor.ows_accentBlue + return Theme.accentBlueColor case .attachmentApproval: return UIColor.white } diff --git a/SignalMessaging/ViewControllers/OWSTableViewController.h b/SignalMessaging/ViewControllers/OWSTableViewController.h index 6b69c18bd2..bae32851a2 100644 --- a/SignalMessaging/ViewControllers/OWSTableViewController.h +++ b/SignalMessaging/ViewControllers/OWSTableViewController.h @@ -41,6 +41,8 @@ extern const CGFloat kOWSTable_DefaultCellHeight; - (void)addItem:(OWSTableItem *)item; +- (void)addItems:(NSArray *)items; + - (NSUInteger)itemCount; @end @@ -173,6 +175,8 @@ typedef BOOL (^OWSTableSwitchBlock)(void); @property (nonatomic) BOOL useThemeBackgroundColors; +@property (nonatomic, nullable) UIColor *customSectionHeaderFooterBackgroundColor; + - (instancetype)init NS_DESIGNATED_INITIALIZER; #pragma mark - Presentation diff --git a/SignalMessaging/ViewControllers/OWSTableViewController.m b/SignalMessaging/ViewControllers/OWSTableViewController.m index 59d4a80709..9ef1b9b8c0 100644 --- a/SignalMessaging/ViewControllers/OWSTableViewController.m +++ b/SignalMessaging/ViewControllers/OWSTableViewController.m @@ -75,6 +75,13 @@ const CGFloat kOWSTable_DefaultCellHeight = 45.f; [_items addObject:item]; } +- (void)addItems:(NSArray *)items +{ + for (OWSTableItem *item in items) { + [self addItem:item]; + } +} + - (NSUInteger)itemCount { return _items.count; @@ -674,7 +681,6 @@ NSString *const kOWSTableCellIdentifier = @"kOWSTableCellIdentifier"; UITextView *textView = [LinkingTextView new]; textView.textColor = Theme.secondaryTextAndIconColor; textView.font = UIFont.ows_dynamicTypeCaption1Font; - textView.backgroundColor = self.sectionHeaderAndFooterBackgroundColor; CGFloat tableEdgeInsets = UIDevice.currentDevice.isPlusSizePhone ? 20 : 16; textView.textContainerInset = UIEdgeInsetsMake(16, tableEdgeInsets, 6, tableEdgeInsets); @@ -701,7 +707,6 @@ NSString *const kOWSTableCellIdentifier = @"kOWSTableCellIdentifier"; UITextView *textView = [LinkingTextView new]; textView.textColor = UIColor.ows_gray45Color; textView.font = UIFont.ows_dynamicTypeCaption1Font; - textView.backgroundColor = self.sectionHeaderAndFooterBackgroundColor; CGFloat tableEdgeInsets = UIDevice.currentDevice.isPlusSizePhone ? 20 : 16; textView.textContainerInset = UIEdgeInsetsMake(6, tableEdgeInsets, 12, tableEdgeInsets); @@ -870,11 +875,6 @@ NSString *const kOWSTableCellIdentifier = @"kOWSTableCellIdentifier"; self.tableView.separatorColor = Theme.cellSeparatorColor; } -- (nullable UIColor *)sectionHeaderAndFooterBackgroundColor -{ - return (self.useThemeBackgroundColors ? Theme.tableViewBackgroundColor : Theme.secondaryBackgroundColor); -} - @end NS_ASSUME_NONNULL_END diff --git a/SignalMessaging/ViewControllers/OWSTableViewController.swift b/SignalMessaging/ViewControllers/OWSTableViewController.swift index 75b6d7ec23..0f282f257c 100644 --- a/SignalMessaging/ViewControllers/OWSTableViewController.swift +++ b/SignalMessaging/ViewControllers/OWSTableViewController.swift @@ -8,11 +8,11 @@ import Foundation public extension OWSTableItem { static var primaryLabelFont: UIFont { - return UIFont.ows_dynamicTypeCalloutClamped + return UIFont.ows_dynamicTypeBodyClamped } static var accessoryLabelFont: UIFont { - return UIFont.ows_dynamicTypeCalloutClamped + return UIFont.ows_dynamicTypeBodyClamped } static var iconSpacing: CGFloat { @@ -184,7 +184,7 @@ public extension OWSTableItem { if let iconTintColor = iconTintColor { iconView.tintColor = iconTintColor } else { - iconView.tintColor = .ows_accentBlue + iconView.tintColor = Theme.accentBlueColor } let iconWrapper = UIView.container() iconWrapper.addSubview(iconView) diff --git a/SignalMessaging/ViewControllers/SelectThreadViewController.m b/SignalMessaging/ViewControllers/SelectThreadViewController.m index e64651fd37..a964bd9d8b 100644 --- a/SignalMessaging/ViewControllers/SelectThreadViewController.m +++ b/SignalMessaging/ViewControllers/SelectThreadViewController.m @@ -101,6 +101,7 @@ NS_ASSUME_NONNULL_BEGIN // Table _tableViewController = [OWSTableViewController new]; _tableViewController.delegate = self; + _tableViewController.customSectionHeaderFooterBackgroundColor = Theme.backgroundColor; [self.view addSubview:self.tableViewController.view]; [self.tableViewController.view autoPinEdgeToSuperviewSafeArea:ALEdgeLeading]; [self.tableViewController.view autoPinEdgeToSuperviewSafeArea:ALEdgeTrailing]; diff --git a/SignalMessaging/ViewControllers/Stickers/ManageStickersViewController.swift b/SignalMessaging/ViewControllers/Stickers/ManageStickersViewController.swift index 4447f40c03..046e24677a 100644 --- a/SignalMessaging/ViewControllers/Stickers/ManageStickersViewController.swift +++ b/SignalMessaging/ViewControllers/Stickers/ManageStickersViewController.swift @@ -360,7 +360,7 @@ public class ManageStickersViewController: OWSTableViewController { var authorViews = [UIView]() if isDefaultStickerPack { let builtInPackView = UIImageView() - builtInPackView.setTemplateImageName("check-circle-filled-16", tintColor: UIColor.ows_accentBlue) + builtInPackView.setTemplateImageName("check-circle-filled-16", tintColor: Theme.accentBlueColor) builtInPackView.setCompressionResistanceHigh() builtInPackView.setContentHuggingHigh() authorViews.append(builtInPackView) diff --git a/SignalMessaging/ViewControllers/Stickers/StickerPackViewController.swift b/SignalMessaging/ViewControllers/Stickers/StickerPackViewController.swift index 54f73f1f93..e2194fb9a8 100644 --- a/SignalMessaging/ViewControllers/Stickers/StickerPackViewController.swift +++ b/SignalMessaging/ViewControllers/Stickers/StickerPackViewController.swift @@ -121,7 +121,7 @@ public class StickerPackViewController: OWSViewController { authorLabel.font = UIFont.ows_dynamicTypeBody - defaultPackIconView.setTemplateImageName("check-circle-filled-16", tintColor: UIColor.ows_accentBlue) + defaultPackIconView.setTemplateImageName("check-circle-filled-16", tintColor: Theme.accentBlueColor) defaultPackIconView.isHidden = true shareButton.setTemplateImageName("forward-solid-24", tintColor: Theme.darkThemePrimaryColor) diff --git a/SignalMessaging/appearance/Theme+OWS.swift b/SignalMessaging/appearance/Theme+OWS.swift index e9f9f94a14..99667953eb 100644 --- a/SignalMessaging/appearance/Theme+OWS.swift +++ b/SignalMessaging/appearance/Theme+OWS.swift @@ -135,9 +135,9 @@ public extension Theme { case .settingsSearch: return "search-24" case .settingsAddMembers: - return "plus-24" + return "plus-256" case .settingsShowAllMembers: - return "ic_chevron_down" + return "chevron-down-256" // Input Toolbar case .stickerButton: @@ -177,11 +177,11 @@ public extension Theme { case .compose: return isDarkThemeEnabled ? "compose-solid-24" : "compose-outline-24" case .composeNewGroup: - return "group-outline-32" + return "group-outline-256" case .composeFindByPhoneNumber: - return "phone-number-32" + return "phone-number-256" case .composeInvite: - return "invite-outline-32" + return "invite-outline-256" case .phone: return isDarkThemeEnabled ? "button_phone_white" : "phone-right-outline-24"