Browse Source

Hash-tags support

master
Igor Zhukov 11 years ago
parent
commit
88e3cb9b80
  1. 29
      app/js/controllers.js
  2. 19
      app/js/services.js

29
app/js/controllers.js

@ -230,6 +230,7 @@ angular.module('myApp.controllers', []) @@ -230,6 +230,7 @@ angular.module('myApp.controllers', [])
$scope.isLoggedIn = true;
$scope.isEmpty = {};
$scope.search = {};
$scope.historyFilter = {mediaType: false};
$scope.historyPeer = {};
@ -314,7 +315,17 @@ angular.module('myApp.controllers', []) @@ -314,7 +315,17 @@ angular.module('myApp.controllers', [])
updateCurDialog();
var lastSearch = false;
function updateCurDialog() {
if ($routeParams.q) {
if ($routeParams.q !== lastSearch) {
$scope.search.query = lastSearch = $routeParams.q;
$scope.search.messages = true;
return false;
}
} else {
lastSearch = false;
}
$scope.curDialog = {
peer: $routeParams.p || false,
messageID: $routeParams.m || false
@ -324,11 +335,10 @@ angular.module('myApp.controllers', []) @@ -324,11 +335,10 @@ angular.module('myApp.controllers', [])
ChangelogNotifyService.checkUpdate();
})
.controller('AppImDialogsController', function ($scope, $location, $q, $timeout, MtpApiManager, AppUsersManager, AppChatsManager, AppMessagesManager, AppPeersManager, PhonebookContactsService, ErrorService) {
.controller('AppImDialogsController', function ($scope, $location, $q, $timeout, $routeParams, MtpApiManager, AppUsersManager, AppChatsManager, AppMessagesManager, AppPeersManager, PhonebookContactsService, ErrorService) {
$scope.dialogs = [];
$scope.contacts = [];
$scope.search = {};
$scope.contactsLoaded = false;
$scope.phonebookAvailable = PhonebookContactsService.isAvailable();
@ -392,7 +402,7 @@ angular.module('myApp.controllers', []) @@ -392,7 +402,7 @@ angular.module('myApp.controllers', [])
var prevMessages = false;
$scope.$watchCollection('search', function () {
if ($scope.search.messages && (!angular.isString($scope.search.query) || !$scope.search.query.length)) {
prevMessages = $scope.search.messages = false;
$scope.search.messages = false;
}
if ($scope.search.messages != prevMessages) {
prevMessages = $scope.search.messages;
@ -401,6 +411,19 @@ angular.module('myApp.controllers', []) @@ -401,6 +411,19 @@ angular.module('myApp.controllers', [])
} else {
loadDialogs();
}
if ($routeParams.q && (!$scope.search.messages || $scope.search.query != $routeParams.q)) {
$timeout(function () {
$location.url(
'/im' +
($scope.curDialog.peer
? '?p=' + $scope.curDialog.peer +
($scope.curDialog.messageID ? '&m=' + $scope.curDialog.messageID : '')
: ''
)
);
});
}
});
$scope.importPhonebook = function () {

19
app/js/services.js

@ -3109,7 +3109,7 @@ angular.module('myApp.services', []) @@ -3109,7 +3109,7 @@ angular.module('myApp.services', [])
emojiMap[emojiData[emojiCode][0]] = emojiCode;
}
var regExp = new RegExp('((?:(ftp|https?)://|(?:mailto:)?([A-Za-z0-9._%+-]+@))(\\S*\\.\\S*[^\\s.;,(){}<>"\']))|(\\n)|(' + emojiUtf.join('|') + ')', 'i');
var regExp = new RegExp('((?:(ftp|https?)://|(?:mailto:)?([A-Za-z0-9._%+-]+@))(\\S*\\.\\S*[^\\s.;,(){}<>"\']))|(\\n)|(' + emojiUtf.join('|') + ')|(^|\s)(#[A-Za-z0-9\_\.]{4,20})', 'i');
var youtubeRegex = /(?:https?:\/\/)?(?:www\.)?youtu(?:|.be|be.com|.b)(?:\/v\/|\/watch\\?v=|e\/|\/watch(?:.+)v=)(.{11})(?:\&[^\s]*)?/;
return {
@ -3214,6 +3214,23 @@ angular.module('myApp.services', []) @@ -3214,6 +3214,23 @@ angular.module('myApp.services', [])
html.push(encodeEntities(match[6]));
}
}
else if (match[8]) {
if (!options.noLinks) {
html.push(
match[7],
'<a href="#/im?q=',
encodeURIComponent(match[8]),
'">',
encodeEntities(match[8]),
'</a>'
);
} else {
html.push(
match[7],
encodeEntities(match[8])
);
}
}
raw = raw.substr(match.index + match[0].length);
}

Loading…
Cancel
Save