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

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

Merge "Use getStorageSize from SpaPrivilegedLib"

parents bac24478 43575897
Loading
Loading
Loading
Loading
+5 −23
Original line number Diff line number Diff line
@@ -16,13 +16,10 @@

package com.android.settings.spa.app

import android.app.usage.StorageStatsManager
import android.content.Context
import android.content.pm.ApplicationInfo
import android.os.Bundle
import android.text.format.Formatter
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.remember
import androidx.compose.ui.res.stringResource
import com.android.settings.R
import com.android.settings.spa.app.appsettings.AppSettingsProvider
@@ -30,16 +27,14 @@ import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
import com.android.settingslib.spa.framework.common.SettingsPage
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.compose.rememberContext
import com.android.settingslib.spa.framework.compose.toState
import com.android.settingslib.spa.framework.util.asyncMapItem
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spaprivileged.model.app.AppListModel
import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.userHandle
import com.android.settingslib.spaprivileged.template.app.AppListItem
import com.android.settingslib.spaprivileged.template.app.AppListPage
import com.android.settingslib.spaprivileged.template.app.getStorageSize
import kotlinx.coroutines.flow.Flow

object AllAppListPageProvider : SettingsPageProvider {
@@ -65,7 +60,7 @@ object AllAppListPageProvider : SettingsPageProvider {
private fun AllAppListPage() {
    AppListPage(
        title = stringResource(R.string.all_apps),
        listModel = rememberContext(::AllAppListModel),
        listModel = remember { AllAppListModel() },
        showInstantApps = true,
    ) { itemModel ->
        AppListItem(
@@ -77,11 +72,9 @@ private fun AllAppListPage() {

data class AppRecordWithSize(
    override val app: ApplicationInfo,
    var sizeBytes: Long? = null,
) : AppRecord

private class AllAppListModel(private val context: Context) : AppListModel<AppRecordWithSize> {
    private val storageStatsManager = context.getSystemService(StorageStatsManager::class.java)!!
private class AllAppListModel : AppListModel<AppRecordWithSize> {

    override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) =
        appListFlow.asyncMapItem { app ->
@@ -95,16 +88,5 @@ private class AllAppListModel(private val context: Context) : AppListModel<AppRe
    ) = recordListFlow

    @Composable
    override fun getSummary(option: Int, record: AppRecordWithSize): State<String> =
        Formatter.formatFileSize(context, record.calculateSizeBytes()).toState()

    private fun AppRecordWithSize.calculateSizeBytes(): Long {
        sizeBytes?.let { return it }
        val stats = storageStatsManager.queryStatsForPackage(
            app.storageUuid, app.packageName, app.userHandle
        )
        return (stats.codeBytes + stats.dataBytes + stats.cacheBytes).also {
            sizeBytes = it
        }
    }
    override fun getSummary(option: Int, record: AppRecordWithSize) = record.app.getStorageSize()
}