Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
77 lines
1.6 KiB
JavaScript
77 lines
1.6 KiB
JavaScript
(function() {
|
|
|
|
'use strict';
|
|
/* global MozActivity, Promise, Provider, Search */
|
|
|
|
function Contacts() {
|
|
}
|
|
|
|
Contacts.prototype = {
|
|
|
|
__proto__: Provider.prototype,
|
|
|
|
name: 'Contacts',
|
|
|
|
click: function(e) {
|
|
var target = e.target;
|
|
|
|
Search.close();
|
|
/* jshint nonew: false */
|
|
new MozActivity({
|
|
name: 'open',
|
|
data: {
|
|
type: 'webcontacts/contact',
|
|
params: {
|
|
'id': target.dataset.contactId
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
search: function(input) {
|
|
return new Promise((resolve, reject) => {
|
|
var options = {
|
|
filterValue: input,
|
|
filterBy: ['givenName'],
|
|
filterOp: 'startsWith'
|
|
};
|
|
|
|
this.clear();
|
|
|
|
var request = navigator.mozContacts.find(options);
|
|
request.onsuccess = (function() {
|
|
var results = request.result;
|
|
if (!results.length) {
|
|
return reject();
|
|
}
|
|
|
|
var renderResults = [];
|
|
for (var i = 0; i < results.length; i++) {
|
|
var result = results[i];
|
|
for (var j = 0; j < result.name.length; j++) {
|
|
var renderObj = {
|
|
title: result.name[j],
|
|
dataset: {
|
|
contactId: result.id
|
|
}
|
|
};
|
|
|
|
if (result.photo) {
|
|
renderObj.icon = result.photo[0];
|
|
}
|
|
|
|
renderResults.push(renderObj);
|
|
}
|
|
}
|
|
resolve(renderResults);
|
|
}).bind(this);
|
|
|
|
request.onerror = function() {
|
|
};
|
|
});
|
|
}
|
|
};
|
|
|
|
Search.provider(new Contacts());
|
|
|
|
}());
|