Skip to content
Snippets Groups Projects
Commit a402e0c5 authored by Kegan Dougal's avatar Kegan Dougal
Browse files

Added bing detection logic. Persist the display name of the user in...

Added bing detection logic. Persist the display name of the user in localstorage for use when binging.
parent 660364d6
No related branches found
No related tags found
No related merge requests found
......@@ -140,8 +140,41 @@ function(matrixService, $rootScope, $q, $timeout, mPresence) {
}
if (window.Notification) {
// Show notification when the window is hidden, or the user is idle
if (document.hidden || matrixService.presence.unavailable === mPresence.getState()) {
var bingWords = matrixService.config().bingWords;
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?
var isIdle = (document.hidden || matrixService.presence.unavailable === mPresence.getState());
if (shouldBing) {
console.log("Displaying notification for "+JSON.stringify(event));
var notification = new window.Notification(
($rootScope.events.rooms[event.room_id].members[event.user_id].displayname || event.user_id) +
......
......@@ -117,6 +117,10 @@ angular.module('HomeController', ['matrixService', 'eventHandlerService', 'Recen
matrixService.getDisplayName($scope.config.user_id).then(
function(response) {
$scope.profile.displayName = response.data.displayname;
var config = matrixService.config();
config.display_name = response.data.displayname;
matrixService.setConfig(config);
matrixService.saveConfig();
},
function(error) {
$scope.feedback = "Can't load display name";
......
......@@ -15,8 +15,8 @@ limitations under the License.
*/
angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
.controller('RoomController', ['$filter', '$scope', '$timeout', '$routeParams', '$location', '$rootScope', 'matrixService', 'eventHandlerService', 'mFileUpload', 'mPresence', 'matrixPhoneService', 'MatrixCall',
function($filter, $scope, $timeout, $routeParams, $location, $rootScope, matrixService, eventHandlerService, mFileUpload, mPresence, matrixPhoneService, MatrixCall) {
.controller('RoomController', ['$filter', '$scope', '$timeout', '$routeParams', '$location', '$rootScope', 'matrixService', 'eventHandlerService', 'mFileUpload', 'matrixPhoneService', 'MatrixCall',
function($filter, $scope, $timeout, $routeParams, $location, $rootScope, matrixService, eventHandlerService, mFileUpload, matrixPhoneService, MatrixCall) {
'use strict';
var MESSAGES_PER_PAGINATION = 30;
var THUMBNAIL_SIZE = 320;
......
......@@ -51,10 +51,10 @@
<h3>Desktop notifications</h3>
<div class="section" ng-switch="settings.notifications">
<div ng-switch-when="granted">
Notifications are enabled.
Notifications are enabled. You will be alerted when a message contains your user ID or display name.
<div class="section">
<h4>Words to alert on:</h4>
<input size=40 name="bingWords" ng-model="settings.bingWords" ng-list placeholder="Enter words separated with ,"
<h4>Additional words to alert on:</h4>
<input size=40 name="bingWords" ng-model="settings.bingWords" ng-list placeholder="Enter case-sensitive words separated with ,"
ng-blur="saveBingWords()"/>
<ul>
<li ng-repeat="word in settings.bingWords">{{word}}</li>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment