Skip to content
Merged
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 @@ -436,9 +436,7 @@ class FileUploadHelper {
* @param user Needed for creating client
*/
fun removeDuplicatedFile(duplicatedFile: OCFile, client: OwnCloudClient, user: User, onCompleted: () -> Unit) {
val job = CoroutineScope(Dispatchers.IO)

job.launch {
ioScope.launch {
val removeFileOperation = RemoveFileOperation(
duplicatedFile,
false,
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/java/com/nextcloud/ui/ImageDetailFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import androidx.annotation.VisibleForTesting
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import com.nextcloud.android.common.ui.theme.utils.ColorRole
import com.nextcloud.client.NominatimClient
import com.nextcloud.client.account.User
Expand Down Expand Up @@ -154,7 +155,7 @@ class ImageDetailFragment :
binding.imageLocation.visibility = View.VISIBLE

// launch reverse geocoding request
CoroutineScope(Dispatchers.IO).launch {
lifecycleScope.launch(Dispatchers.IO) {
val geocodingResult = nominatimClient.reverseGeocode(location.first, location.second)
if (geocodingResult != null) {
withContext(Dispatchers.Main) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import android.os.Bundle
import android.view.MenuItem
import android.view.View
import androidx.core.view.size
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.nextcloud.client.network.ConnectivityService
Expand Down Expand Up @@ -75,7 +76,7 @@ class ActivitiesActivity :
// We set lastGiven variable to undefined here since when manually refreshing
// activities data we want to clear the list and reset the pagination.
lastGiven = ActivitiesContract.ActionListener.UNDEFINED.toLong()
actionListener?.loadActivities(lastGiven)
actionListener?.loadActivities(lifecycleScope, lastGiven)
}
}

Expand All @@ -101,7 +102,7 @@ class ActivitiesActivity :
addOnScrollListener(getOnScrollListener(layoutManager))
}

actionListener?.loadActivities(ActivitiesContract.ActionListener.UNDEFINED.toLong())
actionListener?.loadActivities(lifecycleScope, ActivitiesContract.ActionListener.UNDEFINED.toLong())
}

private fun getOnScrollListener(layoutManager: LinearLayoutManager) = object : RecyclerView.OnScrollListener() {
Expand All @@ -117,7 +118,7 @@ class ActivitiesActivity :
lastGiven > 0
) {
// Almost reached the end, continue to load new activities
actionListener?.loadActivities(lastGiven)
actionListener?.loadActivities(lifecycleScope, lastGiven)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ package com.owncloud.android.ui.activities
import com.nextcloud.common.NextcloudClient
import com.owncloud.android.datamodel.OCFile
import com.owncloud.android.ui.activity.BaseActivity
import kotlinx.coroutines.CoroutineScope

interface ActivitiesContract {
interface View {
Expand All @@ -24,7 +25,7 @@ interface ActivitiesContract {
}

interface ActionListener {
fun loadActivities(lastGiven: Long)
fun loadActivities(lifecycleScope: CoroutineScope, lastGiven: Long)

fun openActivity(fileUrl: String, baseActivity: BaseActivity)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import com.owncloud.android.ui.activities.data.activities.ActivitiesRepository.L
import com.owncloud.android.ui.activities.data.files.FilesRepository
import com.owncloud.android.ui.activities.data.files.FilesRepository.ReadRemoteFileCallback
import com.owncloud.android.ui.activity.BaseActivity
import kotlinx.coroutines.CoroutineScope

class ActivitiesPresenter internal constructor(
private val activitiesRepository: ActivitiesRepository,
Expand All @@ -22,13 +23,14 @@ class ActivitiesPresenter internal constructor(
) : ActivitiesContract.ActionListener {
private var activityStopped = false

override fun loadActivities(lastGiven: Long) {
override fun loadActivities(lifecycleScope: CoroutineScope, lastGiven: Long) {
if (ActivitiesContract.ActionListener.UNDEFINED.toLong() == lastGiven) {
activitiesView.showLoadingMessage()
} else {
activitiesView.setProgressIndicatorState(true)
}
activitiesRepository.getActivities(
lifecycleScope,
lastGiven,
object : LoadActivitiesCallback {
override fun onActivitiesLoaded(activities: List<Any>, client: NextcloudClient, lastGiven: Long) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,13 @@
package com.owncloud.android.ui.activities.data.activities

import com.nextcloud.common.NextcloudClient
import kotlinx.coroutines.CoroutineScope

/**
* Main entry point for accessing activities data.
*/
interface ActivitiesRepository {
interface LoadActivitiesCallback {
fun onActivitiesLoaded(activities: List<Any>, client: NextcloudClient, lastGiven: Long)
fun onActivitiesLoadedError(error: String)
}

fun getActivities(lastGiven: Long, callback: LoadActivitiesCallback)
fun getActivities(lifecycleScope: CoroutineScope, lastGiven: Long, callback: LoadActivitiesCallback)
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
package com.owncloud.android.ui.activities.data.activities

import com.nextcloud.common.NextcloudClient
import kotlinx.coroutines.CoroutineScope

/**
* Defines an interface to the Activities service API. All ([Activity]) data requests should
Expand All @@ -19,5 +20,9 @@ interface ActivitiesServiceApi {
fun onError(error: String)
}

fun getAllActivities(lastGiven: Long, callback: ActivitiesServiceCallback<List<Any>>)
fun getAllActivities(
lifecycleScope: CoroutineScope,
lastGiven: Long,
callback: ActivitiesServiceCallback<List<Any>>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,12 @@ import org.apache.commons.httpclient.HttpStatus
@Suppress("TooGenericExceptionThrown")
class ActivitiesServiceApiImpl(private val accountManager: UserAccountManager) : ActivitiesServiceApi {

override fun getAllActivities(lastGiven: Long, callback: ActivitiesServiceCallback<List<Any>>) {
CoroutineScope(Dispatchers.Main).launch {
override fun getAllActivities(
lifecycleScope: CoroutineScope,
lastGiven: Long,
callback: ActivitiesServiceCallback<List<Any>>
) {
lifecycleScope.launch(Dispatchers.Main) {
val result = runCatching {
withContext(Dispatchers.IO) { fetchActivities(lastGiven) }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@ package com.owncloud.android.ui.activities.data.activities
import com.nextcloud.common.NextcloudClient
import com.owncloud.android.ui.activities.data.activities.ActivitiesRepository.LoadActivitiesCallback
import com.owncloud.android.ui.activities.data.activities.ActivitiesServiceApi.ActivitiesServiceCallback
import kotlinx.coroutines.CoroutineScope

class RemoteActivitiesRepository(private val activitiesServiceApi: ActivitiesServiceApi) : ActivitiesRepository {
override fun getActivities(lastGiven: Long, callback: LoadActivitiesCallback) {
override fun getActivities(lifecycleScope: CoroutineScope, lastGiven: Long, callback: LoadActivitiesCallback) {
activitiesServiceApi.getAllActivities(
lifecycleScope,
lastGiven,
object : ActivitiesServiceCallback<List<Any>> {
override fun onLoaded(activities: List<Any>, client: NextcloudClient, lastGiven: Long) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,20 @@
*/
package com.owncloud.android.ui.activities.data.files

import androidx.lifecycle.lifecycleScope
import com.nextcloud.client.account.UserAccountManager
import com.nextcloud.client.network.ClientFactory
import com.nextcloud.client.network.ClientFactory.CreationException
import com.owncloud.android.MainApp
import com.owncloud.android.R
import com.owncloud.android.datamodel.OCFile
import com.owncloud.android.lib.common.utils.Log_OC
import com.owncloud.android.lib.resources.files.ReadFileRemoteOperation
import com.owncloud.android.lib.resources.files.model.RemoteFile
import com.owncloud.android.lib.common.utils.Log_OC
import com.owncloud.android.operations.RefreshFolderOperation
import com.owncloud.android.ui.activities.data.files.FilesServiceApi.FilesServiceCallback
import com.owncloud.android.ui.activity.BaseActivity
import com.owncloud.android.utils.FileStorageUtils
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
Expand All @@ -33,7 +33,7 @@ class FilesServiceApiImpl(private val accountManager: UserAccountManager, privat
FilesServiceApi {

override fun readRemoteFile(fileUrl: String, activity: BaseActivity, callback: FilesServiceCallback<OCFile>) {
CoroutineScope(Dispatchers.Main).launch {
activity.lifecycleScope.launch(Dispatchers.Main) {
val result = runCatching {
withContext(Dispatchers.IO) { fetchRemoteFile(fileUrl, activity) }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.CheckedTextView
import android.widget.ImageView
import androidx.lifecycle.lifecycleScope
import com.afollestad.sectionedrecyclerview.SectionedRecyclerViewAdapter
import com.afollestad.sectionedrecyclerview.SectionedViewHolder
import com.bumptech.glide.request.target.CustomTarget
Expand Down Expand Up @@ -255,7 +256,7 @@ class BackupListAdapter(
}
}

CoroutineScope(Dispatchers.IO).launch {
backupListFragment.lifecycleScope.launch(Dispatchers.IO) {
val client = OwnCloudClientManagerFactory.getDefaultSingleton()
.getNextcloudClientFor(accountManager.currentOwnCloudAccount, context)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

class UnifiedSearchRemoteRepository(
private val viewModelScope: CoroutineScope,
private val clientFactory: ClientFactory,
private val currentAccountProvider: CurrentAccountProvider,
private val asyncRunner: AsyncRunner
Expand All @@ -32,7 +33,7 @@ class UnifiedSearchRemoteRepository(
Log_OC.d(tag, "CoroutineExceptionHandler got at runAsyncWithNcClient $exception")
}

CoroutineScope(Dispatchers.IO).launch(coroutineExceptionHandler) {
viewModelScope.launch(Dispatchers.IO + coroutineExceptionHandler) {
val client = clientFactory.createNextcloudClient(currentAccountProvider.user)
callback(client)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import androidx.annotation.VisibleForTesting
import androidx.core.net.toUri
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import com.nextcloud.client.account.CurrentAccountProvider
import com.nextcloud.client.core.AsyncRunner
import com.nextcloud.client.network.ClientFactory
Expand Down Expand Up @@ -79,6 +80,7 @@ class UnifiedSearchViewModel(application: Application) :
this.connectivityService = connectivityService

repository = UnifiedSearchRemoteRepository(
viewModelScope,
clientFactory,
currentAccountProvider,
runner
Expand Down
Loading
Loading