Improved contacts updates
Also fixed scroll in emoji menu
This commit is contained in:
parent
11162b9f77
commit
1c4150d2ab
@ -1203,9 +1203,12 @@ a.mobile_modal_action .tg_checkbox_label {
|
||||
|
||||
.emoji-menu {
|
||||
margin-left: -20px;
|
||||
margin-top: -267px;
|
||||
margin-top: -202px;
|
||||
width: 262px;
|
||||
}
|
||||
.emoji-menu .emoji-items-wrap {
|
||||
height: 106px;
|
||||
}
|
||||
.emoji-menu .emoji-items a {
|
||||
padding: 5px;
|
||||
}
|
||||
|
@ -373,7 +373,9 @@ angular.module('myApp.controllers', [])
|
||||
$scope.importContact = function () {
|
||||
AppUsersManager.openImportContact().then(function (foundContact) {
|
||||
if (foundContact) {
|
||||
$scope.$broadcast('contact_imported');
|
||||
$rootScope.$broadcast('history_focus', {
|
||||
peerString: AppUsersManager.getUserString(foundContact)
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
@ -496,6 +498,14 @@ angular.module('myApp.controllers', [])
|
||||
offset++;
|
||||
}
|
||||
$scope.dialogs.unshift(wrappedDialog);
|
||||
|
||||
if (!peersInDialogs[dialog.peerID]) {
|
||||
peersInDialogs[dialog.peerID] = true;
|
||||
if (contactsShown) {
|
||||
showMoreContacts();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$scope.$on('dialog_flush', function (e, dialog) {
|
||||
@ -518,12 +528,6 @@ angular.module('myApp.controllers', [])
|
||||
}
|
||||
});
|
||||
|
||||
$scope.$on('contact_imported', function () {
|
||||
if (contactsShown) {
|
||||
loadDialogs();
|
||||
}
|
||||
})
|
||||
|
||||
var prevMessages = false;
|
||||
$scope.$watchCollection('search', function () {
|
||||
if ($scope.search.messages != prevMessages) {
|
||||
@ -555,13 +559,15 @@ angular.module('myApp.controllers', [])
|
||||
}
|
||||
|
||||
$scope.importPhonebook = function () {
|
||||
PhonebookContactsService.openPhonebookImport().result.then(function (foundContacts) {
|
||||
if (contactsShown && foundContacts.length) {
|
||||
loadDialogs();
|
||||
}
|
||||
})
|
||||
PhonebookContactsService.openPhonebookImport();
|
||||
};
|
||||
|
||||
$scope.$on('contacts_update', function () {
|
||||
if (contactsShown) {
|
||||
showMoreContacts();
|
||||
}
|
||||
});
|
||||
|
||||
$scope.searchClear = function () {
|
||||
$scope.search.query = '';
|
||||
$scope.search.messages = false;
|
||||
@ -630,14 +636,6 @@ angular.module('myApp.controllers', [])
|
||||
});
|
||||
};
|
||||
|
||||
$scope.importPhonebook = function () {
|
||||
PhonebookContactsService.openPhonebookImport().result.then(function (foundContacts) {
|
||||
if (contactsShown && foundContacts.length) {
|
||||
loadDialogs();
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
function loadDialogs (force) {
|
||||
offset = 0;
|
||||
maxID = 0;
|
||||
@ -669,6 +667,7 @@ angular.module('myApp.controllers', [])
|
||||
AppMessagesManager.getDialogs('', maxID, 100);
|
||||
if (!dialogsResult.dialogs.length) {
|
||||
$scope.isEmpty.dialogs = true;
|
||||
showMoreDialogs();
|
||||
}
|
||||
} else {
|
||||
showMoreDialogs();
|
||||
@ -677,36 +676,40 @@ angular.module('myApp.controllers', [])
|
||||
});
|
||||
}
|
||||
|
||||
function showMoreContacts () {
|
||||
contactsShown = true;
|
||||
|
||||
var curJump = ++jump;
|
||||
AppUsersManager.getContacts($scope.search.query).then(function (contactsList) {
|
||||
if (curJump != jump) return;
|
||||
$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)
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
if (contactsList.length) {
|
||||
delete $scope.isEmpty.contacts;
|
||||
} else if (!$scope.search.query) {
|
||||
$scope.isEmpty.contacts = true;
|
||||
}
|
||||
});
|
||||
$scope.$broadcast('ui_dialogs_append');
|
||||
}
|
||||
|
||||
function showMoreDialogs () {
|
||||
if (contactsShown && (!hasMore || !offset)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!hasMore && !$scope.search.messages && ($scope.search.query || !$scope.dialogs.length)) {
|
||||
contactsShown = true;
|
||||
|
||||
var curJump = ++jump;
|
||||
AppUsersManager.getContacts($scope.search.query).then(function (contactsList) {
|
||||
if (curJump != jump) return;
|
||||
$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)
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
if (contactsList.length) {
|
||||
delete $scope.isEmpty.contacts;
|
||||
} else if (!$scope.search.query) {
|
||||
$scope.isEmpty.contacts = true;
|
||||
}
|
||||
});
|
||||
$scope.$broadcast('ui_dialogs_append');
|
||||
showMoreContacts();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -2285,6 +2288,9 @@ angular.module('myApp.controllers', [])
|
||||
};
|
||||
|
||||
$scope.$watch('search.query', updateContacts);
|
||||
$scope.$on('contacts_update', function () {
|
||||
updateContacts($scope.search && $scope.search.query || '');
|
||||
});
|
||||
|
||||
$scope.toggleEdit = function (enabled) {
|
||||
$scope.action = enabled ? 'edit' : '';
|
||||
@ -2325,17 +2331,13 @@ angular.module('myApp.controllers', [])
|
||||
selectedUserIDs.push(userID);
|
||||
});
|
||||
AppUsersManager.deleteContacts(selectedUserIDs).then(function () {
|
||||
resetSelected();
|
||||
$scope.action = '';
|
||||
updateContacts($scope.search.query);
|
||||
$scope.toggleEdit(false);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$scope.importContact = function () {
|
||||
AppUsersManager.openImportContact().then(function () {
|
||||
updateContacts($scope.search && $scope.search.query || '');
|
||||
});
|
||||
AppUsersManager.openImportContact();
|
||||
};
|
||||
|
||||
})
|
||||
|
@ -220,7 +220,7 @@ angular.module('myApp.services', [])
|
||||
onContactUpdated(foundUserID = importedContact.user_id, true);
|
||||
});
|
||||
|
||||
return foundUserID ? 1 : 0;
|
||||
return foundUserID || false;
|
||||
});
|
||||
};
|
||||
|
||||
@ -272,7 +272,7 @@ angular.module('myApp.services', [])
|
||||
|
||||
function onContactUpdated (userID, isContact) {
|
||||
if (angular.isArray(contactsList)) {
|
||||
var curPos = curIsContact = contactsList.indexOf(userID),
|
||||
var curPos = curIsContact = contactsList.indexOf(parseInt(userID)),
|
||||
curIsContact = curPos != -1;
|
||||
|
||||
if (isContact != curIsContact) {
|
||||
@ -282,6 +282,7 @@ angular.module('myApp.services', [])
|
||||
} else {
|
||||
contactsList.splice(curPos, 1);
|
||||
}
|
||||
$rootScope.$broadcast('contacts_update', userID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
<ul class="dropdown-menu">
|
||||
<li><a ng-click="openGroup()">New Group</a></li>
|
||||
<li><a ng-click="importContact()">New Contact</a></li>
|
||||
<li><a ng-click="openContacts()">Contacts</a></li>
|
||||
<li ng-if="!isEmpty.contacts"><a ng-click="openContacts()">Contacts</a></li>
|
||||
<li><a ng-click="openSettings()">Settings</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<ul ng-if="!curDialog.peer && isLoggedIn" class="dropdown-menu">
|
||||
<li><a ng-click="openGroup()">New Group</a></li>
|
||||
<li><a ng-click="importContact()">New Contact</a></li>
|
||||
<li><a ng-click="openContacts()">Contacts</a></li>
|
||||
<li ng-if="!isEmpty.contacts"><a ng-click="openContacts()">Contacts</a></li>
|
||||
<li><a ng-click="openSettings()">Settings</a></li>
|
||||
<li><a ng-click="logOut()">Log Out</a></li>
|
||||
</ul>
|
||||
|
20
app/vendor/jquery.emojiarea/jquery.emojiarea.js
vendored
20
app/vendor/jquery.emojiarea/jquery.emojiarea.js
vendored
@ -484,15 +484,17 @@
|
||||
'<td><a class="emoji-menu-tab icon-car"></a></td>' +
|
||||
'<td><a class="emoji-menu-tab icon-grid"></a></td>' +
|
||||
'</tr></table>').appendTo(this.$itemsTailWrap);
|
||||
this.$itemsWrap = $('<div class="emoji-items-wrap nano"></div>').appendTo(this.$itemsTailWrap);
|
||||
this.$itemsWrap = $('<div class="emoji-items-wrap nano mobile_scrollable_wrap"></div>').appendTo(this.$itemsTailWrap);
|
||||
this.$items = $('<div class="emoji-items nano-content">').appendTo(this.$itemsWrap);
|
||||
$('<div class="emoji-menu-tail">').appendTo(this.$menu);
|
||||
/*! MODIFICATION END */
|
||||
|
||||
$body.append(this.$menu);
|
||||
|
||||
/*! MODIFICATION: Following line is added by Igor Zhukov, in order to add scrollbars to EmojiMenu */
|
||||
this.$itemsWrap.nanoScroller({preventPageScrolling: true, tabIndex: -1});
|
||||
/*! MODIFICATION: Following 3 lines were added by Igor Zhukov, in order to add scrollbars to EmojiMenu */
|
||||
if (!Config.Mobile) {
|
||||
this.$itemsWrap.nanoScroller({preventPageScrolling: true, tabIndex: -1});
|
||||
}
|
||||
|
||||
$body.on('keydown', function(e) {
|
||||
if (e.keyCode === KEY_ESC || e.keyCode === KEY_TAB) {
|
||||
@ -583,7 +585,9 @@
|
||||
});
|
||||
this.currentCategory = category;
|
||||
this.load(category);
|
||||
this.$itemsWrap.nanoScroller({ scroll: 'top' });
|
||||
if (!Config.Mobile) {
|
||||
this.$itemsWrap.nanoScroller({ scroll: 'top' });
|
||||
}
|
||||
};
|
||||
/*! MODIFICATION END */
|
||||
|
||||
@ -608,9 +612,11 @@
|
||||
var updateItems = function () {
|
||||
self.$items.html(html.join(''));
|
||||
|
||||
setTimeout(function () {
|
||||
self.$itemsWrap.nanoScroller();
|
||||
}, 100);
|
||||
if (!Config.Mobile) {
|
||||
setTimeout(function () {
|
||||
self.$itemsWrap.nanoScroller();
|
||||
}, 100);
|
||||
}
|
||||
}
|
||||
|
||||
if (category > 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user