Production logging & sign up error handling
This commit is contained in:
parent
6c2f33a6d5
commit
c69747e48b
1
Podfile
1
Podfile
|
@ -6,3 +6,4 @@ pod 'UICKeyChainStore', '~> 1.0.5'
|
||||||
pod 'OpenSSL', '~> 1.0.108'
|
pod 'OpenSSL', '~> 1.0.108'
|
||||||
pod 'MMDrawerController', '~> 0.5.0'
|
pod 'MMDrawerController', '~> 0.5.0'
|
||||||
pod 'libPhoneNumber-iOS', '~> 0.7'
|
pod 'libPhoneNumber-iOS', '~> 0.7'
|
||||||
|
pod 'CocoaLumberjack'
|
||||||
|
|
|
@ -3426,6 +3426,174 @@
|
||||||
/* End PBXVariantGroup section */
|
/* End PBXVariantGroup section */
|
||||||
|
|
||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
|
B6B9EB4D196190F5009024F0 /* Ad-Hoc Distribution */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES;
|
||||||
|
CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES;
|
||||||
|
CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||||
|
CLANG_CXX_LIBRARY = "compiler-default";
|
||||||
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_RECEIVER_WEAK = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||||
|
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
|
||||||
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
|
CODE_SIGN_IDENTITY = "";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
||||||
|
COPY_PHASE_STRIP = NO;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
|
GCC_GENERATE_TEST_COVERAGE_FILES = NO;
|
||||||
|
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"DEBUG=1",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
|
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||||
|
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
||||||
|
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
|
||||||
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
|
||||||
|
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||||
|
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
|
||||||
|
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||||
|
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES;
|
||||||
|
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||||
|
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES;
|
||||||
|
GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
|
||||||
|
GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
|
||||||
|
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
|
||||||
|
GCC_WARN_MISSING_PARENTHESES = YES;
|
||||||
|
GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = YES;
|
||||||
|
GCC_WARN_SHADOW = YES;
|
||||||
|
GCC_WARN_SIGN_COMPARE = YES;
|
||||||
|
GCC_WARN_STRICT_SELECTOR_MATCH = YES;
|
||||||
|
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||||
|
GCC_WARN_UNKNOWN_PRAGMAS = YES;
|
||||||
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
|
GCC_WARN_UNUSED_LABEL = YES;
|
||||||
|
GCC_WARN_UNUSED_VALUE = YES;
|
||||||
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
|
HEADER_SEARCH_PATHS = "";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||||
|
ONLY_ACTIVE_ARCH = NO;
|
||||||
|
OTHER_CFLAGS = "-fobjc-arc-exceptions";
|
||||||
|
PROVISIONING_PROFILE = "";
|
||||||
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
VALIDATE_PRODUCT = YES;
|
||||||
|
};
|
||||||
|
name = "Ad-Hoc Distribution";
|
||||||
|
};
|
||||||
|
B6B9EB4E196190F5009024F0 /* Ad-Hoc Distribution */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = C71793B33D9C45079F74487E /* Pods.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_IDENTITY = "";
|
||||||
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"\"$(SRCROOT)\"",
|
||||||
|
);
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
|
GCC_PREFIX_HEADER = "Signal/Signal-Prefix.pch";
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
"DEBUG=1",
|
||||||
|
"$(inherited)",
|
||||||
|
HAVE_CONFIG_H,
|
||||||
|
);
|
||||||
|
GCC_STRICT_ALIASING = NO;
|
||||||
|
GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = NO;
|
||||||
|
GCC_WARN_STRICT_SELECTOR_MATCH = YES;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
HEADER_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"\"${SRCROOT}/RedPhone/lib/speex/include\"",
|
||||||
|
"\"${SRCROOT}/RedPhone/lib/ogg/include\"",
|
||||||
|
"\"${SRCROOT}/RedPhone/lib/debug/include\"",
|
||||||
|
"\"$(SRCROOT)/libtommath\"",
|
||||||
|
"\"$(SRCROOT)/libtomcrypt/headers\"",
|
||||||
|
"\"$(SRCROOT)/spandsp/spandsp/spandsp\"",
|
||||||
|
"\"$(SRCROOT)/MMDrawerController\"",
|
||||||
|
"\"$(SRCROOT)/Libraries\"/**",
|
||||||
|
);
|
||||||
|
INFOPLIST_FILE = "$(SRCROOT)/Signal/Signal-Info.plist";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||||
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"$(SRCROOT)",
|
||||||
|
);
|
||||||
|
LLVM_LTO = NO;
|
||||||
|
OTHER_LDFLAGS = "$(inherited)";
|
||||||
|
PRODUCT_NAME = Signal;
|
||||||
|
PROVISIONING_PROFILE = "B26CF658-AD7F-4F4C-B94F-74884941DF87";
|
||||||
|
SDKROOT = iphoneos;
|
||||||
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
|
TEST_AFTER_BUILD = YES;
|
||||||
|
VALID_ARCHS = "arm64 armv7 armv7s i386";
|
||||||
|
WRAPPER_EXTENSION = app;
|
||||||
|
};
|
||||||
|
name = "Ad-Hoc Distribution";
|
||||||
|
};
|
||||||
|
B6B9EB4F196190F5009024F0 /* Ad-Hoc Distribution */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
baseConfigurationReference = C71793B33D9C45079F74487E /* Pods.xcconfig */;
|
||||||
|
buildSettings = {
|
||||||
|
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/Signal.app/Signal";
|
||||||
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
|
"\"$(SDKROOT)/Developer/Library/Frameworks\"",
|
||||||
|
"\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\"",
|
||||||
|
);
|
||||||
|
GCC_GENERATE_TEST_COVERAGE_FILES = NO;
|
||||||
|
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
|
GCC_PREFIX_HEADER = "Signal/Signal-Prefix.pch";
|
||||||
|
GCC_VERSION = "";
|
||||||
|
GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = NO;
|
||||||
|
GCC_WARN_STRICT_SELECTOR_MATCH = YES;
|
||||||
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
HEADER_SEARCH_PATHS = (
|
||||||
|
"${PODS_HEADERS_SEARCH_PATHS}",
|
||||||
|
"$(inherited)",
|
||||||
|
"\"${SRCROOT}/Signal/lib/speex/include\"",
|
||||||
|
"\"${SRCROOT}/Signal/lib/ogg/include\"",
|
||||||
|
"\"${SRCROOT}/Signal/lib/debug/include\"",
|
||||||
|
"\"$(SRCROOT)/libtommath\"",
|
||||||
|
"\"$(SRCROOT)/libtomcrypt/headers\"",
|
||||||
|
"\"$(SRCROOT)/spandsp/spandsp/spandsp\"",
|
||||||
|
"\"$(SRCROOT)/Libraries\"/**",
|
||||||
|
);
|
||||||
|
INFOPLIST_FILE = "Signal/test/Supporting Files/SignalTests-Info.plist";
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||||
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"$(inherited)",
|
||||||
|
"$(SRCROOT)",
|
||||||
|
);
|
||||||
|
OTHER_LDFLAGS = (
|
||||||
|
"-ObjC",
|
||||||
|
"$(inherited)",
|
||||||
|
);
|
||||||
|
PRODUCT_NAME = SignalTests;
|
||||||
|
TEST_HOST = "$(BUNDLE_LOADER)";
|
||||||
|
VALID_ARCHS = "arm64 armv7s armv7 i386";
|
||||||
|
WRAPPER_EXTENSION = octest;
|
||||||
|
};
|
||||||
|
name = "Ad-Hoc Distribution";
|
||||||
|
};
|
||||||
D221A0BA169C9E5F00537ABF /* Debug */ = {
|
D221A0BA169C9E5F00537ABF /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
@ -3446,14 +3614,14 @@
|
||||||
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||||
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
|
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CODE_SIGN_IDENTITY = "iPhone Distribution";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_GENERATE_TEST_COVERAGE_FILES = NO;
|
GCC_GENERATE_TEST_COVERAGE_FILES = NO;
|
||||||
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
|
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
|
||||||
GCC_OPTIMIZATION_LEVEL = 3;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"DEBUG=1",
|
"DEBUG=1",
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -3489,14 +3657,14 @@
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
OTHER_CFLAGS = "-fobjc-arc-exceptions";
|
OTHER_CFLAGS = "-fobjc-arc-exceptions";
|
||||||
PROVISIONING_PROFILE = "25E52683-9ADD-415E-A1E0-63A1C7ECF872";
|
PROVISIONING_PROFILE = "";
|
||||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "25E52683-9ADD-415E-A1E0-63A1C7ECF872";
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
VALIDATE_PRODUCT = YES;
|
VALIDATE_PRODUCT = YES;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
D221A0BB169C9E5F00537ABF /* Release */ = {
|
D221A0BB169C9E5F00537ABF /* App Store Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
|
@ -3516,12 +3684,13 @@
|
||||||
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||||
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
|
CLANG_WARN__ARC_BRIDGE_CAST_NONARC = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
CODE_SIGN_IDENTITY = "iPhone Distribution";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
||||||
COPY_PHASE_STRIP = YES;
|
COPY_PHASE_STRIP = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_GENERATE_TEST_COVERAGE_FILES = NO;
|
GCC_GENERATE_TEST_COVERAGE_FILES = NO;
|
||||||
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
|
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
|
||||||
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
||||||
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
|
GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS = YES;
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
|
@ -3555,25 +3724,25 @@
|
||||||
"-DNS_BLOCK_ASSERTIONS=1",
|
"-DNS_BLOCK_ASSERTIONS=1",
|
||||||
"-fobjc-arc-exceptions",
|
"-fobjc-arc-exceptions",
|
||||||
);
|
);
|
||||||
PROVISIONING_PROFILE = "25E52683-9ADD-415E-A1E0-63A1C7ECF872";
|
PROVISIONING_PROFILE = "";
|
||||||
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "25E52683-9ADD-415E-A1E0-63A1C7ECF872";
|
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
VALIDATE_PRODUCT = YES;
|
VALIDATE_PRODUCT = YES;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = "App Store Release";
|
||||||
};
|
};
|
||||||
D221A0BD169C9E5F00537ABF /* Debug */ = {
|
D221A0BD169C9E5F00537ABF /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = C71793B33D9C45079F74487E /* Pods.xcconfig */;
|
baseConfigurationReference = C71793B33D9C45079F74487E /* Pods.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"\"$(SRCROOT)\"",
|
"\"$(SRCROOT)\"",
|
||||||
);
|
);
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 3;
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||||
GCC_PREFIX_HEADER = "Signal/Signal-Prefix.pch";
|
GCC_PREFIX_HEADER = "Signal/Signal-Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
|
@ -3614,11 +3783,11 @@
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
D221A0BE169C9E5F00537ABF /* Release */ = {
|
D221A0BE169C9E5F00537ABF /* App Store Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = C71793B33D9C45079F74487E /* Pods.xcconfig */;
|
baseConfigurationReference = C71793B33D9C45079F74487E /* Pods.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
|
@ -3653,14 +3822,14 @@
|
||||||
LLVM_LTO = NO;
|
LLVM_LTO = NO;
|
||||||
OTHER_LDFLAGS = "$(inherited)";
|
OTHER_LDFLAGS = "$(inherited)";
|
||||||
PRODUCT_NAME = Signal;
|
PRODUCT_NAME = Signal;
|
||||||
PROVISIONING_PROFILE = "";
|
PROVISIONING_PROFILE = "7214A823-1F7A-4460-82D8-D89CA511CEA6";
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
TARGETED_DEVICE_FAMILY = 1;
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
TEST_AFTER_BUILD = YES;
|
TEST_AFTER_BUILD = YES;
|
||||||
VALID_ARCHS = "arm64 armv7 armv7s i386";
|
VALID_ARCHS = "arm64 armv7 armv7s i386";
|
||||||
WRAPPER_EXTENSION = app;
|
WRAPPER_EXTENSION = app;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = "App Store Release";
|
||||||
};
|
};
|
||||||
D221A0C0169C9E5F00537ABF /* Debug */ = {
|
D221A0C0169C9E5F00537ABF /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
|
@ -3708,7 +3877,7 @@
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
D221A0C1169C9E5F00537ABF /* Release */ = {
|
D221A0C1169C9E5F00537ABF /* App Store Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = C71793B33D9C45079F74487E /* Pods.xcconfig */;
|
baseConfigurationReference = C71793B33D9C45079F74487E /* Pods.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
@ -3752,7 +3921,7 @@
|
||||||
VALID_ARCHS = "arm64 armv7s armv7 i386";
|
VALID_ARCHS = "arm64 armv7s armv7 i386";
|
||||||
WRAPPER_EXTENSION = octest;
|
WRAPPER_EXTENSION = octest;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = "App Store Release";
|
||||||
};
|
};
|
||||||
/* End XCBuildConfiguration section */
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
|
@ -3761,28 +3930,31 @@
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D221A0BA169C9E5F00537ABF /* Debug */,
|
D221A0BA169C9E5F00537ABF /* Debug */,
|
||||||
D221A0BB169C9E5F00537ABF /* Release */,
|
B6B9EB4D196190F5009024F0 /* Ad-Hoc Distribution */,
|
||||||
|
D221A0BB169C9E5F00537ABF /* App Store Release */,
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = "App Store Release";
|
||||||
};
|
};
|
||||||
D221A0BC169C9E5F00537ABF /* Build configuration list for PBXNativeTarget "Signal" */ = {
|
D221A0BC169C9E5F00537ABF /* Build configuration list for PBXNativeTarget "Signal" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D221A0BD169C9E5F00537ABF /* Debug */,
|
D221A0BD169C9E5F00537ABF /* Debug */,
|
||||||
D221A0BE169C9E5F00537ABF /* Release */,
|
B6B9EB4E196190F5009024F0 /* Ad-Hoc Distribution */,
|
||||||
|
D221A0BE169C9E5F00537ABF /* App Store Release */,
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = "App Store Release";
|
||||||
};
|
};
|
||||||
D221A0BF169C9E5F00537ABF /* Build configuration list for PBXNativeTarget "SignalTests" */ = {
|
D221A0BF169C9E5F00537ABF /* Build configuration list for PBXNativeTarget "SignalTests" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
D221A0C0169C9E5F00537ABF /* Debug */,
|
D221A0C0169C9E5F00537ABF /* Debug */,
|
||||||
D221A0C1169C9E5F00537ABF /* Release */,
|
B6B9EB4F196190F5009024F0 /* Ad-Hoc Distribution */,
|
||||||
|
D221A0C1169C9E5F00537ABF /* App Store Release */,
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = "App Store Release";
|
||||||
};
|
};
|
||||||
/* End XCConfigurationList section */
|
/* End XCConfigurationList section */
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,4 +7,12 @@
|
||||||
#ifdef __OBJC__
|
#ifdef __OBJC__
|
||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
#import <CocoaLumberjack/DDLog.h>
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
static const int ddLogLevel = LOG_LEVEL_VERBOSE;
|
||||||
|
#else
|
||||||
|
static const int ddLogLevel = LOG_LEVEL_WARN;
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -16,6 +16,11 @@
|
||||||
#import "Util.h"
|
#import "Util.h"
|
||||||
#import <UICKeyChainStore/UICKeyChainStore.h>
|
#import <UICKeyChainStore/UICKeyChainStore.h>
|
||||||
|
|
||||||
|
#pragma mark Logging - Production logging wants us to write some logs to a file in case we need it for debugging.
|
||||||
|
|
||||||
|
#import <CocoaLumberjack/DDTTYLogger.h>
|
||||||
|
#import <CocoaLumberjack/DDFileLogger.h>
|
||||||
|
|
||||||
#define kSignalVersionKey @"SignalUpdateVersionKey"
|
#define kSignalVersionKey @"SignalUpdateVersionKey"
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
@ -68,6 +73,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||||
|
|
||||||
|
[DDLog addLogger:[DDTTYLogger sharedInstance]];
|
||||||
|
DDFileLogger *fileLogger = [[DDFileLogger alloc] init];
|
||||||
|
fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling.
|
||||||
|
fileLogger.logFileManager.maximumNumberOfLogFiles = 3; // Keep three days of logs.
|
||||||
|
[DDLog addLogger:fileLogger];
|
||||||
|
|
||||||
[self performUpdateCheck];
|
[self performUpdateCheck];
|
||||||
[self disableCallLogBackup];
|
[self disableCallLogBackup];
|
||||||
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
|
||||||
|
|
|
@ -116,6 +116,10 @@
|
||||||
#define ANSWER_CALL_BUTTON_TITLE NSLocalizedString(@"ANSWER_CALL_BUTTON_TITLE", @"")
|
#define ANSWER_CALL_BUTTON_TITLE NSLocalizedString(@"ANSWER_CALL_BUTTON_TITLE", @"")
|
||||||
#define REJECT_CALL_BUTTON_TITLE NSLocalizedString(@"REJECT_CALL_BUTTON_TITLE", @"")
|
#define REJECT_CALL_BUTTON_TITLE NSLocalizedString(@"REJECT_CALL_BUTTON_TITLE", @"")
|
||||||
|
|
||||||
|
#define REGISTER_ERROR_ALERT_VIEW_TITLE NSLocalizedString(@"REGISTRATION_ERROR", @"")
|
||||||
|
#define REGISTER_ERROR_ALERT_VIEW_BODY NSLocalizedString(@"REGISTRATION_BODY", @"")
|
||||||
|
#define REGISTER_ERROR_ALERT_VIEW_DISMISS NSLocalizedString(@"OK", @"")
|
||||||
|
|
||||||
#pragma mark - Invite Users
|
#pragma mark - Invite Users
|
||||||
|
|
||||||
#define INVITE_USERS_ACTION_SHEET_TITLE NSLocalizedString(@"INVITE_USERS_ACTION_SHEET_TITLE", @"");
|
#define INVITE_USERS_ACTION_SHEET_TITLE NSLocalizedString(@"INVITE_USERS_ACTION_SHEET_TITLE", @"");
|
||||||
|
@ -133,7 +137,6 @@
|
||||||
#define TIMEOUT NSLocalizedString(@"TIMEOUT",@"")
|
#define TIMEOUT NSLocalizedString(@"TIMEOUT",@"")
|
||||||
#define TIMEOUT_CONTACTS_DETAIL NSLocalizedString(@"TIMEOUT_CONTACTS_DETAIL", @"")
|
#define TIMEOUT_CONTACTS_DETAIL NSLocalizedString(@"TIMEOUT_CONTACTS_DETAIL", @"")
|
||||||
|
|
||||||
|
|
||||||
NSDictionary* makeCallProgressLocalizedTextDictionary(void);
|
NSDictionary* makeCallProgressLocalizedTextDictionary(void);
|
||||||
NSDictionary* makeCallTerminationLocalizedTextDictionary(void);
|
NSDictionary* makeCallTerminationLocalizedTextDictionary(void);
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
@property (nonatomic, strong) IBOutlet UILabel *countryCodeLabel;
|
@property (nonatomic, strong) IBOutlet UILabel *countryCodeLabel;
|
||||||
@property (nonatomic, strong) IBOutlet UILabel *countryNameLabel;
|
@property (nonatomic, strong) IBOutlet UILabel *countryNameLabel;
|
||||||
@property (nonatomic, strong) IBOutlet UITextField *challengeTextField;
|
@property (nonatomic, strong) IBOutlet UITextField *challengeTextField;
|
||||||
@property (nonatomic, strong) IBOutlet UILabel *registerErrorLabel;
|
|
||||||
@property (nonatomic, strong) IBOutlet UILabel *challengeErrorLabel;
|
|
||||||
@property (nonatomic, strong) IBOutlet UIActivityIndicatorView *registerActivityIndicator;
|
@property (nonatomic, strong) IBOutlet UIActivityIndicatorView *registerActivityIndicator;
|
||||||
@property (nonatomic, strong) IBOutlet UIActivityIndicatorView *challengeActivityIndicator;
|
@property (nonatomic, strong) IBOutlet UIActivityIndicatorView *challengeActivityIndicator;
|
||||||
@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;
|
@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
#import "ThreadManager.h"
|
#import "ThreadManager.h"
|
||||||
#import "Util.h"
|
#import "Util.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define REGISTER_VIEW_NUMBER 0
|
#define REGISTER_VIEW_NUMBER 0
|
||||||
#define CHALLENGE_VIEW_NUMBER 1
|
#define CHALLENGE_VIEW_NUMBER 1
|
||||||
|
|
||||||
|
@ -36,11 +38,6 @@
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
|
|
||||||
[self populateDefaultCountryNameAndCode];
|
[self populateDefaultCountryNameAndCode];
|
||||||
|
|
||||||
[futureApnId catchDo:^(id error) {
|
|
||||||
// todo: remove this; just here for testing purposes to catch apn not being set
|
|
||||||
_registerErrorLabel.text = [error description];
|
|
||||||
}];
|
|
||||||
|
|
||||||
_scrollView.contentSize = _containerView.bounds.size;
|
_scrollView.contentSize = _containerView.bounds.size;
|
||||||
|
|
||||||
|
@ -172,12 +169,17 @@
|
||||||
Future* futureFinished = [self asyncRegister:localNumber untilCancelled:[life getToken]];
|
Future* futureFinished = [self asyncRegister:localNumber untilCancelled:[life getToken]];
|
||||||
[_registerActivityIndicator startAnimating];
|
[_registerActivityIndicator startAnimating];
|
||||||
_registerButton.enabled = NO;
|
_registerButton.enabled = NO;
|
||||||
_registerErrorLabel.text = @"";
|
|
||||||
[futureFinished catchDo:^(id error) {
|
[futureFinished catchDo:^(id error) {
|
||||||
[_challengeActivityIndicator stopAnimating];
|
NSError *err = ((NSError*)error);
|
||||||
|
[_registerActivityIndicator stopAnimating];
|
||||||
_registerButton.enabled = YES;
|
_registerButton.enabled = YES;
|
||||||
// todo: localize
|
|
||||||
_registerErrorLabel.text = [error description];
|
DDLogError(@"Registration failed with information %@", err.description);
|
||||||
|
|
||||||
|
UIAlertView *registrationErrorAV = [[UIAlertView alloc]initWithTitle:REGISTER_ERROR_ALERT_VIEW_TITLE message:REGISTER_ERROR_ALERT_VIEW_BODY delegate:nil cancelButtonTitle:REGISTER_ERROR_ALERT_VIEW_DISMISS otherButtonTitles:nil, nil];
|
||||||
|
|
||||||
|
[registrationErrorAV show];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,20 +196,18 @@
|
||||||
Future *futureDone = [HttpManager asyncOkResponseFromMasterServer:verifyRequest
|
Future *futureDone = [HttpManager asyncOkResponseFromMasterServer:verifyRequest
|
||||||
unlessCancelled:nil
|
unlessCancelled:nil
|
||||||
andErrorHandler:[Environment errorNoter]];
|
andErrorHandler:[Environment errorNoter]];
|
||||||
|
|
||||||
_challengeErrorLabel.text = @"";
|
|
||||||
[futureDone catchDo:^(id error) {
|
[futureDone catchDo:^(id error) {
|
||||||
if ([error isKindOfClass:[HttpResponse class]]) {
|
if ([error isKindOfClass:[HttpResponse class]]) {
|
||||||
HttpResponse* badResponse = error;
|
HttpResponse* badResponse = error;
|
||||||
if ([badResponse getStatusCode] == 401) {
|
if ([badResponse getStatusCode] == 401) {
|
||||||
// @todo: human readable, localizable
|
UIAlertView *incorrectChallengeCodeAV = [[UIAlertView alloc]initWithTitle:@"Registration error" message:@"The challenge code you entered is incorrect." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
|
||||||
_challengeErrorLabel.text = @"Incorrect Challenge Code";
|
[incorrectChallengeCodeAV show];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[Environment errorNoter](error, @"While Verifying Challenge.", NO);
|
[Environment errorNoter](error, @"While Verifying Challenge.", NO);
|
||||||
// @todo: human readable, localizable
|
#warning add implementation
|
||||||
_challengeErrorLabel.text = [NSString stringWithFormat:@"Unexpected failure: %@", error];
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[futureDone thenDo:^(id result) {
|
[futureDone thenDo:^(id result) {
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4514" systemVersion="13C64" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="5056" systemVersion="13D65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3747"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="RegisterViewController">
|
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="RegisterViewController">
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="challengeActivityIndicator" destination="19" id="RXt-hH-5kD"/>
|
<outlet property="challengeActivityIndicator" destination="19" id="RXt-hH-5kD"/>
|
||||||
<outlet property="challengeButton" destination="zIb-7d-0em" id="G2W-Ef-bev"/>
|
<outlet property="challengeButton" destination="zIb-7d-0em" id="G2W-Ef-bev"/>
|
||||||
<outlet property="challengeErrorLabel" destination="LBW-Ui-MrN" id="beu-jd-o47"/>
|
|
||||||
<outlet property="challengeNumberLabel" destination="deD-LF-4RO" id="RrX-TJ-m8K"/>
|
<outlet property="challengeNumberLabel" destination="deD-LF-4RO" id="RrX-TJ-m8K"/>
|
||||||
<outlet property="challengeTextField" destination="zgO-84-8qR" id="5uc-Fy-5Jr"/>
|
<outlet property="challengeTextField" destination="zgO-84-8qR" id="5uc-Fy-5Jr"/>
|
||||||
<outlet property="containerView" destination="6at-WU-Rlw" id="mLe-aM-qhl"/>
|
<outlet property="containerView" destination="6at-WU-Rlw" id="mLe-aM-qhl"/>
|
||||||
|
@ -19,7 +18,6 @@
|
||||||
<outlet property="registerActivityIndicator" destination="ZuN-a5-tVs" id="0ut-nh-AIV"/>
|
<outlet property="registerActivityIndicator" destination="ZuN-a5-tVs" id="0ut-nh-AIV"/>
|
||||||
<outlet property="registerButton" destination="14" id="18"/>
|
<outlet property="registerButton" destination="14" id="18"/>
|
||||||
<outlet property="registerCancelButton" destination="yuJ-T0-mV0" id="5No-Ec-CHs"/>
|
<outlet property="registerCancelButton" destination="yuJ-T0-mV0" id="5No-Ec-CHs"/>
|
||||||
<outlet property="registerErrorLabel" destination="39" id="rl3-7n-oJN"/>
|
|
||||||
<outlet property="scrollView" destination="Hwy-85-hms" id="ssk-dZ-0cs"/>
|
<outlet property="scrollView" destination="Hwy-85-hms" id="ssk-dZ-0cs"/>
|
||||||
<outlet property="view" destination="1" id="3"/>
|
<outlet property="view" destination="1" id="3"/>
|
||||||
<outlet property="voiceChallengeTextLabel" destination="Ofy-FZ-zZt" id="pBC-GW-Z8H"/>
|
<outlet property="voiceChallengeTextLabel" destination="Ofy-FZ-zZt" id="pBC-GW-Z8H"/>
|
||||||
|
@ -94,13 +92,6 @@
|
||||||
<userDefinedRuntimeAttribute type="string" keyPath="localizationKey" value="REGISTER_TEXTBLOCK"/>
|
<userDefinedRuntimeAttribute type="string" keyPath="localizationKey" value="REGISTER_TEXTBLOCK"/>
|
||||||
</userDefinedRuntimeAttributes>
|
</userDefinedRuntimeAttributes>
|
||||||
</label>
|
</label>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="" textAlignment="right" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="39" userLabel="Register Error Label">
|
|
||||||
<rect key="frame" x="20" y="65" width="281" height="61"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
|
||||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="13"/>
|
|
||||||
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
<view contentMode="scaleToFill" id="3vF-HK-Qbz" userLabel="Phone Number Underline View">
|
<view contentMode="scaleToFill" id="3vF-HK-Qbz" userLabel="Phone Number Underline View">
|
||||||
<rect key="frame" x="43" y="367" width="225" height="1"/>
|
<rect key="frame" x="43" y="367" width="225" height="1"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
@ -185,13 +176,6 @@
|
||||||
<action selector="verifyChallengeTapped" destination="-1" eventType="touchUpInside" id="eMN-6x-T0q"/>
|
<action selector="verifyChallengeTapped" destination="-1" eventType="touchUpInside" id="eMN-6x-T0q"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="3" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="LBW-Ui-MrN" userLabel="Challenge Error Label">
|
|
||||||
<rect key="frame" x="36" y="52" width="263" height="57"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
|
||||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="13"/>
|
|
||||||
<color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
|
|
||||||
<nil key="highlightedColor"/>
|
|
||||||
</label>
|
|
||||||
<view contentMode="scaleToFill" id="XOE-ev-Vjj" userLabel="Country Code Underline View">
|
<view contentMode="scaleToFill" id="XOE-ev-Vjj" userLabel="Country Code Underline View">
|
||||||
<rect key="frame" x="43" y="366" width="225" height="1"/>
|
<rect key="frame" x="43" y="366" width="225" height="1"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
|
|
@ -101,6 +101,8 @@
|
||||||
"REGISTER_VALIDATION_ENTER_CODE" = "Validation Code";
|
"REGISTER_VALIDATION_ENTER_CODE" = "Validation Code";
|
||||||
"REGISTER_VALIDATION_SENT" = "We sent your validation code";
|
"REGISTER_VALIDATION_SENT" = "We sent your validation code";
|
||||||
"REGISTER_WELCOME_TEXT" = "Welcome to Signal";
|
"REGISTER_WELCOME_TEXT" = "Welcome to Signal";
|
||||||
|
"REGISTRATION_ERROR" = "Registration Error";
|
||||||
|
"REGISTRATION_BODY" = "We couldn't reach the Signal server. Please try again.";
|
||||||
"REJECT_CALL_BUTTON_TITLE" = "Reject";
|
"REJECT_CALL_BUTTON_TITLE" = "Reject";
|
||||||
"SETTINGS_ANONYMOUS_FEEDBACK" = "Send Anonymous Feedback";
|
"SETTINGS_ANONYMOUS_FEEDBACK" = "Send Anonymous Feedback";
|
||||||
"SETTINGS_CALL_QUALITY" = "Call Quality";
|
"SETTINGS_CALL_QUALITY" = "Call Quality";
|
||||||
|
|
Loading…
Reference in New Issue