Browse Source

Improved contacts updates

Also fixed scroll in emoji menu
master
Igor Zhukov 10 years ago
parent
commit
1c4150d2ab
  1. 5
      app/css/mobile.css
  2. 102
      app/js/controllers.js
  3. 5
      app/js/services.js
  4. 2
      app/partials/desktop/im.html
  5. 2
      app/partials/mobile/head.html
  6. 20
      app/vendor/jquery.emojiarea/jquery.emojiarea.js

5
app/css/mobile.css

@ -1203,9 +1203,12 @@ a.mobile_modal_action .tg_checkbox_label { @@ -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;
}

102
app/js/controllers.js

@ -373,7 +373,9 @@ angular.module('myApp.controllers', []) @@ -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', []) @@ -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', []) @@ -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', []) @@ -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', []) @@ -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', []) @@ -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', []) @@ -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', []) @@ -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', []) @@ -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();
};
})

5
app/js/services.js

@ -220,7 +220,7 @@ angular.module('myApp.services', []) @@ -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', []) @@ -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', []) @@ -282,6 +282,7 @@ angular.module('myApp.services', [])
} else {
contactsList.splice(curPos, 1);
}
$rootScope.$broadcast('contacts_update', userID);
}
}
}

2
app/partials/desktop/im.html

@ -15,7 +15,7 @@ @@ -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>

2
app/partials/mobile/head.html

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
<ul ng-if="!curDialog.peer &amp;&amp; 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

@ -484,15 +484,17 @@ @@ -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 @@ @@ -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 @@ @@ -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…
Cancel
Save