Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ class LocationSensorManager :
}

suspend fun setHighAccuracyModeSetting(context: Context, enabled: Boolean) {
DatabaseEntryPoint.resolve(context).sensorDao().add(
DatabaseEntryPoint.resolve(context).sensorRepository().add(
SensorSetting(
backgroundLocation.id,
SETTING_HIGH_ACCURACY_MODE,
Expand All @@ -215,7 +215,7 @@ class LocationSensorManager :
}

suspend fun getHighAccuracyModeIntervalSetting(context: Context): Int {
val sensorSettings = DatabaseEntryPoint.resolve(context).sensorDao()
val sensorSettings = DatabaseEntryPoint.resolve(context).sensorRepository()
.getSettings(backgroundLocation.id)
return sensorSettings.firstOrNull {
it.name == SETTING_HIGH_ACCURACY_MODE_UPDATE_INTERVAL
Expand All @@ -224,7 +224,7 @@ class LocationSensorManager :
}

suspend fun setHighAccuracyModeIntervalSetting(context: Context, updateInterval: Int) {
DatabaseEntryPoint.resolve(context).sensorDao().add(
DatabaseEntryPoint.resolve(context).sensorRepository().add(
SensorSetting(
backgroundLocation.id,
SETTING_HIGH_ACCURACY_MODE_UPDATE_INTERVAL,
Expand Down Expand Up @@ -584,7 +584,7 @@ class LocationSensorManager :
}
}
if (updatedBtDeviceNames) {
sensorDao(latestContext).add(
sensorRepository(latestContext).add(
SensorSetting(
backgroundLocation.id,
SETTING_HIGH_ACCURACY_MODE_BLUETOOTH_DEVICES,
Expand Down Expand Up @@ -773,12 +773,12 @@ class LocationSensorManager :
lastLocationReceived[it] = System.currentTimeMillis()
}
LocationResult.extractResult(intent)?.lastLocation?.let { location ->
val sensorDao = sensorDao(latestContext)
val sensorSettings = sensorDao.getSettings(backgroundLocation.id)
val sensorRepository = sensorRepository(latestContext)
val sensorSettings = sensorRepository.getSettings(backgroundLocation.id)
val minAccuracy = sensorSettings
.firstOrNull { it.name == SETTING_ACCURACY }?.value?.toIntOrNull()
?: DEFAULT_MINIMUM_ACCURACY
sensorDao.add(
sensorRepository.add(
SensorSetting(
backgroundLocation.id,
SETTING_ACCURACY,
Expand Down Expand Up @@ -893,12 +893,12 @@ class LocationSensorManager :
}
}

val sensorDao = sensorDao(latestContext)
val sensorSettings = sensorDao.getSettings(zoneLocation.id)
val sensorRepository = sensorRepository(latestContext)
val sensorSettings = sensorRepository.getSettings(zoneLocation.id)
val minAccuracy = sensorSettings
.firstOrNull { it.name == SETTING_ACCURACY }?.value?.toIntOrNull()
?: DEFAULT_MINIMUM_ACCURACY
sensorDao.add(
sensorRepository.add(
SensorSetting(zoneLocation.id, SETTING_ACCURACY, minAccuracy.toString(), SensorSettingType.NUMBER),
)

Expand Down Expand Up @@ -1216,7 +1216,7 @@ class LocationSensorManager :
if (highAccuracyTriggerRangeInt < 0) {
highAccuracyTriggerRangeInt = DEFAULT_TRIGGER_RANGE_METERS

sensorDao(latestContext).add(
sensorRepository(latestContext).add(
SensorSetting(
backgroundLocation.id,
SETTING_HIGH_ACCURACY_MODE_TRIGGER_RANGE_ZONE,
Expand Down Expand Up @@ -1261,17 +1261,17 @@ class LocationSensorManager :
}

val now = System.currentTimeMillis()
val sensorDao = sensorDao(latestContext)
val fullSensor = sensorDao.getFull(singleAccurateLocation.id).toSensorWithAttributes()
val sensorRepository = sensorRepository(latestContext)
val fullSensor = sensorRepository.getFull(singleAccurateLocation.id).toSensorWithAttributes()
val latestAccurateLocation =
fullSensor?.attributes?.firstOrNull { it.name == "lastAccurateLocationRequest" }?.value?.toLongOrNull()
?: 0L

val sensorSettings = sensorDao.getSettings(singleAccurateLocation.id)
val sensorSettings = sensorRepository.getSettings(singleAccurateLocation.id)
val minAccuracy = sensorSettings
.firstOrNull { it.name == SETTING_ACCURACY }?.value?.toIntOrNull()
?: DEFAULT_MINIMUM_ACCURACY
sensorDao.add(
sensorRepository.add(
SensorSetting(
singleAccurateLocation.id,
SETTING_ACCURACY,
Expand All @@ -1282,7 +1282,7 @@ class LocationSensorManager :
val minTimeBetweenUpdates = sensorSettings
.firstOrNull { it.name == SETTING_ACCURATE_UPDATE_TIME }?.value?.toIntOrNull()
?: 60000
sensorDao.add(
sensorRepository.add(
SensorSetting(
singleAccurateLocation.id,
SETTING_ACCURATE_UPDATE_TIME,
Expand All @@ -1296,7 +1296,9 @@ class LocationSensorManager :
Timber.d("Not requesting accurate location, last accurate location was too recent")
return
}
sensorDao.add(Attribute(singleAccurateLocation.id, "lastAccurateLocationRequest", now.toString(), "string"))
sensorRepository.add(
Attribute(singleAccurateLocation.id, "lastAccurateLocationRequest", now.toString(), "string"),
)

val maxRetries = 5
val request = LocationRequest.Builder(10000).apply {
Expand Down Expand Up @@ -1433,16 +1435,16 @@ class LocationSensorManager :
setupLocationTracking()
}
cleanupLocationHistory(context)
val sensorDao = sensorDao(latestContext)
val sensorSetting = sensorDao.getSettings(singleAccurateLocation.id)
val sensorRepository = sensorRepository(latestContext)
val sensorSetting = sensorRepository.getSettings(singleAccurateLocation.id)
val includeSensorUpdate =
sensorSetting.firstOrNull { it.name == SETTING_INCLUDE_SENSOR_UPDATE }?.value ?: "false"
if (includeSensorUpdate == "true") {
if (isEnabled(context, singleAccurateLocation)) {
context.sendBroadcast(createRequestAccurateLocationUpdateIntent(context))
}
} else {
sensorDao.add(
sensorRepository.add(
SensorSetting(
singleAccurateLocation.id,
SETTING_INCLUDE_SENSOR_UPDATE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ import io.homeassistant.companion.android.common.data.keychain.NamedKeyChain
import io.homeassistant.companion.android.common.data.prefs.PrefsRepository
import io.homeassistant.companion.android.common.sensors.AudioSensorManager
import io.homeassistant.companion.android.common.sensors.LastUpdateManager
import io.homeassistant.companion.android.common.sensors.SensorRepository
import io.homeassistant.companion.android.common.util.HAStrictMode
import io.homeassistant.companion.android.common.util.SdkVersion
import io.homeassistant.companion.android.common.util.configureComposeDiagnosticStackTrace
import io.homeassistant.companion.android.common.util.isAutomotive
import io.homeassistant.companion.android.database.sensor.SensorDao
import io.homeassistant.companion.android.database.settings.SensorUpdateFrequencySetting
import io.homeassistant.companion.android.database.settings.SettingsDao
import io.homeassistant.companion.android.sensors.SensorReceiver
Expand Down Expand Up @@ -78,7 +78,7 @@ open class HomeAssistantApplication :
lateinit var nightModeManager: NightModeManager

@Inject
lateinit var sensorDao: SensorDao
lateinit var sensorRepository: SensorRepository

@Inject
lateinit var settingsDao: SettingsDao
Expand Down Expand Up @@ -281,7 +281,7 @@ open class HomeAssistantApplication :

// Register for all saved user intents
ioScope.launch {
val allSettings = sensorDao.getSettings(LastUpdateManager.lastUpdate.id)
val allSettings = sensorRepository.getSettings(LastUpdateManager.lastUpdate.id)
for (setting in allSettings) {
if (setting.value != "" && setting.value != "SensorWorker") {
val settingSplit = setting.value.split(',')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ import io.homeassistant.companion.android.common.notifications.handleText
import io.homeassistant.companion.android.common.notifications.parseColor
import io.homeassistant.companion.android.common.notifications.parseVibrationPattern
import io.homeassistant.companion.android.common.notifications.prepareText
import io.homeassistant.companion.android.common.sensors.SensorRepository
import io.homeassistant.companion.android.common.util.SdkVersion
import io.homeassistant.companion.android.common.util.cancelGroupIfNeeded
import io.homeassistant.companion.android.common.util.createSystemAppSettingsIntent
Expand All @@ -78,7 +79,6 @@ import io.homeassistant.companion.android.common.util.tts.TextToSpeechClient
import io.homeassistant.companion.android.common.util.tts.TextToSpeechData
import io.homeassistant.companion.android.database.notification.NotificationDao
import io.homeassistant.companion.android.database.notification.NotificationItem
import io.homeassistant.companion.android.database.sensor.SensorDao
import io.homeassistant.companion.android.database.settings.SettingsDao
import io.homeassistant.companion.android.database.settings.WebsocketSetting
import io.homeassistant.companion.android.sensors.LocationSensorManager
Expand Down Expand Up @@ -122,7 +122,7 @@ class MessagingManager @Inject constructor(
private val serverManager: ServerManager,
private val prefsRepository: PrefsRepository,
private val notificationDao: NotificationDao,
private val sensorDao: SensorDao,
private val sensorRepository: SensorRepository,
private val settingsDao: SettingsDao,
private val textToSpeechClient: TextToSpeechClient,
private val flashlightHelper: FlashlightHelper,
Expand Down Expand Up @@ -448,7 +448,7 @@ class MessagingManager @Inject constructor(
}

DeviceCommandData.COMMAND_BLE_TRANSMITTER -> {
if (!commandBleTransmitter(context, jsonData, sensorDao)) {
if (!commandBleTransmitter(context, jsonData, sensorRepository)) {
sendNotification(jsonData)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.navigation.toRoute
import dagger.hilt.android.lifecycle.HiltViewModel
import io.homeassistant.companion.android.database.sensor.SensorDao
import io.homeassistant.companion.android.common.sensors.SensorRepository
import io.homeassistant.companion.android.onboarding.locationsharing.navigation.LocationSharingRoute
import io.homeassistant.companion.android.sensors.LocationSensorManager
import javax.inject.Inject
Expand All @@ -16,19 +16,19 @@ import timber.log.Timber
@HiltViewModel
internal class LocationSharingViewModel @VisibleForTesting constructor(
private val serverId: Int,
private val sensorDao: SensorDao,
private val sensorRepository: SensorRepository,
) : ViewModel() {

@Inject
constructor(
savedStateHandle: SavedStateHandle,
sensorDao: SensorDao,
) : this(serverId = savedStateHandle.toRoute<LocationSharingRoute>().serverId, sensorDao)
sensorRepository: SensorRepository,
) : this(serverId = savedStateHandle.toRoute<LocationSharingRoute>().serverId, sensorRepository)

fun setupLocationSensor(enabled: Boolean) {
viewModelScope.launch {
try {
sensorDao.setSensorsEnabled(
sensorRepository.setSensorsEnabled(
sensorIds = listOf(
LocationSensorManager.backgroundLocation.id,
LocationSensorManager.zoneLocation.id,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,12 @@ class GeocodeSensorManager : SensorManager {
}

var address: Address? = null
val sensorDao = sensorDao(context)
val sensorSettings = sensorDao.getSettings(geocodedLocation.id)
val sensorRepository = sensorRepository(context)
val sensorSettings = sensorRepository.getSettings(geocodedLocation.id)
val minAccuracy = sensorSettings
.firstOrNull { it.name == SETTING_ACCURACY }?.value?.toIntOrNull()
?: DEFAULT_MINIMUM_ACCURACY
sensorDao.add(
sensorRepository.add(
SensorSetting(geocodedLocation.id, SETTING_ACCURACY, minAccuracy.toString(), SensorSettingType.NUMBER),
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ import io.homeassistant.companion.android.common.data.servers.ServerManager
import io.homeassistant.companion.android.common.sensors.BluetoothSensorManager
import io.homeassistant.companion.android.common.sensors.NetworkSensorManager
import io.homeassistant.companion.android.common.sensors.SensorManager
import io.homeassistant.companion.android.common.sensors.SensorRepository
import io.homeassistant.companion.android.common.util.DisabledLocationHandler
import io.homeassistant.companion.android.common.util.SdkVersion
import io.homeassistant.companion.android.database.sensor.SensorDao
import io.homeassistant.companion.android.database.sensor.SensorSetting
import io.homeassistant.companion.android.database.sensor.SensorSettingType
import io.homeassistant.companion.android.database.sensor.SensorWithAttributes
Expand Down Expand Up @@ -53,7 +53,7 @@ import timber.log.Timber
class SensorDetailViewModel @Inject constructor(
state: SavedStateHandle,
private val serverManager: ServerManager,
private val sensorDao: SensorDao,
private val sensorRepository: SensorRepository,
private val settingsDao: SettingsDao,
private val prefsRepository: PrefsRepository,
application: Application,
Expand Down Expand Up @@ -116,7 +116,7 @@ class SensorDetailViewModel @Inject constructor(
var sensor by mutableStateOf<SensorWithAttributes?>(null)
private set
private var sensorCheckedEnabled = false
val sensorSettings = sensorDao.getSettingsFlow(sensorId).collectAsState()
val sensorSettings = sensorRepository.getSettingsFlow(sensorId).collectAsState()
var sensorSettingsDialog by mutableStateOf<SettingDialogState?>(null)
private set

Expand Down Expand Up @@ -160,7 +160,7 @@ class SensorDetailViewModel @Inject constructor(
}

init {
val sensorFlow = sensorDao.getFullFlow(sensorId)
val sensorFlow = sensorRepository.getFullFlow(sensorId)
viewModelScope.launch {
serverNames = serverManager.servers().associate { it.id to it.friendlyName }

Expand Down Expand Up @@ -325,7 +325,7 @@ class SensorDetailViewModel @Inject constructor(

fun setSetting(setting: SensorSetting) {
viewModelScope.launch {
sensorDao.add(setting)
sensorRepository.add(setting)
try {
sensorManager?.requestSensorUpdate(getApplication())
} catch (e: Exception) {
Expand All @@ -342,7 +342,7 @@ class SensorDetailViewModel @Inject constructor(
} else {
listOf(serverId)
}
sensorDao.setSensorEnabled(sensorId, serverIds, isEnabled)
sensorRepository.setSensorEnabled(sensorId, serverIds, isEnabled)
refreshSensorData()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import io.homeassistant.companion.android.R
import io.homeassistant.companion.android.common.sensors.SensorManager
import io.homeassistant.companion.android.common.sensors.SensorRepository
import io.homeassistant.companion.android.database.sensor.Sensor
import io.homeassistant.companion.android.database.sensor.SensorDao
import io.homeassistant.companion.android.sensors.SensorReceiver
import javax.inject.Inject
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

@HiltViewModel
class SensorSettingsViewModel @Inject constructor(sensorDao: SensorDao, application: Application) :
class SensorSettingsViewModel @Inject constructor(sensorRepository: SensorRepository, application: Application) :
AndroidViewModel(application) {

enum class SensorFilter(@IdRes val menuItemId: Int) {
Expand All @@ -46,7 +46,7 @@ class SensorSettingsViewModel @Inject constructor(sensorDao: SensorDao, applicat

init {
viewModelScope.launch {
sensorDao.getAllFlow().collect {
sensorRepository.getAllFlow().collect {
withContext(Dispatchers.IO) {
// Compare contents, because the worker typically pushes a DB update on
// sensor updates even when contents don't change
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.homeassistant.companion.android.onboarding.locationsharing

import io.homeassistant.companion.android.database.sensor.SensorDao
import io.homeassistant.companion.android.common.sensors.SensorRepository
import io.homeassistant.companion.android.testing.unit.MainDispatcherJUnit5Extension
import io.mockk.coEvery
import io.mockk.coVerify
Expand All @@ -18,7 +18,7 @@ import org.junit.jupiter.params.provider.ValueSource
@ExtendWith(MainDispatcherJUnit5Extension::class)
class LocationSharingViewModelTest {
private val serverId = 42
private val sensorDao: SensorDao = mockk(relaxUnitFun = true)
private val sensorRepository: SensorRepository = mockk(relaxUnitFun = true)

private lateinit var viewModel: LocationSharingViewModel

Expand All @@ -32,7 +32,7 @@ class LocationSharingViewModelTest {
fun setup() {
viewModel = LocationSharingViewModel(
serverId = serverId,
sensorDao = sensorDao,
sensorRepository = sensorRepository,
)
}

Expand All @@ -46,7 +46,7 @@ class LocationSharingViewModelTest {
runCurrent()

coVerify {
sensorDao.setSensorsEnabled(
sensorRepository.setSensorsEnabled(
sensorIds = locationSensorIds,
serverId = serverId,
enabled = enabled,
Expand All @@ -55,16 +55,16 @@ class LocationSharingViewModelTest {
}

@Test
fun `Given sensorDao throws exception When setupLocationSensor is called Then exception is caught`() = runTest {
fun `Given repository throws exception When setupLocationSensor is called Then exception is caught`() = runTest {
val enabled = true
val exception = RuntimeException("Test exception from sensorDao")
coEvery { sensorDao.setSensorsEnabled(any(), any(), any()) } throws exception
val exception = RuntimeException("Test exception from repository")
coEvery { sensorRepository.setSensorsEnabled(any(), any(), any()) } throws exception

viewModel.setupLocationSensor(enabled)
runCurrent()

coVerify {
sensorDao.setSensorsEnabled(
sensorRepository.setSensorsEnabled(
sensorIds = locationSensorIds,
serverId = serverId,
enabled = enabled,
Expand Down
Loading
Loading