From 4a069e1b1327d78490031bc6b20beb517b2f0bad Mon Sep 17 00:00:00 2001 From: Hannes Mannerheim Date: Tue, 2 Jun 2015 17:10:58 +0200 Subject: [PATCH] show server in mention suggestions when multiple users with same nickname matches --- actions/apiqvitterallfollowing.php | 6 ++++++ js/qvitter.js | 32 +++++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/actions/apiqvitterallfollowing.php b/actions/apiqvitterallfollowing.php index b85e0ae..9afd07b 100644 --- a/actions/apiqvitterallfollowing.php +++ b/actions/apiqvitterallfollowing.php @@ -82,6 +82,12 @@ class ApiQvitterAllFollowingAction extends ApiBareAuthAction $avatar = false; } $this_user = array($p->fullname,$p->nickname,$avatar); + if(!$p->isLocal()) { + $this_user[3] = $p->getUrl(); + } + else { + $this_user[3] = false; + } $this->users_stripped[$p->id] = $this_user; } diff --git a/js/qvitter.js b/js/qvitter.js index a3d35f0..c5a654a 100644 --- a/js/qvitter.js +++ b/js/qvitter.js @@ -505,8 +505,12 @@ function doLogin(streamToSet) { $.each(data,function(k,v){ if(v[2] === false) { var avatar = window.defaultAvatarStreamSize; } else { var avatar = v[2]; } + if(v[3]) { + // extract server base url + v[3] = v[3].substring(v[3].indexOf('://')+3,v[3].lastIndexOf(v[1])-1); + } v[0] = v[0] || v[1]; // if name is null we go with username there too - window.following[i] = { 'id': k,'name': v[0], 'username': v[1],'avatar': avatar }; + window.following[i] = { 'id': k,'name': v[0], 'username': v[1],'avatar': avatar, 'url':v[3] }; i++; }); } @@ -2149,13 +2153,35 @@ $('body').on('keyup', 'div.queet-box-syntax', function(e) { var term = match[0].substring(match[0].lastIndexOf('@')+1, match[0].length).toLowerCase(); window.lastMention.mentionPos = mentionPos; window.lastMention.cursorPos = cursorPos; + + + // see if anyone we're following matches + var suggestionsToShow = []; + var suggestionsUsernameCount = {}; $.each(window.following,function(){ var userregex = new RegExp(term); if(this.username.toLowerCase().match(userregex) || this.name.toLowerCase().match(userregex)) { - queetBox.siblings('.mentions-suggestions').append('
' + this.name + ' @' + this.username + '
') + suggestionsToShow.push({avatar:this.avatar, name:this.name, username:this.username,url:this.url}); + + // count the usernames to see if we need to show the server for any of them + if(typeof suggestionsUsernameCount[this.username] != 'undefined') { + suggestionsUsernameCount[this.username] = suggestionsUsernameCount[this.username] + 1; + } + else { + suggestionsUsernameCount[this.username] = 1; + } } }); - + + // show matches + $.each(suggestionsToShow,function(){ + var serverHtml = ''; + if(suggestionsUsernameCount[this.username]>1) { + serverHtml = '@' + this.url; + } + queetBox.siblings('.mentions-suggestions').append('
' + this.name + ' @' + this.username + serverHtml + '
') + }); + } else { queetBox.siblings('.mentions-suggestions').empty();