kaiwa/clientapp/models/contacts.js

64 lines
1.5 KiB
JavaScript

/*global app*/
"use strict";
var async = require('async');
var BaseCollection = require('./baseCollection');
var Contact = require('./contact');
module.exports = BaseCollection.extend({
type: 'contacts',
model: Contact,
comparator: function (model1, model2) {
var show1 = model1.show;
var show2 = model2.show;
var name1 = model1.displayName.toLowerCase();
var name2 = model2.displayName.toLowerCase();
if (show1 === show2) {
if (name1 === name2) {
return 0;
}
if (name1 < name2) {
return -1;
}
return 1;
} else {
if (show1 === 'offline') {
return 1;
}
if (show2 === 'offline') {
return -1;
}
if (name1 === name2) {
return 0;
}
if (name1 < name2) {
return -1;
}
return 1;
}
},
initialize: function (model, options) {
var self = this;
this.bind('change', this.orderChange, this);
app.storage.roster.getAll(function (err, contacts) {
if (err) return;
contacts.forEach(function (contact) {
contact = new Contact(contact);
contact.save();
self.add(contact);
});
});
},
orderChange: function () {
this.sort();
}
});