From cb8f51efed6318b2784cc35c60683bd5daa692c8 Mon Sep 17 00:00:00 2001 From: Jonas Lochmann Date: Mon, 28 Nov 2022 01:00:00 +0100 Subject: [PATCH] Remove legacy app list sync --- .../android/data/model/ConfigurationItem.kt | 2 +- .../logic/applist/CryptoAppListSync.kt | 7 +-- .../android/logic/applist/DeviceStatus.kt | 8 +-- .../logic/applist/SyncInstalledAppsLogic.kt | 23 +++------ .../android/sync/ApplyServerDataStatus.kt | 49 ++----------------- .../timelimit/android/sync/actions/Actions.kt | 5 +- .../android/sync/network/ServerDataStatus.kt | 17 +------ .../DiagnoseExperimentalFlagFragment.kt | 6 --- app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values/strings.xml | 1 - 10 files changed, 19 insertions(+), 100 deletions(-) diff --git a/app/src/main/java/io/timelimit/android/data/model/ConfigurationItem.kt b/app/src/main/java/io/timelimit/android/data/model/ConfigurationItem.kt index ebb04ad..d491ac4 100644 --- a/app/src/main/java/io/timelimit/android/data/model/ConfigurationItem.kt +++ b/app/src/main/java/io/timelimit/android/data/model/ConfigurationItem.kt @@ -289,7 +289,7 @@ object ExperimentalFlags { // const val INSTANCE_ID_FG_APP_DETECTION = 65536L // private const val OBSOLETE_DISABLE_FG_APP_DETECTION_FALLBACK = 131072L const val STRICT_OVERLAY_CHECKING = 0x40000L - const val DISABLE_LEGACY_APP_SENDING = 0x80000L + // const val DISABLE_LEGACY_APP_SENDING = 0x80000L } object ConsentFlags { diff --git a/app/src/main/java/io/timelimit/android/logic/applist/CryptoAppListSync.kt b/app/src/main/java/io/timelimit/android/logic/applist/CryptoAppListSync.kt index 3820a9a..f7c2289 100644 --- a/app/src/main/java/io/timelimit/android/logic/applist/CryptoAppListSync.kt +++ b/app/src/main/java/io/timelimit/android/logic/applist/CryptoAppListSync.kt @@ -41,7 +41,6 @@ object CryptoAppListSync { database: Database, installed: InstalledAppsProto, syncUtil: SyncUtil, - disableLegacySync: Boolean, serverApiLevelInfo: ServerApiLevelInfo ) { val compressedDataSizeLimit = @@ -166,8 +165,7 @@ object CryptoAppListSync { dispatchSync(UpdateInstalledAppsAction( base = baseEncrypted, - diff = diffEncrypted, - wipe = disableLegacySync + diff = diffEncrypted )) } @@ -197,8 +195,7 @@ object CryptoAppListSync { dispatchSync(UpdateInstalledAppsAction( base = null, - diff = diffEncrypted, - wipe = disableLegacySync + diff = diffEncrypted )) } diff --git a/app/src/main/java/io/timelimit/android/logic/applist/DeviceStatus.kt b/app/src/main/java/io/timelimit/android/logic/applist/DeviceStatus.kt index 8a6709d..d732369 100644 --- a/app/src/main/java/io/timelimit/android/logic/applist/DeviceStatus.kt +++ b/app/src/main/java/io/timelimit/android/logic/applist/DeviceStatus.kt @@ -18,7 +18,6 @@ package io.timelimit.android.logic.applist import androidx.lifecycle.LiveData import io.timelimit.android.data.Database import io.timelimit.android.data.model.ConsentFlags -import io.timelimit.android.data.model.ExperimentalFlags import io.timelimit.android.data.model.UserType import io.timelimit.android.integration.platform.ProtectionLevel import io.timelimit.android.livedata.* @@ -34,7 +33,6 @@ data class DeviceState( val isDeviceOwner: Boolean, val hasSyncConsent: Boolean, val isLocalMode: Boolean, - val disableLegacySync: Boolean, val serverApiLevel: ServerApiLevelInfo ) { companion object { @@ -43,7 +41,6 @@ data class DeviceState( val deviceRelatedData = userAndDeviceData.deviceRelatedData val device = deviceRelatedData.deviceEntry val defaultUser = if (device.defaultUser.isNotEmpty()) database.user().getUserByIdSync(device.defaultUser) else null - val disableLegacySync = deviceRelatedData.isExperimentalFlagSetSync(ExperimentalFlags.DISABLE_LEGACY_APP_SENDING) val serverApiLevel = ServerApiLevelLogic.getSync(database) return DeviceState( @@ -54,7 +51,6 @@ data class DeviceState( isDeviceOwner = device.currentProtectionLevel == ProtectionLevel.DeviceOwner, hasSyncConsent = deviceRelatedData.consentFlags and ConsentFlags.APP_LIST_SYNC == ConsentFlags.APP_LIST_SYNC, isLocalMode = deviceRelatedData.isLocalMode, - disableLegacySync = disableLegacySync, serverApiLevel = serverApiLevel ) } @@ -70,9 +66,8 @@ data class DeviceState( if (defaultUser.isNullOrEmpty()) liveDataFromNullableValue(null) else appLogic.database.user().getUserByIdLive(defaultUser) }, - appLogic.database.config().isExperimentalFlagsSetAsync(ExperimentalFlags.DISABLE_LEGACY_APP_SENDING), appLogic.serverApiLevelLogic.infoLive - ).map { (deviceEntry, hasSyncConsent, isLocalMode, deviceUser, deviceDefaultUser, disableLegacySync, serverApiLevel) -> + ).map { (deviceEntry, hasSyncConsent, isLocalMode, deviceUser, deviceDefaultUser, serverApiLevel) -> deviceEntry?.let { device -> DeviceState( id = device.id, @@ -82,7 +77,6 @@ data class DeviceState( isDeviceOwner = device.currentProtectionLevel == ProtectionLevel.DeviceOwner, hasSyncConsent = hasSyncConsent, isLocalMode = isLocalMode, - disableLegacySync = disableLegacySync, serverApiLevel = serverApiLevel ) } diff --git a/app/src/main/java/io/timelimit/android/logic/applist/SyncInstalledAppsLogic.kt b/app/src/main/java/io/timelimit/android/logic/applist/SyncInstalledAppsLogic.kt index 654ff0d..fd50540 100644 --- a/app/src/main/java/io/timelimit/android/logic/applist/SyncInstalledAppsLogic.kt +++ b/app/src/main/java/io/timelimit/android/logic/applist/SyncInstalledAppsLogic.kt @@ -111,24 +111,14 @@ class SyncInstalledAppsLogic(val appLogic: AppLogic) { val diffPlain = AppsDifferenceUtil.calculateAppsDifference(savedPlain, installed) val diffPlainActions = AppsDifferenceUtil.calculateAppsDifferenceActions(diffPlain, deviceState.id) - if (deviceState.disableLegacySync) { - if (diffPlainActions.isNotEmpty()) { - Threads.database.executeAndWait { - diffPlainActions.forEach { - LocalDatabaseAppLogicActionDispatcher.dispatchAppLogicActionSync( - it, appLogic.database.config().getOwnDeviceIdSync()!!, appLogic.database - ) - } + if (diffPlainActions.isNotEmpty()) { + Threads.database.executeAndWait { + diffPlainActions.forEach { + LocalDatabaseAppLogicActionDispatcher.dispatchAppLogicActionSync( + it, appLogic.database.config().getOwnDeviceIdSync()!!, appLogic.database + ) } } - } else { - diffPlainActions.forEach { action -> - ApplyActionUtil.applyAppLogicAction( - action = action, - appLogic = appLogic, - ignoreIfDeviceIsNotConfigured = true - ) - } } if (deviceState.isConnectedMode && deviceState.serverApiLevel.hasLevelOrIsOffline(4)) { @@ -137,7 +127,6 @@ class SyncInstalledAppsLogic(val appLogic: AppLogic) { database = appLogic.database, installed = installed, syncUtil = appLogic.syncUtil, - disableLegacySync = deviceState.disableLegacySync, serverApiLevelInfo = deviceState.serverApiLevel ) } diff --git a/app/src/main/java/io/timelimit/android/sync/ApplyServerDataStatus.kt b/app/src/main/java/io/timelimit/android/sync/ApplyServerDataStatus.kt index 869c042..d986495 100644 --- a/app/src/main/java/io/timelimit/android/sync/ApplyServerDataStatus.kt +++ b/app/src/main/java/io/timelimit/android/sync/ApplyServerDataStatus.kt @@ -289,51 +289,12 @@ object ApplyServerDataStatus { } run { - val disableLegacySync = database.config().isExperimentalFlagsSetSync(ExperimentalFlags.DISABLE_LEGACY_APP_SENDING) - for (item in status.newInstalledApps) { - DatabaseValidation.assertDeviceExists(database, item.deviceId) - - if ( - database.cryptContainer().getCryptoMetadataSyncByDeviceId(item.deviceId, CryptContainerMetadata.TYPE_APP_LIST_BASE) == null || - (item.deviceId == database.config().getOwnDeviceIdSync() && !disableLegacySync) - ) { - run { - // apply apps - database.app().deleteAllAppsByDeviceId(item.deviceId) - database.app().addAppsSync(item.apps.map { - App( - deviceId = item.deviceId, - packageName = it.packageName, - title = it.title, - isLaunchable = it.isLaunchable, - recommendation = it.recommendation - ) - }) - } - - run { - // apply activities - database.appActivity() - .deleteAppActivitiesByDeviceIds(listOf(item.deviceId)) - database.appActivity().addAppActivitiesSync(item.activities.map { - AppActivity( - deviceId = item.deviceId, - appPackageName = it.packageName, - activityClassName = it.className, - title = it.title - ) - }) - } - } - - run { - // apply changed version number - database.device().updateAppsVersion( - deviceId = item.deviceId, - appsVersion = item.version - ) - } + // apply changed version number + database.device().updateAppsVersion( + deviceId = item.deviceId, + appsVersion = item.version + ) } } diff --git a/app/src/main/java/io/timelimit/android/sync/actions/Actions.kt b/app/src/main/java/io/timelimit/android/sync/actions/Actions.kt index eb6de37..0fcc031 100644 --- a/app/src/main/java/io/timelimit/android/sync/actions/Actions.kt +++ b/app/src/main/java/io/timelimit/android/sync/actions/Actions.kt @@ -471,8 +471,7 @@ data class UpdateAppActivitiesAction( } data class UpdateInstalledAppsAction ( val base: ByteArray?, - val diff: ByteArray?, - val wipe: Boolean + val diff: ByteArray? ): AppLogicAction() { companion object { private const val TYPE_VALUE = "UPDATE_INSTALLED_APPS" @@ -489,7 +488,7 @@ data class UpdateInstalledAppsAction ( base?.let { writer.name(BASE).value(it.base64()) } diff?.let { writer.name(DIFF).value(it.base64()) } - writer.name(WIPE).value(wipe) + writer.name(WIPE).value(true) writer.endObject() } diff --git a/app/src/main/java/io/timelimit/android/sync/network/ServerDataStatus.kt b/app/src/main/java/io/timelimit/android/sync/network/ServerDataStatus.kt index e4c5be7..0401c3d 100644 --- a/app/src/main/java/io/timelimit/android/sync/network/ServerDataStatus.kt +++ b/app/src/main/java/io/timelimit/android/sync/network/ServerDataStatus.kt @@ -24,10 +24,7 @@ import io.timelimit.android.data.customtypes.ImmutableBitmaskJson import io.timelimit.android.data.model.* import io.timelimit.android.extensions.MinuteOfDay import io.timelimit.android.extensions.parseBase64 -import io.timelimit.android.extensions.parseList import io.timelimit.android.integration.platform.* -import io.timelimit.android.sync.actions.AppActivityItem -import io.timelimit.android.sync.actions.InstalledApp import io.timelimit.android.util.parseJsonArray import io.timelimit.android.util.parseJsonStringArray import java.util.* @@ -1057,29 +1054,21 @@ data class ServerUpdatedCategoryTask ( data class ServerInstalledAppsData( val deviceId: String, - val version: String, - val apps: List, - val activities: List + val version: String ) { companion object { private const val DEVICE_ID = "deviceId" private const val VERSION = "version" - private const val APPS = "apps" - private const val ACTIVITIES = "activities" fun parse(reader: JsonReader): ServerInstalledAppsData { var deviceId: String? = null var version: String? = null - var apps: List? = null - var activities: List? = null reader.beginObject() while (reader.hasNext()) { when(reader.nextName()) { DEVICE_ID -> deviceId = reader.nextString() VERSION -> version = reader.nextString() - APPS -> apps = InstalledApp.parseList(reader) - ACTIVITIES -> activities = reader.parseList { AppActivityItem.parse(it) } else -> reader.skipValue() } } @@ -1087,9 +1076,7 @@ data class ServerInstalledAppsData( return ServerInstalledAppsData( deviceId = deviceId!!, - version = version!!, - apps = apps!!, - activities = activities!! + version = version!! ) } diff --git a/app/src/main/java/io/timelimit/android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt b/app/src/main/java/io/timelimit/android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt index e5d084e..5a4c4e8 100644 --- a/app/src/main/java/io/timelimit/android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt +++ b/app/src/main/java/io/timelimit/android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt @@ -195,12 +195,6 @@ data class DiagnoseExperimentalFlagItem( enableFlags = ExperimentalFlags.STRICT_OVERLAY_CHECKING, disableFlags = ExperimentalFlags.STRICT_OVERLAY_CHECKING, enable = { true } - ), - DiagnoseExperimentalFlagItem( - label = R.string.diagnose_exf_dls, - enableFlags = ExperimentalFlags.DISABLE_LEGACY_APP_SENDING, - disableFlags = ExperimentalFlags.DISABLE_LEGACY_APP_SENDING, - enable = { true } ) ) } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 80e7f36..77d1287 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -534,7 +534,6 @@ Overlay und Home-Button nicht zum Sperren verwenden Toasts zur Synchronisation anzeigen strengere Prüfung der Überlagerungs-Berechtigung aktivieren - deaktiviere Senden der App-Liste im alten Format Hintergrundaufgabenschleifenfehler diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 82a0df8..e18bc2a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -586,7 +586,6 @@ Do not use a overlay or the home button for blocking Show sync related toasts Enable strict overlay permission check - Disable sending the App List with the legacy encoding Background task loop exception