diff --git a/app/build.gradle b/app/build.gradle index 3ac69c33cf..826d3d2059 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,7 +7,7 @@ buildscript { classpath 'com.hiya:jacoco-android:0.2' classpath 'com.github.spotbugs.snom:spotbugs-gradle-plugin:5.0.14' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.22.0" + classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.0" classpath "commons-httpclient:commons-httpclient:3.1@jar" // remove after entire switch to lib v2 classpath 'com.karumi:shot:5.14.1' classpath "org.jacoco:org.jacoco.core:$jacoco_version" @@ -248,13 +248,13 @@ dependencies { implementation 'androidx.webkit:webkit:1.6.1' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.exifinterface:exifinterface:1.3.6' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1" implementation "androidx.work:work-runtime:$workRuntime" implementation "androidx.work:work-runtime-ktx:$workRuntime" implementation "androidx.fragment:fragment-ktx:1.5.7" implementation 'com.github.albfernandez:juniversalchardet:2.0.3' // need this version for Android <7 compileOnly 'com.google.code.findbugs:annotations:3.0.1u2' - implementation 'commons-io:commons-io:2.11.0' + implementation 'commons-io:commons-io:2.12.0' implementation 'org.greenrobot:eventbus:3.3.1' implementation 'com.googlecode.ez-vcard:ez-vcard:0.12.0' implementation 'org.lukhnos:nnio:0.2' @@ -374,7 +374,7 @@ dependencies { kapt "androidx.room:room-compiler:$roomVersion" androidTestImplementation "androidx.room:room-testing:$roomVersion" - implementation "io.coil-kt:coil:2.2.2" + implementation "io.coil-kt:coil:2.4.0" } configurations.all { diff --git a/app/src/main/java/com/nextcloud/client/database/NextcloudDatabase.kt b/app/src/main/java/com/nextcloud/client/database/NextcloudDatabase.kt index fd0f7e0900..1cef1ddd90 100644 --- a/app/src/main/java/com/nextcloud/client/database/NextcloudDatabase.kt +++ b/app/src/main/java/com/nextcloud/client/database/NextcloudDatabase.kt @@ -60,7 +60,8 @@ import com.owncloud.android.db.ProviderMeta version = ProviderMeta.DB_VERSION, autoMigrations = [ AutoMigration(from = 65, to = 66), - AutoMigration(from = 66, to = 67) + AutoMigration(from = 66, to = 67), + AutoMigration(from = 68, to = 69) ], exportSchema = true ) diff --git a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt index fa85de5aad..582bc6ec07 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt @@ -23,7 +23,7 @@ import android.os.Build import android.provider.MediaStore import androidx.annotation.RequiresApi import androidx.lifecycle.LiveData -import androidx.lifecycle.Transformations +import androidx.lifecycle.map import androidx.work.Constraints import androidx.work.Data import androidx.work.ExistingPeriodicWorkPolicy @@ -193,7 +193,7 @@ internal class BackgroundJobManagerImpl( private fun WorkManager.getJobInfo(id: UUID): LiveData { val workInfo = getWorkInfoByIdLiveData(id) - return Transformations.map(workInfo) { fromWorkInfo(it) } + return workInfo.map { fromWorkInfo(it) } } /** @@ -208,9 +208,7 @@ internal class BackgroundJobManagerImpl( override val jobs: LiveData> get() { val workInfo = workManager.getWorkInfosByTagLiveData("*") - return Transformations.map(workInfo) { - it.map { fromWorkInfo(it) ?: JobInfo() }.sortedBy { it.started }.reversed() - } + return workInfo.map { it -> it.map { fromWorkInfo(it) ?: JobInfo() }.sortedBy { it.started }.reversed() } } @RequiresApi(Build.VERSION_CODES.N) @@ -463,9 +461,7 @@ internal class BackgroundJobManagerImpl( override fun getFileUploads(user: User): LiveData> { val workInfo = workManager.getWorkInfosByTagLiveData(formatNameTag(JOB_FILES_UPLOAD, user)) - return Transformations.map(workInfo) { - it.map { fromWorkInfo(it) ?: JobInfo() } - } + return workInfo.map { it -> it.map { fromWorkInfo(it) ?: JobInfo() } } } override fun startPdfGenerateAndUploadWork( diff --git a/app/src/main/java/com/nextcloud/client/media/NextcloudExoPlayer.kt b/app/src/main/java/com/nextcloud/client/media/NextcloudExoPlayer.kt index f27fca1785..31e89342fe 100644 --- a/app/src/main/java/com/nextcloud/client/media/NextcloudExoPlayer.kt +++ b/app/src/main/java/com/nextcloud/client/media/NextcloudExoPlayer.kt @@ -27,6 +27,7 @@ import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSource import com.google.android.exoplayer2.source.DefaultMediaSourceFactory import com.google.android.exoplayer2.upstream.DefaultDataSource import com.nextcloud.common.NextcloudClient +import com.owncloud.android.MainApp object NextcloudExoPlayer { private const val FIVE_SECONDS_IN_MILLIS = 5000L @@ -39,6 +40,7 @@ object NextcloudExoPlayer { @JvmStatic fun createNextcloudExoplayer(context: Context, nextcloudClient: NextcloudClient): ExoPlayer { val okHttpDataSourceFactory = OkHttpDataSource.Factory(nextcloudClient.client) + okHttpDataSourceFactory.setUserAgent(MainApp.getUserAgent()) val mediaSourceFactory = DefaultMediaSourceFactory( DefaultDataSource.Factory( context, diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java b/app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java index 9212191066..fe100354d8 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java @@ -45,7 +45,6 @@ import com.owncloud.android.utils.KeyboardUtils; import com.owncloud.android.utils.theme.ViewThemeUtils; import java.util.List; -import java.util.Objects; import java.util.Set; import javax.inject.Inject; @@ -96,9 +95,15 @@ public class CreateFolderDialogFragment public void onStart() { super.onStart(); - AlertDialog alertDialog = (AlertDialog) getDialog(); + bindButton(); + } + + private void bindButton() { + Dialog dialog = getDialog(); + + if (dialog instanceof AlertDialog) { + AlertDialog alertDialog = (AlertDialog) dialog; - if (alertDialog != null) { positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); viewThemeUtils.platform.colorTextButtons(positiveButton, @@ -109,6 +114,8 @@ public class CreateFolderDialogFragment @Override public void onResume() { super.onResume(); + + bindButton(); keyboardUtils.showKeyboardForEditText(binding.userInput); } @@ -159,6 +166,9 @@ public class CreateFolderDialogFragment binding.userInputContainer.setError(getText(R.string.hidden_file_name_warning)); } else if (TextUtils.isEmpty(newFileName)) { binding.userInputContainer.setError(getString(R.string.filename_empty)); + if (positiveButton == null) { + bindButton(); + } positiveButton.setEnabled(false); } else if (!FileUtils.isValidName(newFileName)) { binding.userInputContainer.setError(getString(R.string.filename_forbidden_charaters_from_server)); diff --git a/app/src/main/res/layout/file_list_actions_bottom_sheet_fragment.xml b/app/src/main/res/layout/file_list_actions_bottom_sheet_fragment.xml index 32d4f676d3..2c3418d845 100644 --- a/app/src/main/res/layout/file_list_actions_bottom_sheet_fragment.xml +++ b/app/src/main/res/layout/file_list_actions_bottom_sheet_fragment.xml @@ -1,4 +1,5 @@ -