Merge "Hide spinner options for locked users" into main

This commit is contained in:
Julia Reynolds
2023-12-28 14:59:15 +00:00
committed by Android (Google) Code Review
2 changed files with 26 additions and 4 deletions

View File

@@ -27,6 +27,7 @@ import android.app.usage.UsageEvents
import android.content.Context
import android.content.pm.ApplicationInfo
import android.os.Build
import android.os.IUserManager
import android.os.RemoteException
import android.os.ServiceManager
import android.util.Log
@@ -66,6 +67,9 @@ class AppNotificationRepository(
private val notificationManager: INotificationManager = INotificationManager.Stub.asInterface(
ServiceManager.getService(Context.NOTIFICATION_SERVICE)
),
private val userManager: IUserManager = IUserManager.Stub.asInterface(
ServiceManager.getService(Context.USER_SERVICE)
),
) : IAppNotificationRepository {
fun getAggregatedUsageEvents(userIdFlow: Flow<Int>): Flow<Map<String, NotificationSentState>> =
userIdFlow.map { userId ->
@@ -122,6 +126,15 @@ class AppNotificationRepository(
}
}
fun isUserUnlocked(user: Int): Boolean {
return try {
userManager.isUserUnlocked(user)
} catch (e: Exception) {
Log.w(TAG, "Error calling UserManager", e)
false
}
}
override fun getNotificationSummary(app: ApplicationInfo): String {
if (!isEnabled(app)) return context.getString(R.string.notifications_disabled)
val channelCount = getChannelCount(app)

View File

@@ -34,6 +34,7 @@ import com.android.settingslib.spa.widget.ui.SpinnerOption
import com.android.settingslib.spaprivileged.model.app.AppEntry
import com.android.settingslib.spaprivileged.model.app.AppListModel
import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.userId
import com.android.settingslib.spaprivileged.template.app.AppListItemModel
import com.android.settingslib.spaprivileged.template.app.AppListTwoTargetSwitchItem
import com.android.settingslib.utils.StringUtil
@@ -102,13 +103,21 @@ class AppNotificationsListModel(
}
}
override fun getSpinnerOptions(recordList: List<AppNotificationsRecord>): List<SpinnerOption> =
SpinnerItem.entries.map {
override fun getSpinnerOptions(recordList: List<AppNotificationsRecord>): List<SpinnerOption> {
val options = mutableListOf(SpinnerItem.AllApps, SpinnerItem.TurnedOff)
if (repository.isUserUnlocked(recordList[0].app.userId)) {
options.add(0, SpinnerItem.MostRecent)
options.add(1, SpinnerItem.MostFrequent)
}
return options.map {
SpinnerOption(
id = it.ordinal,
text = context.getString(it.stringResId),
id = it.ordinal,
text = context.getString(it.stringResId),
)
}
}
private fun formatLastSent(lastSent: Long) =
StringUtil.formatRelativeTime(