Added utility function containsBingWord and hook up some css to it.
This commit is contained in:
parent
a402e0c5e6
commit
b36a0c71d1
|
@ -538,6 +538,10 @@ a:active { color: #000; }
|
||||||
color: #F00;
|
color: #F00;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.messageBing {
|
||||||
|
color: #00F;
|
||||||
|
}
|
||||||
|
|
||||||
#room-fullscreen-image {
|
#room-fullscreen-image {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0px;
|
top: 0px;
|
||||||
|
|
|
@ -45,6 +45,46 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
||||||
var eventMap = {};
|
var eventMap = {};
|
||||||
|
|
||||||
$rootScope.presence = {};
|
$rootScope.presence = {};
|
||||||
|
|
||||||
|
// TODO: This is attached to the rootScope so .html can just go containsBingWord
|
||||||
|
// for determining classes so it is easy to highlight bing messages. It seems a
|
||||||
|
// bit strange to put the impl in this service though, but I can't think of a better
|
||||||
|
// file to put it in.
|
||||||
|
$rootScope.containsBingWord = function(content) {
|
||||||
|
if (!content) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var bingWords = matrixService.config().bingWords;
|
||||||
|
var shouldBing = false;
|
||||||
|
|
||||||
|
// case-insensitive name check for user_id OR display_name if they exist
|
||||||
|
var myUserId = matrixService.config().user_id;
|
||||||
|
if (myUserId) {
|
||||||
|
myUserId = myUserId.toLocaleLowerCase();
|
||||||
|
}
|
||||||
|
var myDisplayName = matrixService.config().display_name;
|
||||||
|
if (myDisplayName) {
|
||||||
|
myDisplayName = myDisplayName.toLocaleLowerCase();
|
||||||
|
}
|
||||||
|
if ( (myDisplayName && content.toLocaleLowerCase().indexOf(myDisplayName) != -1) ||
|
||||||
|
(myUserId && content.toLocaleLowerCase().indexOf(myUserId) != -1) ) {
|
||||||
|
shouldBing = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// bing word list check
|
||||||
|
if (bingWords && !shouldBing) {
|
||||||
|
for (var i=0; i<bingWords.length; i++) {
|
||||||
|
// TODO: Should really be a word check, not a string of characters check.
|
||||||
|
// E.g. bing word is "coffee", "I have coffee" = bing, "I am a coffeepot" = no bing
|
||||||
|
// Currently it will bing for both.
|
||||||
|
if (content.indexOf(bingWords[i]) != -1) {
|
||||||
|
shouldBing = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return shouldBing;
|
||||||
|
};
|
||||||
|
|
||||||
var initialSyncDeferred;
|
var initialSyncDeferred;
|
||||||
|
|
||||||
|
@ -140,36 +180,7 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window.Notification) {
|
if (window.Notification) {
|
||||||
var bingWords = matrixService.config().bingWords;
|
var shouldBing = $rootScope.containsBingWord(event.content.body);
|
||||||
var content = event.content.body;
|
|
||||||
var shouldBing = false;
|
|
||||||
|
|
||||||
// case-insensitive name check for user_id OR display_name if they exist
|
|
||||||
var myUserId = matrixService.config().user_id;
|
|
||||||
if (myUserId) {
|
|
||||||
myUserId = myUserId.toLocaleLowerCase();
|
|
||||||
}
|
|
||||||
var myDisplayName = matrixService.config().display_name;
|
|
||||||
if (myDisplayName) {
|
|
||||||
myDisplayName = myDisplayName.toLocaleLowerCase();
|
|
||||||
}
|
|
||||||
if ( (myDisplayName && content.toLocaleLowerCase().indexOf(myDisplayName) != -1) ||
|
|
||||||
(myUserId && content.toLocaleLowerCase().indexOf(myUserId) != -1) ) {
|
|
||||||
shouldBing = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// bing word list check
|
|
||||||
if (bingWords && !shouldBing) {
|
|
||||||
for (var i=0; i<bingWords.length; i++) {
|
|
||||||
// TODO: Should really be a word check, not a string of characters check.
|
|
||||||
// E.g. bing word is "coffee", "I have coffee" = bing, "I am a coffeepot" = no bing
|
|
||||||
// Currently it will bing for both.
|
|
||||||
if (content.indexOf(bingWords[i]) != -1) {
|
|
||||||
shouldBing = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Binging every message when idle doesn't make much sense. Can we use this more sensibly?
|
// TODO: Binging every message when idle doesn't make much sense. Can we use this more sensibly?
|
||||||
var isIdle = (document.hidden || matrixService.presence.unavailable === mPresence.getState());
|
var isIdle = (document.hidden || matrixService.presence.unavailable === mPresence.getState());
|
||||||
|
|
|
@ -105,7 +105,7 @@
|
||||||
|
|
||||||
<span ng-show='msg.content.msgtype === "m.text"'
|
<span ng-show='msg.content.msgtype === "m.text"'
|
||||||
class="message"
|
class="message"
|
||||||
ng-class="msg.echo_msg_state"
|
ng-class="containsBingWord(msg.content.body) ? msg.echo_msg_state + ' messageBing' : msg.echo_msg_state"
|
||||||
ng-bind-html="((msg.content.msgtype === 'm.text') ? msg.content.body : '') | linky:'_blank'"/>
|
ng-bind-html="((msg.content.msgtype === 'm.text') ? msg.content.body : '') | linky:'_blank'"/>
|
||||||
|
|
||||||
<span ng-show='msg.type === "m.call.invite" && msg.user_id == state.user_id'>Outgoing Call</span>
|
<span ng-show='msg.type === "m.call.invite" && msg.user_id == state.user_id'>Outgoing Call</span>
|
||||||
|
|
Loading…
Reference in New Issue