diff --git a/app/index.html b/app/index.html
index aa1f8cff..ae21be84 100644
--- a/app/index.html
+++ b/app/index.html
@@ -11,7 +11,7 @@
-
+
@@ -37,12 +37,12 @@
-
+
-
+
diff --git a/app/js/controllers.js b/app/js/controllers.js
index 6161e3c7..099a5992 100644
--- a/app/js/controllers.js
+++ b/app/js/controllers.js
@@ -410,7 +410,7 @@ angular.module('myApp.controllers', [])
$scope.$on('user_update', angular.noop);
})
- .controller('AppImSendController', function ($scope, MtpApiManager, AppPeersManager, AppMessagesManager, ApiUpdatesManager, MtpApiFileManager) {
+ .controller('AppImSendController', function ($scope, $timeout, MtpApiManager, AppPeersManager, AppMessagesManager, ApiUpdatesManager, MtpApiFileManager) {
$scope.$watch('curDialog.peer', resetDraft);
$scope.$on('user_update', angular.noop);
@@ -438,27 +438,28 @@ angular.module('myApp.controllers', [])
$scope.$watch('draftMessage.files', onFilesSelected);
function sendMessage (e) {
- cancelEvent(e);
- var text = $scope.draftMessage.text;
+ $timeout(function () {
+ var text = $scope.draftMessage.text;
- if (!text.length) {
- return false;
- }
-
- text = text.replace(/:\s*(.+?)\s*:/g, function (all, name) {
- var utfChar = $.emojiarea.reverseIcons[name];
- if (utfChar !== undefined) {
- return utfChar;
+ if (!text.length) {
+ return false;
}
- return all;
- });
- AppMessagesManager.sendText($scope.curDialog.peerID, text);
- resetDraft();
- $scope.$broadcast('ui_message_send');
+ text = text.replace(/:\s*(.+?)\s*:/g, function (all, name) {
+ var utfChar = $.emojiarea.reverseIcons[name];
+ if (utfChar !== undefined) {
+ return utfChar;
+ }
+ return all;
+ });
+
+ AppMessagesManager.sendText($scope.curDialog.peerID, text);
+ resetDraft();
+ $scope.$broadcast('ui_message_send');
+ });
- return false;
+ return cancelEvent(e);
}
diff --git a/app/js/lib/mtproto.js b/app/js/lib/mtproto.js
index 18e8f751..5ae987e4 100644
--- a/app/js/lib/mtproto.js
+++ b/app/js/lib/mtproto.js
@@ -1099,6 +1099,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu
request.storeMethod('req_pq', {nonce: auth.nonce});
+ dLog('Send req_pq', bytesToHex(auth.nonce));
mtpSendPlainRequest(auth.dcID, request.getBuffer()).then(function (result) {
var deserializer = result.data;
var response = deserializer.fetchObject('ResPQ');
@@ -1115,7 +1116,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu
auth.pq = response.pq;
auth.fingerprints = response.server_public_key_fingerprints;
- // dLog('ResPQ', bytesToHex(auth.serverNonce), bytesToHex(auth.pq), auth.fingerprints);
+ dLog('Got ResPQ', bytesToHex(auth.serverNonce), bytesToHex(auth.pq), auth.fingerprints);
auth.publicKey = MtpRsaKeysManager.select(auth.fingerprints);
@@ -1123,6 +1124,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu
throw new Error('No public key found');
}
+ dLog('PQ factorization start');
if (!!window.Worker) {
var worker = new Worker('js/lib/pq_worker.js');
@@ -1181,6 +1183,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu
encrypted_data: rsaEncrypt(auth.publicKey, dataWithHash)
});
+ dLog('Send req_DH_params');
mtpSendPlainRequest(auth.dcID, request.getBuffer()).then(function (result) {
var deserializer = result.data;
var response = deserializer.fetchObject('Server_DH_Params', 'RESPONSE');
@@ -1250,6 +1253,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu
throw new Error('server_DH_inner_data serverNonce mismatch');
}
+ dLog('Done decrypting answer');
auth.g = response.g;
auth.dhPrime = response.dh_prime;
auth.gA = response.g_a;
@@ -1296,6 +1300,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu
encrypted_data: encryptedData
});
+ dLog('Send set_client_DH_params');
mtpSendPlainRequest(auth.dcID, request.getBuffer()).then(function (result) {
var deserializer = result.data;
var response = deserializer.fetchObject('Set_client_DH_params_answer');
@@ -1323,6 +1328,7 @@ factory('MtpAuthorizer', function (MtpDcConfigurator, MtpRsaKeysManager, MtpSecu
authKeyAux = authKeyHash.slice(0, 8),
authKeyID = authKeyHash.slice(-8);
+ dLog('Got Set_client_DH_params_answer', response._);
switch (response._) {
case 'dh_gen_ok':
var newNonceHash1 = sha1Hash(auth.newNonce.concat([1], authKeyAux)).slice(-16);