fix: offline mode migration bug for v1.5.0 → v1.6.2 updates

- Fixes offline mode incorrectly enabled after updating from v1.5.0
- Users with existing server configuration no longer appear as offline
- Root cause: KEY_OFFLINE_MODE didn't exist in v1.5.0
- MainViewModel/NoteEditorViewModel used hardcoded default 'true'
- Fix: Migration in SimpleNotesApplication.onCreate() detects server config
- Version bumped to v1.6.2 (versionCode 16)
- F-Droid changelogs added

Tested: v1.5.0 → v1.6.2 update successful
Migration log: hasServer=true → offlineMode=false ✓
This commit is contained in:
inventory69
2026-01-23 21:39:04 +01:00
parent dfdccfe6c7
commit d58d9036cb
4 changed files with 39 additions and 3 deletions

View File

@@ -20,8 +20,8 @@ android {
applicationId = "dev.dettmer.simplenotes" applicationId = "dev.dettmer.simplenotes"
minSdk = 24 minSdk = 24
targetSdk = 36 targetSdk = 36
versionCode = 15 // 🔧 v1.6.1: Lint-Cleanup detekt and ktlint versionCode = 16 // 🔧 v1.6.2: Hotfix offline mode migration bug
versionName = "1.6.1" // 🔧 v1.6.1: Lint-Cleanup detekt and ktlint versionName = "1.6.2" // 🔧 v1.6.2: Hotfix offline mode migration bug
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
} }

View File

@@ -18,8 +18,14 @@ class SimpleNotesApplication : Application() {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
// File-Logging ZUERST aktivieren (damit alle Logs geschrieben werden!)
val prefs = getSharedPreferences(Constants.PREFS_NAME, Context.MODE_PRIVATE) val prefs = getSharedPreferences(Constants.PREFS_NAME, Context.MODE_PRIVATE)
// 🔧 Hotfix v1.6.2: Migrate offline mode setting BEFORE any ViewModel initialization
// This prevents the offline mode bug where users updating from v1.5.0 incorrectly
// appear as offline even though they have a configured server
migrateOfflineModeSetting(prefs)
// File-Logging ZUERST aktivieren (damit alle Logs geschrieben werden!)
if (prefs.getBoolean("file_logging_enabled", false)) { if (prefs.getBoolean("file_logging_enabled", false)) {
Logger.enableFileLogging(this) Logger.enableFileLogging(this)
Logger.d(TAG, "📝 File logging enabled at Application startup") Logger.d(TAG, "📝 File logging enabled at Application startup")
@@ -50,4 +56,30 @@ class SimpleNotesApplication : Application() {
// WorkManager läuft weiter auch nach onTerminate! // WorkManager läuft weiter auch nach onTerminate!
// Nur bei deaktiviertem Auto-Sync stoppen wir es // Nur bei deaktiviertem Auto-Sync stoppen wir es
} }
/**
* 🔧 Hotfix v1.6.2: Migrate offline mode setting for updates from v1.5.0
*
* Problem: KEY_OFFLINE_MODE didn't exist in v1.5.0, but MainViewModel
* and NoteEditorViewModel use `true` as default, causing existing users
* with configured servers to appear in offline mode after update.
*
* Fix: Set the key BEFORE any ViewModel is initialized based on whether
* a server was already configured.
*/
private fun migrateOfflineModeSetting(prefs: android.content.SharedPreferences) {
if (!prefs.contains(Constants.KEY_OFFLINE_MODE)) {
val serverUrl = prefs.getString(Constants.KEY_SERVER_URL, null)
val hasServerConfig = !serverUrl.isNullOrEmpty() &&
serverUrl != "http://" &&
serverUrl != "https://"
// If server was configured → offlineMode = false (continue syncing)
// If no server → offlineMode = true (new users / offline users)
val offlineModeValue = !hasServerConfig
prefs.edit().putBoolean(Constants.KEY_OFFLINE_MODE, offlineModeValue).apply()
Logger.i(TAG, "🔄 Migrated offline_mode_enabled: hasServer=$hasServerConfig → offlineMode=$offlineModeValue")
}
}
} }

View File

@@ -0,0 +1,2 @@
• Behebt Offline-Modus Problem nach Update von v1.5.0
• Nutzer mit konfiguriertem Server werden nicht mehr fälschlicherweise als offline angezeigt

View File

@@ -0,0 +1,2 @@
• Fixes offline mode issue after updating from v1.5.0
• Users with configured servers are no longer incorrectly shown as offline