Rework “verify code” view.

* Ensure all controls visible at all times, on all form factors, even with keyboard active.
* Improve focus (i.e. auto-focus textfield on arrival and after errors).
* Move to programmatic view creation and layout.
* Improve spacing and sizing.
* Replace “change number” button with “back” button.
* Submit code with return key.
* Improve copy for clarity.

// FREEBIE
pull/1/head
Matthew Chen 8 years ago
parent 1824fd0b75
commit cf828dc1cf

@ -246,9 +246,7 @@ static NSString *const kURLHostVerifyPrefix = @"verify";
if ([controller isKindOfClass:[CodeVerificationViewController class]]) { if ([controller isKindOfClass:[CodeVerificationViewController class]]) {
CodeVerificationViewController *cvvc = (CodeVerificationViewController *)controller; CodeVerificationViewController *cvvc = (CodeVerificationViewController *)controller;
NSString *verificationCode = [url.path substringFromIndex:1]; NSString *verificationCode = [url.path substringFromIndex:1];
[cvvc setVerificationCodeAndTryToVerify:verificationCode];
cvvc.challengeTextField.text = verificationCode;
[cvvc verifyChallengeAction:nil];
} else { } else {
DDLogWarn(@"Not the verification view controller we expected. Got %@ instead", DDLogWarn(@"Not the verification view controller we expected. Got %@ instead",
NSStringFromClass(controller.class)); NSStringFromClass(controller.class));

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="15G1212" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="zqr-Ab-axp"> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="15G1217" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="zqr-Ab-axp">
<device id="retina4_0" orientation="portrait"> <device id="retina4_0" orientation="portrait">
<adaptation id="fullscreen"/> <adaptation id="fullscreen"/>
</device> </device>
@ -353,268 +353,12 @@
<scene sceneID="9FI-Mi-3YV"> <scene sceneID="9FI-Mi-3YV">
<objects> <objects>
<viewController storyboardIdentifier="CodeVerificationViewController" id="vAf-74-zQH" userLabel="_1.1 Verification Screen" customClass="CodeVerificationViewController" sceneMemberID="viewController"> <viewController storyboardIdentifier="CodeVerificationViewController" id="vAf-74-zQH" userLabel="_1.1 Verification Screen" customClass="CodeVerificationViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="FTb-jf-cJ8"/>
<viewControllerLayoutGuide type="bottom" id="bCG-HQ-yTo"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="psv-5C-Zla" userLabel="_1.1 Verification Screen">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="X6Y-tl-Cgw" userLabel="_1.1a Validation Screen Title">
<rect key="frame" x="0.0" y="0.0" width="320" height="225"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="top" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Verification" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ARw-Wq-shF">
<rect key="frame" x="0.0" y="182" width="320" height="29"/>
<constraints>
<constraint firstAttribute="height" constant="29" id="k8W-ot-RTD"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFit" image="logoSignal" translatesAutoresizingMaskIntoConstraints="NO" id="Yql-X5-USw">
<rect key="frame" x="92.5" y="33" width="135" height="135"/>
<constraints>
<constraint firstAttribute="width" secondItem="Yql-X5-USw" secondAttribute="height" multiplier="1:1" id="heB-IC-QDc"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" red="0.1135657504" green="0.4787300229" blue="0.89595204589999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="ARw-Wq-shF" firstAttribute="top" secondItem="Yql-X5-USw" secondAttribute="bottom" constant="14" id="3eF-XL-6Lr"/>
<constraint firstAttribute="centerX" secondItem="Yql-X5-USw" secondAttribute="centerX" id="HKm-Rb-Dkv"/>
<constraint firstAttribute="bottom" secondItem="ARw-Wq-shF" secondAttribute="bottom" constant="14" id="IjJ-NL-ckF"/>
<constraint firstItem="Yql-X5-USw" firstAttribute="height" secondItem="X6Y-tl-Cgw" secondAttribute="height" multiplier="3:5" id="Mau-KI-BmU"/>
<constraint firstAttribute="width" secondItem="ARw-Wq-shF" secondAttribute="width" id="TVo-yg-YPd"/>
<constraint firstAttribute="centerX" secondItem="ARw-Wq-shF" secondAttribute="centerX" id="ihp-cT-EIU"/>
<constraint firstAttribute="height" constant="225" id="nNa-2d-2TY" userLabel="Height - (245) - _1.1 Registration Screen Title"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YJG-aq-61Z" userLabel="_1.1b Verification Code Input">
<rect key="frame" x="0.0" y="270" width="320" height="32"/>
<subviews>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Verification Code" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="1Tc-6s-gy4">
<rect key="frame" x="-40.5" y="0.0" width="401" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="401" id="UJE-wv-0hP"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="light" pointSize="21"/>
<textInputTraits key="textInputTraits" keyboardType="numberPad" keyboardAppearance="alert"/>
</textField>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Geg-HS-jcj">
<rect key="frame" x="36" y="26" width="248" height="1"/>
<color key="backgroundColor" red="0.75559091570000003" green="0.75556838510000002" blue="0.75558114050000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="Z6p-lf-JBI"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="Geg-HS-jcj" firstAttribute="top" secondItem="YJG-aq-61Z" secondAttribute="top" constant="26" id="9pO-wM-BCT"/>
<constraint firstAttribute="trailing" secondItem="Geg-HS-jcj" secondAttribute="trailing" constant="36" id="CRZ-0F-pew"/>
<constraint firstAttribute="centerX" secondItem="1Tc-6s-gy4" secondAttribute="centerX" constant="-0.5" id="Hzf-g1-PJP"/>
<constraint firstItem="Geg-HS-jcj" firstAttribute="leading" secondItem="YJG-aq-61Z" secondAttribute="leading" constant="36" id="IQ7-Ym-dVl"/>
<constraint firstAttribute="height" secondItem="1Tc-6s-gy4" secondAttribute="height" id="K1W-tg-cKf"/>
<constraint firstItem="1Tc-6s-gy4" firstAttribute="top" secondItem="YJG-aq-61Z" secondAttribute="top" id="QkZ-mg-2hA"/>
<constraint firstAttribute="height" constant="32" id="dHC-41-kby"/>
<constraint firstAttribute="centerX" secondItem="Geg-HS-jcj" secondAttribute="centerX" id="f1A-a1-Jps"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kGf-fT-Xa9" userLabel="_1.1c Verification Verify Code Button">
<rect key="frame" x="0.0" y="310" width="320" height="47"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="271-cA-ife">
<rect key="frame" x="36" y="0.0" width="248" height="47"/>
<color key="backgroundColor" red="0.08213712275" green="0.4684380293" blue="0.91112053390000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="47" id="SkX-P2-Wf2"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
<state key="normal" title="Submit Verification Code">
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<connections>
<action selector="verifyChallengeAction:" destination="vAf-74-zQH" eventType="touchUpInside" id="8eQ-d4-Uqw"/>
</connections>
</button>
<activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="white" translatesAutoresizingMaskIntoConstraints="NO" id="v7i-Ei-OY8">
<rect key="frame" x="249" y="14" width="20" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="dMD-1H-5LN"/>
<constraint firstAttribute="width" constant="20" id="uY4-vq-35w"/>
</constraints>
</activityIndicatorView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="47" id="HT2-1F-wht"/>
<constraint firstItem="v7i-Ei-OY8" firstAttribute="top" secondItem="271-cA-ife" secondAttribute="top" constant="14" id="Qvq-9G-l8v"/>
<constraint firstItem="v7i-Ei-OY8" firstAttribute="trailing" secondItem="271-cA-ife" secondAttribute="trailing" constant="-15" id="Zti-hR-cZD"/>
<constraint firstAttribute="trailing" secondItem="271-cA-ife" secondAttribute="trailing" constant="36" id="azZ-uj-VZt"/>
<constraint firstItem="271-cA-ife" firstAttribute="top" secondItem="kGf-fT-Xa9" secondAttribute="top" id="eKO-P7-DMK"/>
<constraint firstItem="271-cA-ife" firstAttribute="leading" secondItem="kGf-fT-Xa9" secondAttribute="leading" constant="36" id="xsH-Qd-vxD"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZPv-Ds-6PW" userLabel="_1.1d Verification Send Again Button">
<rect key="frame" x="0.0" y="360" width="320" height="47"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oZ5-7X-Fql">
<rect key="frame" x="36" y="0.0" width="248" height="47"/>
<constraints>
<constraint firstAttribute="height" constant="47" id="y8d-km-hod"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
<state key="normal" title="Request Code Again">
<color key="titleColor" red="0.081759713590000005" green="0.4691397846" blue="0.91040575499999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="titleShadowColor" red="0.49803921568627452" green="0.49803921568627452" blue="0.49803921568627452" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<connections>
<action selector="sendCodeSMSAction:" destination="vAf-74-zQH" eventType="touchUpInside" id="Vax-JY-HKt"/>
</connections>
</button>
<activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="6DZ-uI-Flr">
<rect key="frame" x="250" y="14" width="20" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="Kco-ht-1A6"/>
<constraint firstAttribute="width" constant="20" id="orp-ul-VMK"/>
</constraints>
</activityIndicatorView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="oZ5-7X-Fql" firstAttribute="leading" secondItem="ZPv-Ds-6PW" secondAttribute="leading" constant="36" id="LD6-Y9-Ys5"/>
<constraint firstItem="6DZ-uI-Flr" firstAttribute="trailing" secondItem="oZ5-7X-Fql" secondAttribute="trailing" constant="-14" id="Ltw-nJ-FBb"/>
<constraint firstItem="oZ5-7X-Fql" firstAttribute="top" secondItem="ZPv-Ds-6PW" secondAttribute="top" id="eBX-XI-dZ5"/>
<constraint firstAttribute="trailing" secondItem="oZ5-7X-Fql" secondAttribute="trailing" constant="36" id="iyf-9e-EoT"/>
<constraint firstItem="6DZ-uI-Flr" firstAttribute="top" secondItem="ZPv-Ds-6PW" secondAttribute="top" constant="14" id="mfM-gm-jW7"/>
<constraint firstAttribute="height" constant="47" id="qef-31-NSZ"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RIh-Jf-Ksm" userLabel="_1.1f Verification Change Number">
<rect key="frame" x="-1" y="511" width="320" height="57"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="9I1-dc-HZS">
<rect key="frame" x="0.0" y="3" width="328" height="56"/>
<color key="backgroundColor" red="0.87794482709999999" green="0.87811338900000002" blue="0.87791669370000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="56" id="NnD-Zb-1Nb"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<state key="normal" title=" Change Number">
<color key="titleColor" red="0.66666666669999997" green="0.66666666669999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<connections>
<segue destination="q2h-3P-dah" kind="unwind" unwindAction="unwindToChangeNumber:" id="IyO-5M-A8w"/>
</connections>
</button>
<imageView userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="_arrow_button" translatesAutoresizingMaskIntoConstraints="NO" id="q3j-RG-yf8">
<rect key="frame" x="8" y="17" width="12" height="23"/>
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="9I1-dc-HZS" firstAttribute="width" secondItem="RIh-Jf-Ksm" secondAttribute="width" constant="8" id="0R1-MQ-iur"/>
<constraint firstAttribute="height" constant="57" id="C0V-TQ-X11"/>
<constraint firstItem="9I1-dc-HZS" firstAttribute="leading" secondItem="RIh-Jf-Ksm" secondAttribute="leading" id="Nbq-zR-2Vy"/>
<constraint firstItem="q3j-RG-yf8" firstAttribute="leading" secondItem="RIh-Jf-Ksm" secondAttribute="leading" constant="8" id="XVz-Q3-6sf"/>
<constraint firstAttribute="centerY" secondItem="q3j-RG-yf8" secondAttribute="centerY" id="d9k-Uv-kN1"/>
<constraint firstAttribute="trailing" secondItem="9I1-dc-HZS" secondAttribute="trailing" constant="-8" id="nmf-dx-koB"/>
<constraint firstAttribute="bottom" secondItem="9I1-dc-HZS" secondAttribute="bottom" constant="-2" id="yCa-Uj-O22"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fB9-73-vmG" userLabel="_1.1e Verification Call Me Button">
<rect key="frame" x="0.0" y="456" width="320" height="57"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PCA-qm-tfG">
<rect key="frame" x="0.0" y="0.0" width="320" height="57"/>
<color key="backgroundColor" red="0.6534909606" green="0.75299829240000005" blue="0.99915063380000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="57" id="Ybh-4m-PKB"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<inset key="contentEdgeInsets" minX="0.0" minY="1" maxX="0.0" maxY="0.0"/>
<state key="normal" title=" Call Me Instead">
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<connections>
<action selector="sendCodeVoiceAction:" destination="vAf-74-zQH" eventType="touchUpInside" id="g3n-Fx-vmT"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="(555) 555-5555" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RQO-ap-IfU">
<rect key="frame" x="129" y="18.5" width="164" height="20.5"/>
<constraints>
<constraint firstAttribute="width" constant="164" id="aAa-XO-3vj"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.23574128750000001" green="0.2357865572" blue="0.23573371770000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="oGX-bv-Nfu">
<rect key="frame" x="149" y="18.5" width="20" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="7Mu-pr-9bR"/>
<constraint firstAttribute="width" constant="20" id="wXe-eH-lNb"/>
</constraints>
</activityIndicatorView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="centerX" secondItem="PCA-qm-tfG" secondAttribute="centerX" id="5UD-Cp-LFZ"/>
<constraint firstItem="PCA-qm-tfG" firstAttribute="width" secondItem="fB9-73-vmG" secondAttribute="width" id="5Vq-bx-OAS"/>
<constraint firstItem="oGX-bv-Nfu" firstAttribute="leading" secondItem="PCA-qm-tfG" secondAttribute="leading" constant="149" id="GoE-Yy-Cxd"/>
<constraint firstAttribute="centerY" secondItem="PCA-qm-tfG" secondAttribute="centerY" id="Q4D-d0-E4R"/>
<constraint firstAttribute="centerY" secondItem="RQO-ap-IfU" secondAttribute="centerY" id="QFq-1a-Bsx"/>
<constraint firstAttribute="trailing" secondItem="RQO-ap-IfU" secondAttribute="trailing" constant="27" id="Ymg-OD-cqz"/>
<constraint firstItem="oGX-bv-Nfu" firstAttribute="centerY" secondItem="PCA-qm-tfG" secondAttribute="centerY" constant="0.5" id="vpn-oi-l2A"/>
<constraint firstAttribute="height" constant="57" id="wTr-g0-DlL"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="trailingMargin" secondItem="ZPv-Ds-6PW" secondAttribute="trailing" constant="-16" id="73a-MW-yne"/>
<constraint firstAttribute="trailingMargin" secondItem="kGf-fT-Xa9" secondAttribute="trailing" constant="-16" id="8B2-wI-hyc"/>
<constraint firstAttribute="width" secondItem="X6Y-tl-Cgw" secondAttribute="width" id="8bE-il-HeC"/>
<constraint firstItem="ZPv-Ds-6PW" firstAttribute="leading" secondItem="psv-5C-Zla" secondAttribute="leadingMargin" constant="-16" id="8tQ-bH-Ofx"/>
<constraint firstItem="fB9-73-vmG" firstAttribute="width" secondItem="psv-5C-Zla" secondAttribute="width" id="Fpf-eA-723"/>
<constraint firstItem="RIh-Jf-Ksm" firstAttribute="width" secondItem="psv-5C-Zla" secondAttribute="width" id="JqZ-V3-U9S"/>
<constraint firstItem="bCG-HQ-yTo" firstAttribute="top" secondItem="fB9-73-vmG" secondAttribute="bottom" constant="55" id="Rai-zy-BWp"/>
<constraint firstItem="ZPv-Ds-6PW" firstAttribute="top" secondItem="kGf-fT-Xa9" secondAttribute="bottom" constant="3" id="Vg4-ED-Tfd"/>
<constraint firstItem="bCG-HQ-yTo" firstAttribute="top" secondItem="RIh-Jf-Ksm" secondAttribute="bottom" id="Vqs-Kv-skP"/>
<constraint firstItem="kGf-fT-Xa9" firstAttribute="leading" secondItem="psv-5C-Zla" secondAttribute="leadingMargin" constant="-16" id="d09-KR-EtL"/>
<constraint firstAttribute="centerX" secondItem="X6Y-tl-Cgw" secondAttribute="centerX" id="dxr-yW-gjo"/>
<constraint firstItem="kGf-fT-Xa9" firstAttribute="top" secondItem="YJG-aq-61Z" secondAttribute="bottom" constant="8" id="gWq-ll-Ur2"/>
<constraint firstAttribute="centerX" secondItem="fB9-73-vmG" secondAttribute="centerX" id="hbs-so-xXl"/>
<constraint firstAttribute="trailingMargin" secondItem="YJG-aq-61Z" secondAttribute="trailing" constant="-16" id="qLY-R2-kar"/>
<constraint firstItem="YJG-aq-61Z" firstAttribute="leading" secondItem="psv-5C-Zla" secondAttribute="leadingMargin" constant="-16" id="qbs-la-idW"/>
<constraint firstItem="X6Y-tl-Cgw" firstAttribute="top" secondItem="FTb-jf-cJ8" secondAttribute="bottom" constant="-20" id="rhk-bp-Fcp"/>
<constraint firstAttribute="centerX" secondItem="RIh-Jf-Ksm" secondAttribute="centerX" constant="1" id="yJm-4X-xyb"/>
<constraint firstItem="YJG-aq-61Z" firstAttribute="top" secondItem="X6Y-tl-Cgw" secondAttribute="bottom" constant="45" id="z2c-9h-ANc"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="KvQ-qd-ysw"/> <navigationItem key="navigationItem" id="KvQ-qd-ysw"/>
<nil key="simulatedTopBarMetrics"/> <nil key="simulatedTopBarMetrics"/>
<connections> <connections>
<outlet property="challengeButton" destination="271-cA-ife" id="C8B-xI-hT8"/>
<outlet property="challengeTextField" destination="1Tc-6s-gy4" id="JGC-fC-dC1"/>
<outlet property="changeNumberButton" destination="9I1-dc-HZS" id="IpJ-m0-1Q4"/>
<outlet property="headerConstraint" destination="nNa-2d-2TY" id="emq-Ub-aWV"/>
<outlet property="headerLabel" destination="ARw-Wq-shF" id="DKK-ZU-l6m"/>
<outlet property="phoneNumberEntered" destination="RQO-ap-IfU" id="cp9-aW-BxL"/>
<outlet property="requestCallSpinner" destination="oGX-bv-Nfu" id="o1h-SH-RL4"/>
<outlet property="requestCodeAgainSpinner" destination="6DZ-uI-Flr" id="8oS-y6-cZU"/>
<outlet property="sendCodeViaSMSAgainButton" destination="oZ5-7X-Fql" id="Kqf-62-oHh"/>
<outlet property="sendCodeViaVoiceButton" destination="PCA-qm-tfG" id="iDq-eo-lBl"/>
<outlet property="signalLogo" destination="Yql-X5-USw" id="IWh-Uo-sHf"/>
<outlet property="submitCodeSpinner" destination="v7i-Ei-OY8" id="Kmb-V5-efV"/>
<segue destination="ZlQ-iw-Vxb" kind="presentation" identifier="CompletedRegistration" modalPresentationStyle="fullScreen" modalTransitionStyle="crossDissolve" id="Hry-60-bHY"/> <segue destination="ZlQ-iw-Vxb" kind="presentation" identifier="CompletedRegistration" modalPresentationStyle="fullScreen" modalTransitionStyle="crossDissolve" id="Hry-60-bHY"/>
</connections> </connections>
</viewController> </viewController>
<exit id="q2h-3P-dah" userLabel="Exit" sceneMemberID="exit"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="uR6-Tv-iw7" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="uR6-Tv-iw7" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="-3780" y="-735"/> <point key="canvasLocation" x="-3780" y="-735"/>
@ -651,7 +395,6 @@
</scene> </scene>
</scenes> </scenes>
<resources> <resources>
<image name="_arrow_button" width="12" height="23"/>
<image name="btnCancel--white" width="44" height="44"/> <image name="btnCancel--white" width="44" height="44"/>
<image name="logoSignal" width="138" height="139"/> <image name="logoSignal" width="138" height="139"/>
</resources> </resources>

@ -1,51 +1,11 @@
// //
// CodeVerificationViewController.h // Copyright (c) 2017 Open Whisper Systems. All rights reserved.
// Signal
//
// Created by Dylan Bourgeois on 13/11/14.
// Copyright (c) 2014 Open Whisper Systems. All rights reserved.
//
// This class allows the user to send the server their verification code and request new codes to be sent via SMS or
// voice.
// //
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
@interface CodeVerificationViewController : UIViewController <UITextFieldDelegate> @interface CodeVerificationViewController : UIViewController
@property (nonatomic, strong) IBOutlet UIImageView *signalLogo;
// Where the user enters the verification code they wish to document
@property (nonatomic, strong) IBOutlet UITextField *challengeTextField;
@property (nonatomic, strong) NSString *formattedPhoneNumber;
@property (nonatomic, strong) IBOutlet UILabel *headerLabel;
// User action buttons
@property (nonatomic, strong) IBOutlet UIButton *challengeButton;
@property (nonatomic, strong) IBOutlet UIButton *sendCodeViaSMSAgainButton;
@property (nonatomic, strong) IBOutlet UIButton *sendCodeViaVoiceButton;
@property (nonatomic, strong) IBOutlet UIActivityIndicatorView *submitCodeSpinner;
@property (nonatomic, strong) IBOutlet UIActivityIndicatorView *requestCodeAgainSpinner;
@property (nonatomic, strong) IBOutlet UIActivityIndicatorView *requestCallSpinner;
@property (nonatomic, strong) IBOutlet UIButton *changeNumberButton;
@property (nonatomic) IBOutlet NSLayoutConstraint *headerConstraint;
// Displays phone number entered in previous step. There is a UI option (segue) which allows the user to go back and
// edit this.
@property (nonatomic, strong) IBOutlet UILabel *phoneNumberEntered;
// User verifies code
- (IBAction)verifyChallengeAction:(id)sender;
// User requests new code via SMS
- (IBAction)sendCodeSMSAction:(id)sender;
// User requests new code via voice phone call
- (IBAction)sendCodeVoiceAction:(id)sender;
// This ensures the user doesn't keep creating server requests before the server has responded for all buttons that - (void)setVerificationCodeAndTryToVerify:(NSString *)verificationCode;
// result in server requests
- (void)enableServerActions:(BOOL)enabled;
@end @end

@ -1,9 +1,5 @@
// //
// CodeVerificationViewController.m // Copyright (c) 2017 Open Whisper Systems. All rights reserved.
// Signal
//
// Created by Dylan Bourgeois on 13/11/14.
// Copyright (c) 2014 Open Whisper Systems. All rights reserved.
// //
#import "CodeVerificationViewController.h" #import "CodeVerificationViewController.h"
@ -21,12 +17,28 @@ NS_ASSUME_NONNULL_BEGIN
NSString *const kCompletedRegistrationSegue = @"CompletedRegistration"; NSString *const kCompletedRegistrationSegue = @"CompletedRegistration";
@interface CodeVerificationViewController () @interface CodeVerificationViewController () <UITextFieldDelegate>
@property (nonatomic, readonly) AccountManager *accountManager;
// Where the user enters the verification code they wish to document
@property (nonatomic) UITextField *challengeTextField;
@property (nonatomic) UILabel *phoneNumberLabel;
@property (nonatomic, strong, readonly) AccountManager *accountManager; //// User action buttons
@property (nonatomic) UIButton *challengeButton;
@property (nonatomic) UIButton *sendCodeViaSMSAgainButton;
@property (nonatomic) UIButton *sendCodeViaVoiceButton;
@property (nonatomic) UIActivityIndicatorView *submitCodeSpinner;
@property (nonatomic) UIActivityIndicatorView *requestCodeAgainSpinner;
@property (nonatomic) UIActivityIndicatorView *requestCallSpinner;
@end @end
#pragma mark -
@implementation CodeVerificationViewController @implementation CodeVerificationViewController
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder
@ -55,30 +67,165 @@ NSString *const kCompletedRegistrationSegue = @"CompletedRegistration";
- (void)viewDidLoad { - (void)viewDidLoad {
[super viewDidLoad]; [super viewDidLoad];
[self createViews];
[self initializeKeyboardHandlers]; [self initializeKeyboardHandlers];
_headerLabel.text = NSLocalizedString(@"VERIFICATION_HEADER", @"Navigation title in the registration flow - during the sms code verification process."); }
- (void)createViews {
self.view.backgroundColor = [UIColor whiteColor];
self.view.opaque = YES;
// TODO: Move this to UIColor+OWS?
UIColor *signalBlueColor = [UIColor colorWithRed:0.1135657504
green:0.4787300229
blue:0.89595204589999999
alpha:1.];
UIView *header = [UIView new];
header.backgroundColor = signalBlueColor;
[self.view addSubview:header];
[header autoPinWidthToSuperview];
[header autoPinEdgeToSuperviewEdge:ALEdgeTop];
[header autoSetDimension:ALDimensionHeight toSize:ScaleFromIPhone5To7Plus(60, 60)];
UILabel *titleLabel = [UILabel new];
titleLabel.textColor = [UIColor whiteColor];
titleLabel.text = NSLocalizedString(@"VERIFICATION_HEADER", @"Navigation title in the registration flow - during the sms code verification process.");
titleLabel.font = [UIFont ows_mediumFontWithSize:20.f];
[header addSubview:titleLabel];
[titleLabel autoPinToTopLayoutGuideOfViewController:self withInset:0];
[titleLabel autoPinEdgeToSuperviewEdge:ALEdgeBottom];
[titleLabel autoHCenterInSuperview];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setTitle:NSLocalizedString(@"VERIFICATION_BACK_BUTTON", @"button text for back button on verification view")
forState:UIControlStateNormal];
[backButton setTitleColor:[UIColor whiteColor]
forState:UIControlStateNormal];
backButton.titleLabel.font = [UIFont ows_mediumFontWithSize:14.f];
[header addSubview:backButton];
[backButton autoPinEdgeToSuperviewEdge:ALEdgeLeft withInset:ScaleFromIPhone5To7Plus(10, 10)];
[backButton autoAlignAxis:ALAxisHorizontal toSameAxisOfView:titleLabel];
[backButton addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
_phoneNumberLabel = [UILabel new];
_phoneNumberLabel.textColor = [UIColor ows_darkGrayColor];
_phoneNumberLabel.font = [UIFont ows_regularFontWithSize:20.f];
[self.view addSubview:_phoneNumberLabel];
[_phoneNumberLabel autoHCenterInSuperview];
[_phoneNumberLabel autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:header
withOffset:ScaleFromIPhone5To7Plus(25, 100)];
_challengeTextField = [UITextField new];
_challengeTextField.textColor = [UIColor blackColor];
_challengeTextField.placeholder = NSLocalizedString(@"VERIFICATION_CHALLENGE_DEFAULT_TEXT", _challengeTextField.placeholder = NSLocalizedString(@"VERIFICATION_CHALLENGE_DEFAULT_TEXT",
@"Text field placeholder for SMS verification code during registration"); @"Text field placeholder for SMS verification code during registration");
_challengeTextField.font = [UIFont ows_lightFontWithSize:21.f];
_challengeTextField.textAlignment = NSTextAlignmentCenter;
_challengeTextField.delegate = self; _challengeTextField.delegate = self;
[self.view addSubview:_challengeTextField];
[_challengeTextField autoPinWidthToSuperviewWithMargin:ScaleFromIPhone5To7Plus(36, 36)];
[_challengeTextField autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:_phoneNumberLabel
withOffset:ScaleFromIPhone5To7Plus(25, 25)];
UIView *underscoreView = [UIView new];
underscoreView.backgroundColor = [UIColor colorWithWhite:0.5 alpha:1.f];
[self.view addSubview:underscoreView];
[underscoreView autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:_challengeTextField
withOffset:ScaleFromIPhone5To7Plus(3, 3)];
[underscoreView autoPinWidthToSuperviewWithMargin:ScaleFromIPhone5To7Plus(36, 36)];
[underscoreView autoSetDimension:ALDimensionHeight toSize:1.f];
_challengeButton = [UIButton buttonWithType:UIButtonTypeCustom];
_challengeButton.backgroundColor = signalBlueColor;
[_challengeButton setTitle:NSLocalizedString(@"VERIFICATION_CHALLENGE_SUBMIT_CODE", @"button text during registration to submit your SMS verification code") [_challengeButton setTitle:NSLocalizedString(@"VERIFICATION_CHALLENGE_SUBMIT_CODE", @"button text during registration to submit your SMS verification code")
forState:UIControlStateNormal]; forState:UIControlStateNormal];
[_challengeButton setTitleColor:[UIColor whiteColor]
forState:UIControlStateNormal];
_challengeButton.titleLabel.font = [UIFont ows_mediumFontWithSize:14.f];
[_challengeButton addTarget:self
action:@selector(verifyChallengeAction:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_challengeButton];
[_challengeButton autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:underscoreView
withOffset:ScaleFromIPhone5To7Plus(15, 15)];
[_challengeButton autoPinWidthToSuperviewWithMargin:ScaleFromIPhone5To7Plus(36, 36)];
[_challengeButton autoSetDimension:ALDimensionHeight toSize:47.f];
_submitCodeSpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[_challengeButton addSubview:_submitCodeSpinner];
[_submitCodeSpinner autoSetDimension:ALDimensionWidth toSize:ScaleFromIPhone5To7Plus(20, 20)];
[_submitCodeSpinner autoSetDimension:ALDimensionHeight toSize:ScaleFromIPhone5To7Plus(20, 20)];
[_submitCodeSpinner autoVCenterInSuperview];
[_submitCodeSpinner autoPinEdgeToSuperviewEdge:ALEdgeRight withInset:ScaleFromIPhone5To7Plus(15, 15)];
_sendCodeViaSMSAgainButton = [UIButton buttonWithType:UIButtonTypeCustom];
_sendCodeViaSMSAgainButton.backgroundColor = [UIColor whiteColor];
[_sendCodeViaSMSAgainButton setTitle:NSLocalizedString(@"VERIFICATION_CHALLENGE_SUBMIT_AGAIN", @"button text during registration to request another SMS code be sent") [_sendCodeViaSMSAgainButton setTitle:NSLocalizedString(@"VERIFICATION_CHALLENGE_SUBMIT_AGAIN", @"button text during registration to request another SMS code be sent")
forState:UIControlStateNormal]; forState:UIControlStateNormal];
[_sendCodeViaVoiceButton [_sendCodeViaSMSAgainButton setTitleColor:signalBlueColor
setTitle:[@" " stringByAppendingString:NSLocalizedString(@"VERIFICATION_CHALLENGE_SEND_VIAVOICE", @"button text during registration to request phone number verification be done via phone call")]
forState:UIControlStateNormal]; forState:UIControlStateNormal];
[_changeNumberButton _sendCodeViaSMSAgainButton.titleLabel.font = [UIFont ows_mediumFontWithSize:14.f];
setTitle:[@" " stringByAppendingString:NSLocalizedString(@"VERIFICATION_CHALLENGE_CHANGE_NUMBER", @"button text during registration to make corrections to your submitted phone number")] [_sendCodeViaSMSAgainButton addTarget:self
action:@selector(sendCodeViaSMSAction:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_sendCodeViaSMSAgainButton];
[_sendCodeViaSMSAgainButton autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:_challengeButton
withOffset:ScaleFromIPhone5To7Plus(10, 10)];
[_sendCodeViaSMSAgainButton autoPinWidthToSuperviewWithMargin:ScaleFromIPhone5To7Plus(36, 36)];
[_sendCodeViaSMSAgainButton autoSetDimension:ALDimensionHeight toSize:35];
_requestCodeAgainSpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[_sendCodeViaSMSAgainButton addSubview:_requestCodeAgainSpinner];
[_requestCodeAgainSpinner autoSetDimension:ALDimensionWidth toSize:ScaleFromIPhone5To7Plus(20, 20)];
[_requestCodeAgainSpinner autoSetDimension:ALDimensionHeight toSize:ScaleFromIPhone5To7Plus(20, 20)];
[_requestCodeAgainSpinner autoVCenterInSuperview];
[_requestCodeAgainSpinner autoPinEdgeToSuperviewEdge:ALEdgeRight withInset:ScaleFromIPhone5To7Plus(15, 15)];
_sendCodeViaVoiceButton = [UIButton buttonWithType:UIButtonTypeCustom];
_sendCodeViaVoiceButton.backgroundColor = [UIColor whiteColor];
[_sendCodeViaVoiceButton setTitle:NSLocalizedString(@"VERIFICATION_CHALLENGE_SEND_VIA_VOICE",
@"button text during registration to request phone number verification be done via phone call")
forState:UIControlStateNormal]; forState:UIControlStateNormal];
[_sendCodeViaVoiceButton setTitleColor:signalBlueColor
forState:UIControlStateNormal];
_sendCodeViaVoiceButton.titleLabel.font = [UIFont ows_mediumFontWithSize:14.f];
[_sendCodeViaVoiceButton addTarget:self
action:@selector(sendCodeViaVoiceAction:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_sendCodeViaVoiceButton];
[_sendCodeViaVoiceButton autoPinEdge:ALEdgeTop toEdge:ALEdgeBottom ofView:_sendCodeViaSMSAgainButton
withOffset:ScaleFromIPhone5To7Plus(0, 0)];
[_sendCodeViaVoiceButton autoPinWidthToSuperviewWithMargin:ScaleFromIPhone5To7Plus(36, 36)];
[_sendCodeViaVoiceButton autoSetDimension:ALDimensionHeight toSize:35];
_requestCallSpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[_sendCodeViaVoiceButton addSubview:_requestCallSpinner];
[_requestCallSpinner autoSetDimension:ALDimensionWidth toSize:ScaleFromIPhone5To7Plus(20, 20)];
[_requestCallSpinner autoSetDimension:ALDimensionHeight toSize:ScaleFromIPhone5To7Plus(20, 20)];
[_requestCallSpinner autoVCenterInSuperview];
[_requestCallSpinner autoPinEdgeToSuperviewEdge:ALEdgeRight withInset:ScaleFromIPhone5To7Plus(15, 15)];
}
- (void)updatePhoneNumberLabel {
NSString *phoneNumber = [PhoneNumber bestEffortFormatPartialUserSpecifiedTextToLookLikeAPhoneNumber:[TSAccountManager localNumber]];
_phoneNumberLabel.text = [NSString stringWithFormat:NSLocalizedString(@"VERIFICATION_PHONE_NUMBER_FORMAT",
@"Label indicating the phone number currently being verified."),
phoneNumber];
} }
- (void)viewWillAppear:(BOOL)animated { - (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated]; [super viewWillAppear:animated];
[self enableServerActions:YES]; [self enableServerActions:YES];
[_phoneNumberEntered setText: [self updatePhoneNumberLabel];
[PhoneNumber bestEffortFormatPartialUserSpecifiedTextToLookLikeAPhoneNumber:[TSAccountManager localNumber]]]; }
[self adjustScreenSizes];
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[_challengeTextField becomeFirstResponder];
} }
- (void)startActivityIndicator - (void)startActivityIndicator
@ -94,7 +241,7 @@ NSString *const kCompletedRegistrationSegue = @"CompletedRegistration";
[self.submitCodeSpinner stopAnimating]; [self.submitCodeSpinner stopAnimating];
} }
- (IBAction)verifyChallengeAction:(id)sender - (void)verifyChallengeAction:(nullable id)sender
{ {
[self startActivityIndicator]; [self startActivityIndicator];
[self.accountManager registerWithVerificationCode:[self validationCodeFromTextField]] [self.accountManager registerWithVerificationCode:[self validationCodeFromTextField]]
@ -123,7 +270,9 @@ NSString *const kCompletedRegistrationSegue = @"CompletedRegistration";
preferredStyle:UIAlertControllerStyleAlert]; preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *dismissAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"DISMISS_BUTTON_TEXT", nil) UIAlertAction *dismissAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"DISMISS_BUTTON_TEXT", nil)
style:UIAlertActionStyleDefault style:UIAlertActionStyleDefault
handler:nil]; handler:^(UIAlertAction *action) {
[_challengeTextField becomeFirstResponder];
}];
[alertController addAction:dismissAction]; [alertController addAction:dismissAction];
[self presentViewController:alertController animated:YES completion:nil]; [self presentViewController:alertController animated:YES completion:nil];
@ -158,7 +307,8 @@ NSString *const kCompletedRegistrationSegue = @"CompletedRegistration";
} }
#pragma mark - Send codes again #pragma mark - Send codes again
- (IBAction)sendCodeSMSAction:(id)sender {
- (void)sendCodeViaSMSAction:(id)sender {
[self enableServerActions:NO]; [self enableServerActions:NO];
[_requestCodeAgainSpinner startAnimating]; [_requestCodeAgainSpinner startAnimating];
@ -175,7 +325,7 @@ NSString *const kCompletedRegistrationSegue = @"CompletedRegistration";
}]; }];
} }
- (IBAction)sendCodeVoiceAction:(id)sender { - (void)sendCodeViaVoiceAction:(id)sender {
[self enableServerActions:NO]; [self enableServerActions:NO];
[_requestCallSpinner startAnimating]; [_requestCallSpinner startAnimating];
@ -209,6 +359,9 @@ NSString *const kCompletedRegistrationSegue = @"CompletedRegistration";
[_sendCodeViaVoiceButton setEnabled:enabled]; [_sendCodeViaVoiceButton setEnabled:enabled];
} }
- (void)backButtonPressed:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
#pragma mark - Keyboard notifications #pragma mark - Keyboard notifications
@ -249,14 +402,15 @@ NSString *const kCompletedRegistrationSegue = @"CompletedRegistration";
return YES; return YES;
} }
- (void)adjustScreenSizes - (BOOL)textFieldShouldReturn:(UITextField *)textField {
{ [self verifyChallengeAction:nil];
CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height; [textField resignFirstResponder];
return NO;
}
if (screenHeight < 667) { // iphone 5 - (void)setVerificationCodeAndTryToVerify:(NSString *)verificationCode {
self.signalLogo.hidden = YES; self.challengeTextField.text = verificationCode;
_headerConstraint.constant = 120; [self verifyChallengeAction:nil];
}
} }
#pragma mark - Logging #pragma mark - Logging

@ -1,9 +1,5 @@
// //
// RegistrationViewController.m // Copyright (c) 2017 Open Whisper Systems. All rights reserved.
// Signal
//
// Created by Dylan Bourgeois on 13/11/14.
// Copyright (c) 2014 Open Whisper Systems. All rights reserved.
// //
#import "RegistrationViewController.h" #import "RegistrationViewController.h"
@ -218,13 +214,10 @@ static NSString *const kCodeSentSegue = @"codeSent";
} }
#pragma mark - Navigation #pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation // In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:kCodeSentSegue]) { if ([[segue identifier] isEqualToString:kCodeSentSegue]) {
CodeVerificationViewController *vc = [segue destinationViewController];
vc.formattedPhoneNumber = [PhoneNumber
bestEffortFormatPartialUserSpecifiedTextToLookLikeAPhoneNumber:_phoneNumberTextField.text
withSpecifiedCountryCodeString:_countryCodeButton.titleLabel.text];
} }
} }

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Təsdiqləmə kodu"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Təsdiqləmə kodu";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Əvəzində mənə zəng et"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Əvəzində mənə zəng et";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Kodu yenidən istə"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Kodu yenidən istə";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Код за потвърждение"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Код за потвърждение";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Звънни ми вместо това"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Звънни ми вместо това";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Изпрати кода отново"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Изпрати кода отново";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifikacijski kôd"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifikacijski kôd";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Potvrdi pozivom"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Potvrdi pozivom";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Ponovo zatraži kôd"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Ponovo zatraži kôd";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Codi de verificació"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Codi de verificació";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Telefona'm, millor"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Telefona'm, millor";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Sol·licita el codi de nou"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Sol·licita el codi de nou";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Ověřovací kód"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Ověřovací kód";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Místo toho mi zavolejte"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Místo toho mi zavolejte";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Znovu zzažádat o kód"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Znovu zzažádat o kód";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifikationskode"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifikationskode";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Ring til mig i stedet"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Ring til mig i stedet";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Bed om kode igen"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Bed om kode igen";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Bestätigungscode"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Bestätigungscode";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Mich stattdessen anrufen"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Mich stattdessen anrufen";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Code erneut anfordern"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Code erneut anfordern";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Κωδικός επαλήθευσης"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Κωδικός επαλήθευσης";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Καλέστε εμένα "; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Καλέστε εμένα ";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Αίτηση κωδικού ξανά"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Αίτηση κωδικού ξανά";

@ -921,6 +921,9 @@
/* message footer while attachment is uploading */ /* message footer while attachment is uploading */
"UPLOADING_MESSAGE_TEXT" = "Uploading..."; "UPLOADING_MESSAGE_TEXT" = "Uploading...";
/* button text for back button on verification view */
"VERIFICATION_BACK_BUTTON" = "Back";
/* button text during registration to make corrections to your submitted phone number */ /* button text during registration to make corrections to your submitted phone number */
"VERIFICATION_CHALLENGE_CHANGE_NUMBER" = "Change Number"; "VERIFICATION_CHALLENGE_CHANGE_NUMBER" = "Change Number";
@ -928,10 +931,10 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verification Code"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verification Code";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Call Me Instead"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Call Me Instead";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Request Code Again"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Resend Code by SMS";
/* button text during registration to submit your SMS verification code */ /* button text during registration to submit your SMS verification code */
"VERIFICATION_CHALLENGE_SUBMIT_CODE" = "Submit Verification Code"; "VERIFICATION_CHALLENGE_SUBMIT_CODE" = "Submit Verification Code";
@ -939,6 +942,9 @@
/* Navigation title in the registration flow - during the sms code verification process. */ /* Navigation title in the registration flow - during the sms code verification process. */
"VERIFICATION_HEADER" = "Verify"; "VERIFICATION_HEADER" = "Verify";
/* Label indicating the phone number currently being verified. */
"VERIFICATION_PHONE_NUMBER_FORMAT" = "Verifying: %@";
/* table cell label in conversation settings */ /* table cell label in conversation settings */
"VERIFY_PRIVACY" = "Verify Safety Number"; "VERIFY_PRIVACY" = "Verify Safety Number";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Código de verificación"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Código de verificación";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Recibir llamada con código"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Recibir llamada con código";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Solicitar código nuevamente"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Solicitar código nuevamente";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Vahvistuskoodi"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Vahvistuskoodi";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Soita minulle mielummin"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Soita minulle mielummin";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Pyydä koodia uudelleen"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Pyydä koodia uudelleen";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verification Code"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verification Code";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Call Me Instead"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Call Me Instead";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Request Code Again"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Request Code Again";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Code de vérification"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Code de vérification";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Appelez-moi plutôt"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Appelez-moi plutôt";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Redemander un code"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Redemander un code";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Código de verificación"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Código de verificación";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Chámame"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Chámame";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Volver solicitar o código"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Volver solicitar o código";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifikacijski kôd"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifikacijski kôd";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Potvrdi pozivom"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Potvrdi pozivom";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Ponovo zatraži kôd"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Ponovo zatraži kôd";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Hitelesítő kód küldése"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Hitelesítő kód küldése";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Inkább hívj"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Inkább hívj";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Kód újrakérése"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Kód újrakérése";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Kode Verifikasi"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Kode Verifikasi";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Telefon saya saja"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Telefon saya saja";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Meminta Kode Lagi"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Meminta Kode Lagi";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Codice di verifica"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Codice di verifica";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Oppure chiamami"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Oppure chiamami";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Richiedi un nuovo codice"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Richiedi un nuovo codice";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "認証コード"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "認証コード";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "電話で行う"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "電話で行う";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "コードを再発行する"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "コードを再発行する";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "확인 코드"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "확인 코드";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "대신 전화 해주세요"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "대신 전화 해주세요";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "코드 다시 요청하기"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "코드 다시 요청하기";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Pārbaudes kods"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Pārbaudes kods";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Piezvani man!"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Piezvani man!";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Pieprasīt kodu vēlreiz"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Pieprasīt kodu vēlreiz";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Код за потврда"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Код за потврда";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Наместо тоа јави ми се"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Наместо тоа јави ми се";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Повторно побарај код"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Повторно побарај код";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifikasjonskode"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifikasjonskode";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Ring meg istedenfor"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Ring meg istedenfor";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Be om kode på nytt"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Be om kode på nytt";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verificatiecode"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verificatiecode";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Bel mij"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Bel mij";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Code opnieuw aanvragen"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Code opnieuw aanvragen";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Kod weryfikacyjny"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Kod weryfikacyjny";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Zadzwoń do mnie"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Zadzwoń do mnie";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Pobierz kod ponownie"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Pobierz kod ponownie";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Código de Verificação"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Código de Verificação";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Ligue-me então"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Ligue-me então";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Requisitar Código Novamente"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Requisitar Código Novamente";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Código de Verificação"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Código de Verificação";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Verificar por Chamada"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Verificar por Chamada";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Pedir Código Novamente"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Pedir Código Novamente";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Cod de Verificare"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Cod de Verificare";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Mai bine Sună-mă"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Mai bine Sună-mă";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Solicită codul din nou"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Solicită codul din nou";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Код подтверждения"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Код подтверждения";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Лучше позвоните мне"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Лучше позвоните мне";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Запросить код заново"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Запросить код заново";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifikacijska koda"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifikacijska koda";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Raje me pokličite"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Raje me pokličite";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Ponovno zahtevajte kodo"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Ponovno zahtevajte kodo";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Murau wekuongorora kururama"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Murau wekuongorora kururama";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Ndifonere ini panzvimbo"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Ndifonere ini panzvimbo";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Kumbira murau zvakare "; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Kumbira murau zvakare ";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifiko Kodin"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifiko Kodin";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Bëj thirrje"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Bëj thirrje";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Kërko Kod Sërish"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Kërko Kod Sërish";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifieringskod"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Verifieringskod";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Ring mig istället"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Ring mig istället";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Begär ny kod"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Begär ny kod";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "รหัสตรวจสอบ"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "รหัสตรวจสอบ";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "โทรหาฉันแทน"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "โทรหาฉันแทน";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "ขอรหัสอีกครั้ง"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "ขอรหัสอีกครั้ง";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Doğrulama Kodu"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "Doğrulama Kodu";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "Onun yerine beni ara"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "Onun yerine beni ara";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Doğrulama Kodunu Tekrar İste"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "Doğrulama Kodunu Tekrar İste";

@ -928,7 +928,7 @@
"VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "验证码"; "VERIFICATION_CHALLENGE_DEFAULT_TEXT" = "验证码";
/* button text during registration to request phone number verification be done via phone call */ /* button text during registration to request phone number verification be done via phone call */
"VERIFICATION_CHALLENGE_SEND_VIAVOICE" = "通过电话呼叫我以获取验证码"; "VERIFICATION_CHALLENGE_SEND_VIA_VOICE" = "通过电话呼叫我以获取验证码";
/* button text during registration to request another SMS code be sent */ /* button text during registration to request another SMS code be sent */
"VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "重新获取验证码"; "VERIFICATION_CHALLENGE_SUBMIT_AGAIN" = "重新获取验证码";

Loading…
Cancel
Save