Browse Source

No-emoji notifications

Closes #427
master
Igor Zhukov 10 years ago
parent
commit
aeba895b89
  1. 47
      app/js/services.js

47
app/js/services.js

@ -1898,7 +1898,7 @@ angular.module('myApp.services', [])
notificationPhoto; notificationPhoto;
if (message.message) { if (message.message) {
notificationMessage = message.message; notificationMessage = RichTextProcessor.wrapPlainText(message.message);
} else if (message.media && message.media._ != 'messageMediaEmpty') { } else if (message.media && message.media._ != 'messageMediaEmpty') {
switch (message.media._) { switch (message.media._) {
case 'messageMediaPhoto': notificationMessage = 'Photo'; break; case 'messageMediaPhoto': notificationMessage = 'Photo'; break;
@ -1939,6 +1939,8 @@ angular.module('myApp.services', [])
peerString = AppChatsManager.getChatString(-peerID); peerString = AppChatsManager.getChatString(-peerID);
} }
notification.title = RichTextProcessor.wrapPlainText(notification.title);
notification.onclick = function () { notification.onclick = function () {
$rootScope.$broadcast('history_focus', {peerString: peerString}); $rootScope.$broadcast('history_focus', {peerString: peerString});
}; };
@ -3074,6 +3076,7 @@ angular.module('myApp.services', [])
emojiMap = {}, emojiMap = {},
emojiData = Config.Emoji, emojiData = Config.Emoji,
emojiIconSize = 18, emojiIconSize = 18,
emojiSupported = navigator.userAgent.search(/OS X|iPhone|iPad|iOS|Android/i) != -1,
emojiCode; emojiCode;
for (emojiCode in emojiData) { for (emojiCode in emojiData) {
@ -3106,13 +3109,14 @@ angular.module('myApp.services', [])
"\\uff21-\\uff3a\\uff41-\\uff5a" + // full width Alphabet "\\uff21-\\uff3a\\uff41-\\uff5a" + // full width Alphabet
"\\uff66-\\uff9f" + // half width Katakana "\\uff66-\\uff9f" + // half width Katakana
"\\uffa1-\\uffdc"; // half width Hangul (Korean) "\\uffa1-\\uffdc"; // half width Hangul (Korean)
var regexAlphaNumericChars = "0-9\.\_" + regexAlphaChars;
var regexAlphaNumericChars = "0-9\.\_" + regexAlphaChars;
var regExp = new RegExp('((?:(ftp|https?)://|(?:mailto:)?([A-Za-z0-9._%+-]+@))(\\S*\\.\\S*[^\\s.;,(){}<>"\']))|(\\n)|(' + emojiUtf.join('|') + ')|(^|\\s)(#[' + regexAlphaNumericChars + ']{3,20})', 'i'); var regExp = new RegExp('((?:(ftp|https?)://|(?:mailto:)?([A-Za-z0-9._%+-]+@))(\\S*\\.\\S*[^\\s.;,(){}<>"\']))|(\\n)|(' + emojiUtf.join('|') + ')|(^|\\s)(#[' + regexAlphaNumericChars + ']{3,20})', 'i');
var youtubeRegex = /(?:https?:\/\/)?(?:www\.)?youtu(?:|.be|be.com|.b)(?:\/v\/|\/watch\\?v=|e\/|\/watch(?:.+)v=)(.{11})(?:\&[^\s]*)?/; var youtubeRegex = /(?:https?:\/\/)?(?:www\.)?youtu(?:|.be|be.com|.b)(?:\/v\/|\/watch\\?v=|e\/|\/watch(?:.+)v=)(.{11})(?:\&[^\s]*)?/;
return { return {
wrapRichText: wrapRichText wrapRichText: wrapRichText,
wrapPlainText: wrapPlainText
}; };
function encodeEntities(value) { function encodeEntities(value) {
@ -3260,6 +3264,43 @@ var regexAlphaNumericChars = "0-9\.\_" + regexAlphaChars;
return $sce.trustAs('html', text); return $sce.trustAs('html', text);
} }
function wrapPlainText (text, options) {
if (emojiSupported) {
return text;
}
if (!text || !text.length) {
return '';
}
options = options || {};
text = text.replace(/\ufe0f/g, '', text);
var match,
raw = text,
text = [],
emojiTitle;
while ((match = raw.match(regExp))) {
text.push(raw.substr(0, match.index));
if (match[6]) {
if ((emojiCode = emojiMap[match[6]]) &&
(emojiTitle = emojiData[emojiCode][1][0])) {
text.push(':' + emojiTitle + ':');
} else {
text.push(match[0]);
}
} else {
text.push(match[0]);
}
raw = raw.substr(match.index + match[0].length);
}
text.push(raw);
return text.join('');
}
}) })

Loading…
Cancel
Save