@nativescript/contacts
Version:
Easy access to iOS and Android contact directory. Pick a contact, update date, or add a new one!
71 lines • 2.7 kB
JavaScript
import '@nativescript/core/globals';
import { Contact } from './models/contact';
/* pass debug messages to main thread since web workers do not have console access */
// function console_log(msg) { postMessage({ type: 'debug', message: msg }); }
// function console_dump(msg) { postMessage({ type: 'dump', message: msg }); }
self.onmessage = function (event) {
// prettier-ignore
const contactFields = event.data.contactFields || [
'name',
'organization',
'nickname',
'notes',
'photo',
'urls',
'phoneNumbers',
'emailAddresses',
'postalAddresses'
];
const keysToFetch = []; // All Properties that we are using in the Model
if (contactFields.indexOf('name') > -1) {
// prettier-ignore
keysToFetch.push('givenName', 'familyName', 'middleName', 'namePrefix', 'nameSuffix', 'phoneticGivenName', 'phoneticMiddleName', 'phoneticFamilyName');
}
if (contactFields.indexOf('organization') > -1) {
keysToFetch.push('jobTitle', 'departmentName', 'organizationName');
}
if (contactFields.indexOf('nickname') > -1) {
keysToFetch.push('nickname');
}
if (contactFields.indexOf('notes') > -1) {
keysToFetch.push('note');
}
if (contactFields.indexOf('photo') > -1) {
keysToFetch.push('imageData', 'imageDataAvailable');
}
if (contactFields.indexOf('phoneNumbers') > -1) {
keysToFetch.push('phoneNumbers');
}
if (contactFields.indexOf('emailAddresses') > -1) {
keysToFetch.push('emailAddresses');
}
if (contactFields.indexOf('postalAddresses') > -1) {
keysToFetch.push('postalAddresses');
}
if (contactFields.indexOf('urlAddresses') > -1) {
keysToFetch.push('urlAddresses');
}
const store = new CNContactStore();
let error;
let fetch = CNContactFetchRequest.alloc().initWithKeysToFetch(keysToFetch);
let cts = [];
let nativeMutableArray = NSMutableArray.alloc().init();
fetch.unifyResults = true;
fetch.predicate = null;
store.enumerateContactsWithFetchRequestErrorUsingBlock(fetch, error, function (c, s) {
nativeMutableArray.addObject(c);
const contactModel = new Contact();
contactModel.initializeFromNative(c, contactFields);
cts.push(contactModel);
});
if (error) {
postMessage({ type: 'error', message: error });
}
if (cts.length > 0) {
postMessage({ type: 'result', message: { data: cts, response: 'fetch' } });
}
else {
postMessage({ type: 'result', message: { data: null, response: 'fetch' } });
}
};
//# sourceMappingURL=worker-get-all-contacts.ios.js.map