Suggesting contacts in dialogs
This commit is contained in:
parent
27d33a3027
commit
94433b1f76
@ -2518,3 +2518,10 @@ ce671b orange
|
|||||||
.user_color_7:hover {color: #2996ad;}
|
.user_color_7:hover {color: #2996ad;}
|
||||||
.user_color_8,
|
.user_color_8,
|
||||||
.user_color_8:hover {color: #ce671b;}
|
.user_color_8:hover {color: #ce671b;}
|
||||||
|
|
||||||
|
|
||||||
|
.im_dialogs_contacts_wrap h5 {
|
||||||
|
color: #999;
|
||||||
|
font-size: 13px;
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
@ -219,11 +219,14 @@ angular.module('myApp.controllers', [])
|
|||||||
// console.log('init controller');
|
// console.log('init controller');
|
||||||
|
|
||||||
$scope.dialogs = [];
|
$scope.dialogs = [];
|
||||||
|
$scope.contacts = [];
|
||||||
$scope.search = {};
|
$scope.search = {};
|
||||||
|
|
||||||
var offset = 0,
|
var offset = 0,
|
||||||
maxID = 0,
|
maxID = 0,
|
||||||
hasMore = false;
|
hasMore = false,
|
||||||
|
peersInDialogs = {},
|
||||||
|
contactsShown;
|
||||||
|
|
||||||
MtpApiManager.invokeApi('account.updateStatus', {offline: false});
|
MtpApiManager.invokeApi('account.updateStatus', {offline: false});
|
||||||
$scope.$on('dialogs_need_more', function () {
|
$scope.$on('dialogs_need_more', function () {
|
||||||
@ -275,10 +278,16 @@ angular.module('myApp.controllers', [])
|
|||||||
offset = 0;
|
offset = 0;
|
||||||
maxID = 0;
|
maxID = 0;
|
||||||
hasMore = false;
|
hasMore = false;
|
||||||
|
peersInDialogs = {};
|
||||||
|
contactsShown = false;
|
||||||
|
|
||||||
AppMessagesManager.getDialogs($scope.search.query, maxID).then(function (dialogsResult) {
|
AppMessagesManager.getDialogs($scope.search.query, maxID).then(function (dialogsResult) {
|
||||||
$scope.dialogs = [];
|
$scope.dialogs = [];
|
||||||
|
|
||||||
|
if (!$scope.search.query) {
|
||||||
|
$scope.contacts = [];
|
||||||
|
}
|
||||||
|
|
||||||
if (dialogsResult.dialogs.length) {
|
if (dialogsResult.dialogs.length) {
|
||||||
offset += dialogsResult.dialogs.length;
|
offset += dialogsResult.dialogs.length;
|
||||||
|
|
||||||
@ -286,6 +295,7 @@ angular.module('myApp.controllers', [])
|
|||||||
hasMore = dialogsResult.count === null || offset < dialogsResult.count;
|
hasMore = dialogsResult.count === null || offset < dialogsResult.count;
|
||||||
|
|
||||||
angular.forEach(dialogsResult.dialogs, function (dialog) {
|
angular.forEach(dialogsResult.dialogs, function (dialog) {
|
||||||
|
peersInDialogs[dialog.peerID] = true;
|
||||||
$scope.dialogs.push(AppMessagesManager.wrapForDialog(dialog.top_message, dialog.unread_count));
|
$scope.dialogs.push(AppMessagesManager.wrapForDialog(dialog.top_message, dialog.unread_count));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -306,7 +316,27 @@ angular.module('myApp.controllers', [])
|
|||||||
}
|
}
|
||||||
|
|
||||||
function showMoreDialogs () {
|
function showMoreDialogs () {
|
||||||
if (!hasMore || !offset) {
|
if (!hasMore && contactsShown || !offset) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasMore) {
|
||||||
|
contactsShown = true;
|
||||||
|
|
||||||
|
AppUsersManager.getContacts($scope.search.query).then(function (contactsList) {
|
||||||
|
$scope.contacts = [];
|
||||||
|
angular.forEach(contactsList, function(userID) {
|
||||||
|
if (peersInDialogs[userID] === undefined) {
|
||||||
|
$scope.contacts.push({
|
||||||
|
userID: userID,
|
||||||
|
user: AppUsersManager.getUser(userID),
|
||||||
|
userPhoto: AppUsersManager.getUserPhoto(userID, 'User'),
|
||||||
|
peerString: AppUsersManager.getUserString(userID)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$scope.$broadcast('ui_dialogs_append');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -316,6 +346,7 @@ angular.module('myApp.controllers', [])
|
|||||||
hasMore = dialogsResult.count === null || offset < dialogsResult.count;
|
hasMore = dialogsResult.count === null || offset < dialogsResult.count;
|
||||||
|
|
||||||
angular.forEach(dialogsResult.dialogs, function (dialog) {
|
angular.forEach(dialogsResult.dialogs, function (dialog) {
|
||||||
|
peersInDialogs[dialog.peerID] = true;
|
||||||
$scope.dialogs.push(AppMessagesManager.wrapForDialog(dialog.top_message, dialog.unread_count));
|
$scope.dialogs.push(AppMessagesManager.wrapForDialog(dialog.top_message, dialog.unread_count));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -60,6 +60,10 @@ angular.module('myApp.directives', ['myApp.filters'])
|
|||||||
onContentLoaded(function () {
|
onContentLoaded(function () {
|
||||||
updateScroller();
|
updateScroller();
|
||||||
moreNotified = false;
|
moreNotified = false;
|
||||||
|
|
||||||
|
$timeout(function () {
|
||||||
|
$(scrollableWrap).trigger('scroll');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -67,6 +71,10 @@ angular.module('myApp.directives', ['myApp.filters'])
|
|||||||
onContentLoaded(function () {
|
onContentLoaded(function () {
|
||||||
updateScroller();
|
updateScroller();
|
||||||
moreNotified = false;
|
moreNotified = false;
|
||||||
|
|
||||||
|
$timeout(function () {
|
||||||
|
$(scrollableWrap).trigger('scroll');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -176,7 +184,7 @@ angular.module('myApp.directives', ['myApp.filters'])
|
|||||||
|
|
||||||
var transform = false,
|
var transform = false,
|
||||||
trs = ['transform', 'webkitTransform', 'MozTransform', 'msTransform', 'OTransform'],
|
trs = ['transform', 'webkitTransform', 'MozTransform', 'msTransform', 'OTransform'],
|
||||||
i = 0;
|
i;
|
||||||
for (i = 0; i < trs.length; i++) {
|
for (i = 0; i < trs.length; i++) {
|
||||||
if (trs[i] in historyMessagesEl.style) {
|
if (trs[i] in historyMessagesEl.style) {
|
||||||
transform = trs[i];
|
transform = trs[i];
|
||||||
|
@ -15,6 +15,30 @@
|
|||||||
<ul class="nav nav-pills nav-stacked">
|
<ul class="nav nav-pills nav-stacked">
|
||||||
<li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID" ng-class="{active: curDialog.peerID == dialogMessage.peerID}"></li>
|
<li class="im_dialog_wrap" my-dialog dialog-message="dialogMessage" ng-repeat="dialogMessage in dialogs track by dialogMessage.peerID" ng-class="{active: curDialog.peerID == dialogMessage.peerID}"></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<div class="im_dialogs_contacts_wrap" ng-show="contacts.length > 0">
|
||||||
|
<h5>Contacts</h5>
|
||||||
|
<ul class="nav nav-pills nav-stacked">
|
||||||
|
<li class="im_dialog_wrap" ng-repeat="contact in contacts | orderBy:'user.sortName' track by contact.userID" ng-class="{active: curDialog.peerID == contact.userID}">
|
||||||
|
<a class="im_dialog" ng-click="dialogSelect(contact.peerString)">
|
||||||
|
<div class="im_dialog_photo pull-left">
|
||||||
|
<img
|
||||||
|
class="im_dialog_photo"
|
||||||
|
my-load-thumb
|
||||||
|
thumb="contact.userPhoto"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="im_dialog_message_wrap">
|
||||||
|
<div class="im_dialog_peer">
|
||||||
|
<span class="im_dialog_user" ng-bind-html="contact.user.rFullName"></span>
|
||||||
|
</div>
|
||||||
|
<div class="im_dialog_message">
|
||||||
|
<span class="im_dialog_message_text">{{contact.user | userStatus}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user