Hide spinner options for locked users
'Most Recent' and 'Most Frequent' depend on usagestats data, which is only available for unlocked users. Hide them if the user is currently locked Test: turn off work profile and view app notification list, primary & work Test: turn on work profile and view app notifications list, primary & work Fixes: 195092949 Flag: none Change-Id: Ia87b2b64824dff645286ea8910bcd2c412d070ae
This commit is contained in:
@@ -27,6 +27,7 @@ import android.app.usage.UsageEvents
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.ApplicationInfo
|
import android.content.pm.ApplicationInfo
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.os.IUserManager
|
||||||
import android.os.RemoteException
|
import android.os.RemoteException
|
||||||
import android.os.ServiceManager
|
import android.os.ServiceManager
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
@@ -66,6 +67,9 @@ class AppNotificationRepository(
|
|||||||
private val notificationManager: INotificationManager = INotificationManager.Stub.asInterface(
|
private val notificationManager: INotificationManager = INotificationManager.Stub.asInterface(
|
||||||
ServiceManager.getService(Context.NOTIFICATION_SERVICE)
|
ServiceManager.getService(Context.NOTIFICATION_SERVICE)
|
||||||
),
|
),
|
||||||
|
private val userManager: IUserManager = IUserManager.Stub.asInterface(
|
||||||
|
ServiceManager.getService(Context.USER_SERVICE)
|
||||||
|
),
|
||||||
) : IAppNotificationRepository {
|
) : IAppNotificationRepository {
|
||||||
fun getAggregatedUsageEvents(userIdFlow: Flow<Int>): Flow<Map<String, NotificationSentState>> =
|
fun getAggregatedUsageEvents(userIdFlow: Flow<Int>): Flow<Map<String, NotificationSentState>> =
|
||||||
userIdFlow.map { userId ->
|
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 {
|
override fun getNotificationSummary(app: ApplicationInfo): String {
|
||||||
if (!isEnabled(app)) return context.getString(R.string.notifications_disabled)
|
if (!isEnabled(app)) return context.getString(R.string.notifications_disabled)
|
||||||
val channelCount = getChannelCount(app)
|
val channelCount = getChannelCount(app)
|
||||||
|
@@ -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.AppEntry
|
||||||
import com.android.settingslib.spaprivileged.model.app.AppListModel
|
import com.android.settingslib.spaprivileged.model.app.AppListModel
|
||||||
import com.android.settingslib.spaprivileged.model.app.AppRecord
|
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.AppListItemModel
|
||||||
import com.android.settingslib.spaprivileged.template.app.AppListTwoTargetSwitchItem
|
import com.android.settingslib.spaprivileged.template.app.AppListTwoTargetSwitchItem
|
||||||
import com.android.settingslib.utils.StringUtil
|
import com.android.settingslib.utils.StringUtil
|
||||||
@@ -102,13 +103,21 @@ class AppNotificationsListModel(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getSpinnerOptions(recordList: List<AppNotificationsRecord>): List<SpinnerOption> =
|
override fun getSpinnerOptions(recordList: List<AppNotificationsRecord>): List<SpinnerOption> {
|
||||||
SpinnerItem.entries.map {
|
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(
|
SpinnerOption(
|
||||||
id = it.ordinal,
|
id = it.ordinal,
|
||||||
text = context.getString(it.stringResId),
|
text = context.getString(it.stringResId),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun formatLastSent(lastSent: Long) =
|
private fun formatLastSent(lastSent: Long) =
|
||||||
StringUtil.formatRelativeTime(
|
StringUtil.formatRelativeTime(
|
||||||
|
Reference in New Issue
Block a user