Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bitfireAT/vcard4android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicki Hirner <hirner@bitfire.at>2021-10-04 15:18:39 +0300
committerRicki Hirner <hirner@bitfire.at>2021-10-04 15:35:02 +0300
commit344aed2df4da72577cd28ffeffe61b4940544f0c (patch)
tree6d30c0ab16746780d74959357b1d9141472d88f9
parent54b7e6f8eefa30e6b4be5dd67308ebcfdda0c8f3 (diff)
Contact: list of members is now a Set (was: List)
-rw-r--r--src/main/java/at/bitfire/vcard4android/CachedGroupMembership.kt14
-rw-r--r--src/main/java/at/bitfire/vcard4android/Contact.kt5
-rw-r--r--src/test/java/at/bitfire/vcard4android/ContactReaderTest.kt4
3 files changed, 18 insertions, 5 deletions
diff --git a/src/main/java/at/bitfire/vcard4android/CachedGroupMembership.kt b/src/main/java/at/bitfire/vcard4android/CachedGroupMembership.kt
index 4cd2310..0a06838 100644
--- a/src/main/java/at/bitfire/vcard4android/CachedGroupMembership.kt
+++ b/src/main/java/at/bitfire/vcard4android/CachedGroupMembership.kt
@@ -10,6 +10,20 @@ package at.bitfire.vcard4android
import android.provider.ContactsContract.RawContacts.Data
+/**
+ * Represents a "cached group membership" row. Cached group memberships exist only
+ * for one reason, which _only_ applies to the vCard4 (KIND/MEMBER) group method:
+ *
+ * Every group has its list of members. When a contact's group memberships are changed,
+ * the contact is automatically set to dirty, but the group itself is not!
+ *
+ * So we keep a copy of all group membership rows as "cached memberships". At the
+ * beginning of every sync, the group memberships of every contact are compared with
+ * its cached group memberships. If they differ, the respective contact group
+ * is set to dirty (because its memberships have changed).
+ *
+ * Cached group memberships must not be used for anything else that detecting dirty groups.
+ */
object CachedGroupMembership {
const val CONTENT_ITEM_TYPE = "x.davdroid/cached-group-membership"
diff --git a/src/main/java/at/bitfire/vcard4android/Contact.kt b/src/main/java/at/bitfire/vcard4android/Contact.kt
index 442b1bc..98618f8 100644
--- a/src/main/java/at/bitfire/vcard4android/Contact.kt
+++ b/src/main/java/at/bitfire/vcard4android/Contact.kt
@@ -12,8 +12,6 @@ import at.bitfire.vcard4android.property.CustomScribes.registerCustomScribes
import at.bitfire.vcard4android.property.XAbDate
import ezvcard.VCardVersion
import ezvcard.io.text.VCardReader
-import ezvcard.parameter.EmailType
-import ezvcard.parameter.TelephoneType
import ezvcard.property.*
import org.apache.commons.lang3.builder.HashCodeBuilder
import org.apache.commons.lang3.builder.ReflectionToStringBuilder
@@ -21,6 +19,7 @@ import java.io.IOException
import java.io.OutputStream
import java.io.Reader
import java.util.*
+import kotlin.collections.HashSet
/**
* Data class for a contact; between vCards and the Android contacts provider.
@@ -40,7 +39,7 @@ class Contact {
var group = false
/** list of UIDs of group members without urn:uuid prefix (only meaningful if [group] is true) */
- val members = LinkedList<String>()
+ val members = mutableSetOf<String>()
var displayName: String? = null
var prefix: String? = null
diff --git a/src/test/java/at/bitfire/vcard4android/ContactReaderTest.kt b/src/test/java/at/bitfire/vcard4android/ContactReaderTest.kt
index 2928f45..1351b8e 100644
--- a/src/test/java/at/bitfire/vcard4android/ContactReaderTest.kt
+++ b/src/test/java/at/bitfire/vcard4android/ContactReaderTest.kt
@@ -167,7 +167,7 @@ class ContactReaderTest {
kind = Kind.group()
members += Member("member1")
})
- assertEquals("member1", c.members.first)
+ assertEquals("member1", c.members.first())
}
@Test
@@ -185,7 +185,7 @@ class ContactReaderTest {
kind = Kind.group()
members += Member("urn:uuid:be829cf2-4244-42f8-bd4c-ab39b4b5fcd3")
})
- assertEquals("be829cf2-4244-42f8-bd4c-ab39b4b5fcd3", c.members.first)
+ assertEquals("be829cf2-4244-42f8-bd4c-ab39b4b5fcd3", c.members.first())
}
@Test