Merge "Refresh App Storage Size" into main

This commit is contained in:
Chaohui Wang
2023-08-14 05:43:56 +00:00
committed by Android (Google) Code Review

View File

@@ -22,25 +22,27 @@ import android.text.format.Formatter
import android.util.Log
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.produceState
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.settingslib.spaprivileged.framework.common.storageStatsManager
import com.android.settingslib.spaprivileged.framework.compose.placeholder
import com.android.settingslib.spaprivileged.model.app.userHandle
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOn
private const val TAG = "AppStorageSize"
@Composable
fun ApplicationInfo.getStorageSize(): State<String> {
val context = LocalContext.current
return produceState(initialValue = placeholder()) {
withContext(Dispatchers.IO) {
return remember {
flow {
val sizeBytes = calculateSizeBytes(context)
value = if (sizeBytes != null) Formatter.formatFileSize(context, sizeBytes) else ""
}
}
this.emit(if (sizeBytes != null) Formatter.formatFileSize(context, sizeBytes) else "")
}.flowOn(Dispatchers.IO)
}.collectAsStateWithLifecycle(initialValue = placeholder())
}
fun ApplicationInfo.calculateSizeBytes(context: Context): Long? {