mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
fix(meshlog): Change default retention to 30 days (#4177)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
This commit is contained in:
parent
63318bf66e
commit
399dce19a6
5 changed files with 10 additions and 42 deletions
|
|
@ -20,8 +20,6 @@ import android.app.Application
|
|||
import androidx.hilt.work.HiltWorkerFactory
|
||||
import androidx.work.Configuration
|
||||
import androidx.work.ExistingPeriodicWorkPolicy
|
||||
import androidx.work.ExistingWorkPolicy
|
||||
import androidx.work.OneTimeWorkRequestBuilder
|
||||
import androidx.work.PeriodicWorkRequestBuilder
|
||||
import androidx.work.WorkManager
|
||||
import co.touchlab.kermit.Logger
|
||||
|
|
@ -59,7 +57,6 @@ class MeshUtilApplication :
|
|||
|
||||
// Schedule periodic MeshLog cleanup
|
||||
scheduleMeshLogCleanup()
|
||||
enqueueImmediateCleanupIfNeeded()
|
||||
|
||||
// Initialize DatabaseManager asynchronously with current device address so DAO consumers have an active DB
|
||||
val entryPoint = EntryPointAccessors.fromApplication(this, AppEntryPoint::class.java)
|
||||
|
|
@ -84,27 +81,6 @@ class MeshUtilApplication :
|
|||
)
|
||||
}
|
||||
|
||||
private fun enqueueImmediateCleanupIfNeeded() {
|
||||
// Use entry point to access prefs outside of Hilt graph
|
||||
val entryPoint = EntryPointAccessors.fromApplication(this, AppEntryPoint::class.java)
|
||||
val meshLogPrefs = entryPoint.meshLogPrefs()
|
||||
val retentionDays = meshLogPrefs.retentionDays
|
||||
if (!meshLogPrefs.loggingEnabled || retentionDays == MeshLogPrefs.NEVER_CLEAR_RETENTION_DAYS) {
|
||||
Logger.i {
|
||||
"Skipping immediate MeshLog cleanup; " +
|
||||
"loggingEnabled=${meshLogPrefs.loggingEnabled}, retention=$retentionDays"
|
||||
}
|
||||
return
|
||||
}
|
||||
Logger.i { "Enqueuing immediate MeshLog cleanup with retentionDays=$retentionDays" }
|
||||
WorkManager.getInstance(this)
|
||||
.enqueueUniqueWork(
|
||||
"${MeshLogCleanupWorker.WORK_NAME}_immediate",
|
||||
ExistingWorkPolicy.REPLACE,
|
||||
OneTimeWorkRequestBuilder<MeshLogCleanupWorker>().build(),
|
||||
)
|
||||
}
|
||||
|
||||
override val workManagerConfiguration: Configuration
|
||||
get() = Configuration.Builder().setWorkerFactory(workerFactory).build()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ interface MeshLogPrefs {
|
|||
companion object {
|
||||
const val RETENTION_DAYS_KEY = "meshlog_retention_days"
|
||||
const val LOGGING_ENABLED_KEY = "meshlog_logging_enabled"
|
||||
const val DEFAULT_RETENTION_DAYS = 7
|
||||
const val DEFAULT_RETENTION_DAYS = 30
|
||||
const val DEFAULT_LOGGING_ENABLED = true
|
||||
const val MIN_RETENTION_DAYS = -1 // -1 == keep last hour
|
||||
const val MAX_RETENTION_DAYS = 365
|
||||
|
|
|
|||
|
|
@ -16,23 +16,6 @@
|
|||
*/
|
||||
import com.android.build.api.dsl.LibraryExtension
|
||||
|
||||
/*
|
||||
* Copyright (c) 2025 Meshtastic LLC
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.meshtastic.android.library)
|
||||
alias(libs.plugins.meshtastic.android.library.compose)
|
||||
|
|
|
|||
|
|
@ -152,11 +152,17 @@ constructor(
|
|||
val clamped = days.coerceIn(MeshLogPrefs.MIN_RETENTION_DAYS, MeshLogPrefs.MAX_RETENTION_DAYS)
|
||||
meshLogPrefs.retentionDays = clamped
|
||||
_meshLogRetentionDays.value = clamped
|
||||
viewModelScope.launch { meshLogRepository.deleteLogsOlderThan(clamped) }
|
||||
}
|
||||
|
||||
fun setMeshLogLoggingEnabled(enabled: Boolean) {
|
||||
meshLogPrefs.loggingEnabled = enabled
|
||||
_meshLogLoggingEnabled.value = enabled
|
||||
if (!enabled) {
|
||||
viewModelScope.launch { meshLogRepository.deleteAll() }
|
||||
} else {
|
||||
viewModelScope.launch { meshLogRepository.deleteLogsOlderThan(meshLogPrefs.retentionDays) }
|
||||
}
|
||||
}
|
||||
|
||||
fun setProvideLocation(value: Boolean) {
|
||||
|
|
|
|||
|
|
@ -252,6 +252,7 @@ constructor(
|
|||
val clamped = days.coerceIn(MeshLogPrefs.MIN_RETENTION_DAYS, MeshLogPrefs.MAX_RETENTION_DAYS)
|
||||
meshLogPrefs.retentionDays = clamped
|
||||
_retentionDays.value = clamped
|
||||
viewModelScope.launch { meshLogRepository.deleteLogsOlderThan(clamped) }
|
||||
}
|
||||
|
||||
fun setLoggingEnabled(enabled: Boolean) {
|
||||
|
|
@ -259,6 +260,8 @@ constructor(
|
|||
_loggingEnabled.value = enabled
|
||||
if (!enabled) {
|
||||
viewModelScope.launch { meshLogRepository.deleteAll() }
|
||||
} else {
|
||||
viewModelScope.launch { meshLogRepository.deleteLogsOlderThan(meshLogPrefs.retentionDays) }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue