Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Localised DateFormat in device info #2783

Merged
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ import com.wire.android.ui.joinConversation.JoinConversationViaCodeState
import com.wire.android.ui.joinConversation.JoinConversationViaDeepLinkDialog
import com.wire.android.ui.joinConversation.JoinConversationViaInviteLinkError
import com.wire.android.ui.theme.WireTheme
import com.wire.android.util.formatMediumDateTime
import com.wire.android.util.deviceDateTimeFormat
import com.wire.android.util.ui.PreviewMultipleThemes
import com.wire.android.util.ui.UIText
import com.wire.kalium.logic.configuration.server.ServerConfig
Expand Down Expand Up @@ -319,7 +319,7 @@ fun NewClientDialog(
val devicesList = data.clientsInfo.map {
stringResource(
R.string.new_device_dialog_message_defice_info,
it.date.formatMediumDateTime() ?: "",
it.date.deviceDateTimeFormat() ?: "",
it.deviceInfo.asString()
)
}.joinToString("")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ import com.wire.android.ui.theme.wireDimensions
import com.wire.android.ui.theme.wireTypography
import com.wire.android.util.extension.formatAsFingerPrint
import com.wire.android.util.extension.formatAsString
import com.wire.android.util.formatMediumDateTime
import com.wire.android.util.deviceDateTimeFormat
import com.wire.android.util.ui.PreviewMultipleThemes
import com.wire.android.util.ui.UIText

Expand Down Expand Up @@ -227,14 +227,14 @@ private fun DeviceItemTexts(
stringResource(
R.string.remove_device_id_and_time_label_active_label,
device.clientId.formatAsString(),
device.registrationTime.formatMediumDateTime() ?: "",
device.registrationTime.deviceDateTimeFormat() ?: "",
device.lastActiveDescription() ?: ""
)
} else {
stringResource(
R.string.remove_device_id_and_time_label,
device.clientId.formatAsString(),
device.registrationTime.formatMediumDateTime() ?: ""
device.registrationTime.deviceDateTimeFormat() ?: ""
)
}
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ import com.wire.android.ui.common.button.WireButtonState
import com.wire.android.ui.common.textfield.WirePasswordTextField
import com.wire.android.ui.common.textfield.WireTextFieldState
import com.wire.android.ui.theme.wireDimensions
import com.wire.android.util.formatMediumDateTime
import com.wire.android.util.deviceDateTimeFormat

@OptIn(ExperimentalComposeUiApi::class)
@Composable
Expand All @@ -63,7 +63,7 @@ fun RemoveDeviceDialog(
stringResource(
R.string.remove_device_id_and_time_label,
state.device.clientId.value,
state.device.registrationTime?.formatMediumDateTime() ?: ""
state.device.registrationTime?.deviceDateTimeFormat() ?: ""
),
onDismiss = onDialogDismissHideKeyboard,
dismissButtonProperties = WireDialogButtonProperties(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ import com.wire.android.util.CustomTabsHelper
import com.wire.android.util.dialogErrorStrings
import com.wire.android.util.extension.formatAsFingerPrint
import com.wire.android.util.extension.formatAsString
import com.wire.android.util.formatMediumDateTime
import com.wire.android.util.deviceDateTimeFormat
import com.wire.android.util.ui.UIText
import com.wire.kalium.logic.CoreFailure
import com.wire.kalium.logic.data.conversation.ClientId
Expand Down Expand Up @@ -216,7 +216,7 @@ fun DeviceDetailsContent(
Divider(color = MaterialTheme.wireColorScheme.background)
}

state.device.registrationTime?.formatMediumDateTime()?.let {
state.device.registrationTime?.deviceDateTimeFormat()?.let {
item {
DeviceDetailSectionContent(
stringResource(id = R.string.label_client_added_time),
Expand Down
9 changes: 9 additions & 0 deletions app/src/main/kotlin/com/wire/android/util/DateTimeUtil.kt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ private val serverDateTimeFormat = SimpleDateFormat(
).apply { timeZone = TimeZone.getTimeZone("UTC") }
private val mediumDateTimeFormat = DateFormat
.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM)
private val longDateShortTimeFormat = DateFormat
.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT)
private val mediumOnlyDateTimeFormat = DateFormat
.getDateInstance(DateFormat.MEDIUM)
private val messageTimeFormatter = DateFormat
Expand Down Expand Up @@ -61,6 +63,13 @@ fun String.formatMediumDateTime(): String? =
null
}

fun String.deviceDateTimeFormat(): String? =
try {
this.serverDate()?.let { longDateShortTimeFormat.format(it) }
} catch (e: ParseException) {
null
}

fun String.formatFullDateShortTime(): String? =
try {
this.serverDate()?.let { fullDateShortTimeFormatter.format(it) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ class DateTimeUtilKtTest {

@Test
fun `given a invalid date, when performing a transformation, then return null`() {
val result = "NOT_VALID".formatMediumDateTime()
val result = "NOT_VALID".deviceDateTimeFormat()
assertEquals(null, result)
}

@Test
fun `given a valid date, when performing a transformation, then return with medium format`() {
val result = "2022-03-24T18:02:30.360Z".formatMediumDateTime()
val result = "2022-03-24T18:02:30.360Z".deviceDateTimeFormat()
assertEquals("Mar 24, 2022, 6:02:30 PM", result)
}
}