|
@@ -14,19 +14,32 @@ import android.view.MenuInflater
|
|
|
import android.view.MenuItem
|
|
|
import android.view.View
|
|
|
import androidx.core.view.MenuProvider
|
|
|
+import androidx.lifecycle.lifecycleScope
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
|
import com.nextcloud.android.common.ui.theme.utils.ColorRole
|
|
|
import com.nextcloud.client.di.Injectable
|
|
|
+import com.nextcloud.client.jobs.BackgroundJobManager
|
|
|
+import com.nextcloud.client.jobs.download.FileDownloadWorker
|
|
|
import com.owncloud.android.R
|
|
|
import com.owncloud.android.databinding.InternalTwoWaySyncLayoutBinding
|
|
|
import com.owncloud.android.ui.adapter.InternalTwoWaySyncAdapter
|
|
|
+import kotlinx.coroutines.Dispatchers
|
|
|
+import kotlinx.coroutines.launch
|
|
|
+import javax.inject.Inject
|
|
|
|
|
|
class InternalTwoWaySyncActivity : DrawerActivity(), Injectable {
|
|
|
+ @Inject
|
|
|
+ lateinit var backgroundJobManager: BackgroundJobManager
|
|
|
+
|
|
|
lateinit var binding: InternalTwoWaySyncLayoutBinding
|
|
|
|
|
|
+ private lateinit var internalTwoWaySyncAdapter: InternalTwoWaySyncAdapter
|
|
|
+
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
|
|
+ internalTwoWaySyncAdapter = InternalTwoWaySyncAdapter(fileDataStorageManager, user.get(), this)
|
|
|
+
|
|
|
binding = InternalTwoWaySyncLayoutBinding.inflate(layoutInflater)
|
|
|
setContentView(binding.root)
|
|
|
|
|
@@ -38,7 +51,7 @@ class InternalTwoWaySyncActivity : DrawerActivity(), Injectable {
|
|
|
}
|
|
|
|
|
|
private fun setupActionBar() {
|
|
|
- updateActionBarTitleAndHomeButtonByString(getString(R.string.internal_two_way_sync_headline))
|
|
|
+ updateActionBarTitleAndHomeButtonByString(getString(R.string.two_way_sync_activity_title))
|
|
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
|
|
}
|
|
|
|
|
@@ -47,7 +60,7 @@ class InternalTwoWaySyncActivity : DrawerActivity(), Injectable {
|
|
|
binding.run {
|
|
|
list.run {
|
|
|
setEmptyView(emptyList.emptyListView)
|
|
|
- adapter = InternalTwoWaySyncAdapter(fileDataStorageManager, user.get(), this@InternalTwoWaySyncActivity)
|
|
|
+ adapter = internalTwoWaySyncAdapter
|
|
|
layoutManager = LinearLayoutManager(this@InternalTwoWaySyncActivity)
|
|
|
adapter?.notifyDataSetChanged()
|
|
|
}
|
|
@@ -58,12 +71,12 @@ class InternalTwoWaySyncActivity : DrawerActivity(), Injectable {
|
|
|
binding.emptyList.run {
|
|
|
emptyListViewHeadline.run {
|
|
|
visibility = View.VISIBLE
|
|
|
- setText(R.string.internal_two_way_sync_list_empty_headline)
|
|
|
+ setText(R.string.two_way_sync_activity_empty_list_title)
|
|
|
}
|
|
|
|
|
|
emptyListViewText.run {
|
|
|
visibility = View.VISIBLE
|
|
|
- setText(R.string.internal_two_way_sync_text)
|
|
|
+ setText(R.string.two_way_sync_activity_empty_list_desc)
|
|
|
}
|
|
|
|
|
|
emptyListIcon.run {
|
|
@@ -79,10 +92,31 @@ class InternalTwoWaySyncActivity : DrawerActivity(), Injectable {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private fun disableTwoWaySyncAndWorkers() {
|
|
|
+ lifecycleScope.launch(Dispatchers.IO) {
|
|
|
+ backgroundJobManager.cancelTwoWaySyncJob()
|
|
|
+
|
|
|
+ val folders = fileDataStorageManager.getInternalTwoWaySyncFolders(user.get())
|
|
|
+ folders.forEach { folder ->
|
|
|
+ FileDownloadWorker.cancelOperation(user.get().accountName, folder.fileId)
|
|
|
+ backgroundJobManager.cancelFilesDownloadJob(user.get(), folder.fileId)
|
|
|
+
|
|
|
+ folder.internalFolderSyncTimestamp = -1L
|
|
|
+ fileDataStorageManager.saveFile(folder)
|
|
|
+ }
|
|
|
+
|
|
|
+ launch(Dispatchers.Main) {
|
|
|
+ internalTwoWaySyncAdapter.update()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private fun setupMenuProvider() {
|
|
|
addMenuProvider(
|
|
|
object : MenuProvider {
|
|
|
- override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) = Unit
|
|
|
+ override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
|
|
|
+ menuInflater.inflate(R.menu.activity_internal_two_way_sync, menu)
|
|
|
+ }
|
|
|
|
|
|
override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
|
|
|
return when (menuItem.itemId) {
|
|
@@ -90,7 +124,10 @@ class InternalTwoWaySyncActivity : DrawerActivity(), Injectable {
|
|
|
onBackPressed()
|
|
|
true
|
|
|
}
|
|
|
-
|
|
|
+ R.id.action_dismiss_two_way_sync -> {
|
|
|
+ disableTwoWaySyncAndWorkers()
|
|
|
+ true
|
|
|
+ }
|
|
|
else -> false
|
|
|
}
|
|
|
}
|