From 22d908385b222afa4d60e4af62a2feff5b4ebab5 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 12 Mar 2025 15:24:15 -0400 Subject: [PATCH] Consistently format byte sizes. --- .../backup/v2/ui/status/BackupStatusBanner.kt | 6 +- .../securesms/components/DocumentView.java | 3 +- .../remote/RemoteBackupsSettingsFragment.kt | 3 +- .../data/DataAndStorageSettingsFragment.kt | 4 +- .../storage/ManageStorageSettingsFragment.kt | 4 +- .../mediaoverview/MediaGalleryAllAdapter.java | 5 +- .../MediaOverviewPageFragment.java | 7 ++- .../mediasend/MediaSendDocumentFragment.kt | 4 +- .../v2/review/MediaReviewFragment.kt | 4 +- .../ui/restore/RemoteRestoreActivity.kt | 4 +- .../RestoreLocalBackupFragment.kt | 4 +- .../revealable/ViewOnceMessageView.java | 3 +- .../stories/viewer/info/StoryInfoHeader.kt | 3 +- .../securesms/util/MemoryUnitFormat.java | 58 ------------------- .../org/thoughtcrime/securesms/util/Util.java | 40 ------------- .../org/signal/core/util/ByteExtensions.kt | 3 +- 16 files changed, 31 insertions(+), 124 deletions(-) delete mode 100644 app/src/main/java/org/thoughtcrime/securesms/util/MemoryUnitFormat.java diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusBanner.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusBanner.kt index 2f4a89f42c..f0f29b245e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusBanner.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/status/BackupStatusBanner.kt @@ -262,7 +262,7 @@ sealed interface BackupStatusData { class NotEnoughFreeSpace( requiredSpace: ByteSize ) : BackupStatusData { - val requiredSpace = requiredSpace.toUnitString(maxPlaces = 2) + val requiredSpace = requiredSpace.toUnitString() override val iconRes: Int = R.drawable.symbol_backup_error_24 @@ -301,8 +301,8 @@ sealed interface BackupStatusData { @Composable get() = when (restoreStatus) { RestoreStatus.NORMAL -> stringResource( R.string.BackupStatus__status_size_of_size, - bytesDownloaded.toUnitString(maxPlaces = 2), - bytesTotal.toUnitString(maxPlaces = 2) + bytesDownloaded.toUnitString(), + bytesTotal.toUnitString() ) RestoreStatus.LOW_BATTERY -> stringResource(R.string.BackupStatus__status_device_has_low_battery) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/DocumentView.java b/app/src/main/java/org/thoughtcrime/securesms/components/DocumentView.java index 921f4552d8..5f8e2650fb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/DocumentView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/DocumentView.java @@ -20,6 +20,7 @@ import com.pnikosis.materialishprogress.ProgressWheel; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import org.signal.core.util.ByteSize; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.database.AttachmentTable; @@ -115,7 +116,7 @@ public class DocumentView extends FrameLayout { this.fileName.setText(OptionalUtil.or(documentSlide.getFileName(), documentSlide.getCaption()) .orElse(getContext().getString(R.string.DocumentView_unnamed_file))); - this.fileSize.setText(Util.getPrettyFileSize(documentSlide.getFileSize())); + this.fileSize.setText(new ByteSize(documentSlide.getFileSize()).toUnitString(2)); this.document.setText(documentSlide.getFileType(getContext()).orElse("").toLowerCase()); this.setOnClickListener(new OpenClickedListener(documentSlide)); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsFragment.kt index 7baf47fa75..9e6143bb2e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/backups/remote/RemoteBackupsSettingsFragment.kt @@ -103,7 +103,6 @@ import org.thoughtcrime.securesms.keyvalue.protos.ArchiveUploadProgressState import org.thoughtcrime.securesms.payments.FiatMoneyUtil import org.thoughtcrime.securesms.util.DateUtils import org.thoughtcrime.securesms.util.ServiceUtil -import org.thoughtcrime.securesms.util.Util import org.thoughtcrime.securesms.util.navigation.safeNavigate import org.thoughtcrime.securesms.util.viewModel import java.math.BigDecimal @@ -610,7 +609,7 @@ private fun LazyListScope.appendBackupDetailsItems( color = MaterialTheme.colorScheme.onSurface ) Text( - text = Util.getPrettyFileSize(backupMediaSize), + text = backupMediaSize.bytes.toUnitString(), style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.onSurfaceVariant ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/data/DataAndStorageSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/data/DataAndStorageSettingsFragment.kt index 7c404d7bde..f84003be47 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/data/DataAndStorageSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/data/DataAndStorageSettingsFragment.kt @@ -3,13 +3,13 @@ package org.thoughtcrime.securesms.components.settings.app.data import androidx.lifecycle.ViewModelProvider import androidx.navigation.Navigation import androidx.preference.PreferenceManager +import org.signal.core.util.bytes import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.settings.DSLConfiguration import org.thoughtcrime.securesms.components.settings.DSLSettingsFragment import org.thoughtcrime.securesms.components.settings.DSLSettingsText import org.thoughtcrime.securesms.components.settings.configure import org.thoughtcrime.securesms.mms.SentMediaQuality -import org.thoughtcrime.securesms.util.Util import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter import org.thoughtcrime.securesms.util.navigation.safeNavigate import org.thoughtcrime.securesms.webrtc.CallDataMode @@ -46,7 +46,7 @@ class DataAndStorageSettingsFragment : DSLSettingsFragment(R.string.preferences_ return configure { clickPref( title = DSLSettingsText.from(R.string.preferences_data_and_storage__manage_storage), - summary = DSLSettingsText.from(Util.getPrettyFileSize(state.totalStorageUse)), + summary = DSLSettingsText.from(state.totalStorageUse.bytes.toUnitString()), onClick = { Navigation.findNavController(requireView()).safeNavigate(R.id.action_dataAndStorageSettingsFragment_to_storagePreferenceFragment) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/storage/ManageStorageSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/storage/ManageStorageSettingsFragment.kt index d8b1a7395d..8d732e1321 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/storage/ManageStorageSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/storage/ManageStorageSettingsFragment.kt @@ -61,6 +61,7 @@ import org.signal.core.ui.Scaffolds import org.signal.core.ui.SignalPreview import org.signal.core.ui.Texts import org.signal.core.ui.theme.SignalTheme +import org.signal.core.util.bytes import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.billing.upgrade.UpgradeToEnableOptimizedStorageSheet import org.thoughtcrime.securesms.billing.upgrade.UpgradeToPaidTierBottomSheet @@ -71,7 +72,6 @@ import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.mediaoverview.MediaOverviewActivity import org.thoughtcrime.securesms.preferences.widgets.StorageGraphView import org.thoughtcrime.securesms.util.BottomSheetUtil -import org.thoughtcrime.securesms.util.Util import org.thoughtcrime.securesms.util.viewModel import java.text.NumberFormat @@ -360,7 +360,7 @@ private fun StorageOverview( ) it.findViewById(R.id.storageGraphView).setStorageBreakdown(breakdownEntries) - it.findViewById(R.id.total_size).text = Util.getPrettyFileSize(breakdownEntries.totalSize) + it.findViewById(R.id.total_size).text = breakdownEntries.totalSize.bytes.toUnitString() } it.findViewById(R.id.free_up_space).setOnClickListener { diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaGalleryAllAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaGalleryAllAdapter.java index 49f65da805..f423b5d6e4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaGalleryAllAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaGalleryAllAdapter.java @@ -35,6 +35,7 @@ import com.annimon.stream.Stream; import com.bumptech.glide.RequestManager; import com.codewaves.stickyheadergrid.StickyHeaderGridAdapter; +import org.signal.core.util.ByteSize; import org.signal.libsignal.protocol.util.Pair; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.attachments.AttachmentId; @@ -339,7 +340,7 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { super.bind(context, mediaRecord, slide); this.slide = slide; if (showFileSizes | detailView) { - imageFileSize.setText(Util.getPrettyFileSize(slide.getFileSize())); + imageFileSize.setText(new ByteSize(slide.getFileSize()).toUnitString(2)); imageFileSize.setVisibility(View.VISIBLE); } else { imageFileSize.setVisibility(View.GONE); @@ -445,7 +446,7 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { private String getLine2(@NonNull Context context, @NonNull MediaTable.MediaRecord mediaRecord, @NonNull Slide slide) { return context.getString(R.string.MediaOverviewActivity_detail_line_3_part, - Util.getPrettyFileSize(slide.getFileSize()), + new ByteSize(slide.getFileSize()).toUnitString(2), getFileTypeDescription(context, slide), DateUtils.formatDateWithoutDayOfWeek(Locale.getDefault(), mediaRecord.getDate())); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewPageFragment.java b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewPageFragment.java index d75b722d79..3cb58823d7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewPageFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaOverviewPageFragment.java @@ -29,6 +29,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.codewaves.stickyheadergrid.StickyHeaderGridLayoutManager; +import org.signal.core.util.ByteSize; import org.signal.core.util.DimensionUnit; import org.signal.core.util.concurrent.LifecycleDisposable; import org.signal.core.util.logging.Log; @@ -327,9 +328,9 @@ public final class MediaOverviewPageFragment extends Fragment long totalFileSize = adapter.getSelectedMediaTotalFileSize(); return getResources().getQuantityString(R.plurals.MediaOverviewActivity_d_selected_s, - mediaCount, - mediaCount, - Util.getPrettyFileSize(totalFileSize)); + mediaCount, + mediaCount, + new ByteSize(totalFileSize).toUnitString()); } private MediaGalleryAllAdapter getListAdapter() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendDocumentFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendDocumentFragment.kt index 53be9cd101..d5a4af8051 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendDocumentFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendDocumentFragment.kt @@ -8,12 +8,12 @@ import android.view.View import android.widget.TextView import android.widget.Toast import androidx.fragment.app.Fragment +import org.signal.core.util.bytes import org.signal.core.util.getParcelableCompat import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.mms.PartAuthority import org.thoughtcrime.securesms.util.MediaUtil -import org.thoughtcrime.securesms.util.Util import java.io.IOException import java.util.Optional @@ -54,7 +54,7 @@ class MediaSendDocumentFragment : Fragment(R.layout.mediasend_document_fragment) if (fileInfo != null) { media.setFileName(fileInfo.first) name.text = fileInfo.first ?: getString(R.string.DocumentView_unnamed_file) - size.text = Util.getPrettyFileSize(fileInfo.second) + size.text = fileInfo.second.bytes.toUnitString() val extensionText: String = MediaUtil.getFileType(requireContext(), Optional.ofNullable(fileInfo.first), media.uri).orElse("") if (extensionText.length <= 3) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt index 6d5b82c2fa..3b07d6cff8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt @@ -32,6 +32,7 @@ import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.imageview.ShapeableImageView import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import org.signal.core.util.bytes import org.signal.core.util.concurrent.LifecycleDisposable import org.signal.core.util.concurrent.SimpleTask import org.signal.core.util.isNotNullOrBlank @@ -60,7 +61,6 @@ import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.scribbles.ImageEditorFragment import org.thoughtcrime.securesms.util.BottomSheetUtil import org.thoughtcrime.securesms.util.MediaUtil -import org.thoughtcrime.securesms.util.MemoryUnitFormat import org.thoughtcrime.securesms.util.SystemWindowInsetsSetter import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter import org.thoughtcrime.securesms.util.fragments.requireListener @@ -600,7 +600,7 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment), Schedul videoSizeHint.text = if (state.isVideoTrimmingVisible) { val seconds = trimData.getDuration().inWholeSeconds val bytes = TranscodingQuality.createFromPreset(state.transcodingPreset, trimData.getDuration().inWholeMilliseconds).byteCountEstimate - String.format(Locale.getDefault(), "%d:%02d • %s", seconds / 60, seconds % 60, MemoryUnitFormat.formatBytes(bytes, MemoryUnitFormat.MEGA_BYTES, true)) + String.format(Locale.getDefault(), "%d:%02d • %s", seconds / 60, seconds % 60, bytes.bytes.toUnitString()) } else { null } diff --git a/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/restore/RemoteRestoreActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/restore/RemoteRestoreActivity.kt index 7e5575e3e4..9c6e511345 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/restore/RemoteRestoreActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registrationv3/ui/restore/RemoteRestoreActivity.kt @@ -367,8 +367,8 @@ private fun RestoreProgressDialog(restoreProgress: RestoreV2Event?) { ) if (restoreProgress != null) { - val progressBytes = restoreProgress.count.toUnitString(maxPlaces = 2) - val totalBytes = restoreProgress.estimatedTotalCount.toUnitString(maxPlaces = 2) + val progressBytes = restoreProgress.count.toUnitString() + val totalBytes = restoreProgress.estimatedTotalCount.toUnitString() Text( text = stringResource(id = R.string.RemoteRestoreActivity__s_of_s_s, progressBytes, totalBytes, "%.2f%%".format(restoreProgress.getProgress())), style = MaterialTheme.typography.bodySmall, diff --git a/app/src/main/java/org/thoughtcrime/securesms/restore/restorelocalbackup/RestoreLocalBackupFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/restore/restorelocalbackup/RestoreLocalBackupFragment.kt index 9b0f1dfe40..f4cbdcdb74 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/restore/restorelocalbackup/RestoreLocalBackupFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/restore/restorelocalbackup/RestoreLocalBackupFragment.kt @@ -20,6 +20,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode +import org.signal.core.util.bytes import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.LoggingFragment import org.thoughtcrime.securesms.R @@ -33,7 +34,6 @@ import org.thoughtcrime.securesms.restore.RestoreRepository import org.thoughtcrime.securesms.restore.RestoreViewModel import org.thoughtcrime.securesms.util.BackupUtil import org.thoughtcrime.securesms.util.DateUtils -import org.thoughtcrime.securesms.util.Util import org.thoughtcrime.securesms.util.ViewModelFactory import org.thoughtcrime.securesms.util.ViewUtil import org.thoughtcrime.securesms.util.visible @@ -218,7 +218,7 @@ class RestoreLocalBackupFragment : LoggingFragment(R.layout.fragment_restore_loc private fun presentBackupFileInfo(backupSize: Long, backupTimestamp: Long) { if (backupSize > 0) { - binding.backupSizeText.text = getString(R.string.RegistrationActivity_backup_size_s, Util.getPrettyFileSize(backupSize)) + binding.backupSizeText.text = getString(R.string.RegistrationActivity_backup_size_s, backupSize.bytes.toUnitString()) } if (backupTimestamp > 0) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/revealable/ViewOnceMessageView.java b/app/src/main/java/org/thoughtcrime/securesms/revealable/ViewOnceMessageView.java index edbd5438f2..dac4c6725e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/revealable/ViewOnceMessageView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/revealable/ViewOnceMessageView.java @@ -18,6 +18,7 @@ import com.pnikosis.materialishprogress.ProgressWheel; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import org.signal.core.util.ByteSize; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.attachments.Attachment; @@ -176,7 +177,7 @@ public class ViewOnceMessageView extends LinearLayout { if (messageRecord.getSlideDeck().getThumbnailSlide() == null) return ""; long size = messageRecord.getSlideDeck().getThumbnailSlide().getFileSize(); - return Util.getPrettyFileSize(size); + return new ByteSize(size).toUnitString(2); } private static @StringRes int getDescriptionId(@NonNull MmsMessageRecord messageRecord) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/info/StoryInfoHeader.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/info/StoryInfoHeader.kt index 16471caf50..09583c1e13 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/info/StoryInfoHeader.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/info/StoryInfoHeader.kt @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.stories.viewer.info import android.view.View import android.widget.TextView import android.widget.Toast +import org.signal.core.util.bytes import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.util.DateUtils import org.thoughtcrime.securesms.util.Util @@ -60,7 +61,7 @@ object StoryInfoHeader { if (model.size > 0L) { sizeView.visible = true sizeHeader.visible = true - sizeView.text = Util.getPrettyFileSize(model.size) + sizeView.text = model.size.bytes.toUnitString() } else { sizeView.visible = false sizeHeader.visible = false diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/MemoryUnitFormat.java b/app/src/main/java/org/thoughtcrime/securesms/util/MemoryUnitFormat.java deleted file mode 100644 index b77fb4765d..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/util/MemoryUnitFormat.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.thoughtcrime.securesms.util; - -import androidx.annotation.NonNull; - -import java.text.DecimalFormat; - -/** - * Used for the pretty formatting of bytes for user display. - */ -public enum MemoryUnitFormat { - BYTES(" B"), - KILO_BYTES(" kB"), - MEGA_BYTES(" MB"), - GIGA_BYTES(" GB"), - TERA_BYTES(" TB"); - - private static final DecimalFormat ONE_DP = new DecimalFormat("#,##0.0"); - private static final DecimalFormat OPTIONAL_ONE_DP = new DecimalFormat("#,##0.#"); - - private final String unitString; - - MemoryUnitFormat(String unitString) { - this.unitString = unitString; - } - - public double fromBytes(long bytes) { - return bytes / Math.pow(1000, ordinal()); - } - - /** - * Creates a string suitable to present to the user from the specified {@param bytes}. - * It will pick a suitable unit of measure to display depending on the size of the bytes. - * It will not select a unit of measure lower than the specified {@param minimumUnit}. - * - * @param forceOneDp If true, will include 1 decimal place, even if 0. If false, will only show 1 dp when it's non-zero. - */ - public static String formatBytes(long bytes, @NonNull MemoryUnitFormat minimumUnit, boolean forceOneDp) { - if (bytes <= 0) bytes = 0; - - int ordinal = bytes != 0 ? (int) (Math.log10(bytes) / 3) : 0; - - if (ordinal >= MemoryUnitFormat.values().length) { - ordinal = MemoryUnitFormat.values().length - 1; - } - - MemoryUnitFormat unit = MemoryUnitFormat.values()[ordinal]; - - if (unit.ordinal() < minimumUnit.ordinal()) { - unit = minimumUnit; - } - - return (forceOneDp ? ONE_DP : OPTIONAL_ONE_DP).format(unit.fromBytes(bytes)) + unit.unitString; - } - - public static String formatBytes(long bytes) { - return formatBytes(bytes, BYTES, false); - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/Util.java b/app/src/main/java/org/thoughtcrime/securesms/util/Util.java index 2a09f9a09b..31aad33b4e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/Util.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/Util.java @@ -187,18 +187,10 @@ public class Util { return spanned; } - public static @NonNull String toIsoString(byte[] bytes) { - return new String(bytes, StandardCharsets.ISO_8859_1); - } - public static byte[] toIsoBytes(String isoString) { return isoString.getBytes(StandardCharsets.ISO_8859_1); } - public static byte[] toUtf8Bytes(String utf8String) { - return utf8String.getBytes(StandardCharsets.UTF_8); - } - public static void wait(Object lock, long timeout) { try { lock.wait(timeout); @@ -371,10 +363,6 @@ public class Util { } } - public static T getRandomElement(T[] elements) { - return elements[new SecureRandom().nextInt(elements.length)]; - } - public static T getRandomElement(List elements) { return elements.get(new SecureRandom().nextInt(elements.size())); } @@ -448,38 +436,10 @@ public class Util { return (int)value; } - public static boolean isEquals(@Nullable Long first, long second) { - return first != null && first == second; - } - - public static String getPrettyFileSize(long sizeBytes) { - return MemoryUnitFormat.formatBytes(sizeBytes); - } - public static void copyToClipboard(@NonNull Context context, @NonNull CharSequence text) { ServiceUtil.getClipboardManager(context).setPrimaryClip(ClipData.newPlainText(COPY_LABEL, text)); } - @SafeVarargs - public static List concatenatedList(Collection ... items) { - final List concat = new ArrayList<>(Stream.of(items).reduce(0, (sum, list) -> sum + list.size())); - - for (Collection list : items) { - concat.addAll(list); - } - - return concat; - } - - public static boolean isLong(String value) { - try { - Long.parseLong(value); - return true; - } catch (NumberFormatException e) { - return false; - } - } - public static int parseInt(String integer, int defaultValue) { try { return Integer.parseInt(integer); diff --git a/core-util-jvm/src/main/java/org/signal/core/util/ByteExtensions.kt b/core-util-jvm/src/main/java/org/signal/core/util/ByteExtensions.kt index 9350394237..5fcc0d58cc 100644 --- a/core-util-jvm/src/main/java/org/signal/core/util/ByteExtensions.kt +++ b/core-util-jvm/src/main/java/org/signal/core/util/ByteExtensions.kt @@ -76,7 +76,8 @@ class ByteSize(val bytes: Long) { } } - fun toUnitString(maxPlaces: Int = 1, spaced: Boolean = true): String { + @JvmOverloads + fun toUnitString(maxPlaces: Int = 2, spaced: Boolean = true): String { val (size, unit) = getLargestNonZeroValue() val formatter = NumberFormat.getInstance().apply {