diff --git a/app/src/main/java/org/tasks/compose/PrincipalList.kt b/app/src/main/java/org/tasks/compose/PrincipalList.kt index 5ccb219a2..5b7779909 100644 --- a/app/src/main/java/org/tasks/compose/PrincipalList.kt +++ b/app/src/main/java/org/tasks/compose/PrincipalList.kt @@ -20,6 +20,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha +import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview @@ -28,11 +29,19 @@ import org.tasks.R import org.tasks.compose.Constants.HALF_KEYLINE import org.tasks.compose.Constants.ICON_ALPHA import org.tasks.compose.Constants.KEYLINE_FIRST +import org.tasks.data.CaldavCalendar +import org.tasks.data.CaldavCalendar.Companion.INVITE_DECLINED +import org.tasks.data.CaldavCalendar.Companion.INVITE_INVALID +import org.tasks.data.CaldavCalendar.Companion.INVITE_NO_RESPONSE +import org.tasks.data.CaldavCalendar.Companion.INVITE_UNKNOWN import org.tasks.data.Principal import org.tasks.data.Principal.Companion.name private val principals = listOf( - Principal().apply { displayName = "user1" }, + Principal().apply { + displayName = "user1" + inviteStatus = INVITE_INVALID + }, Principal().apply { displayName = "a really really really really really long display name" }, ) @@ -106,11 +115,31 @@ object ListSettingsComposables { Modifier.weight(1f), verticalAlignment = Alignment.CenterVertically ) { - Text( - principal.name!!, - style = MaterialTheme.typography.body1, - color = colors.onBackground, - ) + Column { + Text( + principal.name!!, + style = MaterialTheme.typography.body1, + color = colors.onBackground, + ) + if (principal.inviteStatus != CaldavCalendar.INVITE_ACCEPTED) { + Text( + stringResource(when (principal.inviteStatus) { + INVITE_UNKNOWN, INVITE_NO_RESPONSE -> + R.string.invite_awaiting_response + INVITE_DECLINED -> + R.string.invite_declined + INVITE_INVALID -> + R.string.invite_invalid + else -> throw IllegalStateException() + }), + style = MaterialTheme.typography.body2, + color = when (principal.inviteStatus) { + INVITE_DECLINED, INVITE_INVALID -> colorResource(R.color.overdue) + else -> colors.onBackground + }, + ) + } + } } onRemove?.let { Row( diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6464665a5..f3fa6fe4f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -691,4 +691,7 @@ File %1$s contained %2$s.\n\n List members Remove user? %1$s will no longer have access to %2$s + Invite declined + Invite awaiting response + Invite invalid