Replace local contact group too

pull/211/head
M66B 3 years ago
parent 6fdd15ad17
commit 4e1c0e16ed

@ -679,62 +679,74 @@ public class EntityRule {
create = create.replace("$domain$", domain == null ? "" : domain); create = create.replace("$domain$", domain == null ? "" : domain);
if (create.contains("$group$")) { if (create.contains("$group$")) {
if (!Helper.hasPermission(context, Manifest.permission.READ_CONTACTS)) EntityContact local = null;
return false; if (message.from != null && message.from.length == 1) {
Log.i(this.name + " lookup=" + message.avatar); String email = ((InternetAddress) message.from[0]).getAddress();
if (message.avatar == null) if (!TextUtils.isEmpty(email))
return false; local = db.contact().getContact(message.account, EntityContact.TYPE_FROM, email);
}
ContentResolver resolver = context.getContentResolver(); if (local != null && !TextUtils.isEmpty(local.group)) {
try (Cursor contact = resolver.query(Uri.parse(message.avatar), Log.i(this.name + " local group=" + local.group);
new String[]{ContactsContract.Contacts._ID}, null, null, null)) { create = create.replace("$group$", local.group);
Log.i(this.name + " contacts=" + contact.getCount()); } else {
if (!contact.moveToNext()) if (!Helper.hasPermission(context, Manifest.permission.READ_CONTACTS))
return false; return false;
Log.i(this.name + " lookup=" + message.avatar);
if (message.avatar == null)
return false;
ContentResolver resolver = context.getContentResolver();
try (Cursor contact = resolver.query(Uri.parse(message.avatar),
new String[]{ContactsContract.Contacts._ID}, null, null, null)) {
Log.i(this.name + " contacts=" + contact.getCount());
if (!contact.moveToNext())
return false;
long contactId = contact.getLong(0); long contactId = contact.getLong(0);
Log.i(this.name + " contactId=" + contactId); Log.i(this.name + " contactId=" + contactId);
try (Cursor membership = resolver.query(ContactsContract.Data.CONTENT_URI, try (Cursor membership = resolver.query(ContactsContract.Data.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID}, new String[]{ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID},
ContactsContract.Data.MIMETYPE + "= ? AND " + ContactsContract.Data.MIMETYPE + "= ? AND " +
ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID + "= ?", ContactsContract.CommonDataKinds.GroupMembership.CONTACT_ID + "= ?",
new String[]{ new String[]{
ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE, ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE,
Long.toString((contactId)) Long.toString((contactId))
}, },
null)) { null)) {
Log.i(this.name + " membership=" + membership.getCount()); Log.i(this.name + " membership=" + membership.getCount());
int count = 0; int count = 0;
String groupName = null; String groupName = null;
while (membership.moveToNext()) { while (membership.moveToNext()) {
long groupId = membership.getLong(0); long groupId = membership.getLong(0);
try (Cursor groups = resolver.query(ContactsContract.Groups.CONTENT_URI, try (Cursor groups = resolver.query(ContactsContract.Groups.CONTENT_URI,
new String[]{ new String[]{
ContactsContract.Groups.TITLE, ContactsContract.Groups.TITLE,
ContactsContract.Groups.AUTO_ADD, ContactsContract.Groups.AUTO_ADD,
ContactsContract.Groups.GROUP_VISIBLE, ContactsContract.Groups.GROUP_VISIBLE,
}, },
ContactsContract.Groups._ID + " = ?", ContactsContract.Groups._ID + " = ?",
new String[]{Long.toString(groupId)}, new String[]{Long.toString(groupId)},
ContactsContract.Groups.TITLE)) { ContactsContract.Groups.TITLE)) {
while (groups.moveToNext()) { while (groups.moveToNext()) {
groupName = groups.getString(0); groupName = groups.getString(0);
int auto_add = groups.getInt(1); int auto_add = groups.getInt(1);
int visible = groups.getInt(2); int visible = groups.getInt(2);
if (auto_add == 0) if (auto_add == 0)
count++; count++;
Log.i(this.name + " membership groupId=" + groupId + Log.i(this.name + " membership groupId=" + groupId +
" name=" + groupName + " auto_add=" + auto_add + " visible=" + visible); " name=" + groupName + " auto_add=" + auto_add + " visible=" + visible);
}
} }
} }
Log.i(this.name + " name=" + groupName + " count=" + count);
if (count == 1)
create = create.replace("$group$", groupName);
else
return false;
} }
Log.i(this.name + " name=" + groupName + " count=" + count);
if (count == 1)
create = create.replace("$group$", groupName);
else
return false;
} }
} }
} }

Loading…
Cancel
Save