From cc954e4d5a99a2eb5c8b5c0a8e4d0e2a6c0ce8ce Mon Sep 17 00:00:00 2001 From: Nite Date: Tue, 22 Sep 2020 17:03:04 +0200 Subject: [PATCH] Fixed migration to check for empty database at every start --- .../java/org/moire/ultrasonic/activity/MainActivity.java | 9 ++++----- .../moire/ultrasonic/activity/SelectArtistActivity.java | 2 +- .../org/moire/ultrasonic/activity/ServerSettingsModel.kt | 7 ++++--- .../kotlin/org/moire/ultrasonic/data/ServerSettingDao.kt | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/activity/MainActivity.java b/ultrasonic/src/main/java/org/moire/ultrasonic/activity/MainActivity.java index 87722486..6b5a4e21 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/activity/MainActivity.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/activity/MainActivity.java @@ -71,11 +71,10 @@ public class MainActivity extends SubsonicTabActivity // Determine first run and migrate server settings to DB as early as possible boolean showWelcomeScreen = Util.isFirstRun(this); - if (showWelcomeScreen) - { - // If settings were migrated, do not show welcome screen - showWelcomeScreen = !serverSettingsModel.getValue().migrateFromPreferences(); - } + boolean areServersMigrated = serverSettingsModel.getValue().migrateFromPreferences(); + + // If there are any servers in the DB, do not show the welcome screen + showWelcomeScreen &= !areServersMigrated; if (getIntent().hasExtra(Constants.INTENT_EXTRA_NAME_EXIT)) { diff --git a/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectArtistActivity.java b/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectArtistActivity.java index 8173a749..aa6f66e0 100644 --- a/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectArtistActivity.java +++ b/ultrasonic/src/main/java/org/moire/ultrasonic/activity/SelectArtistActivity.java @@ -251,7 +251,7 @@ public class SelectArtistActivity extends SubsonicTabActivity implements Adapter String musicFolderId = activeServerProvider.getValue().getActiveServer().getMusicFolderId(); MenuItem menuItem = menu.add(MENU_GROUP_MUSIC_FOLDER, -1, 0, R.string.select_artist_all_folders); - if (musicFolderId == null) + if (musicFolderId == null || musicFolderId.isEmpty()) { menuItem.setChecked(true); } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/ServerSettingsModel.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/ServerSettingsModel.kt index 1c5c84c0..03512311 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/ServerSettingsModel.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/ServerSettingsModel.kt @@ -47,10 +47,11 @@ class ServerSettingsModel( var migrated = true runBlocking { - val dbServerList = repository.loadAllServerSettings().toMutableList() + val rowCount = repository.count() - if (dbServerList.isEmpty()) { + if (rowCount == null || rowCount == 0) { // First time load up the server settings from the Preferences + val dbServerList = mutableListOf() val settings = PreferenceManager.getDefaultSharedPreferences(context) val serverNum = settings.getInt(PREFERENCES_KEY_ACTIVE_SERVERS, 0) @@ -192,7 +193,7 @@ class ServerSettingsModel( if (serverSetting == null) return viewModelScope.launch { - serverSetting.index = (repository.getMaxIndex() ?: 0) + 1 + serverSetting.index = (repository.count() ?: 0) + 1 serverSetting.id = serverSetting.index repository.insert(serverSetting) Log.d(TAG, "saveNewItem saved server setting: $serverSetting") diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/data/ServerSettingDao.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/data/ServerSettingDao.kt index c3638e99..65c365dd 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/data/ServerSettingDao.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/data/ServerSettingDao.kt @@ -50,8 +50,8 @@ interface ServerSettingDao { suspend fun findByIndex(index: Int): ServerSetting? /** - * Retrieves the greatest Index in stored in the table + * Retrieves the count of rows in the table */ - @Query("SELECT MAX([index]) FROM serverSetting") - suspend fun getMaxIndex(): Int? + @Query("SELECT COUNT(*) FROM serverSetting") + suspend fun count(): Int? }