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

Commit 43575897 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Use getStorageSize from SpaPrivilegedLib

Bug: 236346018
Test: Manual with "All App" App List
Change-Id: If05f334eea365f23e8fc7d7452aed4603c9cdc30
parent 246597c1
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()
}