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