@@ -7,11 +7,13 @@ import com.simplemobiletools.commons.extensions.normalizeString
77import com.simplemobiletools.commons.helpers.*
88import com.simplemobiletools.contacts.pro.helpers.SMT_PRIVATE
99
10- data class Contact (var id : Int , var prefix : String , var firstName : String , var middleName : String , var surname : String , var suffix : String , var nickname : String ,
11- var photoUri : String , var phoneNumbers : ArrayList <PhoneNumber >, var emails : ArrayList <Email >, var addresses : ArrayList <Address >,
12- var events : ArrayList <Event >, var source : String , var starred : Int , var contactId : Int , var thumbnailUri : String , var photo : Bitmap ? , var notes : String ,
13- var groups : ArrayList <Group >, var organization : Organization , var websites : ArrayList <String >, var IMs : ArrayList <IM >, var mimetype : String ,
14- var ringtone : String? ) :
10+ data class Contact (
11+ var id : Int , var prefix : String , var firstName : String , var middleName : String , var surname : String , var suffix : String , var nickname : String ,
12+ var photoUri : String , var phoneNumbers : ArrayList <PhoneNumber >, var emails : ArrayList <Email >, var addresses : ArrayList <Address >,
13+ var events : ArrayList <Event >, var source : String , var starred : Int , var contactId : Int , var thumbnailUri : String , var photo : Bitmap ? , var notes : String ,
14+ var groups : ArrayList <Group >, var organization : Organization , var websites : ArrayList <String >, var IMs : ArrayList <IM >, var mimetype : String ,
15+ var ringtone : String?
16+ ) :
1517 Comparable <Contact > {
1618 companion object {
1719 var sorting = 0
@@ -121,10 +123,38 @@ data class Contact(var id: Int, var prefix: String, var firstName: String, var m
121123 }
122124 }
123125
126+ // photos stored locally always have different hashcodes. Avoid constantly refreshing the contact lists as the app thinks something changed.
127+ fun getHashWithoutPrivatePhoto (): Int {
128+ val photoToUse = if (isPrivate()) null else photo
129+ return copy(photo = photoToUse).hashCode()
130+ }
131+
124132 fun getStringToCompare (): String {
125- return copy(id = 0 , prefix = " " , firstName = getNameToDisplay().toLowerCase(), middleName = " " , surname = " " , suffix = " " , nickname = " " , photoUri = " " ,
126- phoneNumbers = ArrayList (), emails = ArrayList (), events = ArrayList (), source = " " , addresses = ArrayList (), starred = 0 , contactId = 0 ,
127- thumbnailUri = " " , notes = " " , groups = ArrayList (), websites = ArrayList (), organization = Organization (" " , " " ), IMs = ArrayList (), ringtone = " " ).toString()
133+ return copy(
134+ id = 0 ,
135+ prefix = " " ,
136+ firstName = getNameToDisplay().toLowerCase(),
137+ middleName = " " ,
138+ surname = " " ,
139+ suffix = " " ,
140+ nickname = " " ,
141+ photoUri = " " ,
142+ phoneNumbers = ArrayList (),
143+ emails = ArrayList (),
144+ events = ArrayList (),
145+ source = " " ,
146+ addresses = ArrayList (),
147+ starred = 0 ,
148+ contactId = 0 ,
149+ thumbnailUri = " " ,
150+ photo = null ,
151+ notes = " " ,
152+ groups = ArrayList (),
153+ websites = ArrayList (),
154+ organization = Organization (" " , " " ),
155+ IMs = ArrayList (),
156+ ringtone = " "
157+ ).toString()
128158 }
129159
130160 fun getHashToCompare () = getStringToCompare().hashCode()
@@ -135,7 +165,8 @@ data class Contact(var id: Int, var prefix: String, var firstName: String, var m
135165 return fullOrganization.trim().trimEnd(' ,' )
136166 }
137167
138- fun isABusinessContact () = prefix.isEmpty() && firstName.isEmpty() && middleName.isEmpty() && surname.isEmpty() && suffix.isEmpty() && organization.isNotEmpty()
168+ fun isABusinessContact () =
169+ prefix.isEmpty() && firstName.isEmpty() && middleName.isEmpty() && surname.isEmpty() && suffix.isEmpty() && organization.isNotEmpty()
139170
140171 fun doesContainPhoneNumber (text : String , convertLetters : Boolean ): Boolean {
141172 return if (text.isNotEmpty()) {
0 commit comments