Merge master
Signed-off-by: alperozturk <alper_ozturk@proton.me>
2
.github/workflows/assembleFlavors.yml
vendored
|
@ -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:
|
||||
|
|
2
.github/workflows/check.yml
vendored
|
@ -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:
|
||||
|
|
4
.github/workflows/codeql.yml
vendored
|
@ -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
|
||||
|
|
6
.github/workflows/command-rebase.yml
vendored
|
@ -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 }}
|
||||
|
|
2
.github/workflows/detectWrongSettings.yml
vendored
|
@ -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:
|
||||
|
|
2
.github/workflows/qa.yml
vendored
|
@ -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
|
||||
|
|
4
.github/workflows/scorecard.yml
vendored
|
@ -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
|
||||
|
|
2
.github/workflows/screenShotTest.yml
vendored
|
@ -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
|
||||
|
|
2
.github/workflows/unit-tests.yml
vendored
|
@ -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:
|
||||
|
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
@ -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())
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
positiveButton = button
|
||||
val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton
|
||||
viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton)
|
||||
|
||||
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) {
|
||||
|
|
|
@ -29,6 +29,7 @@ import android.view.View;
|
|||
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<ThumbnailsCacheManager.ThumbnailGenerationTask> asyncTasks = new ArrayList<>();
|
||||
private Button positiveButton;
|
||||
private MaterialButton positiveButton;
|
||||
@Inject ViewThemeUtils viewThemeUtils;
|
||||
@Inject SyncedFolderProvider syncedFolderProvider;
|
||||
|
||||
|
@ -119,9 +120,11 @@ public class ConflictsResolveDialog extends DialogFragment implements Injectable
|
|||
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 class ConflictsResolveDialog extends DialogFragment implements Injectable
|
|||
|
||||
}
|
||||
})
|
||||
.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 class ConflictsResolveDialog extends DialogFragment implements Injectable
|
|||
|
||||
asyncTasks.clear();
|
||||
}
|
||||
|
||||
}
|
||||
|
|