Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,9 @@ class UploadListFragment :
activity,
preferences,
userAccountManager,
uploadsStorageManager
uploadsStorageManager,
syncedFolderProvider,
backgroundJobManager
) { uploadListAdapter.notifyDataSetChanged() }

activity.addMenuProvider(menuProvider, viewLifecycleOwner, Lifecycle.State.RESUMED)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,24 @@ import android.view.MenuInflater
import android.view.MenuItem
import androidx.core.view.MenuProvider
import com.nextcloud.client.account.UserAccountManager
import com.nextcloud.client.jobs.BackgroundJobManager
import com.nextcloud.client.jobs.upload.AlbumFileUploadWorker
import com.nextcloud.client.jobs.upload.FileUploadHelper
import com.nextcloud.client.jobs.upload.FileUploadWorker
import com.nextcloud.client.preferences.AppPreferences
import com.owncloud.android.R
import com.owncloud.android.datamodel.SyncedFolderProvider
import com.owncloud.android.datamodel.UploadsStorageManager
import com.owncloud.android.utils.FilesSyncHelper

class UploadListMenuProvider(
private val context: Context,
private val preferences: AppPreferences,
private val userAccountManager: UserAccountManager,
private val uploadsStorageManager: UploadsStorageManager,
private val syncedFolderProvider: SyncedFolderProvider,
private val backgroundJobManager: BackgroundJobManager,
private val uploadHelper: () -> FileUploadHelper = { FileUploadHelper.instance() },
private val onGlobalPauseToggled: () -> Unit
) : MenuProvider {

Expand Down Expand Up @@ -61,12 +67,18 @@ class UploadListMenuProvider(
if (paused) {
FileUploadWorker.pauseActiveUploads()
AlbumFileUploadWorker.pauseActiveUploads()
} else {
FilesSyncHelper.startAutoUploadForEnabledSyncedFolders(
syncedFolderProvider,
backgroundJobManager,
overridePowerSaving = false
)
}

val uploadHelper = FileUploadHelper.instance()
val helper = uploadHelper()
userAccountManager.allUsers.filterNotNull().forEach { user ->
val ids = uploadsStorageManager.getCurrentUploadIds(user.accountName)
uploadHelper.cancelAndRestartUploadJob(user, ids)
helper.cancelAndRestartUploadJob(user, ids)
}
onGlobalPauseToggled()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/

package com.owncloud.android.ui.fragment.uploadList

import android.content.Context
import android.view.MenuItem
import com.nextcloud.client.account.UserAccountManager
import com.nextcloud.client.jobs.BackgroundJobManager
import com.nextcloud.client.jobs.upload.FileUploadHelper
import com.nextcloud.client.preferences.AppPreferences
import com.owncloud.android.R
import com.owncloud.android.datamodel.SyncedFolder
import com.owncloud.android.datamodel.SyncedFolderProvider
import com.owncloud.android.datamodel.UploadsStorageManager
import org.junit.Test
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import org.mockito.kotlin.verify

class UploadListMenuProviderTest {

private val preferences: AppPreferences = mock {
on { isGlobalUploadPaused() } doReturn true
}
private val backgroundJobManager: BackgroundJobManager = mock()
private val uploadHelper: FileUploadHelper = mock()
private val enabledFolder: SyncedFolder = mock {
on { id } doReturn ENABLED_FOLDER_ID
on { isEnabled } doReturn true
}
private val syncedFolderProvider: SyncedFolderProvider = mock {
on { syncedFolders } doReturn mutableListOf(enabledFolder)
}
private val menuItem: MenuItem = mock {
on { itemId } doReturn R.id.action_toggle_global_pause
}

private val menuProvider = UploadListMenuProvider(
mock<Context>(),
preferences,
mock<UserAccountManager>(),
mock<UploadsStorageManager>(),
syncedFolderProvider,
backgroundJobManager,
{ uploadHelper }
) {}

@Test
fun `resuming global pause starts auto upload of enabled folders without waiting for the rescan`() {
menuProvider.onMenuItemSelected(menuItem)

verify(backgroundJobManager).startAutoUpload(enabledFolder, false)
}

private companion object {
const val ENABLED_FOLDER_ID = 1L
}
}
Loading