diff --git a/.github/workflows/assembleFlavors.yml b/.github/workflows/assembleFlavors.yml index 165c7f720a6f..a334359beae6 100644 --- a/.github/workflows/assembleFlavors.yml +++ b/.github/workflows/assembleFlavors.yml @@ -19,7 +19,7 @@ jobs: matrix: flavor: [ Generic, Gplay, Huawei ] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v3 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3 - name: set up JDK 17 uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3 with: diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 3151bfac84d8..ddb198952505 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -19,7 +19,7 @@ jobs: matrix: task: [ detekt, spotlessKotlinCheck ] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v3 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3 - name: Set up JDK 17 uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3 with: diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d0ef92034436..bfa8d7c8b833 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -32,7 +32,7 @@ jobs: with: swap-size-gb: 10 - name: Initialize CodeQL - uses: github/codeql-action/init@0116bc2df50751f9724a2e35ef1f24d22f90e4e1 # v2.22.3 + uses: github/codeql-action/init@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2.22.4 with: languages: ${{ matrix.language }} - name: Set up JDK 17 @@ -46,4 +46,4 @@ jobs: echo "org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" > "$HOME/.gradle/gradle.properties" ./gradlew assembleDebug - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@0116bc2df50751f9724a2e35ef1f24d22f90e4e1 # v2.22.3 + uses: github/codeql-action/analyze@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2.22.4 diff --git a/.github/workflows/command-rebase.yml b/.github/workflows/command-rebase.yml index 8c215c1c4ca6..60876df35457 100644 --- a/.github/workflows/command-rebase.yml +++ b/.github/workflows/command-rebase.yml @@ -23,7 +23,7 @@ jobs: steps: - name: Add reaction on start - uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.2 + uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0 with: token: ${{ secrets.COMMAND_BOT_PAT }} repository: ${{ github.event.repository.full_name }} @@ -31,7 +31,7 @@ jobs: reaction-type: "+1" - name: Checkout the latest code - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: fetch-depth: 0 token: ${{ secrets.COMMAND_BOT_PAT }} @@ -42,7 +42,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }} - name: Add reaction on failure - uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.2 + uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0 if: failure() with: token: ${{ secrets.COMMAND_BOT_PAT }} diff --git a/.github/workflows/detectWrongSettings.yml b/.github/workflows/detectWrongSettings.yml index 599e7d06b4c5..9d6dce59a20c 100644 --- a/.github/workflows/detectWrongSettings.yml +++ b/.github/workflows/detectWrongSettings.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v3 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3 - name: Set up JDK 17 uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3 with: diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml index 8f9090e6cf50..8a6f9e6cd7ad 100644 --- a/.github/workflows/qa.yml +++ b/.github/workflows/qa.yml @@ -19,7 +19,7 @@ jobs: - name: Check if secrets are available run: echo "::set-output name=ok::${{ secrets.KS_PASS != '' }}" id: check-secrets - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v3 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3 if: ${{ steps.check-secrets.outputs.ok == 'true' }} - name: set up JDK 17 uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 04e89bad60bb..bd873fbb8143 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -29,7 +29,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@483ef80eb98fb506c348f7d62e28055e49fe2398 # v2.3.0 + uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 with: results_file: results.sarif results_format: sarif @@ -37,6 +37,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@0116bc2df50751f9724a2e35ef1f24d22f90e4e1 # v2.22.3 + uses: github/codeql-action/upload-sarif@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2.22.4 with: sarif_file: results.sarif diff --git a/.github/workflows/screenShotTest.yml b/.github/workflows/screenShotTest.yml index 9b768312963c..e036d66e6ec5 100644 --- a/.github/workflows/screenShotTest.yml +++ b/.github/workflows/screenShotTest.yml @@ -22,7 +22,7 @@ jobs: color: [ blue ] api-level: [ 27 ] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v3 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3 - name: Gradle cache uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3 diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index f7b750515f89..12a5a6da2b64 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -18,7 +18,7 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - name: Set up JDK 17 uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3.13.0 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index ebc537ffa5c9..5d6df215c09e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,30 @@ -## 3.24.1 (February 21, 2022) +## 3.26.0 (September 16, 2023) + +- image editing +- image details, with map +- show other Nextcloud apps + +Minimum: NC 16 Server, Android 6.0 Marshmallow + +For a full list, please see https://github.com/nextcloud/android/milestone/84 + +## 3.25.0 (June 13, 2023) + +- show Groupfolder +- Tag in file listing + +Minimum: NC 16 Server, Android 6.0 Marshmallow + +For a full list, please see https://github.com/nextcloud/android/milestone/81 + +## 3.24.1 (February 21, 2023) - Fix crash in previous version when connecting to old server versions Minimum: NC 16 Server, Android 6.0 Marshmallow +For a full list, please see https://github.com/nextcloud/android/milestone/80 + ## 3.24.0 (February 13, 2023) - Several performance optimizations by @starypatyk diff --git a/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepBoth.png b/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepBoth.png index 47172a3da27b..97e0219c3302 100644 Binary files a/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepBoth.png and b/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepBoth.png differ diff --git a/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepExisting.png b/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepExisting.png index 8ad1818f865e..57b78febd9c2 100644 Binary files a/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepExisting.png and b/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepExisting.png differ diff --git a/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepNew.png b/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepNew.png index e51fdd8144d0..bf4f56484ee1 100644 Binary files a/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepNew.png and b/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_keepNew.png differ diff --git a/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_screenshotTextFiles.png b/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_screenshotTextFiles.png index 336694046bc1..df72127e511a 100644 Binary files a/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_screenshotTextFiles.png and b/app/screenshots/gplay/debug/com.owncloud.android.ui.activity.ConflictsResolveActivityIT_screenshotTextFiles.png differ diff --git a/app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailActivitiesFragment.png b/app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailActivitiesFragment.png index 01ad7143ffef..32a31a678acb 100644 Binary files a/app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailActivitiesFragment.png and b/app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailActivitiesFragment.png differ diff --git a/app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailDetailsFragment.png b/app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailDetailsFragment.png index ba5be85af350..e853f17b9131 100644 Binary files a/app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailDetailsFragment.png and b/app/screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailDetailsFragment.png differ diff --git a/app/src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailFragmentStaticServerIT.kt b/app/src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailFragmentStaticServerIT.kt index 5f6883e1ab67..71213ff5928c 100644 --- a/app/src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailFragmentStaticServerIT.kt +++ b/app/src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailFragmentStaticServerIT.kt @@ -73,14 +73,19 @@ class FileDetailFragmentStaticServerIT : AbstractIT() { @Test @ScreenshotTest fun showFileDetailDetailsFragment() { - val sut = testActivityRule.launchActivity(null) - sut.addFragment(ImageDetailFragment.newInstance(oCFile, user)) + val activity = testActivityRule.launchActivity(null) + val sut = ImageDetailFragment.newInstance(oCFile, user) + activity.addFragment(sut) - waitForIdleSync() - shortSleep() shortSleep() shortSleep() - screenshot(sut) + waitForIdleSync() + + activity.runOnUiThread { + sut.hideMap() + } + + screenshot(activity) } @Test @@ -182,6 +187,7 @@ class FileDetailFragmentStaticServerIT : AbstractIT() { waitForIdleSync() activity.runOnUiThread { + sut.fileDetailActivitiesFragment.disableLoadingActivities() sut .fileDetailActivitiesFragment .setErrorContent(targetContext.resources.getString(R.string.file_detail_activity_error)) diff --git a/app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt b/app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt index 427b9f605d7b..d8a417513be0 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt @@ -29,7 +29,6 @@ import android.content.ContentResolver import android.content.Context import android.content.Intent import android.content.Intent.FLAG_ACTIVITY_NEW_TASK -import android.graphics.BitmapFactory import androidx.core.app.NotificationCompat import androidx.work.Worker import androidx.work.WorkerParameters @@ -69,9 +68,7 @@ class FilesExportWork( val successfulExports = exportFiles(fileIDs) - // show notification showSuccessNotification(successfulExports) - return Result.success() } @@ -105,7 +102,13 @@ class FilesExportWork( @Throws(IllegalStateException::class) private fun exportFile(ocFile: OCFile) { - FileExportUtils().exportFile(ocFile.fileName, ocFile.mimeType, contentResolver, ocFile, null) + FileExportUtils().exportFile( + ocFile.fileName, + ocFile.mimeType, + contentResolver, + ocFile, + null + ) } private fun downloadFile(ocFile: OCFile) { @@ -119,19 +122,16 @@ class FilesExportWork( } private fun showErrorNotification(successfulExports: Int) { - if (successfulExports == 0) { - showNotification( - appContext.resources.getQuantityString(R.plurals.export_failed, successfulExports, successfulExports) - ) + val message = if (successfulExports == 0) { + appContext.resources.getQuantityString(R.plurals.export_failed, successfulExports, successfulExports) } else { - showNotification( - appContext.resources.getQuantityString( - R.plurals.export_partially_failed, - successfulExports, - successfulExports - ) + appContext.resources.getQuantityString( + R.plurals.export_partially_failed, + successfulExports, + successfulExports ) } + showNotification(message) } private fun showSuccessNotification(successfulExports: Int) { @@ -152,9 +152,7 @@ class FilesExportWork( NotificationUtils.NOTIFICATION_CHANNEL_DOWNLOAD ) .setSmallIcon(R.drawable.notification_icon) - .setLargeIcon(BitmapFactory.decodeResource(appContext.resources, R.drawable.notification_icon)) - .setSubText(user.accountName) - .setContentText(message) + .setContentTitle(message) .setAutoCancel(true) viewThemeUtils.androidx.themeNotificationCompatBuilder(appContext, notificationBuilder) @@ -166,7 +164,8 @@ class FilesExportWork( appContext, notificationId, actionIntent, - PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE + PendingIntent.FLAG_CANCEL_CURRENT or + PendingIntent.FLAG_IMMUTABLE ) notificationBuilder.addAction( NotificationCompat.Action( @@ -176,7 +175,8 @@ class FilesExportWork( ) ) - val notificationManager = appContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + val notificationManager = appContext + .getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.notify(notificationId, notificationBuilder.build()) } diff --git a/app/src/main/java/com/nextcloud/ui/ImageDetailFragment.kt b/app/src/main/java/com/nextcloud/ui/ImageDetailFragment.kt index e858c6fa97d9..590e9e464fa7 100644 --- a/app/src/main/java/com/nextcloud/ui/ImageDetailFragment.kt +++ b/app/src/main/java/com/nextcloud/ui/ImageDetailFragment.kt @@ -30,6 +30,7 @@ import android.os.Parcelable import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.annotation.VisibleForTesting import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import com.nextcloud.android.common.ui.theme.utils.ColorRole @@ -260,6 +261,11 @@ class ImageDetailFragment : Fragment(), Injectable { binding.imageLocationMapCopyright.text = binding.imageLocationMap.tileProvider.tileSource.copyrightNotice } + @VisibleForTesting + fun hideMap() { + binding.imageLocationMap.visibility = View.GONE + } + @SuppressLint("SimpleDateFormat") private fun gatherMetadata() { val fileSize = DisplayUtils.bytesToHumanReadable(file.fileLength) diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt index a0e9aa514f28..b56513207ae2 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt @@ -32,10 +32,10 @@ import android.os.Bundle import android.text.Editable import android.text.TextWatcher import android.view.View -import android.widget.Button import androidx.appcompat.app.AlertDialog import androidx.fragment.app.DialogFragment import androidx.recyclerview.widget.GridLayoutManager +import com.google.android.material.button.MaterialButton import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.android.lib.resources.directediting.DirectEditingCreateFileRemoteOperation import com.nextcloud.android.lib.resources.directediting.DirectEditingObtainListOfTemplatesRemoteOperation @@ -90,7 +90,7 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem private var adapter: TemplateAdapter? = null private var parentFolder: OCFile? = null private var title: String? = null - private var positiveButton: Button? = null + private var positiveButton: MaterialButton? = null private var creator: Creator? = null enum class Type { @@ -103,17 +103,18 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem override fun onStart() { super.onStart() val alertDialog = dialog as AlertDialog - val button = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) - viewThemeUtils.platform.colorTextButtons( - button, - alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL) - ) - button.setOnClickListener(this) - button.isEnabled = false - button.isClickable = false + val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton + viewThemeUtils.material.colorMaterialButtonPrimaryTonal(positiveButton) + + val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton + viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton) - positiveButton = button + positiveButton.setOnClickListener(this) + positiveButton.isEnabled = false + positiveButton.isClickable = false + + this.positiveButton = positiveButton checkEnablingCreateButton() } @@ -128,6 +129,7 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem parentFolder = arguments.getParcelable(ARG_PARENT_FOLDER) creator = arguments.getParcelable(ARG_CREATOR) + title = arguments.getString(ARG_HEADLINE, getString(R.string.select_template)) title = when (savedInstanceState) { null -> arguments.getString(ARG_HEADLINE) @@ -175,7 +177,7 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem val builder = MaterialAlertDialogBuilder(activity) builder.setView(view) .setPositiveButton(R.string.create, null) - .setNeutralButton(R.string.common_cancel, null) + .setNegativeButton(R.string.common_cancel, null) .setTitle(title) viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.list.context, builder) @@ -208,8 +210,8 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem } fun setTemplateList(templateList: TemplateList?) { - adapter!!.setTemplateList(templateList) - adapter!!.notifyDataSetChanged() + adapter?.setTemplateList(templateList) + adapter?.notifyDataSetChanged() } override fun onClick(template: Template) { diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java b/app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java index a7333ffcab73..088e6f1aa127 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java +++ b/app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java @@ -29,6 +29,7 @@ import android.widget.Button; import android.widget.Toast; +import com.google.android.material.button.MaterialButton; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.nextcloud.client.account.User; import com.nextcloud.client.di.Injectable; @@ -70,7 +71,7 @@ public class ConflictsResolveDialog extends DialogFragment implements Injectable public OnConflictDecisionMadeListener listener; private User user; private final List asyncTasks = new ArrayList<>(); - private Button positiveButton; + private MaterialButton positiveButton; @Inject ViewThemeUtils viewThemeUtils; @Inject SyncedFolderProvider syncedFolderProvider; @@ -119,9 +120,11 @@ public void onStart() { return; } - positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); - viewThemeUtils.platform.colorTextButtons(positiveButton, - alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL)); + positiveButton = (MaterialButton) alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); + MaterialButton negativeButton = (MaterialButton) alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE); + + viewThemeUtils.material.colorMaterialButtonPrimaryTonal(positiveButton); + viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton); positiveButton.setEnabled(false); } @@ -175,7 +178,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) { } }) - .setNeutralButton(R.string.common_cancel, (dialog, which) -> { + .setNegativeButton(R.string.common_cancel, (dialog, which) -> { if (listener != null) { listener.conflictDecisionMade(Decision.CANCEL); } @@ -275,4 +278,5 @@ public void onStop() { asyncTasks.clear(); } + } diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java index 8991de8c5536..871a4624a13e 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java @@ -284,6 +284,10 @@ private void fetchAndSetData(int lastGiven) { }); return; } + + if (!isLoadingActivities) { + return; + } Thread t = new Thread(() -> { try { @@ -454,6 +458,11 @@ public void avatarGenerated(Drawable avatarDrawable, Object callContext) { public boolean shouldCallGeneratedCallback(String tag, Object callContext) { return false; } + + @VisibleForTesting + public void disableLoadingActivities() { + isLoadingActivities = false; + } private static class SubmitCommentTask extends AsyncTask { diff --git a/scripts/analysis/analysis-wrapper.sh b/scripts/analysis/analysis-wrapper.sh index 8770f1d2401b..81e04ec2e159 100755 --- a/scripts/analysis/analysis-wrapper.sh +++ b/scripts/analysis/analysis-wrapper.sh @@ -128,7 +128,7 @@ else # check for NotNull if [[ $(grep org.jetbrains.annotations app/src/main/* -irl | wc -l) -gt 0 ]] ; then - notNull="org.jetbrains.annotations.NotNull is used. Please use androidx.annotation.NonNull instead.

" + notNull="org.jetbrains.annotations.* is used. Please use androidx.annotation.* instead.

" fi bodyContent="$codacyResult $lintResult $spotbugsResult $checkLibraryMessage $lintMessage $spotbugsMessage $gplayLimitation $notNull"