Skip to content

Commit

Permalink
Fix the displaying of the full name (closes #83)
Browse files Browse the repository at this point in the history
  • Loading branch information
Bnyro committed Mar 9, 2023
1 parent a2b80aa commit 004d59e
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 16 deletions.
1 change: 1 addition & 0 deletions app/src/main/java/com/bnyro/contacts/obj/ContactData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ data class ContactData(
var accountType: String? = null,
var accountName: String? = null,
var displayName: String? = null,
var alternativeName: String? = null,
var firstName: String? = null,
var surName: String? = null,
var photo: Bitmap? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import com.bnyro.contacts.enums.SortOrder
import com.bnyro.contacts.ext.contentColor
import com.bnyro.contacts.ext.notAName
import com.bnyro.contacts.obj.ContactData
import com.bnyro.contacts.ui.models.ContactsModel
import com.bnyro.contacts.ui.screens.SingleContactScreen
Expand All @@ -59,6 +58,11 @@ fun ContactItem(
mutableStateOf(false)
}

val contactName = when (sortOrder) {
SortOrder.FIRSTNAME -> contact.displayName
SortOrder.LASTNAME -> contact.alternativeName
}.orEmpty().trim()

ElevatedCard(
modifier = Modifier
.padding(horizontal = 10.dp, vertical = 5.dp)
Expand Down Expand Up @@ -111,7 +115,7 @@ fun ContactItem(
} else if (thumbnail == null) {
Text(
modifier = Modifier.align(Alignment.Center),
text = (contact.displayName?.firstOrNull() ?: "").toString(),
text = (contactName.firstOrNull() ?: "").toString(),
color = contentColor // MaterialTheme.colorScheme.onPrimary
)
} else {
Expand All @@ -126,13 +130,7 @@ fun ContactItem(
}
}
Spacer(modifier = Modifier.width(20.dp))
Text(
when {
sortOrder == SortOrder.FIRSTNAME -> "${contact.firstName ?: ""} ${contact.surName ?: ""}"
sortOrder == SortOrder.LASTNAME && !contact.surName.notAName() && !contact.firstName.notAName() -> "${contact.surName}, ${contact.firstName}"
else -> contact.displayName.orEmpty()
}.trim()
)
Text(contactName)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -318,14 +318,14 @@ fun ContactsPage(
}
}.sortedBy {
when (filterOptions.sortOder) {
SortOrder.FIRSTNAME -> it.firstName
SortOrder.LASTNAME -> it.surName
SortOrder.FIRSTNAME -> it.displayName
SortOrder.LASTNAME -> it.alternativeName
}
}.groupBy {
when (filterOptions.sortOder) {
SortOrder.FIRSTNAME -> it.firstName?.firstOrNull()?.uppercase()
SortOrder.LASTNAME -> it.surName?.firstOrNull()?.uppercase()
}
SortOrder.FIRSTNAME -> it.displayName
SortOrder.LASTNAME -> it.alternativeName
}?.firstOrNull()?.uppercase()
}

contactGroups.forEach { (firstLetter, groupedContacts) ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import android.provider.ContactsContract.CommonDataKinds.Phone
import android.provider.ContactsContract.CommonDataKinds.Photo
import android.provider.ContactsContract.CommonDataKinds.StructuredName
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal
import android.provider.ContactsContract.Contacts
import android.provider.ContactsContract.Data
import android.provider.ContactsContract.RawContacts
import androidx.annotation.RequiresPermission
Expand All @@ -43,7 +44,8 @@ class DeviceContactsHelper(private val context: Context) : ContactsHelper() {
private val projection = arrayOf(
Data.RAW_CONTACT_ID,
RawContacts.CONTACT_ID,
ContactsContract.Contacts.DISPLAY_NAME,
Contacts.DISPLAY_NAME,
Contacts.DISPLAY_NAME_ALTERNATIVE,
StructuredName.GIVEN_NAME,
StructuredName.FAMILY_NAME,
RawContacts.ACCOUNT_TYPE,
Expand Down Expand Up @@ -72,7 +74,8 @@ class DeviceContactsHelper(private val context: Context) : ContactsHelper() {
// avoid duplicates
if (contactList.any { contact -> contact.contactId == contactId }) continue

val displayName = it.stringValue(ContactsContract.Contacts.DISPLAY_NAME)
val displayName = it.stringValue(Contacts.DISPLAY_NAME)
val alternativeName = it.stringValue(Contacts.DISPLAY_NAME_ALTERNATIVE)
var firstName = it.stringValue(StructuredName.GIVEN_NAME)
var surName = it.stringValue(StructuredName.FAMILY_NAME)

Expand All @@ -99,9 +102,11 @@ class DeviceContactsHelper(private val context: Context) : ContactsHelper() {
accountType = it.stringValue(RawContacts.ACCOUNT_TYPE),
accountName = it.stringValue(RawContacts.ACCOUNT_NAME),
displayName = displayName,
alternativeName = alternativeName,
firstName = firstName,
surName = surName
)

contactList.add(contact)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ class LocalContactsHelper(context: Context) : ContactsHelper() {
ContactData(
contactId = it.contact.id,
displayName = it.contact.displayName,
alternativeName = listOf(it.contact.surName, it.contact.firstName).joinToString(
", "
),
firstName = it.contact.firstName,
surName = it.contact.surName,
photo = profileImage,
Expand Down

0 comments on commit 004d59e

Please sign in to comment.