-
-
Notifications
You must be signed in to change notification settings - Fork 442
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
fix(YouTube - ReturnYouTubeDislike): Revert support for 18.37.36 #3041
fix(YouTube - ReturnYouTubeDislike): Revert support for 18.37.36 #3041
Conversation
…rts support was faulty)
What is also possible, is to support RYD for normal videos, until a solution has been found for Shorts. I believe the majority will benefit from it in this way, too. |
I personally use the dislikes in shorts more than in regular videos. It's rare for any regular video to have over 3% dislikes, as the videos get hidden from discovery very quickly. But for some reason YouTube loves pushing shorts that have 10% or more dislikes, and after viewing most of them I see why so many people disliked. If this cannot be solved in the near future, then RYD could be broke into two patches. One patch for regular videos, and another patch just for shorts. Then if someone hates shorts they can just exclude the patch and patch a newer version of YouTube. And when the problem is solved then combine the patches again. |
# [2.191.0-dev.21](ReVanced/revanced-patches@v2.191.0-dev.20...v2.191.0-dev.21) (2023-09-28) ### Bug Fixes * **YouTube - ReturnYouTubeDislike:** Revert support for 18.37.36 ([#3041](ReVanced/revanced-patches#3041)) ([3761073](ReVanced/revanced-patches@3761073))
That sounds reasonable, separating the integrations will be challenging I assume. |
I think it could be done by the shorts patch changing an integrations static field from false to true. And integrations checks that field and then forces RYD shorts always off and hides the setting switch. |
I'd say a simpler way would be to add a guard in the method that hooks the litho code and checks if the current player is a Short. In older versions of YouTube, the Litho code is not being used, the old patch hooks will be used and RYD will work on Shorts while on the new supported version, the guard will prevent the hook to modify the value for Shorts. |
There may be a simple solution to this. The current hook we have for text spec is called whenever short components are rendered. This means, we just need a way to retrieve the current short video id at the time the hook is being called. This way we would be able to match the current playing short to the current video id. |
Yes, but it would need to be the video id for that specific dislike button. The big issue is the dislike text for the next short is created before the short is swiped to. Swipe to the next short by swiping slowly up the entire screen and you'll see the dislikes for the next short is already there, even though the current short has not yet changed and the current video id has not yet changed either. Maybe the video id is exposed somewhere in the new shorts player. And maybe the conversion context for that specific short could also be found. With both of those pieces it might be possible to figure out which video id a litho conversion context belongs to during it's creation. It seems it might be easier 'tagging' a dislikes text as loading, and then find the image view that has that loading text (with a new patch point somewhere in the litho framework). Then in theory you now have the image view and can solve this asynchronously the same way the current shorts player works. I briefly looked at the litho source code for some insight, but man what a convoluted mess that is. I stopped looking when I found multiple comments of "for unknown reasons this value can sometimes be null so check to prevent null pointer exception" (??). It's not as bad as the source code for the awful Facebook iOS sdk from years ago (very messy + unnecessarily complex), so I guess they're improving. |
# [2.191.0](ReVanced/revanced-patches@v2.190.0...v2.191.0) (2023-10-04) ### Bug Fixes * Add hooks to existing hook set ([5655067](ReVanced/revanced-patches@5655067)) * **Duolingo - Unlock Super:** Get correct instruction offset ([#3023](ReVanced/revanced-patches#3023)) ([5146de8](ReVanced/revanced-patches@5146de8)) * **Google Recorder - Remove device restrictions:** Clarify limitation ([094f57b](ReVanced/revanced-patches@094f57b)) * **Infinity for Reddit - Spoof client:** Constrain patch to last working versions ([#2944](ReVanced/revanced-patches#2944)) ([ee975de](ReVanced/revanced-patches@ee975de)) * **Relay - Spoof client:** Restore OAuth login ([96e01f7](ReVanced/revanced-patches@96e01f7)) * **Slide - Spoof client:** Use correct patch name ([f355dbf](ReVanced/revanced-patches@f355dbf)) * **Sync for Reddit:** Do not throw an error when not necessary ([ef644e4](ReVanced/revanced-patches@ef644e4)) * **TikTok - Hide ads:** Constrain to last working version ([56e45a6](ReVanced/revanced-patches@56e45a6)) * **Twitch - Audio ads:** Support missing version `16.1.0` ([#2928](ReVanced/revanced-patches#2928)) ([688d8fa](ReVanced/revanced-patches@688d8fa)) * Use consistent toggle description ([#2983](ReVanced/revanced-patches#2983)) ([ceaa512](ReVanced/revanced-patches@ceaa512)) * Use correct instruction ([246cf2c](ReVanced/revanced-patches@246cf2c)) * **YouTube - Client spoof:** adjust settings text ([#3035](ReVanced/revanced-patches#3035)) ([59a2e96](ReVanced/revanced-patches@59a2e96)) * **YouTube - Client spoof:** Display seekbar thumbnails in high quality ([5e8a2d3](ReVanced/revanced-patches@5e8a2d3)) * **YouTube - Client spoof:** Do not record feed videos to history by default ([#3017](ReVanced/revanced-patches#3017)) ([5ccbf1b](ReVanced/revanced-patches@5ccbf1b)) * **YouTube - Client spoof:** Removed unused code ([#3030](ReVanced/revanced-patches#3030)) ([15e27bf](ReVanced/revanced-patches@15e27bf)) * **YouTube - Client spoof:** Restore seekbar thumbnails ([bf4a115](ReVanced/revanced-patches@bf4a115)) * **YouTube - Client spoof:** Show seekbar thumbnail for age restricted and paid videos ([1a79300](ReVanced/revanced-patches@1a79300)) * **YouTube - Custom filter:** Use new lines between components instead of commas ([#2952](ReVanced/revanced-patches#2952)) ([ecb2e32](ReVanced/revanced-patches@ecb2e32)) * **YouTube - Hide "Load more" button:** Use correct names ([569c3cd](ReVanced/revanced-patches@569c3cd)) * **YouTube - Hide info cards:** Fix info cards not hiding for some users ([#3039](ReVanced/revanced-patches#3039)) ([cb38637](ReVanced/revanced-patches@cb38637)) * **YouTube - Hide layout components:** Always hide redundant 'player audio track' button ([#2951](ReVanced/revanced-patches#2951)) ([ca632bd](ReVanced/revanced-patches@ca632bd)) * **YouTube - Hide shorts components:** Fix hiding navigation bar ([2de51e6](ReVanced/revanced-patches@2de51e6)) * **YouTube - Premium heading:** Correct inverted logic ([#3042](ReVanced/revanced-patches#3042)) ([b33ed75](ReVanced/revanced-patches@b33ed75)) * **YouTube - ReturnYouTubeDislike:** Revert support for 18.37.36 ([#3041](ReVanced/revanced-patches#3041)) ([3761073](ReVanced/revanced-patches@3761073)) * **YouTube - SponsorBlock:** Adjust import/export UI text ([#3063](ReVanced/revanced-patches#3063)) ([4e5513e](ReVanced/revanced-patches@4e5513e)) * **YouTube - Video Id:** Fix video id not showing the currently playing video ([#3038](ReVanced/revanced-patches#3038)) ([f6f226b](ReVanced/revanced-patches@f6f226b)) * **YouTube:** Restore functionality of `Old video quality menu` and `Custom speeds` on tablets ([#2999](ReVanced/revanced-patches#2999)) ([238bed1](ReVanced/revanced-patches@238bed1)) ### Features * Add notice for thumbnails for age restricted or paid videos ([f7cf70b](ReVanced/revanced-patches@f7cf70b)) * **Duolingo:** Remove `Unlock Duolingo Super` patch ([b4b9746](ReVanced/revanced-patches@b4b9746)) * **SPB Serviceportal Bund:** Add `Remove root detection` patch ([#3049](ReVanced/revanced-patches#3049)) ([481bf58](ReVanced/revanced-patches@481bf58)) * **Strava:** Add `Disable subscription suggestions` patch ([#2997](ReVanced/revanced-patches#2997)) ([af02175](ReVanced/revanced-patches@af02175)) * **Sync for Reddit - Client spoof:** Restore upload functionality ([9344c8a](ReVanced/revanced-patches@9344c8a)) * **TikTok - Hide ads:** Constrain to last working version ([516e8a1](ReVanced/revanced-patches@516e8a1)) * **TU Dortmund:** Add `Show on lockscreen` patch ([#2947](ReVanced/revanced-patches#2947)) ([9a18326](ReVanced/revanced-patches@9a18326)) * **Tumblr:** Add `Disable blog notification reminder` patch ([29f19b9](ReVanced/revanced-patches@29f19b9)) * **Tumblr:** Add `Disable dashboard ads` patch ([#2979](ReVanced/revanced-patches#2979)) ([07c267a](ReVanced/revanced-patches@07c267a)) * **Tumblr:** Add `Disable gift message popup` patch ([a4d6b4e](ReVanced/revanced-patches@a4d6b4e)) * **Tumblr:** Add `Disable in-app update` patch ([#3058](ReVanced/revanced-patches#3058)) ([5e8076b](ReVanced/revanced-patches@5e8076b)) * **Tumblr:** Add `Disable Tumblr Live` patch ([#2987](ReVanced/revanced-patches#2987)) ([bf1f9dc](ReVanced/revanced-patches@bf1f9dc)) * **Twitch - Block embedded ads:** Switch from `ttv.lol` to `luminous.dev` ([0fe115e](ReVanced/revanced-patches@0fe115e)) * Use properties file for `Client spoof` patches ([e5d548c](ReVanced/revanced-patches@e5d548c)) * **YouTube - Hide layout components:** Hide "Join" button ([1b71f89](ReVanced/revanced-patches@1b71f89)) * **YouTube - Hide layout components:** Hide "Notify me" button ([3027c15](ReVanced/revanced-patches@3027c15)) * **YouTube - Hide layout components:** Hide search result shelf header ([f4eda8c](ReVanced/revanced-patches@f4eda8c)) * **YouTube - Hide layout components:** Hide timed reactions ([d0a775d](ReVanced/revanced-patches@d0a775d)) * **YouTube - Premium heading:** Allow using default heading ([#3029](ReVanced/revanced-patches#3029)) ([d5ab35a](ReVanced/revanced-patches@d5ab35a)) * **YouTube - Spoof app version:** add version 18.20.39 ([#3001](ReVanced/revanced-patches#3001)) ([f14c5e7](ReVanced/revanced-patches@f14c5e7)) * **YouTube:** Add `Bypass URL redirects` patch ([125cac5](ReVanced/revanced-patches@125cac5)) * **YouTube:** Bump compatibility to `18.37.36` ([#3028](ReVanced/revanced-patches#3028)) ([eda28e5](ReVanced/revanced-patches@eda28e5))
YouTube 18.37.36 uses a new Litho based shorts player.
But in this new player the dislikes shown is frequently incorrect, especially when swiping back to previous videos.
The issue is the video id hook is called out of order with a new short is swiped to. The prior shorts patch handled this by keeping track of all dislike buttons and then updating existing buttons asynchronously when the video id hook is called.
Previously it was thought a different video id hook might solve this. Now there is a Player Response video id hook, but it was found that hook is called for shorts preloading in the background and it's not reliable for finding the current or next short that's loading.
The only possible fix I see is one of three options:
An unrelated bug also exist with the new shorts player, where the like/dislike/remix litho buttons do not appear at all. When this happens they are always hidden, and it requires restarting the app for them to appear again.
Until a fix is found, support should be reverted because otherwise dislikes for shorts is broken and unusable.
integration changes