Skip to content

Commit 8fcb3e3

Browse files
authored
Fix cast recycler scrolling (#1221)
1 parent 30adb1c commit 8fcb3e3

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragmentPhone.kt

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import androidx.core.widget.NestedScrollView
2323
import androidx.core.widget.doOnTextChanged
2424
import androidx.lifecycle.ViewModelProvider
2525
import com.discord.panels.OverlappingPanelsLayout
26+
import com.discord.panels.PanelState
2627
import com.discord.panels.PanelsChildGestureRegionObserver
2728
import com.google.android.gms.cast.framework.CastButtonFactory
2829
import com.google.android.gms.cast.framework.CastContext
@@ -118,6 +119,14 @@ open class ResultFragmentPhone : FullScreenPlayer() {
118119
return root
119120
}
120121

122+
override fun onCreate(savedInstanceState: Bundle?) {
123+
super.onCreate(savedInstanceState)
124+
125+
PanelsChildGestureRegionObserver.Provider.get().apply {
126+
resultBinding?.resultCastItems?.let { register(it) }
127+
}
128+
}
129+
121130
var currentTrailers: List<ExtractorLink> = emptyList()
122131
var currentTrailerIndex = 0
123132

@@ -210,9 +219,6 @@ open class ResultFragmentPhone : FullScreenPlayer() {
210219
}
211220

212221
override fun onDestroyView() {
213-
214-
//somehow this still leaks and I dont know why????
215-
// todo look at https://github.com/discord/OverlappingPanels/blob/70b4a7cf43c6771873b1e091029d332896d41a1a/sample_app/src/main/java/com/discord/sampleapp/MainActivity.kt
216222
PanelsChildGestureRegionObserver.Provider.get().let { obs ->
217223
resultBinding?.resultCastItems?.let {
218224
obs.unregister(it)
@@ -329,13 +335,18 @@ open class ResultFragmentPhone : FullScreenPlayer() {
329335
syncModel.addFromUrl(storedData.url)
330336
val api = APIHolder.getApiFromNameNull(storedData.apiName)
331337

332-
PanelsChildGestureRegionObserver.Provider.get().apply {
333-
resultBinding?.resultCastItems?.let {
334-
register(it)
338+
// This may not be 100% reliable, and may delay for small period
339+
// before resultCastItems will be scrollable again, but this does work
340+
// most of the time.
341+
binding?.resultOverlappingPanels?.registerEndPanelStateListeners(
342+
object : OverlappingPanelsLayout.PanelStateListener {
343+
override fun onPanelStateChange(panelState: PanelState) {
344+
PanelsChildGestureRegionObserver.Provider.get().apply {
345+
resultBinding?.resultCastItems?.let { register(it) }
346+
}
347+
}
335348
}
336-
addGestureRegionsUpdateListener(gestureRegionsListener)
337-
}
338-
349+
)
339350

340351
// ===== ===== =====
341352

@@ -674,6 +685,9 @@ open class ResultFragmentPhone : FullScreenPlayer() {
674685
observe(viewModel.page) { data ->
675686
if (data == null) return@observe
676687
resultBinding?.apply {
688+
PanelsChildGestureRegionObserver.Provider.get().apply {
689+
register(resultCastItems)
690+
}
677691
(data as? Resource.Success)?.value?.let { d ->
678692
resultVpn.setText(d.vpnText)
679693
resultInfo.setText(d.metaText)
@@ -1167,4 +1181,4 @@ open class ResultFragmentPhone : FullScreenPlayer() {
11671181
}
11681182
}
11691183
}
1170-
}
1184+
}

0 commit comments

Comments
 (0)