Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 344aed2d authored by Ricki Hirner's avatar Ricki Hirner
Browse files

Contact: list of members is now a Set (was: List)

parent 54b7e6f8
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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"
+2 −3
Original line number Diff line number Diff line
@@ -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
+2 −2
Original line number Diff line number Diff line
@@ -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