Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Episode synopsis bottom dialog not dismissing properly #816

Closed
5 tasks done
Luna712 opened this issue Dec 15, 2023 · 10 comments
Closed
5 tasks done

Episode synopsis bottom dialog not dismissing properly #816

Luna712 opened this issue Dec 15, 2023 · 10 comments
Labels
bug Something isn't working

Comments

@Luna712
Copy link
Contributor

Luna712 commented Dec 15, 2023

Steps to reproduce

  1. Find a series
  2. Click an episode synopsis
  3. Dismiss it any way you want
  4. Go back
  5. Click a synopsis again
  6. It opens it twice, you have to dismiss it twice — or however many times you play an episode and go back after clicking synopsis, sometimes that reaches like 20 times for me lately.

Expected behavior

It should only need to be closed once

Actual behavior

Discribed above.

Cloudstream version and commit hash

4.3.0 6d51c59

Android version

Android 14

Logcat

No response

Other details

I believe this is caused by the dismiss callback not being triggered this way, and so viewmodel.releaseEpisodeSynopsis is never triggered. I could be wrong though and my PC hasn't been playing well lately so can't test and fix myself

Acknowledgements

  • I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open issue.
  • I have written a short but informative title.
  • I have updated the app to pre-release version Latest.
  • If related to a provider, I have checked the site and it works, but not the app.
  • I will fill out all of the requested information in this form.
@Luna712 Luna712 added the bug Something isn't working label Dec 15, 2023
@IndusAryan
Copy link
Contributor

i am not able to reproduce this , it gets dismissed in once again and again

@Luna712
Copy link
Contributor Author

Luna712 commented Dec 16, 2023

i am not able to reproduce this , it gets dismissed in once again and again

Click the synopsis, dismiss it, it works. Play an episode, go back, click the synopsis again, and you have to click twice to dismiss it.

@Luna712
Copy link
Contributor Author

Luna712 commented Dec 16, 2023

ezgif-1-619935eb48.mp4

@IndusAryan
Copy link
Contributor

ya, reproductive now after player opening

@Luna712
Copy link
Contributor Author

Luna712 commented Dec 16, 2023

This is particularly annoying when you click the synopsis for each episode after playing an episode you have to dismiss it however many times you have clicked the synopsis then played an episode, which is quite annoying. I do think it is related to dismiss callback not working properly though, I just can't seem to get CloudStream Debug to test properly right now

@IndusAryan
Copy link
Contributor

tagSocket(112) with statsTag=0xffffffff, statsUid=-1
 I  Exception in NiceHttp: java.net.SocketTimeoutException timeout
 I  Exception in NiceHttp: java.net.SocketTimeoutException timeout
 E  Unable to match the desired swap behavior.
 W  Expecting binder but got null!
 E  Unable to match the desired swap behavior.
 W  Expecting binder but got null!
 D  -------------------------------------------------------------------
 D  safeApiCall: timeout
 D  safeApiCall: timeout
 W  java.net.SocketTimeoutException: timeout
 W  	at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:704)
 W  	at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:713)
 W  	at okhttp3.internal.http2.Http2Stream$FramingSource.read(Http2Stream.kt:406)
 W  	at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:281)
 W  	at okio.RealBufferedSource.read(RealBufferedSource.kt:189)
 W  	at okhttp3.internal.cache.CacheInterceptor$cacheWritingResponse$cacheWritingSource$1.read(CacheInterceptor.kt:178)
 W  	at okio.Buffer.writeAll(Buffer.kt:1290)
 W  	at okio.RealBufferedSource.readString(RealBufferedSource.kt:95)
 W  	at okhttp3.ResponseBody.string(ResponseBody.kt:72)
 W  	at com.lagradost.nicehttp.NiceResponse$text$2.invoke(NiceResponse.kt:21)
 W  	at com.lagradost.nicehttp.NiceResponse$text$2.invoke(NiceResponse.kt:20)
 W  	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
 W  	at com.lagradost.nicehttp.NiceResponse.getText(NiceResponse.kt:20)
 W  	at com.lagradost.cloudstream3.utils.M3u8Helper2.m3u8Generation(M3u8Helper.kt:148)
 W  	at com.lagradost.cloudstream3.utils.M3u8Helper2$m3u8Generation$1.invokeSuspend(Unknown Source:15)
 W  	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
 W  	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
 W  	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
 W  	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source:1)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source:1)
 W  	at com.lagradost.cloudstream3.ParCollectionsKt.apmap(ParCollections.kt:47)
 W  	at com.hexated.SoraExtractor.invokeFilmxy(SoraExtractor.kt:533)
 W  	at com.hexated.SoraExtractor$invokeFilmxy$1.invokeSuspend(Unknown Source:19)
 W  	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
 W  	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
 W  	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
 W  	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source:1)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source:1)
 W  	at com.lagradost.cloudstream3.ParCollectionsKt.apmap(ParCollections.kt:47)
 W  	at com.hexated.SoraExtractor.invokeSmashyStream(SoraExtractor.kt:1718)
 W  	at com.hexated.SoraExtractor$invokeSmashyStream$1.invokeSuspend(Unknown Source:19)
 W  	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
 W  	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
 W  	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
 W  	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source:1)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source:1)
 W  	at com.lagradost.cloudstream3.ParCollectionsKt.apmap(ParCollections.kt:47)
 W  	at com.hexated.SoraExtractor.invokeWpmovies(SoraExtractor.kt:379)
 W  	at com.hexated.SoraExtractor.access$invokeWpmovies(SoraExtractor.kt:23)
 W  	at com.hexated.SoraExtractor$invokeWpmovies$1.invokeSuspend(Unknown Source:20)
 W  	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
 W  	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
 W  	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
 W  	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source:1)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source:1)
 W  	at com.lagradost.cloudstream3.ParCollectionsKt.apmap(ParCollections.kt:47)
 W  	at com.hexated.SoraExtractor.invokeVidsrcto(SoraExtractor.kt:760)
 W  	at com.hexated.SoraExtractor$invokeVidsrcto$1.invokeSuspend(Unknown Source:19)
 W  	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
 W  	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
 W  	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
 W  	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source:1)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source:1)
 W  	at com.lagradost.cloudstream3.ParCollectionsKt.apmap(ParCollections.kt:47)
 W  	at com.hexated.SoraExtractor.invokeGoku(SoraExtractor.kt:87)
 W  	at com.hexated.SoraExtractor$invokeGoku$1.invokeSuspend(Unknown Source:21)
 W  	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
 W  	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
 W  	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
 W  	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source:1)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source:1)
 W  	at com.lagradost.cloudstream3.ParCollectionsKt.apmap(ParCollections.kt:47)
 W  	at com.hexated.SoraExtractor.invokeDreamfilm(SoraExtractor.kt:224)
 W  	at com.hexated.SoraExtractor$invokeDreamfilm$1.invokeSuspend(Unknown Source:19)
 W  	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
 W  	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
 W  	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
 W  	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source:1)
 W  	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
 W  	at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source:1)
 W  	at com.lagradost.cloudstream3.ParCollectionsKt.argamap(ParCollections.kt:78)
 W  	at com.hexated.SoraStream.loadLinks$suspendImpl(SoraStream.kt:360)
 W  	at com.hexated.SoraStream.loadLinks(Unknown Source:0)
 W  	at com.lagradost.cloudstream3.ui.APIRepository.loadLinks(APIRepository.kt:189)
 W  	at com.lagradost.cloudstream3.ui.player.RepoLinkGenerator.generateLinks(RepoLinkGenerator.kt:111)
 W  	at com.lagradost.cloudstream3.ui.player.IGenerator.generateLinks$default(IGenerator.kt:55)
 W  	at com.lagradost.cloudstream3.ui.player.PlayerGeneratorViewModel$loadLinks$1$loadingState$1.invokeSuspend(PlayerGeneratorViewModel.kt:186)
 W  	at com.lagradost.cloudstream3.ui.player.PlayerGeneratorViewModel$loadLinks$1$loadingState$1.invoke(Unknown Source:8)
 W  	at com.lagradost.cloudstream3.ui.player.PlayerGeneratorViewModel$loadLinks$1$loadingState$1.invoke(Unknown Source:2)
 W  	at com.lagradost.cloudstream3.mvvm.ArchComponentExtKt$safeApiCall$2.invokeSuspend(ArchComponentExt.kt:201)
 W  	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
 W  	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
 W  	at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
 W  	at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:100)
 W  	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
 W  	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
 W  	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
 W  	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
 D  -------------------------------------------------------------------
 D  Loaded ExtractorLink: ExtractorLink(name=Vidplay, url=https://ylbl.vidrock2.store/_v1/12a3c523fd105800ed8c394685aeeb0b932eaa5c01f1b8ed080e7baea93ece832257df1a4b6125fcfa38c35da05dee86aad28d46d73fc4e9d4e5a17f0720afd236c712e3091fb40a12c6f0ee3c15/h/a4/abfbcff;15a38727fc105a47b597781bd0aeea0b9236a84154bab6b74945.m3u8, referer=https://vidplay.online/, type=M3U8)
 D  Loaded ExtractorLink: ExtractorLink(name=Vidplay, url=https://ylbl.vidrock2.store/_v1/12a3c523fd105800ed8c394685aeeb0b932eaa5c01f1b8ed080e7baea93ece832257df1a4b6125fcfa38c35da05dee86aad28d46d73fc4e9d4e5a17f0720afd236c712e3091fb40a12c6f0ee3c15/h/a3/abfbcff;15a38727fc105a47b597781bd0aeea0b9236a84154bab6b74945.m3u8, referer=https://vidplay.online/, type=M3U8)
 D  Loaded ExtractorLink: ExtractorLink(name=Vidplay, url=https://ylbl.vidrock2.store/_v1/12a3c523fd105800ed8c394685aeeb0b932eaa5c01f1b8ed080e7baea93ece832257df1a4b6125fcfa38c35da05dee86aad28d46d73fc4e9d4e5a17f0720afd236c712e3091fb40a12c6f0ee3c15/h/a1/abfbcff;15a38727fc105a47b597781bd0aeea0b9236a84154bab6b74945.m3u8, referer=https://vidplay.online/, type=M3U8)
 D  Loaded ExtractorLink: ExtractorLink(name=Vidplay, url=https://ylbl.vidrock2.store/_v1/12a3c523fd105800ed8c394685aeeb0b932eaa5c01f1b8ed080e7baea93ece832257df1a4b6125fcfa38c35da05dee86aad28d46d73fc4e9d4e5a17f0720afd236c712e3091fb40a12c6f0ee3c15/h/list;15a38727fc105a47b597781bd0aeea0b9236a84154bab6b74945.m3u8#.mp4, referer=https://vidplay.online/, type=M3U8)
 D  Loaded ExtractorLink: ExtractorLink(name=Smashy [Player F], url=https://yot.gnicirp.com/_v10/b1beaf1fbb06f90f91229241880023bce31064c509ad88f4ced1b1ce1ab39f2c73a9fb30d423b1e9b13ca715907574d8d2919f0107d3cc84f3e17d1486a48c81dcdc98ac33186a85aaf4f6a128130ccebf3865520cf4ca298e5af3ceada91e9d45420187969aa464e17571774278b00ecd71d5d01c9534c459f55f80537a7c09e74241587734ec4cca29f6148f6084a1/1080/index.m3u8, referer=, type=M3U8)
 D  Loaded ExtractorLink: ExtractorLink(name=Smashy [Player F], url=https://yot.gnicirp.com/_v10/b1beaf1fbb06f90f91229241880023bce31064c509ad88f4ced1b1ce1ab39f2c73a9fb30d423b1e9b13ca715907574d8d2919f0107d3cc84f3e17d1486a48c81dcdc98ac33186a85aaf4f6a128130ccebf3865520cf4ca298e5af3ceada91e9d45420187969aa464e17571774278b00ecd71d5d01c9534c459f55f80537a7c09e74241587734ec4cca29f6148f6084a1/720/index.m3u8, referer=, type=M3U8)
 D  Loaded ExtractorLink: ExtractorLink(name=Smashy [Player F], url=https://yot.gnicirp.com/_v10/b1beaf1fbb06f90f91229241880023bce31064c509ad88f4ced1b1ce1ab39f2c73a9fb30d423b1e9b13ca715907574d8d2919f0107d3cc84f3e17d1486a48c81dcdc98ac33186a85aaf4f6a128130ccebf3865520cf4ca298e5af3ceada91e9d45420187969aa464e17571774278b00ecd71d5d01c9534c459f55f80537a7c09e74241587734ec4cca29f6148f6084a1/360/index.m3u8, referer=, type=M3U8)
 D  Loaded ExtractorLink: ExtractorLink(name=Smashy [Player F], url=https://yot.gnicirp.com/_v10/b1beaf1fbb06f90f91229241880023bce31064c509ad88f4ced1b1ce1ab39f2c73a9fb30d423b1e9b13ca715907574d8d2919f0107d3cc84f3e17d1486a48c81dcdc98ac33186a85aaf4f6a128130ccebf3865520cf4ca298e5af3ceada91e9d45420187969aa464e17571774278b00ecd71d5d01c9534c459f55f80537a7c09e74241587734ec4cca29f6148f6084a1/playlist.m3u8, referer=, type=M3U8)
 D  -------------------------------------------------------------------
 D  safeApiCall: timeout
 D  safeApiCall: timeout
 W  java.net.SocketTimeoutException: timeout
 W  	at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.kt:704)
 W  	at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.kt:713)
 W  	at okhttp3.internal.http2.Http2Stream.takeHeaders(Http2Stream.kt:150)
 W  	at okhttp3.internal.http2.Http2ExchangeCodec.readResponseHeaders(Http2ExchangeCodec.kt:97)
 W  	at okhttp3.internal.connection.Exchange.readResponseHeaders(Exchange.kt:111)
 W  	at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:93)
 W  	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
 W  	at com.lagradost.nicehttp.CacheInterceptor.intercept(CacheInterceptor.kt:9)
 W  	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
 W  	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:34)
 W  	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
 W  	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
 W  	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
 W  	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:84)
 W  	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
 W  	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:65)
 W  	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
 W  	at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:205)
 W  	at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:533)
 W  	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
 W  	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
 W  	at java.lang.Thread.run(Thread.java:1012)
 W  	Suppressed: java.net.SocketTimeoutException: timeout
 W  		... 22 more
 D  -------------------------------------------------------------------
 D  tagSocket(121) with statsTag=0xffffffff, statsUid=-1
 D  tagSocket(114) with statsTag=0xffffffff, statsUid=-1
 D  Loaded ExtractorLink: ExtractorLink(name=TVMovies [1.24 GB], url=https://covyn.net/7dacbfc98ac0af6d/The.Boys.S01E01.The.Name.of.the.Game.1080p.10bit.BluRay.AAC5.1.HEVC-Vyndros.mkv?download_token=6f57742321367c0f87c39ff27710b2bd0b20acb05084802ab051f50146e0df53, referer=, type=VIDEO)
 D  -------------------------------------------------------------------
 D  safeApiCall: Job was cancelled
 D  safeApiCall: Job was cancelled
 W  kotlinx.coroutines.JobCancellationException: Job was cancelled; job=SupervisorJobImpl{Cancelling}@42b034d
 D  -------------------------------------------------------------------

i got this, the log starts when i open the synospsi after playing and close it, i should be getting binder got null and it closes once, but when suspended twice it generates this,

@IndusAryan
Copy link
Contributor

also this
W A resource failed to call close.
W A resource failed to call end.
W A resource failed to call end.
W A resource failed to call close.
W A resource failed to call end.
W A resource failed to call close.
W A resource failed to call end.
W A resource failed to call close.
W A resource failed to call end.

bro there is something wrong with sorastream, when we close the player, the extension and extractor generate high amount of requests to sites and use data even when player is closed few seconds ago

@Luna712
Copy link
Contributor Author

Luna712 commented Dec 17, 2023

@IndusAryan Now that's interesting... I wonder if that has anything to do with #530 as well?

@Luna712
Copy link
Contributor Author

Luna712 commented Dec 17, 2023

@fire-light42 @LagradOst @Blatzar also ^ should I report this on hexated repo or is this an issue with CloudStream?

@Luna712
Copy link
Contributor Author

Luna712 commented Dec 17, 2023

This did give me an idea for what causes #530 if it isn't that exactly though.

Luna712 added a commit to Luna712/cloudstream that referenced this issue Mar 7, 2024
Instead of using a BottomSheetDialog, which can be buggy (recloudstream#816) and modifies the UI more then we need to, which is just a little bit of poor UI, this way it just expands the description/synopsis if it is clicked, which is nicer UI. It only only this for phone and emulator layouts though, on TV having the same popup is nicer so it puts the text in a bit bigger view also.

This method is also nice, because if there is nothing to expand it doesn't created an unneeded dialog or do anything at all, and if you accidentally click it it doesn't end up getting in your way.

showBottomDialogText in SingleSelectionHelper could probably be removed after this if you want as it is now unused again, however I decided to leave it as I figured maybe it would be useful in the future but not sure if you want to or not...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants