diff --git a/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferDB.kt b/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferDB.kt index 3af14e104e..3d2c35ce7f 100644 --- a/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferDB.kt +++ b/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferDB.kt @@ -20,6 +20,7 @@ import android.content.Context import android.database.Cursor import android.net.Uri import androidx.annotation.VisibleForTesting +import androidx.core.net.toUri import aws.sdk.kotlin.services.s3.model.CompletedPart import aws.sdk.kotlin.services.s3.model.ObjectCannedAcl import com.amplifyframework.core.Amplify @@ -468,9 +469,8 @@ internal class TransferDB private constructor(context: Context) { * @return The Uri of the part upload records that have the given * mainUploadId value. */ - private fun getTransferRecordIdUri(transferId: String): Uri = Uri.parse( - transferDBHelper.contentUri.toString() + "/transferId/" + transferId - ) + private fun getTransferRecordIdUri(transferId: String): Uri = + "${transferDBHelper.contentUri}/transferId/$transferId".toUri() /** * Gets the Uri of part records of a multipart upload. @@ -479,9 +479,7 @@ internal class TransferDB private constructor(context: Context) { * @return The Uri of the part upload records that have the given * mainUploadId value. */ - private fun getPartUri(mainUploadId: Int): Uri = Uri.parse( - transferDBHelper.contentUri.toString() + "/part/" + mainUploadId - ) + private fun getPartUri(mainUploadId: Int): Uri = "${transferDBHelper.contentUri}/part/$mainUploadId".toUri() /** * Gets the Uri of the records that have the given state. @@ -490,9 +488,7 @@ internal class TransferDB private constructor(context: Context) { * @return The Uri that is used to query transfer records with the given * state. */ - fun getStateUri(state: TransferState): Uri? = Uri.parse( - "${transferDBHelper.contentUri}/state/$state" - ) + fun getStateUri(state: TransferState): Uri? = "${transferDBHelper.contentUri}/state/$state".toUri() /** * Create a string with the required number of placeholders @@ -521,7 +517,7 @@ internal class TransferDB private constructor(context: Context) { * @param id The id of the transfer. * @return The Uri of the record specified by the id. */ - private fun getRecordUri(id: Int): Uri = Uri.parse(transferDBHelper.contentUri.toString() + "/" + id) + private fun getRecordUri(id: Int): Uri = "${transferDBHelper.contentUri}/$id".toUri() /** * Inserts a transfer record into database with the given values. diff --git a/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferDBHelper.kt b/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferDBHelper.kt index f770447467..7f2067be47 100644 --- a/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferDBHelper.kt +++ b/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferDBHelper.kt @@ -24,6 +24,7 @@ import android.database.sqlite.SQLiteOpenHelper import android.database.sqlite.SQLiteQueryBuilder import android.net.Uri import android.text.TextUtils +import androidx.core.net.toUri import com.amplifyframework.core.Amplify import com.amplifyframework.core.category.CategoryType import com.amplifyframework.storage.s3.AWSS3StoragePlugin @@ -60,7 +61,7 @@ internal class TransferDBHelper(private val context: Context) : SQLiteOpenHelper init { val authority = context.applicationContext.packageName database = writableDatabase - contentUri = Uri.parse("content://$authority/$BASE_PATH") + contentUri = "content://$authority/$BASE_PATH".toUri() uriMatcher = UriMatcher(UriMatcher.NO_MATCH) // The Uri of TRANSFERS is for all records in the table. @@ -109,7 +110,7 @@ internal class TransferDBHelper(private val context: Context) : SQLiteOpenHelper ) else -> throw IllegalArgumentException("Unknown URI: $uri") } - return Uri.parse("$BASE_PATH/$id") + return "$BASE_PATH/$id".toUri() } /** diff --git a/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferTable.kt b/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferTable.kt index d7417c4937..718b4b9479 100644 --- a/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferTable.kt +++ b/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferTable.kt @@ -16,6 +16,7 @@ package com.amplifyframework.storage.s3.transfer import android.database.sqlite.SQLiteDatabase +import androidx.core.database.sqlite.transaction import java.util.UUID internal class TransferTable { @@ -200,37 +201,35 @@ internal class TransferTable { */ @JvmStatic fun onUpgrade(database: SQLiteDatabase, oldVersion: Int, newVersion: Int) { - database.beginTransaction() - - if (TABLE_VERSION_2 in (oldVersion + 1)..newVersion) { - addVersion2Columns(database) - } - if (TABLE_VERSION_3 in (oldVersion + 1)..newVersion) { - addVersion3Columns(database) - } - if (TABLE_VERSION_4 in (oldVersion + 1)..newVersion) { - addVersion4Columns(database) - } - if (TABLE_VERSION_5 in (oldVersion + 1)..newVersion) { - addVersion5Columns(database) - } - if (TABLE_VERSION_6 in (oldVersion + 1)..newVersion) { - addVersion6Columns(database) - } - if (TABLE_VERSION_7 in (oldVersion + 1)..newVersion) { - addVersion7Columns(database) - } - if (TABLE_VERSION_8 in (oldVersion + 1)..newVersion) { - addVersion8Columns(database) - } - if (TABLE_VERSION_9 in (oldVersion + 1)..newVersion) { - addVersion9Columns(database) - } - if (TABLE_VERSION_10 in (oldVersion + 1)..newVersion) { - addVersion10Columns(database) + database.transaction { + if (TABLE_VERSION_2 in (oldVersion + 1)..newVersion) { + addVersion2Columns(database) + } + if (TABLE_VERSION_3 in (oldVersion + 1)..newVersion) { + addVersion3Columns(database) + } + if (TABLE_VERSION_4 in (oldVersion + 1)..newVersion) { + addVersion4Columns(database) + } + if (TABLE_VERSION_5 in (oldVersion + 1)..newVersion) { + addVersion5Columns(database) + } + if (TABLE_VERSION_6 in (oldVersion + 1)..newVersion) { + addVersion6Columns(database) + } + if (TABLE_VERSION_7 in (oldVersion + 1)..newVersion) { + addVersion7Columns(database) + } + if (TABLE_VERSION_8 in (oldVersion + 1)..newVersion) { + addVersion8Columns(database) + } + if (TABLE_VERSION_9 in (oldVersion + 1)..newVersion) { + addVersion9Columns(database) + } + if (TABLE_VERSION_10 in (oldVersion + 1)..newVersion) { + addVersion10Columns(database) + } } - database.setTransactionSuccessful() - database.endTransaction() } /** diff --git a/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferWorkerObserver.kt b/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferWorkerObserver.kt index c720c768f5..330fc905fc 100644 --- a/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferWorkerObserver.kt +++ b/aws-storage-s3/src/main/java/com/amplifyframework/storage/s3/transfer/TransferWorkerObserver.kt @@ -39,7 +39,7 @@ internal class TransferWorkerObserver private constructor( private val workManager: WorkManager, private val transferStatusUpdater: TransferStatusUpdater, private val transferDB: TransferDB -) : Observer> { +) : Observer> { private val coroutineScope = CoroutineScope(Executors.newSingleThreadExecutor().asCoroutineDispatcher()) @@ -79,9 +79,9 @@ internal class TransferWorkerObserver private constructor( } } - override fun onChanged(workInfoList: MutableList?) { + override fun onChanged(workInfoList: List) { coroutineScope.launch { - workInfoList?.forEach { workInfo -> + workInfoList.forEach { workInfo -> val transferRecordId = transferStatusUpdater.getTransferRecordIdForWorkInfo(workInfo.id.toString()) ?: workInfo.outputData.getInt(BaseTransferWorker.OUTPUT_TRANSFER_RECORD_ID, -1) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b051df6486..c35db72885 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,7 +17,7 @@ androidx-test-core = "1.5.0" androidx-test-junit = "1.1.5" androidx-test-orchestrator = "1.4.2" androidx-test-runner = "1.5.2" -androidx-workmanager = "2.9.1" +androidx-workmanager = "2.11.2" apollo = "4.3.1" aws-kotlin = "1.5.15" # ensure proper aws-smithy version also set aws-sdk = "2.81.1"