@nativescript/contacts
Version:
Easy access to iOS and Android contact directory. Pick a contact, update date, or add a new one!
85 lines • 5.39 kB
JavaScript
import { ContactHelper } from '../helper';
import { GroupCommon } from './group.common';
/* missing constants from the {N} */
const ACCOUNT_TYPE = 'account_type'; // android.provider.ContactsContract.Groups.ACCOUNT_TYPE
const ACCOUNT_NAME = 'account_name'; // android.provider.ContactsContract.Groups.ACCOUNT_NAME
export class Group extends GroupCommon {
initializeFromNative(groupData) {
var mainCursorJson = ContactHelper.android.convertNativeCursorToJson(groupData);
this.id = mainCursorJson['_id'];
this.name = mainCursorJson['title'];
}
save(useDefault) {
//Android will always use the default account.
var mgr = android.accounts.AccountManager.get(ContactHelper.android.getActivity());
var accounts = mgr.getAccounts();
var accountName = null;
var accountType = null;
var id = this.id;
var rawId = 0;
var contentResolver = ContactHelper.android.getActivity().getContentResolver();
var ops = new java.util.ArrayList();
var aGroupColumns = android.provider.ContactsContract.GroupsColumns;
if (accounts.length === 0) {
throw new Error('No Accounts!');
}
accountName = accounts[0].name;
accountType = accounts[0].type;
if (id && id !== '') {
var rawIdCursor = contentResolver.query(android.provider.ContactsContract.Groups.CONTENT_URI, ['_id'], '_id = ' + id, null, null);
if (!rawIdCursor.moveToFirst()) {
throw new Error('Error optaining group id');
return;
}
rawId = rawIdCursor.getString(rawIdCursor.getColumnIndex('_id'));
rawIdCursor.close();
ops.add(android.content.ContentProviderOperation.newUpdate(android.provider.ContactsContract.Groups.CONTENT_URI)
.withValue(ACCOUNT_TYPE, accountType)
.withValue(ACCOUNT_NAME, accountName)
.withValue(aGroupColumns.TITLE, this.name)
.withSelection('_id' + '=?', [rawId])
.build());
}
else {
ops.add(android.content.ContentProviderOperation.newInsert(android.provider.ContactsContract.Groups.CONTENT_URI).withValue(ACCOUNT_TYPE, accountType).withValue(ACCOUNT_NAME, accountName).withValue(aGroupColumns.TITLE, this.name).build());
}
// Perform the save
contentResolver.applyBatch(android.provider.ContactsContract.AUTHORITY, ops);
}
delete() {
var mgr = android.accounts.AccountManager.get(ContactHelper.android.getActivity()), accounts = mgr.getAccounts(), id = this.id, rawId = 0, contentResolver = ContactHelper.android.getActivity().getContentResolver(), ops = new java.util.ArrayList();
if (accounts.length === 0) {
throw new Error('No Accounts!');
}
if (id && id !== '') {
var rawIdCursor = contentResolver.query(android.provider.ContactsContract.Groups.CONTENT_URI, ['_id'], '_id = ' + id, null, null);
if (!rawIdCursor.moveToFirst()) {
throw new Error('Error optaining group id');
return;
}
rawId = rawIdCursor.getString(rawIdCursor.getColumnIndex('_id'));
rawIdCursor.close();
ops.add(android.content.ContentProviderOperation.newDelete(android.provider.ContactsContract.Groups.CONTENT_URI)
.withSelection('_id' + '=?', [rawId])
.build());
// Perform the delete
contentResolver.applyBatch(android.provider.ContactsContract.AUTHORITY, ops);
}
}
addMember(contact) {
if (contact.id && contact.id !== '' && this.id && this.id !== '') {
var contentResolver = ContactHelper.android.getActivity().getContentResolver(), ops = new java.util.ArrayList();
ops.add(android.content.ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI).withValue(android.provider.ContactsContract.DataColumns.MIMETYPE, android.provider.ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE).withValue(android.provider.ContactsContract.DataColumns.RAW_CONTACT_ID, contact.id.toString()).withValue(android.provider.ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, this.id.toString()).build());
contentResolver.applyBatch(android.provider.ContactsContract.AUTHORITY, ops);
}
}
removeMember(contact) {
if (contact.id && contact.id !== '' && this.id && this.id !== '') {
var contentResolver = ContactHelper.android.getActivity().getContentResolver(), ops = new java.util.ArrayList(), SELECTION = android.provider.ContactsContract.DataColumns.MIMETYPE + '=? AND ' + android.provider.ContactsContract.DataColumns.RAW_CONTACT_ID + '=? AND ' + android.provider.ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID + '=?';
ops.add(android.content.ContentProviderOperation.newDelete(android.provider.ContactsContract.Data.CONTENT_URI).withSelection(SELECTION, [android.provider.ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE, contact.id.toString(), this.id.toString()]).build());
// Perform the delete
contentResolver.applyBatch(android.provider.ContactsContract.AUTHORITY, ops);
}
}
}
//# sourceMappingURL=group.android.js.map