Improved login form
Also supported delayed account reset
This commit is contained in:
parent
2dae17eade
commit
c764845c21
@ -235,6 +235,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
$scope.credentials.type = sentCode.type
|
||||
$scope.nextPending.type = sentCode.next_type || false
|
||||
$scope.nextPending.remaining = sentCode.timeout || false
|
||||
delete $scope.nextPending.progress
|
||||
|
||||
nextTimeoutCheck()
|
||||
|
||||
@ -248,6 +249,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
$scope.nextPending.remaining > 0) {
|
||||
return
|
||||
}
|
||||
$scope.nextPending.progress = true
|
||||
MtpApiManager.invokeApi('auth.resendCode', {
|
||||
phone_number: $scope.credentials.phone_full,
|
||||
phone_code_hash: $scope.credentials.phone_code_hash
|
||||
@ -260,10 +262,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
$scope.nextPending.remaining === false) {
|
||||
return
|
||||
}
|
||||
if (!(--$scope.nextPending.remaining)) {
|
||||
$scope.nextPending.success = false
|
||||
$scope.sendNext()
|
||||
} else {
|
||||
if ((--$scope.nextPending.remaining) > 0) {
|
||||
nextTimeout = $timeout(nextTimeoutCheck, 1000)
|
||||
}
|
||||
}
|
||||
@ -283,7 +282,6 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
delete $scope.credentials.phone_unoccupied
|
||||
delete $scope.credentials.phone_code_valid
|
||||
delete $scope.nextPending.remaining
|
||||
delete $scope.nextPending.success
|
||||
}
|
||||
|
||||
$scope.$watch('credentials.phone_code', function (newVal) {
|
||||
@ -297,6 +295,10 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
})
|
||||
|
||||
$scope.logIn = function (forceSignUp) {
|
||||
if ($scope.progress.enabled &&
|
||||
$scope.progress.forceSignUp == forceSignUp) {
|
||||
return
|
||||
}
|
||||
var method = 'auth.signIn'
|
||||
var params = {
|
||||
phone_number: $scope.credentials.phone_full,
|
||||
@ -311,6 +313,7 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
})
|
||||
}
|
||||
|
||||
$scope.progress.forceSignUp = forceSignUp;
|
||||
$scope.progress.enabled = true
|
||||
MtpApiManager.invokeApi(method, params, options).then(saveAuth, function (error) {
|
||||
$scope.progress.enabled = false
|
||||
@ -358,7 +361,9 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
}
|
||||
|
||||
$scope.checkPassword = function () {
|
||||
$scope.progress.enabled = true
|
||||
return PasswordManager.check($scope.password, $scope.credentials.password, options).then(saveAuth, function (error) {
|
||||
$scope.progress.enabled = false
|
||||
switch (error.type) {
|
||||
case 'PASSWORD_HASH_INVALID':
|
||||
$scope.error = {field: 'password'}
|
||||
@ -416,7 +421,13 @@ angular.module('myApp.controllers', ['myApp.i18n'])
|
||||
delete $scope.progress.enabled
|
||||
delete $scope.credentials.password_needed
|
||||
$scope.credentials.phone_unoccupied = true
|
||||
}, function () {
|
||||
}, function (error) {
|
||||
if (error.type &&
|
||||
error.type.substr(0, 17) == '2FA_CONFIRM_WAIT_') {
|
||||
error.waitTime = error.type.substr(17)
|
||||
error.type = '2FA_CONFIRM_WAIT_TIME'
|
||||
}
|
||||
|
||||
delete $scope.progress.enabled
|
||||
})
|
||||
})
|
||||
|
@ -139,14 +139,15 @@ angular.module('myApp.filters', ['myApp.i18n'])
|
||||
if (isNaN(duration)) {
|
||||
duration = 0
|
||||
}
|
||||
var hours = Math.floor(duration / 3600)
|
||||
var mins = Math.floor((duration % 3600) / 60)
|
||||
var secs = duration % 60
|
||||
var mins = Math.floor((duration - secs) / 60.0)
|
||||
|
||||
if (secs < 10) {
|
||||
secs = '0' + secs
|
||||
}
|
||||
var durationStr = (hours ? hours + ':' : '') + mins + ':' secs
|
||||
|
||||
return mins + ':' + secs
|
||||
durationStr = durationStr.replace(/:(\d(?::|$))/g, ':0\1')
|
||||
|
||||
return durationStr
|
||||
}
|
||||
}])
|
||||
|
||||
|
@ -414,6 +414,8 @@
|
||||
"error_modal_channel_not_accessible": "Sorry, this channel is not accessible.",
|
||||
"error_modal_not_contact_flood": "Sorry, you can only send messages to mutual contacts at the moment. {more-info-link: More info »}",
|
||||
"error_modal_gelocation_na": "App was unable to determine your current location",
|
||||
"error_modal_2fa_recent_confirm": "Your recent attempts to reset this account have been cancelled by its active user. Please try again in 7 days.",
|
||||
"error_modal_2fa_delayed_time_md": "You'll be able to reset your account in: **{time}**",
|
||||
|
||||
|
||||
"head_telegram": "Telegram",
|
||||
@ -509,12 +511,14 @@
|
||||
"login_generating_key": "Generating keys",
|
||||
"login_generating_keys_info": "Keys are only generated once. This can take a few minutes on slower devices, please be patient.",
|
||||
"login_edit_number": "Edit phone number",
|
||||
"login_enter_code_label_md": "We've sent you a code via **Telegram** (not SMS).\nPlease check your Telegram messages and enter the code below.",
|
||||
"login_enter_code_label_md": "We've sent the code to the **Telegram** app on your other device.\nPlease enter the code below.",
|
||||
"login_enter_sms_code_label_md": "We've sent an SMS with an activation code to your phone.\nPlease enter the code below.",
|
||||
"login_enter_call_code_label_md": "We are calling your phone to dictate a code.\nPlease enter the code below.",
|
||||
"login_code_remaining": "You will be able to request SMS in {remaining}",
|
||||
"login_call_remaining": "You will be able to request call in {remaining}",
|
||||
"login_code_not_received": "Send code via SMS",
|
||||
"login_enter_sms_code_label_md": "We have sent you a code via SMS.\nPlease enter it below.",
|
||||
"login_call_remaining": "Telegram will call you in {remaining}",
|
||||
"login_calling": "Telegram is calling you",
|
||||
"login_number_dialed": "Telegram dialed your number",
|
||||
"login_code_not_received_call": "Send code via Call",
|
||||
"login_code_requesting": "Requesting code",
|
||||
"login_incorrect_sms_code": "Incorrect SMS code",
|
||||
"login_number_input_placeholder": "Enter your code",
|
||||
"login_checking_code": "Checking code",
|
||||
|
@ -48,6 +48,11 @@
|
||||
<span ng-switch-when="PEER_FLOOD" my-i18n="error_modal_not_contact_flood">
|
||||
<my-i18n-param name="more-info-link"><a href="https://telegram.me/spambot">{0}</a></my-i18n-param>
|
||||
</span>
|
||||
<span ng-switch-when="2FA_RECENT_CONFIRM" my-i18n="error_modal_2fa_recent_confirm"></span>
|
||||
<span ng-switch-when="2FA_CONFIRM_WAIT_TIME" my-i18n="error_modal_2fa_delayed_time_md">
|
||||
<my-i18n-param name="time"><span ng-bind="error.waitTime | duration"></span></my-i18n-param>
|
||||
</span>
|
||||
|
||||
<span ng-switch-when="CALLBACK_RESPONSE" ng-bind-html="error.description_html"></span>
|
||||
|
||||
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
<div class="md-input-group md-input-has-value login_phone_country_input_group" ng-click="chooseCountry()">
|
||||
<label class="md-input-label" my-i18n="login_country_select_placeholder"></label>
|
||||
<div autocomplete="off" class="md-input"ng-bind="credentials.phone_country_name"></div>
|
||||
<div autocomplete="off" class="md-input" ng-bind="credentials.phone_country_name"></div>
|
||||
</div>
|
||||
|
||||
<div class="login_phone_groups_wrap clearfix">
|
||||
@ -59,29 +59,29 @@
|
||||
|
||||
<div ng-switch="credentials.type._">
|
||||
<p ng-switch-when="auth.sentCodeTypeApp" class="login_smscode_lead" my-i18n="login_enter_code_label_md"></p>
|
||||
<p ng-switch-when="auth.sentCodeTypeCall" class="login_smscode_lead" my-i18n="login_enter_call_code_label_md"></p>
|
||||
<p ng-switch-default class="login_smscode_lead" my-i18n="login_enter_sms_code_label_md"></p>
|
||||
</div>
|
||||
|
||||
<div ng-if="nextPending.type" ng-switch="nextPending.remaining === false">
|
||||
<div ng-if="nextPending.type" ng-switch="nextPending.remaining > 0">
|
||||
<p ng-switch-when="true" class="login_smscode_lead">
|
||||
<a ng-click="sendNext()" my-i18n="login_code_not_received"></a>
|
||||
</p>
|
||||
<p ng-switch-default class="login_smscode_lead">
|
||||
<span ng-show="nextPending.remaining > 0" my-i18n="login_call_remaining">
|
||||
<span ng-switch="nextPending.type._" my-i18n>
|
||||
<span ng-switch-when="auth.codeTypeCall" my-i18n-format="login_call_remaining"></span>
|
||||
<span ng-switch-default my-i18n-format="login_code_remaining"></span>
|
||||
<my-i18n-param name="remaining" ng-bind="nextPending.remaining | duration"></my-i18n-param>
|
||||
</span>
|
||||
<span ng-show="!nextPending.remaining" my-i18n="login_calling"></span>
|
||||
</p>
|
||||
<p ng-switch-default class="login_smscode_lead" ng-switch="nextPending.progress">
|
||||
<a ng-switch-when="true" ng-disabled class="disabled">
|
||||
<span my-i18n="login_code_requesting"></span><span my-loading-dots></span>
|
||||
</a>
|
||||
<a ng-switch-default ng-click="sendNext()" ng-switch="nextPending.type._">
|
||||
<span ng-switch-when="auth.codeTypeCall" my-i18n="login_code_not_received_call"></span>
|
||||
<span ng-switch-default my-i18n="login_code_not_received"></span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div ng-if="credentials.type._ == 'auth.sentCodeTypeCall'">
|
||||
<p class="login_smscode_lead">
|
||||
<span my-i18n="login_number_dialed"></span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="md-input-group md-input-group-centered" ng-class="{'md-input-error': error.field == 'phone_code'}" my-labeled-input ng-switch="error.field == 'phone_code'">
|
||||
<label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_sms_code"></label>
|
||||
<label ng-switch-default class="md-input-label" my-i18n="login_number_input_placeholder"></label>
|
||||
@ -96,13 +96,13 @@
|
||||
<div class="md-input-group" ng-class="{'md-input-error': error.field == 'first_name'}" my-labeled-input ng-switch="error.field == 'first_name'">
|
||||
<label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_first_name"></label>
|
||||
<label ng-switch-default class="md-input-label" my-i18n="login_first_name"></label>
|
||||
<input autocomplete="off" class="md-input" my-focused name="first_name" type="text" ng-model="credentials.first_name" required />
|
||||
<input autocomplete="off" class="md-input" my-focused name="first_name" type="text" ng-model="credentials.first_name" my-submit-on-enter required />
|
||||
</div>
|
||||
|
||||
<div class="md-input-group" ng-class="{'md-input-error': error.field == 'last_name'}" my-labeled-input ng-switch="error.field == 'last_name'">
|
||||
<label ng-switch-when="true" class="md-input-label" my-i18n="login_incorrect_last_name"></label>
|
||||
<label ng-switch-default class="md-input-label" my-i18n="login_last_name"></label>
|
||||
<input autocomplete="off" class="md-input" name="last_name" type="text" ng-model="credentials.last_name" />
|
||||
<input autocomplete="off" class="md-input" name="last_name" type="text" ng-model="credentials.last_name" my-submit-on-enter />
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
@ -43,7 +43,7 @@
|
||||
|
||||
<div class="md-input-group md-input-has-value login_phone_country_input_group" ng-click="chooseCountry()">
|
||||
<label class="md-input-label" my-i18n="login_country_select_placeholder"></label>
|
||||
<div autocomplete="off" class="md-input"ng-bind="credentials.phone_country_name"></div>
|
||||
<div autocomplete="off" class="md-input" ng-bind="credentials.phone_country_name"></div>
|
||||
</div>
|
||||
|
||||
<div class="login_phone_groups_wrap clearfix">
|
||||
@ -69,24 +69,26 @@
|
||||
|
||||
<div ng-switch="credentials.type._">
|
||||
<p ng-switch-when="auth.sentCodeTypeApp" class="login_smscode_lead" my-i18n="login_enter_code_label_md"></p>
|
||||
<p ng-switch-when="auth.sentCodeTypeCall" class="login_smscode_lead" my-i18n="login_enter_call_code_label_md"></p>
|
||||
<p ng-switch-default class="login_smscode_lead" my-i18n="login_enter_sms_code_label_md"></p>
|
||||
</div>
|
||||
|
||||
<div ng-if="nextPending.type" ng-switch="nextPending.remaining === false">
|
||||
<div ng-if="nextPending.type" ng-switch="nextPending.remaining > 0">
|
||||
<p ng-switch-when="true" class="login_smscode_lead">
|
||||
<a ng-click="sendNext()" my-i18n="login_code_not_received"></a>
|
||||
</p>
|
||||
<p ng-switch-default class="login_smscode_lead">
|
||||
<span ng-show="nextPending.remaining > 0" my-i18n="login_call_remaining">
|
||||
<span ng-switch="nextPending.type._" my-i18n>
|
||||
<span ng-switch-when="auth.codeTypeCall" my-i18n-format="login_call_remaining"></span>
|
||||
<span ng-switch-default my-i18n-format="login_code_remaining"></span>
|
||||
<my-i18n-param name="remaining" ng-bind="nextPending.remaining | duration"></my-i18n-param>
|
||||
</span>
|
||||
<span ng-show="!nextPending.remaining" my-i18n="login_calling"></span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div ng-if="credentials.type._ == 'auth.sentCodeTypeCall'">
|
||||
<p class="login_smscode_lead">
|
||||
<span my-i18n="login_number_dialed"></span>
|
||||
<p ng-switch-default class="login_smscode_lead" ng-switch="nextPending.progress">
|
||||
<a ng-switch-when="true" ng-disabled class="disabled">
|
||||
<span my-i18n="login_code_requesting"></span><span my-loading-dots></span>
|
||||
</a>
|
||||
<a ng-switch-default ng-click="sendNext()" ng-switch="nextPending.type._">
|
||||
<span ng-switch-when="auth.codeTypeCall" my-i18n="login_code_not_received_call"></span>
|
||||
<span ng-switch-default my-i18n="login_code_not_received"></span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user