From e7dcec1eff9c978ed5c2f8dc9d89c1aef65c5ef3 Mon Sep 17 00:00:00 2001 From: eliotcougar Date: Thu, 10 Sep 2026 06:49:29 +0300 Subject: [PATCH] Format asset metadata with localized file sizes and minute precision (#6197) Extract the visible asset metadata formatting from local/talkback-all-10. Use Android file-size formatting and derive the date/time pattern from the app configuration locale and the device 12/24-hour preference, without seconds. Remove the metadata-only remember cache so recomposition uses the current formatting context. Preserve the existing size/date separator, missing-file message, row layout, action buttons, and accessibility semantics. No update-result or asset-editor changes are included. --- .../ang/ui/userasset/UserAssetActivity.kt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt index 69ccd426..6b335b85 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt @@ -4,6 +4,8 @@ import android.content.Intent import android.net.Uri import android.os.Bundle import android.provider.OpenableColumns +import android.text.format.DateFormat +import android.text.format.Formatter import androidx.activity.viewModels import androidx.annotation.StringRes import androidx.compose.foundation.layout.Box @@ -34,6 +36,8 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow @@ -45,7 +49,6 @@ import com.v2ray.ang.AppConfig import com.v2ray.ang.R import com.v2ray.ang.dto.entities.AssetUrlCache import com.v2ray.ang.dto.entities.AssetUrlItem -import com.v2ray.ang.extension.toTrafficString import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.toastError import com.v2ray.ang.extension.toastSuccess @@ -66,7 +69,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.io.File -import java.text.DateFormat +import java.text.SimpleDateFormat import java.util.Date private enum class AddAssetMenuAction(@StringRes val labelRes: Int) { @@ -353,11 +356,14 @@ private fun UserAssetItem( onEdit: () -> Unit, onDeleteClick: () -> Unit ) { + val context = LocalContext.current + val locale = LocalConfiguration.current.locales[0] val propertiesText = if (fileMetadata != null) { - remember(fileMetadata) { - val dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM) - "${fileMetadata.length.toTrafficString()} • ${dateFormat.format(Date(fileMetadata.lastModified))}" - } + val fileSize = Formatter.formatFileSize(context, fileMetadata.length) + val skeleton = if (DateFormat.is24HourFormat(context)) "yMMMdHm" else "yMMMdhm" + val formattedDate = SimpleDateFormat(DateFormat.getBestDateTimePattern(locale, skeleton), locale) + .format(Date(fileMetadata.lastModified)) + "$fileSize • $formattedDate" } else { stringResource(R.string.msg_file_not_found) }