Merge branch 'charlesmchen/groupsV2designAgainV2' into release/3.8.0
This commit is contained in:
commit
7fbc9cdf04
@ -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 = "<group>"; };
|
||||
8855DF88238F2E690066D96F /* EmojiCountsCollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiCountsCollectionView.swift; sourceTree = "<group>"; };
|
||||
88594E592335B08000390B19 /* AudioMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioMessageView.swift; sourceTree = "<group>"; };
|
||||
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 = "<group>"; };
|
||||
885AC56823AB42430077705E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
885AC57023AB428C0077705E /* NotificationServiceExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationServiceExtension.entitlements; sourceTree = "<group>"; };
|
||||
@ -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 = "<group>";
|
||||
@ -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 = (
|
||||
|
||||
21
Signal/Images.xcassets/add-members-256.imageset/Contents.json
vendored
Normal file
21
Signal/Images.xcassets/add-members-256.imageset/Contents.json
vendored
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
79
Signal/Images.xcassets/add-members-256.imageset/add-members-256.pdf
vendored
Normal file
79
Signal/Images.xcassets/add-members-256.imageset/add-members-256.pdf
vendored
Normal file
@ -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
|
||||
21
Signal/Images.xcassets/chevron-down-256.imageset/Contents.json
vendored
Normal file
21
Signal/Images.xcassets/chevron-down-256.imageset/Contents.json
vendored
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
73
Signal/Images.xcassets/chevron-down-256.imageset/view-all-256.pdf
vendored
Normal file
73
Signal/Images.xcassets/chevron-down-256.imageset/view-all-256.pdf
vendored
Normal file
@ -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
|
||||
21
Signal/Images.xcassets/invite-outline-256.imageset/Contents.json
vendored
Normal file
21
Signal/Images.xcassets/invite-outline-256.imageset/Contents.json
vendored
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
122
Signal/Images.xcassets/invite-outline-256.imageset/invite-outline-256.pdf
vendored
Normal file
122
Signal/Images.xcassets/invite-outline-256.imageset/invite-outline-256.pdf
vendored
Normal file
@ -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
|
||||
21
Signal/Images.xcassets/invite-outline-40.imageset/Contents.json
vendored
Normal file
21
Signal/Images.xcassets/invite-outline-40.imageset/Contents.json
vendored
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
122
Signal/Images.xcassets/invite-outline-40.imageset/invite-outline-40.pdf
vendored
Normal file
122
Signal/Images.xcassets/invite-outline-40.imageset/invite-outline-40.pdf
vendored
Normal file
@ -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
|
||||
21
Signal/Images.xcassets/phone-number-256.imageset/Contents.json
vendored
Normal file
21
Signal/Images.xcassets/phone-number-256.imageset/Contents.json
vendored
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
101
Signal/Images.xcassets/phone-number-256.imageset/invite-friends-256.pdf
vendored
Normal file
101
Signal/Images.xcassets/phone-number-256.imageset/invite-friends-256.pdf
vendored
Normal file
@ -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
|
||||
21
Signal/Images.xcassets/phone-number-40.imageset/Contents.json
vendored
Normal file
21
Signal/Images.xcassets/phone-number-40.imageset/Contents.json
vendored
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
101
Signal/Images.xcassets/phone-number-40.imageset/invite-friends-40.pdf
vendored
Normal file
101
Signal/Images.xcassets/phone-number-40.imageset/invite-friends-40.pdf
vendored
Normal file
@ -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
|
||||
21
Signal/Images.xcassets/plus-256.imageset/Contents.json
vendored
Normal file
21
Signal/Images.xcassets/plus-256.imageset/Contents.json
vendored
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
79
Signal/Images.xcassets/plus-256.imageset/add-members-256.pdf
vendored
Normal file
79
Signal/Images.xcassets/plus-256.imageset/add-members-256.pdf
vendored
Normal file
@ -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
|
||||
21
Signal/Images.xcassets/view-all-256.imageset/Contents.json
vendored
Normal file
21
Signal/Images.xcassets/view-all-256.imageset/Contents.json
vendored
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
73
Signal/Images.xcassets/view-all-256.imageset/view-all-256.pdf
vendored
Normal file
73
Signal/Images.xcassets/view-all-256.imageset/view-all-256.pdf
vendored
Normal file
@ -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
|
||||
@ -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)
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -490,6 +490,11 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
OWSFailDebug(@"Invalid action.");
|
||||
}
|
||||
|
||||
- (NSArray<UIView *> *)recipientPickerCustomHeaderViews
|
||||
{
|
||||
return @[];
|
||||
}
|
||||
|
||||
#pragma mark - OWSNavigationView
|
||||
|
||||
- (BOOL)shouldCancelNavigationBack
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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 [] }
|
||||
}
|
||||
|
||||
@ -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 [] }
|
||||
}
|
||||
|
||||
@ -33,6 +33,8 @@ protocol RecipientPickerDelegate: AnyObject {
|
||||
func recipientPickerTableViewWillBeginDragging(_ recipientPickerViewController: RecipientPickerViewController)
|
||||
|
||||
func recipientPickerNewGroupButtonWasPressed()
|
||||
|
||||
func recipientPickerCustomHeaderViews() -> [UIView]
|
||||
}
|
||||
|
||||
@objc
|
||||
|
||||
@ -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<PickedRecipient *> *pickedRecipients;
|
||||
|
||||
@property (nonatomic, nullable) NSString *customSearchQuery;
|
||||
|
||||
- (void)reloadContent;
|
||||
|
||||
- (void)clearSearchText;
|
||||
|
||||
@ -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<OWSTableItem *> *)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<OWSTableSection *> *)contactsSectionsForSearchResults:(ComposeScreenSearchResultSet *)searchResults
|
||||
{
|
||||
__weak __typeof(self) weakSelf = self;
|
||||
@ -672,9 +716,9 @@ const NSUInteger kMinimumSearchLength = 2;
|
||||
NSMutableSet<NSString *> *matchedAccountPhoneNumbers = [NSMutableSet new];
|
||||
NSMutableSet<NSString *> *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<TSGroupThread *> *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<NSString *> *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 ?: @"";
|
||||
}
|
||||
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -568,6 +568,11 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
OWSFailDebug(@"Invalid action.");
|
||||
}
|
||||
|
||||
- (NSArray<UIView *> *)recipientPickerCustomHeaderViews
|
||||
{
|
||||
return @[];
|
||||
}
|
||||
|
||||
#pragma mark - OWSNavigationView
|
||||
|
||||
- (BOOL)shouldCancelNavigationBack
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -41,6 +41,8 @@ extern const CGFloat kOWSTable_DefaultCellHeight;
|
||||
|
||||
- (void)addItem:(OWSTableItem *)item;
|
||||
|
||||
- (void)addItems:(NSArray<OWSTableItem *> *)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
|
||||
|
||||
@ -75,6 +75,13 @@ const CGFloat kOWSTable_DefaultCellHeight = 45.f;
|
||||
[_items addObject:item];
|
||||
}
|
||||
|
||||
- (void)addItems:(NSArray<OWSTableItem *> *)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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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];
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user