Merge "Refactor SliceDataRepository"
This commit is contained in:
@@ -23,7 +23,7 @@ import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory
|
||||
|
||||
class SpaSliceBroadcastReceiver : BroadcastReceiver() {
|
||||
override fun onReceive(context: Context?, intent: Intent?) {
|
||||
val sliceRepository = SpaEnvironmentFactory.instance.sliceDataRepository
|
||||
val sliceRepository by SpaEnvironmentFactory.instance.sliceDataRepository
|
||||
val sliceUri = intent?.data ?: return
|
||||
val sliceData = sliceRepository.getActiveSliceData(sliceUri) ?: return
|
||||
sliceData.doAction()
|
||||
|
||||
@@ -32,7 +32,8 @@ private const val TAG = "SpaSliceProvider"
|
||||
class SpaSliceProvider : SliceProvider(), Observer<Slice?> {
|
||||
private fun getOrPutSliceData(sliceUri: Uri): EntrySliceData? {
|
||||
if (!SpaEnvironmentFactory.isReady()) return null
|
||||
return SpaEnvironmentFactory.instance.sliceDataRepository.getOrBuildSliceData(sliceUri)
|
||||
val sliceRepository by SpaEnvironmentFactory.instance.sliceDataRepository
|
||||
return sliceRepository.getOrBuildSliceData(sliceUri)
|
||||
}
|
||||
|
||||
override fun onBindSlice(sliceUri: Uri): Slice? {
|
||||
|
||||
@@ -65,7 +65,7 @@ abstract class SpaEnvironment(context: Context) {
|
||||
|
||||
val entryRepository = lazy { SettingsEntryRepository(pageProviderRepository.value) }
|
||||
|
||||
val sliceDataRepository = SettingsSliceDataRepository()
|
||||
val sliceDataRepository = lazy { SettingsSliceDataRepository(entryRepository.value) }
|
||||
|
||||
// In Robolectric test, applicationContext is not available. Use context as fallback.
|
||||
val appContext: Context = context.applicationContext ?: context
|
||||
|
||||
@@ -19,11 +19,11 @@ package com.android.settingslib.spa.slice
|
||||
import android.net.Uri
|
||||
import android.util.Log
|
||||
import com.android.settingslib.spa.framework.common.EntrySliceData
|
||||
import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory
|
||||
import com.android.settingslib.spa.framework.common.SettingsEntryRepository
|
||||
|
||||
private const val TAG = "SliceDataRepository"
|
||||
|
||||
class SettingsSliceDataRepository {
|
||||
class SettingsSliceDataRepository(private val entryRepository: SettingsEntryRepository) {
|
||||
// The map of slice uri to its EntrySliceData, a.k.a. LiveData<Slice?>
|
||||
private val sliceDataMap: MutableMap<String, EntrySliceData> = mutableMapOf()
|
||||
|
||||
@@ -46,13 +46,10 @@ class SettingsSliceDataRepository {
|
||||
|
||||
private fun buildLiveDataImpl(sliceUri: Uri): EntrySliceData? {
|
||||
Log.d(TAG, "buildLiveData: $sliceUri")
|
||||
if (!SpaEnvironmentFactory.isReady()) return null
|
||||
|
||||
val entryRepository by SpaEnvironmentFactory.instance.entryRepository
|
||||
val entryId = sliceUri.getEntryId() ?: return null
|
||||
val entry = entryRepository.getEntry(entryId) ?: return null
|
||||
if (!entry.hasSliceSupport) return null
|
||||
|
||||
val arguments = sliceUri.getRuntimeArguments()
|
||||
return entry.getSliceData(runtimeArguments = arguments, sliceUri = sliceUri)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user