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:
James Rich 2026-01-09 16:38:36 -06:00 committed by GitHub
parent 63318bf66e
commit 399dce19a6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 10 additions and 42 deletions

View file

@ -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()
}

View file

@ -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

View file

@ -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)

View file

@ -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) {

View file

@ -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) }
}
}