From d5cf261776a83b85cdcadff2c5acff968c5648b3 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Tue, 3 Dec 2019 00:55:43 +0100 Subject: [PATCH] Fix user migration step Signed-off-by: Mario Danic --- .idea/modules.xml | 4 +- .../application/NextcloudTalkApplication.kt | 70 +++++++++++-------- .../talk/newarch/local/models/UserNgEntity.kt | 1 - .../utils/preferences/AppPreferences.java | 11 +++ 4 files changed, 54 insertions(+), 32 deletions(-) diff --git a/.idea/modules.xml b/.idea/modules.xml index 7c43136c5..4de83c3f1 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -3,7 +3,9 @@ + + - + \ No newline at end of file diff --git a/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt b/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt index b59b28d09..1cdf0268a 100644 --- a/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt +++ b/app/src/main/java/com/nextcloud/talk/application/NextcloudTalkApplication.kt @@ -63,6 +63,7 @@ import com.nextcloud.talk.newarch.local.dao.UsersDao import com.nextcloud.talk.newarch.local.models.UserNgEntity import com.nextcloud.talk.newarch.local.models.other.UserStatus.ACTIVE import com.nextcloud.talk.newarch.local.models.other.UserStatus.DORMANT +import com.nextcloud.talk.newarch.local.models.other.UserStatus.PENDING_DELETE import com.nextcloud.talk.utils.ClosedInterfaceImpl import com.nextcloud.talk.utils.DisplayUtils import com.nextcloud.talk.utils.OkHttpNetworkFetcherWithCache @@ -241,38 +242,47 @@ class NextcloudTalkApplication : Application(), LifecycleObserver { } fun migrateUsers() { - GlobalScope.launch { - val users: List = userUtils.users as List - var userNg: UserNgEntity - val newUsers = mutableListOf() - for (user in users) { - userNg = UserNgEntity(user.id, user.userId, user.username, user.baseUrl) - userNg.token = user.token - userNg.displayName = user.displayName - try { - userNg.pushConfiguration = - LoganSquare.parse(user.pushConfigurationState, PushConfigurationState::class.java) - } catch (e: Exception) { - // no push + if (!appPreferences.migrationToRoomFinished) { + GlobalScope.launch { + val users: List = userUtils.users as List + var userNg: UserNgEntity + val newUsers = mutableListOf() + for (user in users) { + userNg = UserNgEntity(user.id, user.userId, user.username, user.baseUrl) + userNg.token = user.token + userNg.displayName = user.displayName + try { + userNg.pushConfiguration = + LoganSquare.parse(user.pushConfigurationState, PushConfigurationState::class.java) + } catch (e: Exception) { + // no push + } + if (user.capabilities != null) { + userNg.capabilities = LoganSquare.parse(user.capabilities, Capabilities::class.java) + } + userNg.clientCertificate = user.clientCertificate + try { + userNg.externalSignaling = + LoganSquare.parse(user.externalSignalingServer, ExternalSignalingServer::class.java) + } catch (e: Exception) { + // no external signaling + } + if (user.current) { + userNg.status = ACTIVE + } else { + if (user.scheduledForDeletion) { + userNg.status = PENDING_DELETE + } else { + userNg.status = DORMANT + } + } + + + newUsers.add(userNg) } - if (user.capabilities != null) { - userNg.capabilities = LoganSquare.parse(user.capabilities, Capabilities::class.java) - } - userNg.clientCertificate = user.clientCertificate - try { - userNg.externalSignaling = - LoganSquare.parse(user.externalSignalingServer, ExternalSignalingServer::class.java) - } catch (e: Exception) { - // no external signaling - } - if (user.current) { - userNg.status = ACTIVE - } else { - userNg.status = DORMANT - } - newUsers.add(userNg) + usersDao.saveUsers(*newUsers.toTypedArray()) + appPreferences.migrationToRoomFinished = true } - usersDao.saveUsers(*newUsers.toTypedArray()) } } diff --git a/app/src/main/java/com/nextcloud/talk/newarch/local/models/UserNgEntity.kt b/app/src/main/java/com/nextcloud/talk/newarch/local/models/UserNgEntity.kt index 949b1bec8..5658c901f 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/local/models/UserNgEntity.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/local/models/UserNgEntity.kt @@ -31,7 +31,6 @@ import com.nextcloud.talk.newarch.local.models.other.UserStatus import com.nextcloud.talk.utils.ApiUtils import kotlinx.android.parcel.Parcelize import kotlinx.android.parcel.RawValue -import kotlinx.android.parcel.WriteWith @Parcelize @Entity(tableName = "users") diff --git a/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java b/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java index adf3432fa..bacc94170 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java +++ b/app/src/main/java/com/nextcloud/talk/utils/preferences/AppPreferences.java @@ -287,6 +287,17 @@ public interface AppPreferences { @UnregisterChangeListenerMethod void unregisterThemeChangeListener(OnPreferenceValueChangedListener listener); + @KeyByString("migration_to_room") + @DefaultValue(R.bool.value_false) + boolean getMigrationToRoomFinished(); + + @KeyByString("migration_to_room") + void setMigrationToRoomFinished(boolean value); + + @KeyByString("migration_to_room") + @RemoveMethod + void removeMigrationToRoomFinished(); + @ClearMethod void clear(); }