Rebase master

Signed-off-by: alperozturk <alper_ozturk@proton.me>
This commit is contained in:
alperozturk 2024-01-12 14:26:50 +01:00 committed by Jonas Mayer
parent e507317005
commit f6bd33734b
6 changed files with 27 additions and 52 deletions

View file

@ -121,9 +121,7 @@ class FileUploadHelper {
@Suppress("ReturnCount")
fun isUploading(user: User?, file: OCFile?): Boolean {
if (user == null || file == null || !MainApp.getAppContext()
.isWorkScheduled(BackgroundJobManagerImpl.JOB_FILES_UPLOAD)
) {
if (user == null || file == null || !backgroundJobManager.isStartFileUploadJobScheduled(user)) {
return false
}

View file

@ -216,9 +216,9 @@ class FileUploadWorker(
return
}
val (tickerId, needsToUpdateCredentials) = getTickerId(uploadResult.code)
val needsToUpdateCredentials = (uploadResult.code == ResultCode.UNAUTHORIZED)
notificationManager.run {
notifyForResult(tickerId)
notifyForResult(uploadResult.code)
setContentIntent(intents.resultIntent(ResultCode.OK, uploadFileOperation))
if (uploadResult.code == ResultCode.SYNC_CONFLICT) {
@ -244,20 +244,6 @@ class FileUploadWorker(
}
}
private fun getTickerId(resultCode: ResultCode): Pair<Int, Boolean> {
var tickerId = R.string.uploader_upload_failed_ticker
val needsToUpdateCredentials = (resultCode == ResultCode.UNAUTHORIZED)
if (needsToUpdateCredentials) {
tickerId = R.string.uploader_upload_failed_credentials_error
} else if (resultCode == ResultCode.SYNC_CONFLICT) {
tickerId = R.string.uploader_upload_failed_sync_conflict_error
}
return Pair(tickerId, needsToUpdateCredentials)
}
override fun onTransferProgress(
progressRate: Long,
totalTransferredSoFar: Long,

View file

@ -28,6 +28,7 @@ import android.content.Context
import android.graphics.BitmapFactory
import androidx.core.app.NotificationCompat
import com.owncloud.android.R
import com.owncloud.android.lib.common.operations.RemoteOperationResult
import com.owncloud.android.lib.resources.files.FileUtils
import com.owncloud.android.operations.UploadFileOperation
import com.owncloud.android.ui.notifications.NotificationUtils
@ -51,8 +52,8 @@ class UploadNotificationManager(private val context: Context, private val viewTh
private fun initNotificationBuilder() {
notificationBuilder = NotificationUtils.newNotificationBuilder(context, viewThemeUtils).apply {
setContentTitle(context.resources.getString(R.string.app_name))
setContentText(context.resources.getString(R.string.foreground_service_upload))
setContentTitle(context.getString(R.string.app_name))
setContentText(context.getString(R.string.worker_upload))
setSmallIcon(R.drawable.notification_icon)
setLargeIcon(BitmapFactory.decodeResource(context.resources, R.drawable.notification_icon))
setChannelId(NotificationUtils.NOTIFICATION_CHANNEL_UPLOAD)
@ -91,16 +92,32 @@ class UploadNotificationManager(private val context: Context, private val viewTh
}
}
fun notifyForResult(tickerId: Int) {
fun notifyForResult(resultCode: RemoteOperationResult.ResultCode) {
val textId = resultText(resultCode)
notificationBuilder
.setTicker(context.getString(tickerId))
.setContentTitle(context.getString(tickerId))
.setTicker(context.getString(textId))
.setContentTitle(context.getString(textId))
.setAutoCancel(true)
.setOngoing(false)
.setProgress(0, 0, false)
.clearActions()
}
private fun resultText(resultCode: RemoteOperationResult.ResultCode): Int {
var result = R.string.uploader_upload_failed_ticker
val needsToUpdateCredentials = (resultCode == RemoteOperationResult.ResultCode.UNAUTHORIZED)
if (needsToUpdateCredentials) {
result = R.string.uploader_upload_failed_credentials_error
} else if (resultCode == RemoteOperationResult.ResultCode.SYNC_CONFLICT) {
result = R.string.uploader_upload_failed_sync_conflict_error
}
return result
}
fun setContentIntent(pendingIntent: PendingIntent) {
notificationBuilder.setContentIntent(pendingIntent)
}

View file

@ -144,6 +144,7 @@ interface BackgroundJobManager {
fun startFilesUploadJob(user: User)
fun getFileUploads(user: User): LiveData<List<JobInfo>>
fun cancelFilesUploadJob(user: User)
fun isStartFileUploadJobScheduled(user: User): Boolean
fun cancelFilesDownloadJob(user: User, fileId: Long)

View file

@ -27,12 +27,7 @@ import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Build
import androidx.work.WorkInfo
import androidx.work.WorkManager
import com.google.common.util.concurrent.ListenableFuture
import com.owncloud.android.datamodel.ReceiverFlag
import com.owncloud.android.lib.common.utils.Log_OC
import java.util.concurrent.ExecutionException
@SuppressLint("UnspecifiedRegisterReceiverFlag")
fun Context.registerBroadcastReceiver(receiver: BroadcastReceiver?, filter: IntentFilter, flag: ReceiverFlag): Intent? {
@ -42,25 +37,3 @@ fun Context.registerBroadcastReceiver(receiver: BroadcastReceiver?, filter: Inte
registerReceiver(receiver, filter)
}
}
fun Context.isWorkScheduled(tag: String): Boolean {
val instance = WorkManager.getInstance(this)
val statuses: ListenableFuture<List<WorkInfo>> = instance.getWorkInfosByTag(tag)
var running = false
var workInfoList: List<WorkInfo> = emptyList()
try {
workInfoList = statuses.get()
} catch (e: ExecutionException) {
Log_OC.d("Worker", "ExecutionException in isWorkScheduled: $e")
} catch (e: InterruptedException) {
Log_OC.d("Worker", "InterruptedException in isWorkScheduled: $e")
}
for (workInfo in workInfoList) {
val state = workInfo.state
running = running || (state == WorkInfo.State.RUNNING || state == WorkInfo.State.ENQUEUED)
}
return running
}

View file

@ -640,7 +640,7 @@
<string name="info_separator" translatable="false">&#160;&#x2022;</string>
<string name="resharing_is_not_allowed">Resharing is not allowed</string>
<string name="foreground_service_upload">Uploading files…</string>
<string name="worker_upload">Uploading files…</string>
<string name="worker_download">Downloading files…</string>
<string name="prefs_sourcecode">Get source code</string>