Show all contacts all the time

Contacts without conversation identity appear in alphabetical order at
the end of the inbox.

// FREEBIE
This commit is contained in:
lilia 2016-03-17 21:42:03 -07:00
parent b4960b29d8
commit 760bfffb50
5 changed files with 69 additions and 18 deletions

View File

@ -123,22 +123,26 @@
name: contactDetails.name,
id: contactDetails.number,
avatar: contactDetails.avatar,
type: 'private'
type: 'private',
active_at: Date.now()
}).save();
}
function onGroupReceived(ev) {
var groupDetails = ev.groupDetails;
var conversation = ConversationController.create({
var attributes = {
id: groupDetails.id,
name: groupDetails.name,
members: groupDetails.members,
avatar: groupDetails.avatar,
type: 'group',
});
if (!groupDetails.active) {
conversation.set({left: true});
};
if (groupDetails.active) {
attributes.active_at = Date.now();
} else {
attributes.left = true;
}
var conversation = ConversationController.create(attributes);
conversation.save();
}

View File

@ -17,8 +17,29 @@
this.listenTo(conversations, 'add change:active_at', this.addActive);
},
comparator: function(model) {
return -model.get('timestamp');
comparator: function(m1, m2) {
var timestamp1 = m1.get('timestamp');
var timestamp2 = m2.get('timestamp');
if (timestamp1 && timestamp2) {
return timestamp2 - timestamp1;
}
if (timestamp1) {
return -1;
}
if (timestamp2) {
return 1;
}
var title1 = m1.getTitle().toLowerCase();
var title2 = m2.getTitle().toLowerCase();
if (title1 === title2) {
return 0;
}
if (title1 < title2) {
return -1;
}
if (title1 > title2) {
return 1;
}
},
addActive: function(model) {
if (model.get('active_at')) {

View File

@ -144,6 +144,41 @@
conversations.createIndex('unread', ['conversationId', 'unread'], { unique: false });
next();
}
},
{
version: "9.0",
migrate: function(transaction, next) {
console.log('migration 9.0');
window.addEventListener('storage_ready', function() {
console.log('marking contacts and groups active');
var all = new Whisper.ConversationCollection();
var myNumber = textsecure.storage.user.getNumber();
all.fetch().then(function() {
var inactive = all.filter(function(model) {
return !model.get('active_at') && model.id !== myNumber;
});
inactive.sort(function(m1, m2) {
var title1 = m1.getTitle().toLowerCase();
var title2 = m2.getTitle().toLowerCase();
if (title1 === title2) {
return 0;
}
if (title1 < title2) {
return -1;
}
if (title1 > title2) {
return 1;
}
});
inactive.forEach(function(model) {
if (model.isPrivate() || !model.get('left')) {
model.save({ active_at: 1 });
}
});
});
});
next();
}
}
];
}());

View File

@ -14,7 +14,8 @@
if (conversation.get('active_at')) {
$el.prependTo(this.el);
} else {
$el.remove();
var index = getInboxCollection().indexOf(conversation);
$el.insertBefore(this.$('.conversation-list-item')[index+1]);
}
}
}

View File

@ -95,16 +95,6 @@
this.listenTo(this.searchView, 'open',
this.openConversation.bind(this, null));
if (inboxCollection.length === 0) {
this.searchView.showAllContacts = true;
this.searchView.reset();
this.listenToOnce(inboxCollection, 'add', function(model) {
this.searchView.showAllContacts = false;
this.searchView.reset();
model.trigger('opened');
}.bind(this));
}
new SocketView().render().$el.appendTo(this.$('.socket-status'));
extension.windows.onClosed(function() {