Skip to content

Commit 8b39298

Browse files
committed
fix(slideshow) Use interface instead of EventBus
EventBus is considered deprecated by the maintainers and we want to get rid of it eventually. So extending its usage is not the right approach. Instead, a callback interface is defined. The pre-existing pattern of looking up the enclosing activity via getTypedActivity() is used to find the callback. Long-term, the getTypedActivity() might also be a pattern we want to get rid of, but it would require a pretty thorough refactoring of the FileDisplayActivity to make it work. Signed-off-by: Philipp Hasper <vcs@hasper.info>
1 parent 4afe64e commit 8b39298

5 files changed

Lines changed: 28 additions & 55 deletions

File tree

app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ import com.owncloud.android.ui.dialog.SendShareDialog.SendShareDialogDownloader
121121
import com.owncloud.android.ui.dialog.SortingOrderDialogFragment.OnSortingOrderListener
122122
import com.owncloud.android.ui.dialog.StoragePermissionDialogFragment
123123
import com.owncloud.android.ui.dialog.TermsOfServiceDialog
124-
import com.owncloud.android.ui.events.FilesRefreshEvent
125124
import com.owncloud.android.ui.events.SearchEvent
126125
import com.owncloud.android.ui.events.SyncEventFinished
127126
import com.owncloud.android.ui.events.TokenPushEvent
@@ -186,6 +185,7 @@ class FileDisplayActivity :
186185
OnEnforceableRefreshListener,
187186
OnSortingOrderListener,
188187
SendShareDialogDownloader,
188+
FilesRefreshNeededListener,
189189
Injectable {
190190
private lateinit var binding: FilesBinding
191191

@@ -1452,6 +1452,12 @@ class FileDisplayActivity :
14521452
}
14531453
// endregion
14541454

1455+
override fun onStop() {
1456+
Log_OC.v(TAG, "onStop()")
1457+
unregisterReceivers()
1458+
super.onStop()
1459+
}
1460+
14551461
override fun onSortingOrderChosen(selection: FileSortOrder?) {
14561462
val ocFileListFragment = this.listOfFilesFragment
14571463
ocFileListFragment?.sortFiles(selection)
@@ -2760,11 +2766,6 @@ class FileDisplayActivity :
27602766

27612767
registerReceivers()
27622768

2763-
// Register for the FilesRefreshEvent, only if not already registered
2764-
if (!EventBus.getDefault().isRegistered(this)) {
2765-
EventBus.getDefault().register(this)
2766-
}
2767-
27682769
if (SettingsActivity.isBackPressed) {
27692770
Log_OC.d(TAG, "User returned from settings activity, skipping reset content logic")
27702771
return
@@ -2773,15 +2774,6 @@ class FileDisplayActivity :
27732774
initFile()
27742775
}
27752776

2776-
public override fun onStop() {
2777-
Log_OC.v(TAG, "onStop()")
2778-
if (EventBus.getDefault().isRegistered(this)) {
2779-
EventBus.getDefault().unregister(this)
2780-
}
2781-
unregisterReceivers()
2782-
super.onStop()
2783-
}
2784-
27852777
private fun initFile() {
27862778
val userOpt = user
27872779
if (userOpt.isEmpty) {
@@ -3035,13 +3027,9 @@ class FileDisplayActivity :
30353027
})
30363028
}
30373029

3038-
// region EventBus
3039-
@Suppress("unused")
3040-
@Subscribe(threadMode = ThreadMode.MAIN)
3041-
fun onFilesRefreshNeeded(event: FilesRefreshEvent) {
3030+
override fun onFilesRefreshNeeded() {
30423031
refreshCurrentDirectory()
30433032
}
3044-
// endregion
30453033

30463034
private fun handleEcosystemIntent(intent: Intent?) {
30473035
ecosystemManager.receiveAccount(
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
* Nextcloud - Android Client
3+
*
4+
* SPDX-FileCopyrightText: 2026 Your Name <your@email.com>
5+
* SPDX-License-Identifier: AGPL-3.0-or-later
6+
*/
7+
8+
package com.owncloud.android.ui.activity
9+
10+
interface FilesRefreshNeededListener {
11+
fun onFilesRefreshNeeded(): Unit
12+
}

app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,8 @@ import com.owncloud.android.datamodel.FileDataStorageManager
2525
import com.owncloud.android.datamodel.OCFile
2626
import com.owncloud.android.ui.activity.FileActivity
2727
import com.owncloud.android.ui.activity.FileDisplayActivity
28+
import com.owncloud.android.ui.activity.FilesRefreshNeededListener
2829
import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener
29-
import com.owncloud.android.ui.events.FilesRefreshEvent
30-
import org.greenrobot.eventbus.EventBus
3130
import javax.inject.Inject
3231

3332
/**
@@ -46,6 +45,7 @@ class RemoveFilesDialogFragment :
4645

4746
@Inject
4847
lateinit var connectivityService: ConnectivityService
48+
4949
private var positiveButton: MaterialButton? = null
5050

5151
override fun onStart() {
@@ -102,6 +102,7 @@ class RemoveFilesDialogFragment :
102102

103103
val fileActivity = getTypedActivity(FileActivity::class.java)
104104
val fda = getTypedActivity(FileDisplayActivity::class.java)
105+
val filesRefreshNeededListener = getTypedActivity(FilesRefreshNeededListener::class.java)
105106
connectivityService.isNetworkAndServerAvailable { isAvailable ->
106107
if (isAvailable) {
107108
fileActivity?.showLoadingDialog(fileActivity.getString(R.string.wait_a_moment))
@@ -115,7 +116,7 @@ class RemoveFilesDialogFragment :
115116
}
116117

117118
if (offlineFiles.isNotEmpty()) {
118-
EventBus.getDefault().post(FilesRefreshEvent())
119+
filesRefreshNeededListener?.onFilesRefreshNeeded()
119120
}
120121

121122
fileActivity?.dismissLoadingDialog()
@@ -127,7 +128,7 @@ class RemoveFilesDialogFragment :
127128
fileDataStorageManager.addRemoveFileOfflineOperation(file)
128129
}
129130
}
130-
EventBus.getDefault().post(FilesRefreshEvent())
131+
filesRefreshNeededListener?.onFilesRefreshNeeded()
131132
}
132133

133134
finishActionMode()

app/src/main/java/com/owncloud/android/ui/events/FilesRefreshEvent.kt

Lines changed: 0 additions & 13 deletions
This file was deleted.

app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,14 @@ import com.owncloud.android.operations.RemoveFileOperation
4646
import com.owncloud.android.operations.SynchronizeFileOperation
4747
import com.owncloud.android.ui.activity.FileActivity
4848
import com.owncloud.android.ui.activity.FileDisplayActivity
49-
import com.owncloud.android.ui.events.FilesRefreshEvent
49+
import com.owncloud.android.ui.activity.FilesRefreshNeededListener
5050
import com.owncloud.android.ui.fragment.FileFragment
5151
import com.owncloud.android.ui.fragment.GalleryFragment
5252
import com.owncloud.android.ui.fragment.OCFileListFragment
5353
import com.owncloud.android.ui.preview.model.PreviewImageActivityState
5454
import com.owncloud.android.utils.DisplayUtils
5555
import com.owncloud.android.utils.MimeTypeUtil
5656
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings
57-
import org.greenrobot.eventbus.EventBus
58-
import org.greenrobot.eventbus.Subscribe
59-
import org.greenrobot.eventbus.ThreadMode
6057
import java.io.Serializable
6158
import javax.inject.Inject
6259
import kotlin.math.max
@@ -70,6 +67,7 @@ class PreviewImageActivity :
7067
FileActivity(),
7168
FileFragment.ContainerActivity,
7269
OnRemoteOperationListener,
70+
FilesRefreshNeededListener,
7371
Injectable {
7472
private var livePhotoFile: OCFile? = null
7573
private var viewPager: ViewPager2? = null
@@ -213,13 +211,9 @@ class PreviewImageActivity :
213211
}
214212
}
215213

216-
// region EventBus
217-
@Suppress("unused")
218-
@Subscribe(threadMode = ThreadMode.MAIN)
219-
fun onFilesRefreshNeeded(event: FilesRefreshEvent) {
214+
override fun onFilesRefreshNeeded() {
220215
initViewPager()
221216
}
222-
// endregion
223217

224218
fun initViewPager() {
225219
if (user.isPresent) {
@@ -273,11 +267,6 @@ class PreviewImageActivity :
273267
super.onStart()
274268
registerReceivers()
275269

276-
// Register for the FilesRefreshEvent, only if not already registered
277-
if (!EventBus.getDefault().isRegistered(this)) {
278-
EventBus.getDefault().register(this)
279-
}
280-
281270
val optionalUser = user
282271
if (optionalUser.isPresent) {
283272
var file: OCFile? = file ?: throw IllegalStateException("Instanced with a NULL OCFile")
@@ -418,10 +407,6 @@ class PreviewImageActivity :
418407
downloadFinishReceiver = null
419408
}
420409

421-
if (EventBus.getDefault().isRegistered(this)) {
422-
EventBus.getDefault().unregister(this)
423-
}
424-
425410
super.onStop()
426411
}
427412

0 commit comments

Comments
 (0)