Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94f0b6fa authored by Chaohui Wang's avatar Chaohui Wang Committed by Android (Google) Code Review
Browse files

Merge "Refresh App Storage Size" into main

parents f480c162 ff617828
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -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? {