|
@@ -17,16 +17,28 @@ import androidx.core.view.MenuProvider
|
|
|
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.owncloud.android.R
|
|
|
import com.owncloud.android.databinding.InternalTwoWaySyncLayoutBinding
|
|
|
import com.owncloud.android.ui.adapter.InternalTwoWaySyncAdapter
|
|
|
+import kotlinx.coroutines.CoroutineScope
|
|
|
+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)
|
|
|
|
|
@@ -47,7 +59,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()
|
|
|
}
|
|
@@ -79,10 +91,29 @@ class InternalTwoWaySyncActivity : DrawerActivity(), Injectable {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Disable two-way sync for all folders and stop all related workers.
|
|
|
+ */
|
|
|
+ private fun removeAllFolders() {
|
|
|
+ CoroutineScope(Dispatchers.Main).launch {
|
|
|
+ val folders = fileDataStorageManager.getInternalTwoWaySyncFolders(user.get())
|
|
|
+ folders.forEach { folder ->
|
|
|
+ // update database to ignore folder
|
|
|
+ folder.internalFolderSyncTimestamp = -1L
|
|
|
+ fileDataStorageManager.saveFile(folder)
|
|
|
+ }
|
|
|
+
|
|
|
+ // update view
|
|
|
+ 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 +121,10 @@ class InternalTwoWaySyncActivity : DrawerActivity(), Injectable {
|
|
|
onBackPressed()
|
|
|
true
|
|
|
}
|
|
|
-
|
|
|
+ R.id.action_dismiss_two_way_sync -> {
|
|
|
+ removeAllFolders()
|
|
|
+ true
|
|
|
+ }
|
|
|
else -> false
|
|
|
}
|
|
|
}
|