Add Android auto-upload mobile data limit

This commit is contained in:
Курнат Андрей
2026-06-09 21:54:25 +03:00
parent 4bf54f7fda
commit 89f3cd0934
20 changed files with 1684 additions and 60 deletions
File diff suppressed because it is too large Load Diff
@@ -31,7 +31,7 @@ public class ProviderMeta {
public static final String DB_NAME = "filelist";
public static final String NEW_DB_NAME = "qsfera_database";
public static final int DB_VERSION = 50;
public static final int DB_VERSION = 51;
private ProviderMeta() {
}
@@ -53,6 +53,7 @@ import eu.qsfera.android.data.migrations.MIGRATION_42_43
import eu.qsfera.android.data.migrations.MIGRATION_47_48
import eu.qsfera.android.data.migrations.MIGRATION_48_49
import eu.qsfera.android.data.migrations.MIGRATION_49_50
import eu.qsfera.android.data.migrations.MIGRATION_50_51
import eu.qsfera.android.data.sharing.shares.db.OCShareDao
import eu.qsfera.android.data.sharing.shares.db.OCShareEntity
import eu.qsfera.android.data.spaces.db.SpaceSpecialEntity
@@ -129,7 +130,8 @@ abstract class QSferaDatabase : RoomDatabase() {
MIGRATION_42_43,
MIGRATION_47_48,
MIGRATION_48_49,
MIGRATION_49_50)
MIGRATION_49_50,
MIGRATION_50_51)
.build()
INSTANCE = instance
instance
@@ -69,6 +69,9 @@ class OCLocalFolderBackupDataSource(
uploadPath = uploadPath,
wifiOnly = wifiOnly,
allowRoaming = allowRoaming,
mobileDataLimitBytes = mobileDataLimitBytes,
mobileDataPeriodStartTimestamp = mobileDataPeriodStartTimestamp,
mobileDataBytesQueuedInPeriod = mobileDataBytesQueuedInPeriod,
chargingOnly = chargingOnly,
name = name,
lastSyncTimestamp = lastSyncTimestamp,
@@ -85,6 +88,9 @@ class OCLocalFolderBackupDataSource(
uploadPath = uploadPath,
wifiOnly = wifiOnly,
allowRoaming = allowRoaming,
mobileDataLimitBytes = mobileDataLimitBytes,
mobileDataPeriodStartTimestamp = mobileDataPeriodStartTimestamp,
mobileDataBytesQueuedInPeriod = mobileDataBytesQueuedInPeriod,
chargingOnly = chargingOnly,
lastSyncTimestamp = lastSyncTimestamp,
name = name,
@@ -30,6 +30,9 @@ data class FolderBackUpEntity(
val uploadPath: String,
val wifiOnly: Boolean,
val allowRoaming: Boolean,
val mobileDataLimitBytes: Long,
val mobileDataPeriodStartTimestamp: Long,
val mobileDataBytesQueuedInPeriod: Long,
val chargingOnly: Boolean,
val name: String,
val lastSyncTimestamp: Long,
@@ -48,7 +48,7 @@ class CameraUploadsMigrationToRoom(val sharedPreferencesProvider: SharedPreferen
if (!sharedPreferencesProvider.getBoolean(PREF__CAMERA_PICTURE_UPLOADS_ENABLED, false)) return null
return FolderBackUpConfiguration(
accountName = sharedPreferencesProvider.getString(PREF__CAMERA_PICTURE_UPLOADS_ACCOUNT_NAME, null) ?: "",
accountName = sharedPreferencesProvider.getString(PREF__CAMERA_PICTURE_UPLOADS_ACCOUNT_NAME, null).orEmpty(),
wifiOnly = sharedPreferencesProvider.getBoolean(PREF__CAMERA_PICTURE_UPLOADS_WIFI_ONLY, false),
uploadPath = getUploadPathForPreference(PREF__CAMERA_PICTURE_UPLOADS_PATH),
sourcePath = getSourcePathForPreference(PREF__CAMERA_PICTURE_UPLOADS_SOURCE),
@@ -56,6 +56,9 @@ class CameraUploadsMigrationToRoom(val sharedPreferencesProvider: SharedPreferen
lastSyncTimestamp = timestamp,
name = pictureUploadsName,
allowRoaming = false,
mobileDataLimitBytes = 0,
mobileDataPeriodStartTimestamp = 0,
mobileDataBytesQueuedInPeriod = 0,
chargingOnly = false,
spaceId = null,
)
@@ -65,7 +68,7 @@ class CameraUploadsMigrationToRoom(val sharedPreferencesProvider: SharedPreferen
if (!sharedPreferencesProvider.getBoolean(PREF__CAMERA_VIDEO_UPLOADS_ENABLED, false)) return null
return FolderBackUpConfiguration(
accountName = sharedPreferencesProvider.getString(PREF__CAMERA_VIDEO_UPLOADS_ACCOUNT_NAME, null) ?: "",
accountName = sharedPreferencesProvider.getString(PREF__CAMERA_VIDEO_UPLOADS_ACCOUNT_NAME, null).orEmpty(),
wifiOnly = sharedPreferencesProvider.getBoolean(PREF__CAMERA_VIDEO_UPLOADS_WIFI_ONLY, false),
uploadPath = getUploadPathForPreference(PREF__CAMERA_VIDEO_UPLOADS_PATH),
sourcePath = getSourcePathForPreference(PREF__CAMERA_VIDEO_UPLOADS_SOURCE),
@@ -73,6 +76,9 @@ class CameraUploadsMigrationToRoom(val sharedPreferencesProvider: SharedPreferen
lastSyncTimestamp = timestamp,
name = videoUploadsName,
allowRoaming = false,
mobileDataLimitBytes = 0,
mobileDataPeriodStartTimestamp = 0,
mobileDataBytesQueuedInPeriod = 0,
chargingOnly = false,
spaceId = null,
)
@@ -87,7 +93,7 @@ class CameraUploadsMigrationToRoom(val sharedPreferencesProvider: SharedPreferen
}
private fun getSourcePathForPreference(keyPreference: String): String =
sharedPreferencesProvider.getString(keyPreference, null) ?: ""
sharedPreferencesProvider.getString(keyPreference, null).orEmpty()
private fun getBehaviorForPreference(keyPreference: String): UploadBehavior {
val storedBehaviour = sharedPreferencesProvider.getString(keyPreference, null) ?: return UploadBehavior.COPY
@@ -0,0 +1,13 @@
package eu.qsfera.android.data.migrations
import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase
import eu.qsfera.android.data.ProviderMeta.ProviderTableMeta.FOLDER_BACKUP_TABLE_NAME
val MIGRATION_50_51 = object : Migration(50, 51) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE $FOLDER_BACKUP_TABLE_NAME ADD COLUMN mobileDataLimitBytes INTEGER NOT NULL DEFAULT '0'")
database.execSQL("ALTER TABLE $FOLDER_BACKUP_TABLE_NAME ADD COLUMN mobileDataPeriodStartTimestamp INTEGER NOT NULL DEFAULT '0'")
database.execSQL("ALTER TABLE $FOLDER_BACKUP_TABLE_NAME ADD COLUMN mobileDataBytesQueuedInPeriod INTEGER NOT NULL DEFAULT '0'")
}
}