1
mirror of https://github.com/revanced/revanced-integrations synced 2025-11-19 03:23:27 +01:00

Compare commits

...

229 Commits

Author SHA1 Message Date
semantic-release-bot
571ce75c84 chore(release): 1.10.0-dev.4 [skip ci]
# [1.10.0-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.10.0-dev.3...v1.10.0-dev.4) (2024-06-02)

### Bug Fixes

* **YouTube - Spoof client:** Restore playback speed menu when spoofing to an iOS client ([2b2a70e](2b2a70e6ea))
2024-06-02 15:46:59 +00:00
oSumAtrIX
2b2a70e6ea fix(YouTube - Spoof client): Restore playback speed menu when spoofing to an iOS client 2024-06-02 17:43:40 +02:00
semantic-release-bot
caa94fa6a4 chore(release): 1.10.0-dev.3 [skip ci]
# [1.10.0-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.10.0-dev.2...v1.10.0-dev.3) (2024-06-01)

### Features

* **YouTube:** Support version `19.12`, `19.13`, `19.14`, `19.15` and `19.16` ([#643](https://github.com/ReVanced/revanced-integrations/issues/643)) ([4dce73a](4dce73a6fb))
2024-06-01 18:12:48 +00:00
LisoUseInAIKyrios
4dce73a6fb feat(YouTube): Support version 19.12, 19.13, 19.14, 19.15 and 19.16 (#643) 2024-06-01 22:09:36 +04:00
semantic-release-bot
a7e9390479 chore(release): 1.10.0-dev.2 [skip ci]
# [1.10.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.10.0-dev.1...v1.10.0-dev.2) (2024-06-01)

### Bug Fixes

* **YouTube - Spoof client:** Allow swipe gestures to enter/exit fullscreen when spoofing with `Android VR` client ([#645](https://github.com/ReVanced/revanced-integrations/issues/645)) ([b826865](b826865ef4))
2024-06-01 09:32:09 +00:00
KAZI MMT
b826865ef4 fix(YouTube - Spoof client): Allow swipe gestures to enter/exit fullscreen when spoofing with Android VR client (#645) 2024-06-01 13:29:14 +04:00
semantic-release-bot
b1109350fa chore(release): 1.10.0-dev.1 [skip ci]
# [1.10.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.9.2...v1.10.0-dev.1) (2024-05-31)

### Features

* **YouTube - Hide layout components:** Disable like / subscribe button glow animation ([#646](https://github.com/ReVanced/revanced-integrations/issues/646)) ([777ffb1](777ffb1360))
2024-05-31 21:01:12 +00:00
LisoUseInAIKyrios
777ffb1360 feat(YouTube - Hide layout components): Disable like / subscribe button glow animation (#646) 2024-06-01 00:57:47 +04:00
semantic-release-bot
3fe0f3fa06 chore(release): 1.9.2 [skip ci]
## [1.9.2](https://github.com/ReVanced/revanced-integrations/compare/v1.9.1...v1.9.2) (2024-05-31)

### Bug Fixes

* **YouTube - Restore old video quality menu:** Do not show error toast if using an old version of YT ([#640](https://github.com/ReVanced/revanced-integrations/issues/640)) ([2227b45](2227b45020))
* **YouTube - Spoof client:** Disable AV1 if not supported by spoofing an older iOS device ([#644](https://github.com/ReVanced/revanced-integrations/issues/644)) ([e28edba](e28edbadbf))
* **YouTube - Spoof client:** Improve Android spoofing ([#641](https://github.com/ReVanced/revanced-integrations/issues/641)) ([baf967e](baf967e12a))
2024-05-31 10:07:33 +00:00
oSumAtrIX
60ae48bdbf chore: Merge branch dev to main (#642) 2024-05-31 12:04:12 +02:00
LisoUseInAIKyrios
1f36aae81b chore: Sanitize spoof logs 2024-05-29 00:48:04 +04:00
semantic-release-bot
3a978ecc92 chore(release): 1.9.2-dev.3 [skip ci]
## [1.9.2-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.9.2-dev.2...v1.9.2-dev.3) (2024-05-28)

### Bug Fixes

* **YouTube - Spoof client:** Disable AV1 if not supported by spoofing an older iOS device ([#644](https://github.com/ReVanced/revanced-integrations/issues/644)) ([e28edba](e28edbadbf))
2024-05-28 19:42:25 +00:00
LisoUseInAIKyrios
e28edbadbf fix(YouTube - Spoof client): Disable AV1 if not supported by spoofing an older iOS device (#644) 2024-05-28 23:38:57 +04:00
semantic-release-bot
b2eac9099f chore(release): 1.9.2-dev.2 [skip ci]
## [1.9.2-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.9.2-dev.1...v1.9.2-dev.2) (2024-05-27)

### Bug Fixes

* **YouTube - Restore old video quality menu:** Do not show error toast if using an old version of YT ([#640](https://github.com/ReVanced/revanced-integrations/issues/640)) ([2227b45](2227b45020))
2024-05-27 14:15:23 +00:00
LisoUseInAIKyrios
2227b45020 fix(YouTube - Restore old video quality menu): Do not show error toast if using an old version of YT (#640) 2024-05-27 18:12:05 +04:00
LisoUseInAIKyrios
22ed627a5d build: fix gradle 2024-05-27 18:11:33 +04:00
oSumAtrIX
2ac29c2579 build: Bump dependencies 2024-05-26 01:21:12 +02:00
oSumAtrIX
0e7bf05a0e docs: Improve issue templates 2024-05-26 00:43:36 +02:00
semantic-release-bot
97e531d795 chore(release): 1.9.2-dev.1 [skip ci]
## [1.9.2-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.9.1...v1.9.2-dev.1) (2024-05-25)

### Bug Fixes

* **YouTube - Spoof client:** Improve Android spoofing ([#641](https://github.com/ReVanced/revanced-integrations/issues/641)) ([baf967e](baf967e12a))
2024-05-25 22:13:13 +00:00
LisoUseInAIKyrios
baf967e12a fix(YouTube - Spoof client): Improve Android spoofing (#641) 2024-05-26 02:10:09 +04:00
semantic-release-bot
702df1a93d chore(release): 1.9.1 [skip ci]
## [1.9.1](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0...v1.9.1) (2024-05-24)

### Bug Fixes

* **YouTube - Client spoof:** Spoof iOS client model to fix various side effects ([#638](https://github.com/ReVanced/revanced-integrations/issues/638)) ([fcff9a2](fcff9a2049))
2024-05-24 00:34:27 +00:00
oSumAtrIX
8a70ffe9c0 chore: Merge branch dev to main (#639) 2024-05-24 02:31:34 +02:00
semantic-release-bot
d2e74aca3d chore(release): 1.9.1-dev.1 [skip ci]
## [1.9.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0...v1.9.1-dev.1) (2024-05-23)

### Bug Fixes

* **YouTube - Client spoof:** Spoof iOS client model to fix various side effects ([#638](https://github.com/ReVanced/revanced-integrations/issues/638)) ([fcff9a2](fcff9a2049))
2024-05-23 20:45:14 +00:00
oSumAtrIX
fcff9a2049 fix(YouTube - Client spoof): Spoof iOS client model to fix various side effects (#638)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-05-23 22:42:15 +02:00
semantic-release-bot
1b82e985b6 chore(release): 1.9.0 [skip ci]
# [1.9.0](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0...v1.9.0) (2024-05-21)

### Bug Fixes

* Use Java instead of Kotlin Regex to improve reliability ([#628](https://github.com/ReVanced/revanced-integrations/issues/628)) ([44c3cc4](44c3cc4636))
* **YouTube - Client spoof:** Spoof client to fix playback ([#637](https://github.com/ReVanced/revanced-integrations/issues/637)) ([4c1f82a](4c1f82aa22))
* **YouTube - Hide keyword content:** Filter Shorts found in horizontal shelves ([75fa579](75fa5797f7))
* **YouTube - Hide Shorts components:** Hide old layout like/dislike buttons without leaving empty space ([9782338](978233843d))
* **YouTube - Hide Shorts components:** Hide Shorts in search result horizontal shelves ([#625](https://github.com/ReVanced/revanced-integrations/issues/625)) ([656ca17](656ca17ffc))
* **YouTube - Hide video action buttons:** Remove obsolete `hide Shop button` ([#618](https://github.com/ReVanced/revanced-integrations/issues/618)) ([a78c3ff](a78c3ff09e))
* **YouTube - Hide video action buttons:** Updated path filter ([b74e544](b74e54481a))
* **YouTube - Player flyout menu:** Remove obsolete `Hide report menu` ([9e9d969](9e9d96910c))
* **YouTube - Restore old video quality menu:** Do not make click sounds when opening Shorts quality menu ([578a27d](578a27dea5))
* **YouTube - Restore old video quality menu:** Show advanced quality menu in Shorts quality flyout ([#632](https://github.com/ReVanced/revanced-integrations/issues/632)) ([77c9825](77c9825b82))
* **YouTube - Settings:** Use same background color for about screen if Theme patch is not included ([4164ed3](4164ed3486))
* **YouTube - SponsorBlock:** Show correct segment times if video is over 24 hours in length ([#630](https://github.com/ReVanced/revanced-integrations/issues/630)) ([81251f9](81251f9a34))

### Features

* **YouTube - Comments:** Add option to hide timestamp and emoji buttons ([#621](https://github.com/ReVanced/revanced-integrations/issues/621)) ([6e9e122](6e9e12235a))
* **YouTube - Hide ads:** Add option to hide the 'Visit store' button on channel pages ([#622](https://github.com/ReVanced/revanced-integrations/issues/622)) ([9de566c](9de566ca02))
* **YouTube - Hide Shorts components:** Hide 'Buy super thanks' button ([#633](https://github.com/ReVanced/revanced-integrations/issues/633)) ([303754c](303754c46f))
* **YouTube - Hide Shorts components:** Hide like / dislike button in video ads ([#619](https://github.com/ReVanced/revanced-integrations/issues/619)) ([b2b6b8c](b2b6b8c3d7))
* **YouTube - Navigation buttons:** Add option to hide navigation button labels ([#635](https://github.com/ReVanced/revanced-integrations/issues/635)) ([6bd0ac2](6bd0ac20dc))
2024-05-21 00:48:39 +00:00
oSumAtrIX
9147842ac7 chore: Merge branch dev to main (#620) 2024-05-21 02:45:35 +02:00
semantic-release-bot
e3994d381b chore(release): 1.9.0-dev.15 [skip ci]
# [1.9.0-dev.15](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.14...v1.9.0-dev.15) (2024-05-21)

### Bug Fixes

* **YouTube - Client spoof:** Spoof client to fix playback ([#637](https://github.com/ReVanced/revanced-integrations/issues/637)) ([4c1f82a](4c1f82aa22))
2024-05-21 00:44:41 +00:00
oSumAtrIX
4c1f82aa22 fix(YouTube - Client spoof): Spoof client to fix playback (#637)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-05-21 02:41:34 +02:00
semantic-release-bot
ea184d050e chore(release): 1.9.0-dev.14 [skip ci]
# [1.9.0-dev.14](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.13...v1.9.0-dev.14) (2024-05-18)

### Features

* **YouTube - Navigation buttons:** Add option to hide navigation button labels ([#635](https://github.com/ReVanced/revanced-integrations/issues/635)) ([6bd0ac2](6bd0ac20dc))
2024-05-18 21:18:05 +00:00
MarcaD
6bd0ac20dc feat(YouTube - Navigation buttons): Add option to hide navigation button labels (#635)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-05-19 01:15:14 +04:00
semantic-release-bot
78cf116e58 chore(release): 1.9.0-dev.13 [skip ci]
# [1.9.0-dev.13](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.12...v1.9.0-dev.13) (2024-05-16)

### Features

* **YouTube - Hide Shorts components:** Hide 'Buy super thanks' button ([#633](https://github.com/ReVanced/revanced-integrations/issues/633)) ([303754c](303754c46f))
2024-05-16 17:12:27 +00:00
LisoUseInAIKyrios
303754c46f feat(YouTube - Hide Shorts components): Hide 'Buy super thanks' button (#633) 2024-05-16 21:09:02 +04:00
semantic-release-bot
195a521238 chore(release): 1.9.0-dev.12 [skip ci]
# [1.9.0-dev.12](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.11...v1.9.0-dev.12) (2024-05-15)

### Bug Fixes

* **YouTube - Hide Shorts components:** Hide old layout like/dislike buttons without leaving empty space ([9782338](978233843d))
* **YouTube - Restore old video quality menu:** Do not make click sounds when opening Shorts quality menu ([578a27d](578a27dea5))
2024-05-15 18:22:49 +00:00
LisoUseInAIKyrios
978233843d fix(YouTube - Hide Shorts components): Hide old layout like/dislike buttons without leaving empty space
Also change hide by 1dp to 0dp, and consolidate two methods together
2024-05-15 22:19:22 +04:00
LisoUseInAIKyrios
578a27dea5 fix(YouTube - Restore old video quality menu): Do not make click sounds when opening Shorts quality menu 2024-05-15 22:19:22 +04:00
semantic-release-bot
6710acd928 chore(release): 1.9.0-dev.11 [skip ci]
# [1.9.0-dev.11](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.10...v1.9.0-dev.11) (2024-05-15)

### Bug Fixes

* **YouTube - Hide video action buttons:** Updated path filter ([b74e544](b74e54481a))
2024-05-15 16:25:21 +00:00
LisoUseInAIKyrios
b74e54481a fix(YouTube - Hide video action buttons): Updated path filter 2024-05-15 20:21:46 +04:00
semantic-release-bot
a14567df27 chore(release): 1.9.0-dev.10 [skip ci]
# [1.9.0-dev.10](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.9...v1.9.0-dev.10) (2024-05-11)

### Bug Fixes

* **YouTube - Restore old video quality menu:** Show advanced quality menu in Shorts quality flyout ([#632](https://github.com/ReVanced/revanced-integrations/issues/632)) ([77c9825](77c9825b82))
2024-05-11 20:33:16 +00:00
LisoUseInAIKyrios
77c9825b82 fix(YouTube - Restore old video quality menu): Show advanced quality menu in Shorts quality flyout (#632) 2024-05-12 00:30:10 +04:00
semantic-release-bot
44dea1af4e chore(release): 1.9.0-dev.9 [skip ci]
# [1.9.0-dev.9](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.8...v1.9.0-dev.9) (2024-05-08)

### Bug Fixes

* **YouTube - SponsorBlock:** Show correct segment times if video is over 24 hours in length ([#630](https://github.com/ReVanced/revanced-integrations/issues/630)) ([81251f9](81251f9a34))
2024-05-08 22:30:31 +00:00
LisoUseInAIKyrios
81251f9a34 fix(YouTube - SponsorBlock): Show correct segment times if video is over 24 hours in length (#630) 2024-05-09 02:27:07 +04:00
semantic-release-bot
7d102e7a69 chore(release): 1.9.0-dev.8 [skip ci]
# [1.9.0-dev.8](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.7...v1.9.0-dev.8) (2024-05-06)

### Bug Fixes

* **YouTube - Player flyout menu:** Remove obsolete `Hide report menu` ([9e9d969](9e9d96910c))
2024-05-06 20:51:16 +00:00
LisoUseInAIKyrios
9e9d96910c fix(YouTube - Player flyout menu): Remove obsolete Hide report menu 2024-05-07 00:48:12 +04:00
semantic-release-bot
a7ea203fad chore(release): 1.9.0-dev.7 [skip ci]
# [1.9.0-dev.7](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.6...v1.9.0-dev.7) (2024-05-02)

### Bug Fixes

* Use Java instead of Kotlin Regex to improve reliability ([#628](https://github.com/ReVanced/revanced-integrations/issues/628)) ([44c3cc4](44c3cc4636))
2024-05-02 19:58:35 +00:00
benjy3gg
44c3cc4636 fix: Use Java instead of Kotlin Regex to improve reliability (#628)
If Kotlin Regex would be used, then apps need to have the Kotlin libraries for Regex to work which isn't always the case.
2024-05-02 21:55:28 +02:00
semantic-release-bot
07fe660037 chore(release): 1.9.0-dev.6 [skip ci]
# [1.9.0-dev.6](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.5...v1.9.0-dev.6) (2024-04-29)

### Bug Fixes

* **YouTube - Hide keyword content:** Filter Shorts found in horizontal shelves ([75fa579](75fa5797f7))
2024-04-29 19:32:37 +00:00
LisoUseInAIKyrios
75fa5797f7 fix(YouTube - Hide keyword content): Filter Shorts found in horizontal shelves 2024-04-29 23:29:36 +04:00
semantic-release-bot
0d5c6e87d2 chore(release): 1.9.0-dev.5 [skip ci]
# [1.9.0-dev.5](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.4...v1.9.0-dev.5) (2024-04-28)

### Bug Fixes

* **YouTube - Hide Shorts components:** Hide Shorts in search result horizontal shelves ([#625](https://github.com/ReVanced/revanced-integrations/issues/625)) ([656ca17](656ca17ffc))
2024-04-28 18:02:59 +00:00
LisoUseInAIKyrios
656ca17ffc fix(YouTube - Hide Shorts components): Hide Shorts in search result horizontal shelves (#625) 2024-04-28 21:59:22 +04:00
semantic-release-bot
973e51ea1b chore(release): 1.9.0-dev.4 [skip ci]
# [1.9.0-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.3...v1.9.0-dev.4) (2024-04-23)

### Bug Fixes

* **YouTube - Settings:** Use same background color for about screen if Theme patch is not included ([4164ed3](4164ed3486))
2024-04-23 21:08:02 +00:00
LisoUseInAIKyrios
4164ed3486 fix(YouTube - Settings): Use same background color for about screen if Theme patch is not included 2024-04-24 01:04:51 +04:00
semantic-release-bot
5ed4292e2e chore(release): 1.9.0-dev.3 [skip ci]
# [1.9.0-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.2...v1.9.0-dev.3) (2024-04-23)

### Features

* **YouTube - Hide ads:** Add option to hide the 'Visit store' button on channel pages ([#622](https://github.com/ReVanced/revanced-integrations/issues/622)) ([9de566c](9de566ca02))
2024-04-23 17:34:30 +00:00
oSumAtrIX
9de566ca02 feat(YouTube - Hide ads): Add option to hide the 'Visit store' button on channel pages (#622) 2024-04-23 19:31:27 +02:00
semantic-release-bot
a9da29926a chore(release): 1.9.0-dev.2 [skip ci]
# [1.9.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.9.0-dev.1...v1.9.0-dev.2) (2024-04-23)

### Features

* **YouTube - Comments:** Add option to hide timestamp and emoji buttons ([#621](https://github.com/ReVanced/revanced-integrations/issues/621)) ([6e9e122](6e9e12235a))
2024-04-23 17:06:41 +00:00
LisoUseInAIKyrios
6e9e12235a feat(YouTube - Comments): Add option to hide timestamp and emoji buttons (#621) 2024-04-23 21:03:00 +04:00
oSumAtrIX
e86d73c8af chore: Bump dependencies 2024-04-23 18:47:12 +02:00
semantic-release-bot
89c534e95d chore(release): 1.9.0-dev.1 [skip ci]
# [1.9.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0...v1.9.0-dev.1) (2024-04-21)

### Bug Fixes

* **YouTube - Hide video action buttons:** Remove obsolete `hide Shop button` ([#618](https://github.com/ReVanced/revanced-integrations/issues/618)) ([a78c3ff](a78c3ff09e))

### Features

* **YouTube - Hide Shorts components:** Hide like / dislike button in video ads ([#619](https://github.com/ReVanced/revanced-integrations/issues/619)) ([b2b6b8c](b2b6b8c3d7))
2024-04-21 15:00:33 +00:00
LisoUseInAIKyrios
a78c3ff09e fix(YouTube - Hide video action buttons): Remove obsolete hide Shop button (#618) 2024-04-21 18:57:22 +04:00
LisoUseInAIKyrios
b2b6b8c3d7 feat(YouTube - Hide Shorts components): Hide like / dislike button in video ads (#619) 2024-04-21 18:55:19 +04:00
semantic-release-bot
4e64b690ab chore(release): 1.8.0 [skip ci]
# [1.8.0](https://github.com/ReVanced/revanced-integrations/compare/v1.7.0...v1.8.0) (2024-04-21)

### Bug Fixes

* Use correct hide playables setting key ([a2b1543](a2b15433cf))
* **YouTube - Disable suggested video end screen:** Require app restart ([38ae5aa](38ae5aac84))
* **YouTube - GmsCore support:** Prompt to disable battery optimizations, if not done already ([#601](https://github.com/ReVanced/revanced-integrations/issues/601)) ([c5c9de5](c5c9de500d))
* **YouTube - Hide ads:** rename `Hide paid content` to `Hide paid promotion label` ([#616](https://github.com/ReVanced/revanced-integrations/issues/616)) ([13dc172](13dc17288d))
* **YouTube - Hide keyword content:** Correctly hide content in the subscription tab ([c3bfa77](c3bfa77d62))
* **YouTube - Hide layout components:** Do not hide playlist shelf in library ([c5d38a7](c5d38a7e07))
* **YouTube - Hide layout components:** Hide horizontal tile shelves ([ba30869](ba308690cf))
* **YouTube - Hide load more button:** Include patch with `Hide layout components`, and hide button only in search feed  ([#600](https://github.com/ReVanced/revanced-integrations/issues/600)) ([c420891](c420891e3e))
* **YouTube - Hide Shorts components:** Correctly hide Shorts if navigation tab is changed using device back button ([#611](https://github.com/ReVanced/revanced-integrations/issues/611)) ([ffc3437](ffc3437843))
* **YouTube - Hide Shorts components:** Do not show Shorts suggestions in video player, if all hide Shorts options are enabled ([#613](https://github.com/ReVanced/revanced-integrations/issues/613)) ([c132670](c132670400))
* **YouTube - Hide Shorts components:** Hide paid promotion label ([3ce100c](3ce100ced5))
* **YouTube - Hide Shorts components:** Hide subscribe button in channel bar ([9938bbf](9938bbf0de))
* **YouTube - Hide Shorts components:** Hide suggested actions in incognito mode ([bba421d](bba421ddb6))
* **YouTube - Navigation bar hook:** Handle if search is active but hidden behind a maximized player ([cbccb46](cbccb46e63))
* **YouTube - Player flyout menu:** Add hide Lock screen menu ([#609](https://github.com/ReVanced/revanced-integrations/issues/609)) ([b2fe105](b2fe105199))
* **YouTube - Return YouTube Dislike:** Do not clip compact text when not using English ([eeaeb49](eeaeb49f2a))
* **YouTube - Return YouTube Dislike:** Do not show error toast if API success response contains new lines ([#612](https://github.com/ReVanced/revanced-integrations/issues/612)) ([9108205](9108205445))
* **YouTube - Settings:** Do not show a toast if migrating old unknown settings ([f2e15a2](f2e15a2e1f))
* **YouTube - Spoof device dimensions:** Warn about potential performance issues ([#617](https://github.com/ReVanced/revanced-integrations/issues/617)) ([786ac9d](786ac9d2b7))

### Features

* **YouTube - Hide layout components:** Add option to hide horizontal shelves ([#598](https://github.com/ReVanced/revanced-integrations/issues/598)) ([fedace0](fedace02fd))
* **YouTube - Hide layout components:** Hide playables ([d6cd550](d6cd550880))
* **YouTube - Hide Shorts components:** Hide `Shop`, `Location` and `Save sound to playlist` buttons ([#614](https://github.com/ReVanced/revanced-integrations/issues/614)) ([acfa3c9](acfa3c9886))
* **YouTube - Hide Shorts components:** Hide tagged products, hide search suggestions ([#615](https://github.com/ReVanced/revanced-integrations/issues/615)) ([0586fb7](0586fb70e3))
* **YouTube - Swipe controls:** Save and restore brightness and add auto-brightness toggle ([#610](https://github.com/ReVanced/revanced-integrations/issues/610)) ([1c8e2b2](1c8e2b2941))
* **YouTube:** Add 'About' preference to settings menu ([#608](https://github.com/ReVanced/revanced-integrations/issues/608)) ([b8f260e](b8f260ebd3))
2024-04-21 01:50:25 +00:00
oSumAtrIX
d03edb2750 chore: Merge branch dev to main (#603) 2024-04-21 03:47:15 +02:00
semantic-release-bot
d06b94cbe6 chore(release): 1.8.0-dev.20 [skip ci]
# [1.8.0-dev.20](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.19...v1.8.0-dev.20) (2024-04-21)

### Features

* **YouTube - Swipe controls:** Save and restore brightness and add auto-brightness toggle ([#610](https://github.com/ReVanced/revanced-integrations/issues/610)) ([1c8e2b2](1c8e2b2941))
2024-04-21 00:02:28 +00:00
MarcaD
1c8e2b2941 feat(YouTube - Swipe controls): Save and restore brightness and add auto-brightness toggle (#610)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-04-21 01:59:23 +02:00
semantic-release-bot
efd03012d0 chore(release): 1.8.0-dev.19 [skip ci]
# [1.8.0-dev.19](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.18...v1.8.0-dev.19) (2024-04-18)

### Bug Fixes

* **YouTube - Hide keyword content:** Correctly hide content in the subscription tab ([c3bfa77](c3bfa77d62))
2024-04-18 18:43:48 +00:00
LisoUseInAIKyrios
c3bfa77d62 fix(YouTube - Hide keyword content): Correctly hide content in the subscription tab 2024-04-18 22:40:26 +04:00
semantic-release-bot
3ff5dcd05f chore(release): 1.8.0-dev.18 [skip ci]
# [1.8.0-dev.18](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.17...v1.8.0-dev.18) (2024-04-18)

### Bug Fixes

* **YouTube - Spoof device dimensions:** Warn about potential performance issues ([#617](https://github.com/ReVanced/revanced-integrations/issues/617)) ([786ac9d](786ac9d2b7))
2024-04-18 13:21:46 +00:00
LisoUseInAIKyrios
786ac9d2b7 fix(YouTube - Spoof device dimensions): Warn about potential performance issues (#617) 2024-04-18 17:18:52 +04:00
semantic-release-bot
bcc9126107 chore(release): 1.8.0-dev.17 [skip ci]
# [1.8.0-dev.17](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.16...v1.8.0-dev.17) (2024-04-18)

### Bug Fixes

* **YouTube - Hide Shorts components:** Hide paid promotion label ([3ce100c](3ce100ced5))
2024-04-18 11:00:38 +00:00
LisoUseInAIKyrios
3ce100ced5 fix(YouTube - Hide Shorts components): Hide paid promotion label 2024-04-18 14:57:17 +04:00
semantic-release-bot
4cacbf6f2c chore(release): 1.8.0-dev.16 [skip ci]
# [1.8.0-dev.16](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.15...v1.8.0-dev.16) (2024-04-18)

### Bug Fixes

* **YouTube - Hide layout components:** Hide horizontal tile shelves ([ba30869](ba308690cf))
2024-04-18 08:39:17 +00:00
LisoUseInAIKyrios
ba308690cf fix(YouTube - Hide layout components): Hide horizontal tile shelves 2024-04-18 12:35:58 +04:00
semantic-release-bot
7cd0c6c3c1 chore(release): 1.8.0-dev.15 [skip ci]
# [1.8.0-dev.15](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.14...v1.8.0-dev.15) (2024-04-17)

### Features

* **YouTube:** Add 'About' preference to settings menu ([#608](https://github.com/ReVanced/revanced-integrations/issues/608)) ([b8f260e](b8f260ebd3))
2024-04-17 16:04:27 +00:00
LisoUseInAIKyrios
b8f260ebd3 feat(YouTube): Add 'About' preference to settings menu (#608)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-04-17 20:00:52 +04:00
semantic-release-bot
f5720f71a6 chore(release): 1.8.0-dev.14 [skip ci]
# [1.8.0-dev.14](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.13...v1.8.0-dev.14) (2024-04-17)

### Bug Fixes

* **YouTube - Hide Shorts components:** Hide subscribe button in channel bar ([9938bbf](9938bbf0de))
2024-04-17 10:04:02 +00:00
LisoUseInAIKyrios
9938bbf0de fix(YouTube - Hide Shorts components): Hide subscribe button in channel bar 2024-04-17 14:00:35 +04:00
semantic-release-bot
d60dcf98ab chore(release): 1.8.0-dev.13 [skip ci]
# [1.8.0-dev.13](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.12...v1.8.0-dev.13) (2024-04-16)

### Bug Fixes

* **YouTube - Hide Shorts components:** Hide suggested actions in incognito mode ([bba421d](bba421ddb6))
2024-04-16 02:46:53 +00:00
LisoUseInAIKyrios
bba421ddb6 fix(YouTube - Hide Shorts components): Hide suggested actions in incognito mode 2024-04-16 06:43:40 +04:00
semantic-release-bot
8e36a018f4 chore(release): 1.8.0-dev.12 [skip ci]
# [1.8.0-dev.12](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.11...v1.8.0-dev.12) (2024-04-15)

### Bug Fixes

* **YouTube - Hide ads:** rename `Hide paid content` to `Hide paid promotion label` ([#616](https://github.com/ReVanced/revanced-integrations/issues/616)) ([13dc172](13dc17288d))
2024-04-15 15:21:42 +00:00
LisoUseInAIKyrios
13dc17288d fix(YouTube - Hide ads): rename Hide paid content to Hide paid promotion label (#616) 2024-04-15 19:18:48 +04:00
semantic-release-bot
92c591735a chore(release): 1.8.0-dev.11 [skip ci]
# [1.8.0-dev.11](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.10...v1.8.0-dev.11) (2024-04-14)

### Bug Fixes

* **YouTube - Return YouTube Dislike:** Do not show error toast if API success response contains new lines ([#612](https://github.com/ReVanced/revanced-integrations/issues/612)) ([9108205](9108205445))
2024-04-14 19:40:10 +00:00
LisoUseInAIKyrios
9108205445 fix(YouTube - Return YouTube Dislike): Do not show error toast if API success response contains new lines (#612) 2024-04-14 23:37:17 +04:00
semantic-release-bot
e9cd898651 chore(release): 1.8.0-dev.10 [skip ci]
# [1.8.0-dev.10](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.9...v1.8.0-dev.10) (2024-04-14)

### Features

* **YouTube - Hide Shorts components:** Hide tagged products, hide search suggestions ([#615](https://github.com/ReVanced/revanced-integrations/issues/615)) ([0586fb7](0586fb70e3))
2024-04-14 14:57:08 +00:00
LisoUseInAIKyrios
0586fb70e3 feat(YouTube - Hide Shorts components): Hide tagged products, hide search suggestions (#615) 2024-04-14 18:53:48 +04:00
semantic-release-bot
79a3a44961 chore(release): 1.8.0-dev.9 [skip ci]
# [1.8.0-dev.9](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.8...v1.8.0-dev.9) (2024-04-14)

### Bug Fixes

* Use correct hide playables setting key ([a2b1543](a2b15433cf))
2024-04-14 09:33:39 +00:00
LisoUseInAIKyrios
a2b15433cf fix: Use correct hide playables setting key 2024-04-14 13:30:41 +04:00
semantic-release-bot
96f42b3892 chore(release): 1.8.0-dev.8 [skip ci]
# [1.8.0-dev.8](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.7...v1.8.0-dev.8) (2024-04-14)

### Features

* **YouTube - Hide layout components:** Hide playables ([d6cd550](d6cd550880))
2024-04-14 00:10:19 +00:00
oSumAtrIX
d6cd550880 feat(YouTube - Hide layout components): Hide playables 2024-04-14 02:06:41 +02:00
semantic-release-bot
5b4fd770de chore(release): 1.8.0-dev.7 [skip ci]
# [1.8.0-dev.7](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.6...v1.8.0-dev.7) (2024-04-12)

### Features

* **YouTube - Hide Shorts components:** Hide `Shop`, `Location` and `Save sound to playlist` buttons ([#614](https://github.com/ReVanced/revanced-integrations/issues/614)) ([acfa3c9](acfa3c9886))
2024-04-12 19:46:41 +00:00
LisoUseInAIKyrios
acfa3c9886 feat(YouTube - Hide Shorts components): Hide Shop, Location and Save sound to playlist buttons (#614) 2024-04-12 23:43:51 +04:00
semantic-release-bot
4bd805e54d chore(release): 1.8.0-dev.6 [skip ci]
# [1.8.0-dev.6](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.5...v1.8.0-dev.6) (2024-04-12)

### Bug Fixes

* **YouTube - Hide Shorts components:** Do not show Shorts suggestions in video player, if all hide Shorts options are enabled ([#613](https://github.com/ReVanced/revanced-integrations/issues/613)) ([c132670](c132670400))
2024-04-12 16:59:13 +00:00
LisoUseInAIKyrios
c132670400 fix(YouTube - Hide Shorts components): Do not show Shorts suggestions in video player, if all hide Shorts options are enabled (#613) 2024-04-12 20:55:57 +04:00
semantic-release-bot
4fd3cc906d chore(release): 1.8.0-dev.5 [skip ci]
# [1.8.0-dev.5](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.4...v1.8.0-dev.5) (2024-04-10)

### Bug Fixes

* **YouTube - Return YouTube Dislike:** Do not clip compact text when not using English ([eeaeb49](eeaeb49f2a))
2024-04-10 14:33:37 +00:00
LisoUseInAIKyrios
eeaeb49f2a fix(YouTube - Return YouTube Dislike): Do not clip compact text when not using English 2024-04-10 18:29:20 +04:00
semantic-release-bot
dba707800e chore(release): 1.8.0-dev.4 [skip ci]
# [1.8.0-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.3...v1.8.0-dev.4) (2024-04-10)

### Bug Fixes

* **YouTube - Hide Shorts components:** Correctly hide Shorts if navigation tab is changed using device back button ([#611](https://github.com/ReVanced/revanced-integrations/issues/611)) ([ffc3437](ffc3437843))
2024-04-10 08:32:23 +00:00
LisoUseInAIKyrios
ffc3437843 fix(YouTube - Hide Shorts components): Correctly hide Shorts if navigation tab is changed using device back button (#611) 2024-04-10 12:29:23 +04:00
semantic-release-bot
4939a22da1 chore(release): 1.8.0-dev.3 [skip ci]
# [1.8.0-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.2...v1.8.0-dev.3) (2024-04-09)

### Bug Fixes

* **YouTube - Settings:** Do not show a toast if migrating old unknown settings ([f2e15a2](f2e15a2e1f))
2024-04-09 21:02:25 +00:00
LisoUseInAIKyrios
f2e15a2e1f fix(YouTube - Settings): Do not show a toast if migrating old unknown settings 2024-04-10 00:59:23 +04:00
LisoUseInAIKyrios
eba73c5947 chore(YouTube): Fix typos, simplify some strings for translating 2024-04-07 23:55:33 +04:00
semantic-release-bot
c0764e9046 chore(release): 1.8.0-dev.2 [skip ci]
# [1.8.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.8.0-dev.1...v1.8.0-dev.2) (2024-04-07)

### Bug Fixes

* **YouTube - Hide layout components:** Do not hide playlist shelf in library ([c5d38a7](c5d38a7e07))
2024-04-07 16:17:56 +00:00
LisoUseInAIKyrios
c5d38a7e07 fix(YouTube - Hide layout components): Do not hide playlist shelf in library 2024-04-07 20:14:29 +04:00
LisoUseInAIKyrios
f6de32884e chore: Add check in missing from merge 2024-04-06 22:49:49 +04:00
semantic-release-bot
628c25e808 chore(release): 1.8.0-dev.1 [skip ci]
# [1.8.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.7.1-dev.4...v1.8.0-dev.1) (2024-04-06)

### Bug Fixes

* **YouTube - GmsCore support:** Prompt to disable battery optimizations, if not done already ([#601](https://github.com/ReVanced/revanced-integrations/issues/601)) ([c5c9de5](c5c9de500d))

### Features

* **YouTube - Hide layout components:** Add option to hide horizontal shelves ([#598](https://github.com/ReVanced/revanced-integrations/issues/598)) ([fedace0](fedace02fd))
2024-04-06 18:48:59 +00:00
LisoUseInAIKyrios
c5c9de500d fix(YouTube - GmsCore support): Prompt to disable battery optimizations, if not done already (#601)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-04-06 20:46:07 +02:00
nullptr
fedace02fd feat(YouTube - Hide layout components): Add option to hide horizontal shelves (#598)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-04-06 22:41:50 +04:00
semantic-release-bot
bddcc97392 chore(release): 1.7.1-dev.4 [skip ci]
## [1.7.1-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.7.1-dev.3...v1.7.1-dev.4) (2024-04-04)

### Bug Fixes

* **YouTube - Hide load more button:** Include patch with `Hide layout components`, and hide button only in search feed  ([#600](https://github.com/ReVanced/revanced-integrations/issues/600)) ([c420891](c420891e3e))
2024-04-04 21:12:44 +00:00
nullptr
c420891e3e fix(YouTube - Hide load more button): Include patch with Hide layout components, and hide button only in search feed (#600) 2024-04-05 01:09:42 +04:00
semantic-release-bot
33da670984 chore(release): 1.7.1-dev.3 [skip ci]
## [1.7.1-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.7.1-dev.2...v1.7.1-dev.3) (2024-04-04)

### Bug Fixes

* **YouTube - Player flyout menu:** Add hide Lock screen menu ([#609](https://github.com/ReVanced/revanced-integrations/issues/609)) ([b2fe105](b2fe105199))
2024-04-04 06:49:49 +00:00
LisoUseInAIKyrios
b2fe105199 fix(YouTube - Player flyout menu): Add hide Lock screen menu (#609) 2024-04-04 10:46:54 +04:00
semantic-release-bot
20162f977b chore(release): 1.7.1-dev.2 [skip ci]
## [1.7.1-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.7.1-dev.1...v1.7.1-dev.2) (2024-04-03)

### Bug Fixes

* **YouTube - Navigation bar hook:** Handle if search is active but hidden behind a maximized player ([cbccb46](cbccb46e63))
2024-04-03 20:25:32 +00:00
LisoUseInAIKyrios
cbccb46e63 fix(YouTube - Navigation bar hook): Handle if search is active but hidden behind a maximized player 2024-04-04 00:21:51 +04:00
semantic-release-bot
eaa2e1139c chore(release): 1.7.1-dev.1 [skip ci]
## [1.7.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.7.0...v1.7.1-dev.1) (2024-04-01)

### Bug Fixes

* **YouTube - Disable suggested video end screen:** Require app restart ([38ae5aa](38ae5aac84))
2024-04-01 13:14:01 +00:00
LisoUseInAIKyrios
38ae5aac84 fix(YouTube - Disable suggested video end screen): Require app restart 2024-04-01 17:11:07 +04:00
semantic-release-bot
530ba18364 chore(release): 1.7.0 [skip ci]
# [1.7.0](https://github.com/ReVanced/revanced-integrations/compare/v1.6.0...v1.7.0) (2024-03-30)

### Features

* **YouTube - Alternative thumbnails:** Selectively enable for home / subscription / search ([#593](https://github.com/ReVanced/revanced-integrations/issues/593)) ([4c81e96](4c81e96a74))
* **YouTube - GmsCore:** Require ignoring battery optimizations ([#599](https://github.com/ReVanced/revanced-integrations/issues/599)) ([fd2a9d0](fd2a9d0287))
2024-03-30 19:43:31 +00:00
oSumAtrIX
6c6c636a43 chore: Merge branch dev to main (#597) 2024-03-30 20:40:26 +01:00
semantic-release-bot
22e2163753 chore(release): 1.7.0-dev.2 [skip ci]
# [1.7.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.7.0-dev.1...v1.7.0-dev.2) (2024-03-30)

### Features

* **YouTube - GmsCore:** Require ignoring battery optimizations ([#599](https://github.com/ReVanced/revanced-integrations/issues/599)) ([fd2a9d0](fd2a9d0287))
2024-03-30 18:55:12 +00:00
oSumAtrIX
fd2a9d0287 feat(YouTube - GmsCore): Require ignoring battery optimizations (#599) 2024-03-30 19:52:10 +01:00
semantic-release-bot
f11d291c3d chore(release): 1.7.0-dev.1 [skip ci]
# [1.7.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.6.0...v1.7.0-dev.1) (2024-03-29)

### Features

* **YouTube - Alternative thumbnails:** Selectively enable for home / subscription / search ([#593](https://github.com/ReVanced/revanced-integrations/issues/593)) ([4c81e96](4c81e96a74))
2024-03-29 09:33:22 +00:00
LisoUseInAIKyrios
4c81e96a74 feat(YouTube - Alternative thumbnails): Selectively enable for home / subscription / search (#593)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-03-29 13:29:46 +04:00
semantic-release-bot
ae42f27196 chore(release): 1.6.0 [skip ci]
# [1.6.0](https://github.com/ReVanced/revanced-integrations/compare/v1.5.0...v1.6.0) (2024-03-28)

### Bug Fixes

* **YouTube - Hide layout components:** Correctly hide community posts ([fbc8066](fbc8066773))
* **YouTube - Navigation buttons:** Hide subscriptions tab ([623d11b](623d11b8e8))

### Features

* **GmsCore support:** Open download link if possible ([#596](https://github.com/ReVanced/revanced-integrations/issues/596)) ([999727d](999727d5e6))
2024-03-28 23:19:45 +00:00
oSumAtrIX
9761a110c4 chore: Merge branch dev to main (#594) 2024-03-29 00:16:24 +01:00
semantic-release-bot
e502bad344 chore(release): 1.6.0-dev.1 [skip ci]
# [1.6.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.5.1-dev.2...v1.6.0-dev.1) (2024-03-28)

### Features

* **GmsCore support:** Open download link if possible ([#596](https://github.com/ReVanced/revanced-integrations/issues/596)) ([999727d](999727d5e6))
2024-03-28 22:38:36 +00:00
oSumAtrIX
999727d5e6 feat(GmsCore support): Open download link if possible (#596)
Some browsers would fail to treat links properly when opened as a query and launch a web search.
2024-03-28 23:35:07 +01:00
semantic-release-bot
7ba5581054 chore(release): 1.5.1-dev.2 [skip ci]
## [1.5.1-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.5.1-dev.1...v1.5.1-dev.2) (2024-03-28)

### Bug Fixes

* **YouTube - Navigation buttons:** Hide subscriptions tab ([623d11b](623d11b8e8))
2024-03-28 10:00:23 +00:00
LisoUseInAIKyrios
623d11b8e8 fix(YouTube - Navigation buttons): Hide subscriptions tab 2024-03-28 13:57:22 +04:00
semantic-release-bot
ffccc8a238 chore(release): 1.5.1-dev.1 [skip ci]
## [1.5.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.5.0...v1.5.1-dev.1) (2024-03-27)

### Bug Fixes

* **YouTube - Hide layout components:** Correctly hide community posts ([fbc8066](fbc8066773))
2024-03-27 21:46:20 +00:00
oSumAtrIX
fbc8066773 fix(YouTube - Hide layout components): Correctly hide community posts 2024-03-27 22:43:15 +01:00
semantic-release-bot
9f3853ce5e chore(release): 1.5.0 [skip ci]
# [1.5.0](https://github.com/ReVanced/revanced-integrations/compare/v1.4.0...v1.5.0) (2024-03-27)

### Bug Fixes

* Check index of pattern in string instead of the other way around ([96a1e46](96a1e4680d))
* Handle custom preferences ([#586](https://github.com/ReVanced/revanced-integrations/issues/586)) ([ad477e4](ad477e4859))
* Revert AGP dependency update ([ab07a56](ab07a563b9))
* **TikTok:** Hook application context earlier to prevent crash ([#588](https://github.com/ReVanced/revanced-integrations/issues/588)) ([9ac2d63](9ac2d63489))
* **YouTube - Announcements:** Only compare ID to not show same announcement after a fix-up ([#579](https://github.com/ReVanced/revanced-integrations/issues/579)) ([5d14f53](5d14f53acd))
* **YouTube - Client spoof:**  Allow playback for links with timestamp ([#582](https://github.com/ReVanced/revanced-integrations/issues/582)) ([eee3f35](eee3f352c5))
* **YouTube - Disable suggested video end screen:** Disable by default to fix autoplay issues ([#578](https://github.com/ReVanced/revanced-integrations/issues/578)) ([b9c1eec](b9c1eec69f))
* **YouTube - Downloads:** Use new task context ([#583](https://github.com/ReVanced/revanced-integrations/issues/583)) ([468dfac](468dfac054))
* **YouTube - HDR auto brightness:** Remove non functional and obsolete patch ([#585](https://github.com/ReVanced/revanced-integrations/issues/585)) ([b060732](b060732e86))
* **YouTube - Hide ads:** Prevent app crash if hiding fullscreen ads is not possible ([#590](https://github.com/ReVanced/revanced-integrations/issues/590)) ([4ec955f](4ec955fd01))
* **YouTube - Hide layout components:** Correctly hide Join button ([b945e2f](b945e2f44b))
* **YouTube - Hide seekbar:** Use original seekbar color if Theme patch is not included ([#580](https://github.com/ReVanced/revanced-integrations/issues/580)) ([8d48a90](8d48a90a8b))
* **YouTube - Hide Shorts components:** Correctly hide join button ([b7a8995](b7a8995f79))
* **YouTube:** Fix video playback by switching to ReVanced GmsCore vendor ([#589](https://github.com/ReVanced/revanced-integrations/issues/589)) ([6e947e2](6e947e24c2))

### Features

* **YouTube - Downloads:** Use external downloader when selecting 'Download' in home feed flyout menu ([#587](https://github.com/ReVanced/revanced-integrations/issues/587)) ([254da31](254da31d16))
* **YouTube - External downloader:** Add ability to use in-app download button ([771a0de](771a0de3bc))
* **YouTube - Hide layout components:** Filter home/search results by keywords ([#584](https://github.com/ReVanced/revanced-integrations/issues/584)) ([0cbad98](0cbad98205))
* **YouTube - Hide Shorts components:** Hide like and dislike buttons ([2a08e5a](2a08e5a98e))
* **YouTube - Hide Shorts components:** Hide sound metadata label ([46d8ef6](46d8ef6f88))
* **YouTube - Hide Shorts components:** Hide title and full video link label ([59165de](59165de801))
* **YouTube - Hide Shorts components:** Selectively hide Shorts for home / subscription / search ([#592](https://github.com/ReVanced/revanced-integrations/issues/592)) ([1ee99aa](1ee99aa6f0))
2024-03-27 18:39:03 +00:00
oSumAtrIX
7760a39602 chore: Merge branch dev to main (#577) 2024-03-27 19:35:42 +01:00
semantic-release-bot
633e365466 chore(release): 1.5.0-dev.10 [skip ci]
# [1.5.0-dev.10](https://github.com/ReVanced/revanced-integrations/compare/v1.5.0-dev.9...v1.5.0-dev.10) (2024-03-27)

### Features

* **YouTube - Hide Shorts components:** Selectively hide Shorts for home / subscription / search ([#592](https://github.com/ReVanced/revanced-integrations/issues/592)) ([1ee99aa](1ee99aa6f0))
2024-03-27 13:47:23 +00:00
LisoUseInAIKyrios
1ee99aa6f0 feat(YouTube - Hide Shorts components): Selectively hide Shorts for home / subscription / search (#592) 2024-03-27 17:44:01 +04:00
oSumAtrIX
4ae7d5b178 refactor: Move integrations to correct package 2024-03-27 14:16:48 +01:00
semantic-release-bot
910b03e9a3 chore(release): 1.5.0-dev.9 [skip ci]
# [1.5.0-dev.9](https://github.com/ReVanced/revanced-integrations/compare/v1.5.0-dev.8...v1.5.0-dev.9) (2024-03-27)

### Bug Fixes

* Check index of pattern in string instead of the other way around ([96a1e46](96a1e4680d))
* **YouTube - Hide layout components:** Correctly hide Join button ([b945e2f](b945e2f44b))
* **YouTube - Hide Shorts components:** Correctly hide join button ([b7a8995](b7a8995f79))
* **YouTube:** Fix video playback by switching to ReVanced GmsCore vendor ([#589](https://github.com/ReVanced/revanced-integrations/issues/589)) ([6e947e2](6e947e24c2))

### Features

* **YouTube - Hide layout components:** Filter home/search results by keywords ([#584](https://github.com/ReVanced/revanced-integrations/issues/584)) ([0cbad98](0cbad98205))
* **YouTube - Hide Shorts components:** Hide like and dislike buttons ([2a08e5a](2a08e5a98e))
* **YouTube - Hide Shorts components:** Hide sound metadata label ([46d8ef6](46d8ef6f88))
* **YouTube - Hide Shorts components:** Hide title and full video link label ([59165de](59165de801))
2024-03-27 13:12:43 +00:00
LisoUseInAIKyrios
0cbad98205 feat(YouTube - Hide layout components): Filter home/search results by keywords (#584)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-03-27 14:07:36 +01:00
oSumAtrIX
6e947e24c2 fix(YouTube): Fix video playback by switching to ReVanced GmsCore vendor (#589) 2024-03-27 14:07:36 +01:00
oSumAtrIX
96a1e4680d fix: Check index of pattern in string instead of the other way around 2024-03-27 14:07:35 +01:00
oSumAtrIX
46d8ef6f88 feat(YouTube - Hide Shorts components): Hide sound metadata label 2024-03-26 04:46:32 +01:00
oSumAtrIX
b7a8995f79 fix(YouTube - Hide Shorts components): Correctly hide join button 2024-03-26 04:46:32 +01:00
oSumAtrIX
59165de801 feat(YouTube - Hide Shorts components): Hide title and full video link label 2024-03-26 02:18:36 +01:00
oSumAtrIX
2a08e5a98e feat(YouTube - Hide Shorts components): Hide like and dislike buttons 2024-03-26 02:18:10 +01:00
oSumAtrIX
b945e2f44b fix(YouTube - Hide layout components): Correctly hide Join button 2024-03-26 01:36:41 +01:00
oSumAtrIX
bed8f9f640 chore: Remove unnecessary consumer parameter (#591)
The query parameter was introduced for future use. It turns out that it is unnecessary and can be removed therefor.
2024-03-25 21:11:36 +01:00
semantic-release-bot
32a14efe6f chore(release): 1.5.0-dev.8 [skip ci]
# [1.5.0-dev.8](https://github.com/ReVanced/revanced-integrations/compare/v1.5.0-dev.7...v1.5.0-dev.8) (2024-03-25)

### Bug Fixes

* **YouTube - Hide ads:** Prevent app crash if hiding fullscreen ads is not possible ([#590](https://github.com/ReVanced/revanced-integrations/issues/590)) ([4ec955f](4ec955fd01))
2024-03-25 16:16:13 +00:00
LisoUseInAIKyrios
4ec955fd01 fix(YouTube - Hide ads): Prevent app crash if hiding fullscreen ads is not possible (#590) 2024-03-25 20:13:06 +04:00
semantic-release-bot
f47495ccd8 chore(release): 1.5.0-dev.7 [skip ci]
# [1.5.0-dev.7](https://github.com/ReVanced/revanced-integrations/compare/v1.5.0-dev.6...v1.5.0-dev.7) (2024-03-18)

### Bug Fixes

* **TikTok:** Hook application context earlier to prevent crash ([#588](https://github.com/ReVanced/revanced-integrations/issues/588)) ([9ac2d63](9ac2d63489))
2024-03-18 00:24:14 +00:00
LisoUseInAIKyrios
9ac2d63489 fix(TikTok): Hook application context earlier to prevent crash (#588) 2024-03-18 04:21:16 +04:00
semantic-release-bot
74b6ab8712 chore(release): 1.5.0-dev.6 [skip ci]
# [1.5.0-dev.6](https://github.com/ReVanced/revanced-integrations/compare/v1.5.0-dev.5...v1.5.0-dev.6) (2024-03-16)

### Bug Fixes

* Handle custom preferences ([#586](https://github.com/ReVanced/revanced-integrations/issues/586)) ([ad477e4](ad477e4859))
2024-03-16 15:57:16 +00:00
oSumAtrIX
ad477e4859 fix: Handle custom preferences (#586)
* fix: Handle custom preferences
2024-03-16 19:53:53 +04:00
semantic-release-bot
6f1ac5d073 chore(release): 1.5.0-dev.5 [skip ci]
# [1.5.0-dev.5](https://github.com/ReVanced/revanced-integrations/compare/v1.5.0-dev.4...v1.5.0-dev.5) (2024-03-15)

### Features

* **YouTube - Downloads:** Use external downloader when selecting 'Download' in home feed flyout menu ([#587](https://github.com/ReVanced/revanced-integrations/issues/587)) ([254da31](254da31d16))
2024-03-15 12:35:56 +00:00
LisoUseInAIKyrios
254da31d16 feat(YouTube - Downloads): Use external downloader when selecting 'Download' in home feed flyout menu (#587)
fix(YouTube - Downloads): Use external downloader when selecting 'Download' from home feed flyout menu
2024-03-15 16:32:48 +04:00
oSumAtrIX
7c40c947ef chore: Log intent to be opened by chooser 2024-03-12 13:55:35 +01:00
semantic-release-bot
4be65be414 chore(release): 1.5.0-dev.4 [skip ci]
# [1.5.0-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.5.0-dev.3...v1.5.0-dev.4) (2024-03-11)

### Bug Fixes

* **YouTube - HDR auto brightness:** Remove non functional and obsolete patch ([#585](https://github.com/ReVanced/revanced-integrations/issues/585)) ([b060732](b060732e86))
2024-03-11 09:36:16 +00:00
LisoUseInAIKyrios
b060732e86 fix(YouTube - HDR auto brightness): Remove non functional and obsolete patch (#585) 2024-03-11 13:33:08 +04:00
semantic-release-bot
da8ec49589 chore(release): 1.5.0-dev.3 [skip ci]
# [1.5.0-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.5.0-dev.2...v1.5.0-dev.3) (2024-03-09)

### Bug Fixes

* **YouTube - Disable suggested video end screen:** Disable by default to fix autoplay issues ([#578](https://github.com/ReVanced/revanced-integrations/issues/578)) ([b9c1eec](b9c1eec69f))
2024-03-09 04:20:20 +00:00
oSumAtrIX
b9c1eec69f fix(YouTube - Disable suggested video end screen): Disable by default to fix autoplay issues (#578) 2024-03-09 05:17:27 +01:00
semantic-release-bot
d6032216e4 chore(release): 1.5.0-dev.2 [skip ci]
# [1.5.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.5.0-dev.1...v1.5.0-dev.2) (2024-03-08)

### Bug Fixes

* **YouTube - Downloads:** Use new task context ([#583](https://github.com/ReVanced/revanced-integrations/issues/583)) ([468dfac](468dfac054))
2024-03-08 05:13:03 +00:00
LisoUseInAIKyrios
468dfac054 fix(YouTube - Downloads): Use new task context (#583)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-03-08 09:10:06 +04:00
semantic-release-bot
75a494e09b chore(release): 1.5.0-dev.1 [skip ci]
# [1.5.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.4.1-dev.4...v1.5.0-dev.1) (2024-03-04)

### Features

* **YouTube - External downloader:** Add ability to use in-app download button ([771a0de](771a0de3bc))
2024-03-04 19:40:00 +00:00
oSumAtrIX
771a0de3bc feat(YouTube - External downloader): Add ability to use in-app download button 2024-03-04 20:36:24 +01:00
semantic-release-bot
6aacd1a225 chore(release): 1.4.1-dev.4 [skip ci]
## [1.4.1-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.4.1-dev.3...v1.4.1-dev.4) (2024-03-04)

### Bug Fixes

* **YouTube - Hide seekbar:** Use original seekbar color if Theme patch is not included ([#580](https://github.com/ReVanced/revanced-integrations/issues/580)) ([8d48a90](8d48a90a8b))
2024-03-04 11:47:49 +00:00
LisoUseInAIKyrios
8d48a90a8b fix(YouTube - Hide seekbar): Use original seekbar color if Theme patch is not included (#580) 2024-03-04 15:44:56 +04:00
semantic-release-bot
6188fa75c6 chore(release): 1.4.1-dev.3 [skip ci]
## [1.4.1-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.4.1-dev.2...v1.4.1-dev.3) (2024-03-04)

### Bug Fixes

* Revert AGP dependency update ([ab07a56](ab07a563b9))
2024-03-04 09:42:57 +00:00
LisoUseInAIKyrios
ab07a563b9 fix: Revert AGP dependency update 2024-03-04 13:33:09 +04:00
semantic-release-bot
c7ae3355a1 chore(release): 1.4.1-dev.2 [skip ci]
## [1.4.1-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.4.1-dev.1...v1.4.1-dev.2) (2024-03-04)

### Bug Fixes

* **YouTube - Client spoof:**  Allow playback for links with timestamp ([#582](https://github.com/ReVanced/revanced-integrations/issues/582)) ([eee3f35](eee3f352c5))
2024-03-04 06:55:30 +00:00
Hoàng Gia Bảo
eee3f352c5 fix(YouTube - Client spoof): Allow playback for links with timestamp (#582) 2024-03-04 07:52:18 +01:00
oSumAtrIX
36aa6c9aa8 chore: Lint code 2024-03-03 00:26:34 +01:00
semantic-release-bot
e5aa30ebe5 chore(release): 1.4.1-dev.1 [skip ci]
## [1.4.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.4.0...v1.4.1-dev.1) (2024-03-02)

### Bug Fixes

* **YouTube - Announcements:** Only compare ID to not show same announcement after a fix-up ([#579](https://github.com/ReVanced/revanced-integrations/issues/579)) ([5d14f53](5d14f53acd))
2024-03-02 23:07:44 +00:00
oSumAtrIX
5d14f53acd fix(YouTube - Announcements): Only compare ID to not show same announcement after a fix-up (#579)
Previously, the announcement content was hashed and compared with the locally saved hash. Sometimes announcements are fixed up, altering the hash, so instead, compare the ID.
2024-03-03 00:04:38 +01:00
oSumAtrIX
67673d089f build: Bump dependencies 2024-03-02 20:51:10 +01:00
semantic-release-bot
07482094a3 chore(release): 1.4.0 [skip ci]
# [1.4.0](https://github.com/ReVanced/revanced-integrations/compare/v1.3.2...v1.4.0) (2024-03-02)

### Bug Fixes

* **Twitter - Hide ads:** Hide ads in search ([b40687c](b40687c5c7))
* **YouTube - Disable suggested end screen:** Reliably hide end screen ([b4ab5f6](b4ab5f65d5))
* **YouTube - Hide ads:** Do not show error toast and hide full screen ads ([#569](https://github.com/ReVanced/revanced-integrations/issues/569)) ([0b0d46f](0b0d46f518))
* **YouTube - Hide Shorts:** Hide Shorts in feed when using tablet layout ([#572](https://github.com/ReVanced/revanced-integrations/issues/572)) ([7f5e7df](7f5e7dfd68))
* **YouTube - Spoof app version:** Remove broken versions ([#573](https://github.com/ReVanced/revanced-integrations/issues/573)) ([fb4aab7](fb4aab792a))

### Features

* **Sync for Reddit:** Add `Fix /s/ links` patch ([a8c82ad](a8c82ad27b))
* **X:** Add `Open links as query` patch ([#570](https://github.com/ReVanced/revanced-integrations/issues/570)) ([95ca632](95ca632d40))
* **YouTube - Change start page:** Add more start pages ([27421fb](27421fb578))
* **YouTube - Spoof app version:** Add target versions ([#574](https://github.com/ReVanced/revanced-integrations/issues/574)) ([da57fb9](da57fb9523))
* **YouTube:** Reorganize settings menu ([#571](https://github.com/ReVanced/revanced-integrations/issues/571)) ([eea4a48](eea4a48cd5))
2024-03-02 19:00:17 +00:00
oSumAtrIX
7fcb244cfb chore: Merge branch dev to main (#567) 2024-03-02 19:57:05 +01:00
semantic-release-bot
4ec76435d5 chore(release): 1.4.0-dev.9 [skip ci]
# [1.4.0-dev.9](https://github.com/ReVanced/revanced-integrations/compare/v1.4.0-dev.8...v1.4.0-dev.9) (2024-03-02)

### Features

* **YouTube:** Reorganize settings menu ([#571](https://github.com/ReVanced/revanced-integrations/issues/571)) ([eea4a48](eea4a48cd5))
2024-03-02 07:30:41 +00:00
LisoUseInAIKyrios
eea4a48cd5 feat(YouTube): Reorganize settings menu (#571)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-03-02 08:27:16 +01:00
semantic-release-bot
db7e24994b chore(release): 1.4.0-dev.8 [skip ci]
# [1.4.0-dev.8](https://github.com/ReVanced/revanced-integrations/compare/v1.4.0-dev.7...v1.4.0-dev.8) (2024-03-02)

### Features

* **YouTube - Spoof app version:** Add target versions ([#574](https://github.com/ReVanced/revanced-integrations/issues/574)) ([da57fb9](da57fb9523))
2024-03-02 07:13:02 +00:00
kitadai31
da57fb9523 feat(YouTube - Spoof app version): Add target versions (#574) 2024-03-02 08:09:49 +01:00
semantic-release-bot
486911ff2e chore(release): 1.4.0-dev.7 [skip ci]
# [1.4.0-dev.7](https://github.com/ReVanced/revanced-integrations/compare/v1.4.0-dev.6...v1.4.0-dev.7) (2024-02-29)

### Bug Fixes

* **YouTube - Spoof app version:** Remove broken versions ([#573](https://github.com/ReVanced/revanced-integrations/issues/573)) ([fb4aab7](fb4aab792a))
2024-02-29 02:38:26 +00:00
LisoUseInAIKyrios
fb4aab792a fix(YouTube - Spoof app version): Remove broken versions (#573) 2024-02-29 06:35:16 +04:00
semantic-release-bot
c5383d6ea2 chore(release): 1.4.0-dev.6 [skip ci]
# [1.4.0-dev.6](https://github.com/ReVanced/revanced-integrations/compare/v1.4.0-dev.5...v1.4.0-dev.6) (2024-02-28)

### Bug Fixes

* **YouTube - Hide Shorts:** Hide Shorts in feed when using tablet layout ([#572](https://github.com/ReVanced/revanced-integrations/issues/572)) ([7f5e7df](7f5e7dfd68))
2024-02-28 11:14:50 +00:00
LisoUseInAIKyrios
7f5e7dfd68 fix(YouTube - Hide Shorts): Hide Shorts in feed when using tablet layout (#572) 2024-02-28 15:11:47 +04:00
semantic-release-bot
b1437d43f5 chore(release): 1.4.0-dev.5 [skip ci]
# [1.4.0-dev.5](https://github.com/ReVanced/revanced-integrations/compare/v1.4.0-dev.4...v1.4.0-dev.5) (2024-02-25)

### Bug Fixes

* **Twitter - Hide ads:** Hide ads in search ([b40687c](b40687c5c7))
* **YouTube - Disable suggested end screen:** Reliably hide end screen ([b4ab5f6](b4ab5f65d5))
2024-02-25 18:30:43 +00:00
oSumAtrIX
b4ab5f65d5 fix(YouTube - Disable suggested end screen): Reliably hide end screen 2024-02-25 19:27:02 +01:00
oSumAtrIX
b40687c5c7 fix(Twitter - Hide ads): Hide ads in search 2024-02-25 07:11:20 +01:00
oSumAtrIX
381fbc6b7b chore: Rename issue templates 2024-02-25 03:37:51 +01:00
oSumAtrIX
80973c77c0 ci: Fix indentation in workflow 2024-02-24 01:14:43 +01:00
oSumAtrIX
216b0060e1 ci: Fix PR builds by adding missing GitHub token 2024-02-23 02:23:49 +01:00
oSumAtrIX
0dc61d9da4 build: Sign release artifacts 2024-02-22 06:13:17 +01:00
oSumAtrIX
4d0db8c4fb ci: Split release into a separate PR build workflow
Because the release workflow already runs on dev and main, it is not necessary to also trigger it for PRs.
2024-02-22 04:23:53 +01:00
semantic-release-bot
9b23f77abe chore(release): 1.4.0-dev.4 [skip ci]
# [1.4.0-dev.4](https://github.com/ReVanced/revanced-integrations/compare/v1.4.0-dev.3...v1.4.0-dev.4) (2024-02-21)

### Features

* **X:** Add `Open links as query` patch ([#570](https://github.com/ReVanced/revanced-integrations/issues/570)) ([95ca632](95ca632d40))
2024-02-21 03:25:53 +00:00
dic1911
95ca632d40 feat(X): Add Open links as query patch (#570)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-02-21 04:22:32 +01:00
oSumAtrIX
608c520a00 chore: Update comment 2024-02-20 04:35:38 +01:00
oSumAtrIX
2cee15ad88 chore: Refactor build files
This commit improves the build files by using Gradle version catalogs and modernizes the Android build files. Additionally dependencies have been updated and some source files refactored.
2024-02-20 04:19:11 +01:00
oSumAtrIX
6ee90ef788 build: Bump Gradle 2024-02-14 02:41:03 +01:00
semantic-release-bot
2f5973d4a0 chore(release): 1.4.0-dev.3 [skip ci]
# [1.4.0-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.4.0-dev.2...v1.4.0-dev.3) (2024-02-13)

### Bug Fixes

* **YouTube - Hide ads:** Do not show error toast and hide full screen ads ([#569](https://github.com/ReVanced/revanced-integrations/issues/569)) ([0b0d46f](0b0d46f518))
2024-02-13 16:12:08 +00:00
LisoUseInAIKyrios
0b0d46f518 fix(YouTube - Hide ads): Do not show error toast and hide full screen ads (#569) 2024-02-13 20:08:57 +04:00
semantic-release-bot
b866036715 chore(release): 1.4.0-dev.2 [skip ci]
# [1.4.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.4.0-dev.1...v1.4.0-dev.2) (2024-02-09)

### Features

* **Sync for Reddit:** Add `Fix /s/ links` patch ([a8c82ad](a8c82ad27b))
2024-02-09 02:45:31 +00:00
oSumAtrIX
a8c82ad27b feat(Sync for Reddit): Add Fix /s/ links patch 2024-02-09 03:36:04 +01:00
semantic-release-bot
85504f6f65 chore(release): 1.4.0-dev.1 [skip ci]
# [1.4.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.3.2...v1.4.0-dev.1) (2024-02-09)

### Features

* **YouTube - Change start page:** Add more start pages ([27421fb](27421fb578))
2024-02-09 00:18:03 +00:00
oSumAtrIX
27421fb578 feat(YouTube - Change start page): Add more start pages 2024-02-08 21:10:27 +01:00
semantic-release-bot
f43b71be45 chore(release): 1.3.2 [skip ci]
## [1.3.2](https://github.com/ReVanced/revanced-integrations/compare/v1.3.1...v1.3.2) (2024-02-08)

### Bug Fixes

* **YouTube - Litho Filter:** Ignore null buffers ([#565](https://github.com/ReVanced/revanced-integrations/issues/565)) ([f72faa7](f72faa761c))
2024-02-08 19:18:27 +00:00
oSumAtrIX
bd37368c13 chore: Merge branch dev to main (#566) 2024-02-08 20:15:35 +01:00
semantic-release-bot
cdd8db766e chore(release): 1.3.2-dev.1 [skip ci]
## [1.3.2-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.3.1...v1.3.2-dev.1) (2024-02-07)

### Bug Fixes

* **YouTube - Litho Filter:** Ignore null buffers ([#565](https://github.com/ReVanced/revanced-integrations/issues/565)) ([f72faa7](f72faa761c))
2024-02-07 15:28:43 +00:00
LisoUseInAIKyrios
f72faa761c fix(YouTube - Litho Filter): Ignore null buffers (#565) 2024-02-07 19:25:46 +04:00
semantic-release-bot
48b968f3be chore(release): 1.3.1 [skip ci]
## [1.3.1](https://github.com/ReVanced/revanced-integrations/compare/v1.3.0...v1.3.1) (2024-02-07)

### Bug Fixes

* **YouTube - Litho Filter:** Do not show toast if protobuffer is empty or null ([#563](https://github.com/ReVanced/revanced-integrations/issues/563)) ([ea5748c](ea5748ca8e))
2024-02-07 11:50:45 +00:00
oSumAtrIX
9996b2dc02 chore: Merge branch dev to main (#564) 2024-02-07 12:47:47 +01:00
semantic-release-bot
1a4c61d301 chore(release): 1.3.1-dev.1 [skip ci]
## [1.3.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.3.0...v1.3.1-dev.1) (2024-02-07)

### Bug Fixes

* **YouTube - Litho Filter:** Do not show toast if protobuffer is empty or null ([#563](https://github.com/ReVanced/revanced-integrations/issues/563)) ([ea5748c](ea5748ca8e))
2024-02-07 11:26:35 +00:00
LisoUseInAIKyrios
ea5748ca8e fix(YouTube - Litho Filter): Do not show toast if protobuffer is empty or null (#563) 2024-02-07 15:23:40 +04:00
semantic-release-bot
04c10d8a00 chore(release): 1.3.0 [skip ci]
# [1.3.0](https://github.com/ReVanced/revanced-integrations/compare/v1.2.1...v1.3.0) (2024-02-05)

### Bug Fixes

* **TikTok:** Add missing settings strings ([#561](https://github.com/ReVanced/revanced-integrations/issues/561)) ([04621f8](04621f8a36))
* **YouTube - ReturnYouTubeDislike:** Do not show more than 1 connection toasts if the API is broken ([#560](https://github.com/ReVanced/revanced-integrations/issues/560)) ([2c73209](2c7320937a))
* **YouTube:** Correctly show channel page on tablet devices ([#558](https://github.com/ReVanced/revanced-integrations/issues/558)) ([d0edafb](d0edafb1af))

### Features

* **YouTube - Custom filter:** Custom filtering of the protocol buffer ([#562](https://github.com/ReVanced/revanced-integrations/issues/562)) ([0eb7f3f](0eb7f3f3af))
2024-02-05 19:27:33 +00:00
oSumAtrIX
26345522a7 chore: Merge branch dev to main (#559) 2024-02-05 20:24:42 +01:00
semantic-release-bot
ba3e602569 chore(release): 1.3.0-dev.1 [skip ci]
# [1.3.0-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.2.2-dev.3...v1.3.0-dev.1) (2024-02-02)

### Features

* **YouTube - Custom filter:** Custom filtering of the protocol buffer ([#562](https://github.com/ReVanced/revanced-integrations/issues/562)) ([0eb7f3f](0eb7f3f3af))
2024-02-02 08:18:03 +00:00
LisoUseInAIKyrios
0eb7f3f3af feat(YouTube - Custom filter): Custom filtering of the protocol buffer (#562) 2024-02-02 12:15:24 +04:00
semantic-release-bot
fd3ae89918 chore(release): 1.2.2-dev.3 [skip ci]
## [1.2.2-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.2.2-dev.2...v1.2.2-dev.3) (2024-01-31)

### Bug Fixes

* **TikTok:** Add missing settings strings ([#561](https://github.com/ReVanced/revanced-integrations/issues/561)) ([04621f8](04621f8a36))
2024-01-31 08:18:21 +00:00
LisoUseInAIKyrios
04621f8a36 fix(TikTok): Add missing settings strings (#561) 2024-01-31 12:15:26 +04:00
semantic-release-bot
38dd645e11 chore(release): 1.2.2-dev.2 [skip ci]
## [1.2.2-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.2.2-dev.1...v1.2.2-dev.2) (2024-01-29)

### Bug Fixes

* **YouTube - ReturnYouTubeDislike:** Do not show more than 1 connection toasts if the API is broken ([#560](https://github.com/ReVanced/revanced-integrations/issues/560)) ([2c73209](2c7320937a))
2024-01-29 15:36:39 +00:00
LisoUseInAIKyrios
2c7320937a fix(YouTube - ReturnYouTubeDislike): Do not show more than 1 connection toasts if the API is broken (#560) 2024-01-29 19:33:51 +04:00
semantic-release-bot
f1e0365487 chore(release): 1.2.2-dev.1 [skip ci]
## [1.2.2-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.2.1...v1.2.2-dev.1) (2024-01-28)

### Bug Fixes

* **YouTube:** Correctly show channel page on tablet devices ([#558](https://github.com/ReVanced/revanced-integrations/issues/558)) ([d0edafb](d0edafb1af))
2024-01-28 11:59:30 +00:00
LisoUseInAIKyrios
d0edafb1af fix(YouTube): Correctly show channel page on tablet devices (#558) 2024-01-28 12:56:38 +01:00
semantic-release-bot
192faf04ad chore(release): 1.2.1 [skip ci]
## [1.2.1](https://github.com/ReVanced/revanced-integrations/compare/v1.2.0...v1.2.1) (2024-01-28)

### Bug Fixes

* **Twitch:** Correct patch resources to fix build ([fe03467](fe03467839))
2024-01-28 10:53:19 +00:00
oSumAtrIX
c17eae2342 chore: Merge branch dev to main (#557) 2024-01-28 11:50:34 +01:00
semantic-release-bot
090abcd274 chore(release): 1.2.1-dev.1 [skip ci]
## [1.2.1-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.2.0...v1.2.1-dev.1) (2024-01-27)

### Bug Fixes

* **Twitch:** Correct patch resources to fix build ([fe03467](fe03467839))
2024-01-27 14:51:39 +00:00
oSumAtrIX
fe03467839 fix(Twitch): Correct patch resources to fix build 2024-01-27 15:48:59 +01:00
semantic-release-bot
9f70d10f4a chore(release): 1.2.0 [skip ci]
# [1.2.0](https://github.com/ReVanced/revanced-integrations/compare/v1.1.0...v1.2.0) (2024-01-27)

### Bug Fixes

* **YouTube - DeArrow:** Correctly handle http status 304 ([3e380df](3e380dfce2))
* **YouTube - Hide ads:** Do not leave screen at launch non interactable when hiding fullscreen ads ([fbdb490](fbdb4908ea))
* **YouTube - Hide ads:** Fix dimmed screen at launch by not filtering fullscreen ads ([1a1f44d](1a1f44d235))
* **YouTube - Settings:** Correctly initialize default values ([752544b](752544b962))
* **YouTube - SponsorBlock:** Update categories after import JSON import ([211f954](211f9542e8))

### Features

* Move strings to resources for localization ([#420](https://github.com/ReVanced/revanced-integrations/issues/420)) ([7ae10be](7ae10be507))
* **Tiktok - Playback speed:** Remember playback speed ([#543](https://github.com/ReVanced/revanced-integrations/issues/543)) ([21ced14](21ced14791))
* **YouTube - Spoof app version:** Add `18.09.39` to restore library tab ([#552](https://github.com/ReVanced/revanced-integrations/issues/552)) ([3bd48dc](3bd48dca09))
* **YouTube:** Support versions `18.48.39`, `18.49.37`, `19.01.34` ([#547](https://github.com/ReVanced/revanced-integrations/issues/547)) ([eaaa6fb](eaaa6fbd20))
2024-01-27 02:12:56 +00:00
oSumAtrIX
3100a7899c chore: Merge branch dev to main (#548) 2024-01-27 03:09:26 +01:00
semantic-release-bot
27315bf23f chore(release): 1.2.0-dev.3 [skip ci]
# [1.2.0-dev.3](https://github.com/ReVanced/revanced-integrations/compare/v1.2.0-dev.2...v1.2.0-dev.3) (2024-01-27)

### Features

* Move strings to resources for localization ([#420](https://github.com/ReVanced/revanced-integrations/issues/420)) ([7ae10be](7ae10be507))
* **YouTube - Spoof app version:** Add `18.09.39` to restore library tab ([#552](https://github.com/ReVanced/revanced-integrations/issues/552)) ([3bd48dc](3bd48dca09))
2024-01-27 01:55:45 +00:00
LisoUseInAIKyrios
3bd48dca09 feat(YouTube - Spoof app version): Add 18.09.39 to restore library tab (#552)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-01-27 02:53:12 +01:00
LisoUseInAIKyrios
7ae10be507 feat: Move strings to resources for localization (#420)
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2024-01-27 02:53:11 +01:00
oSumAtrIX
e455262725 ci: Use latest Node.js LTS version to fix builds 2024-01-26 22:52:36 +01:00
oSumAtrIX
c7d5cc384f ci: Add dependabot 2024-01-26 01:45:43 +01:00
oSumAtrIX
75e42c2d15 build: Bump dependencies 2024-01-26 01:42:02 +01:00
semantic-release-bot
13066f4c4a chore(release): 1.2.0-dev.2 [skip ci]
# [1.2.0-dev.2](https://github.com/ReVanced/revanced-integrations/compare/v1.2.0-dev.1...v1.2.0-dev.2) (2024-01-16)

### Features

* **YouTube:** Support versions `18.48.39`, `18.49.37`, `19.01.34` ([#547](https://github.com/ReVanced/revanced-integrations/issues/547)) ([eaaa6fb](eaaa6fbd20))
2024-01-16 21:00:52 +00:00
oSumAtrIX
eaaa6fbd20 feat(YouTube): Support versions 18.48.39, 18.49.37, 19.01.34 (#547)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
2024-01-17 00:58:07 +04:00
171 changed files with 7567 additions and 14819 deletions

3
.editorconfig Normal file
View File

@@ -0,0 +1,3 @@
[*.{kt,kts}]
ktlint_code_style = intellij_idea
ktlint_standard_no-wildcard-imports = disabled

View File

@@ -70,7 +70,7 @@ body:
Before creating a new bug report, please keep the following in mind:
- **Do not submit a duplicate bug report**: You can review existing bug reports [here](https://github.com/ReVanced/revanced-integrations/labels/Bug%20report).
- **Do not submit a duplicate bug report**: Search for existing bug reports [here](https://github.com/ReVanced/revanced-integrations/issues?q=label%3A%22Bug+report%22).
- **Do not use the issue page for support**: If you need help or have questions, check out other platforms on [revanced.app](https://revanced.app).
- type: textarea
attributes:
@@ -101,7 +101,7 @@ body:
label: Acknowledgements
description: Your bug report will be closed if you don't follow the checklist below.
options:
- label: This issue is not a duplicate of an existing bug report.
- label: I have checked all open and closed bug reports and this is not a duplicate.
required: true
- label: I have chosen an appropriate title.
required: true

View File

@@ -70,7 +70,7 @@ body:
Before creating a new feature request, please keep the following in mind:
- **Do not submit a duplicate feature request**: You can review existing feature requests [here](https://github.com/ReVanced/revanced-integrations/labels/Feature%20request).
- **Do not submit a duplicate feature request**: Search for existing feature requests [here](https://github.com/ReVanced/revanced-integrations/issues?q=label%3A%22Feature+request%22).
- **Do not use the issue page for support**: If you need help or have questions, check out other platforms on [revanced.app](https://revanced.app).
- type: textarea
attributes:
@@ -97,7 +97,7 @@ body:
label: Acknowledgements
description: Your feature request will be closed if you don't follow the checklist below.
options:
- label: This issue is not a duplicate of an existing feature request.
- label: I have checked all open and closed feature requests and this is not a duplicate.
required: true
- label: I have chosen an appropriate title.
required: true

22
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
version: 2
updates:
- package-ecosystem: github-actions
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly
- package-ecosystem: npm
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly
- package-ecosystem: gradle
labels: []
directory: /
target-branch: dev
schedule:
interval: monthly

View File

@@ -0,0 +1,28 @@
name: Build pull request
on:
workflow_dispatch:
pull_request:
branches:
- dev
jobs:
release:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache Gradle
uses: burrunan/gradle-cache-action@v1
- name: Setup Java
run: echo "JAVA_HOME=$JAVA_HOME_17_X64" >> $GITHUB_ENV
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew build --no-daemon

View File

@@ -6,10 +6,6 @@ on:
branches:
- main
- dev
pull_request:
branches:
- main
- dev
jobs:
release:
@@ -24,27 +20,33 @@ jobs:
persist-credentials: false
fetch-depth: 0
- name: Cache Node modules
uses: actions/cache@v3
with:
path: |
node_modules
key: npm-${{ hashFiles('package-lock.json') }}
- name: Cache Gradle
uses: burrunan/gradle-cache-action@v1
- name: Setup Java
run: echo "JAVA_HOME=$JAVA_HOME_17_X64" >> $GITHUB_ENV
- name: Build with Gradle
- name: Build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew build clean
- name: Setup semantic-release
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "lts/*"
cache: 'npm'
- name: Install dependencies
run: npm install
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
fingerprint: ${{ env.GPG_FINGERPRINT }}
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}

15
.gitignore vendored
View File

@@ -1,17 +1,12 @@
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
/.idea
/.vscode
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
/.idea
/.vscode
/*.log
node_modules
local.properties
node_modules

View File

@@ -25,7 +25,7 @@
{
"assets": [
{
"path": "app/build/outputs/apk/release/*.apk"
"path": "app/build/outputs/apk/release/revanced-integrations*"
}
],
successComment: false

File diff suppressed because it is too large Load Diff

2
app/.gitignore vendored
View File

@@ -1 +1 @@
/build
/build

View File

@@ -1,18 +1,27 @@
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin)
publishing
}
android {
compileSdk = 33
namespace = "app.revanced.integrations"
compileSdk = 33
applicationVariants.all {
outputs.all {
this as com.android.build.gradle.internal.api.ApkVariantOutputImpl
outputFileName = "${rootProject.name}-$versionName.apk"
}
}
defaultConfig {
applicationId = "app.revanced.integrations"
minSdk = 23
targetSdk = 33
multiDexEnabled = false
versionName = project.version as String
versionName = version as String
}
buildTypes {
@@ -20,32 +29,52 @@ android {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
"proguard-rules.pro",
)
}
applicationVariants.all {
outputs.all {
this as com.android.build.gradle.internal.api.ApkVariantOutputImpl
}
outputFileName = "${rootProject.name}-$versionName.apk"
}
}
}
compileOptions {
sourceCompatibility(JavaVersion.VERSION_11)
targetCompatibility(JavaVersion.VERSION_11)
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}
}
dependencies {
compileOnly(project(mapOf("path" to ":dummy")))
compileOnly("androidx.annotation:annotation:1.7.0")
compileOnly("androidx.appcompat:appcompat:1.7.0-alpha03")
compileOnly("com.squareup.okhttp3:okhttp:5.0.0-alpha.11")
compileOnly("com.squareup.retrofit2:retrofit:2.9.0")
compileOnly(libs.appcompat)
compileOnly(libs.annotation)
compileOnly(libs.okhttp)
compileOnly(libs.retrofit)
compileOnly(project(":stub"))
}
tasks.register("publish") { dependsOn("build") }
tasks {
// Because the signing plugin doesn't support signing APKs, do it manually.
register("sign") {
group = "signing"
dependsOn(build)
doLast {
val outputDirectory = layout.buildDirectory.dir("outputs/apk/release").get().asFile
val integrationsApk = outputDirectory.resolve("${rootProject.name}-$version.apk")
org.gradle.security.internal.gnupg.GnupgSignatoryFactory().createSignatory(project).sign(
integrationsApk.inputStream(),
outputDirectory.resolve("${integrationsApk.name}.asc").outputStream(),
)
}
}
// Needed by gradle-semantic-release-plugin.
// Tracking: https://github.com/KengoTODA/gradle-semantic-release-plugin/issues/435
publish {
dependsOn(build)
dependsOn("sign")
}
}

View File

@@ -1,27 +1,6 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-dontobfuscate
-dontoptimize
-keepattributes * # https://www.guardsquare.com/manual/configuration/attributes
-keepattributes *
-keep class app.revanced.** {
*;
}

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
</manifest>

View File

@@ -0,0 +1,145 @@
package app.revanced.integrations.shared;
import static app.revanced.integrations.shared.StringRef.str;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.SearchManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.PowerManager;
import android.provider.Settings;
import androidx.annotation.RequiresApi;
import java.net.MalformedURLException;
import java.net.URL;
/**
* @noinspection unused
*/
public class GmsCoreSupport {
private static final String GMS_CORE_PACKAGE_NAME
= getGmsCoreVendorGroupId() + ".android.gms";
private static final Uri GMS_CORE_PROVIDER
= Uri.parse("content://" + getGmsCoreVendorGroupId() + ".android.gsf.gservices/prefix");
private static final String DONT_KILL_MY_APP_LINK
= "https://dontkillmyapp.com";
private static void open(String queryOrLink) {
Intent intent;
try {
// Check if queryOrLink is a valid URL.
new URL(queryOrLink);
intent = new Intent(Intent.ACTION_VIEW, Uri.parse(queryOrLink));
} catch (MalformedURLException e) {
intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, queryOrLink);
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Utils.getContext().startActivity(intent);
// Gracefully exit, otherwise the broken app will continue to run.
System.exit(0);
}
private static void showBatteryOptimizationDialog(Activity context,
String dialogMessageRef,
String positiveButtonStringRef,
DialogInterface.OnClickListener onPositiveClickListener) {
// Use a delay to allow the activity to finish initializing.
// Otherwise, if device is in dark mode the dialog is shown with wrong color scheme.
Utils.runOnMainThreadDelayed(() -> {
new AlertDialog.Builder(context)
.setIconAttribute(android.R.attr.alertDialogIcon)
.setTitle(str("gms_core_dialog_title"))
.setMessage(str(dialogMessageRef))
.setPositiveButton(str(positiveButtonStringRef), onPositiveClickListener)
// Allow using back button to skip the action, just in case the check can never be satisfied.
.setCancelable(true)
.show();
}, 100);
}
/**
* Injection point.
*/
@RequiresApi(api = Build.VERSION_CODES.N)
public static void checkGmsCore(Activity context) {
try {
// Verify GmsCore is installed.
try {
PackageManager manager = context.getPackageManager();
manager.getPackageInfo(GMS_CORE_PACKAGE_NAME, PackageManager.GET_ACTIVITIES);
} catch (PackageManager.NameNotFoundException exception) {
Logger.printInfo(() -> "GmsCore was not found");
// Cannot show a dialog and must show a toast,
// because on some installations the app crashes before a dialog can be displayed.
Utils.showToastLong(str("gms_core_toast_not_installed_message"));
open(getGmsCoreDownload());
return;
}
// Check if GmsCore is running in the background.
try (var client = context.getContentResolver().acquireContentProviderClient(GMS_CORE_PROVIDER)) {
if (client == null) {
Logger.printInfo(() -> "GmsCore is not running in the background");
showBatteryOptimizationDialog(context,
"gms_core_dialog_not_whitelisted_not_allowed_in_background_message",
"gms_core_dialog_open_website_text",
(dialog, id) -> open(DONT_KILL_MY_APP_LINK));
return;
}
}
// Check if GmsCore is whitelisted from battery optimizations.
if (batteryOptimizationsEnabled(context)) {
Logger.printInfo(() -> "GmsCore is not whitelisted from battery optimizations");
showBatteryOptimizationDialog(context,
"gms_core_dialog_not_whitelisted_using_battery_optimizations_message",
"gms_core_dialog_continue_text",
(dialog, id) -> openGmsCoreDisableBatteryOptimizationsIntent(context));
}
} catch (Exception ex) {
Logger.printException(() -> "checkGmsCore failure", ex);
}
}
@SuppressLint("BatteryLife") // Permission is part of GmsCore
private static void openGmsCoreDisableBatteryOptimizationsIntent(Activity activity) {
Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.fromParts("package", GMS_CORE_PACKAGE_NAME, null));
activity.startActivityForResult(intent, 0);
}
/**
* @return If GmsCore is not whitelisted from battery optimizations.
*/
private static boolean batteryOptimizationsEnabled(Context context) {
var powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
return !powerManager.isIgnoringBatteryOptimizations(GMS_CORE_PACKAGE_NAME);
}
private static String getGmsCoreDownload() {
final var vendorGroupId = getGmsCoreVendorGroupId();
//noinspection SwitchStatementWithTooFewBranches
switch (vendorGroupId) {
case "app.revanced":
return "https://github.com/revanced/gmscore/releases/latest";
default:
return vendorGroupId + ".android.gms";
}
}
// Modified by a patch. Do not touch.
private static String getGmsCoreVendorGroupId() {
return "app.revanced";
}
}

View File

@@ -5,14 +5,15 @@ import static app.revanced.integrations.shared.settings.BaseSettings.DEBUG_STACK
import static app.revanced.integrations.shared.settings.BaseSettings.DEBUG_TOAST_ON_ERROR;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.integrations.shared.settings.BaseSettings;
import java.io.PrintWriter;
import java.io.StringWriter;
import app.revanced.integrations.shared.settings.BaseSettings;
public class Logger {
/**
@@ -24,7 +25,7 @@ public class Logger {
/**
* @return For outer classes, this returns {@link Class#getSimpleName()}.
* For inner, static, or anonymous classes, this returns the simple name of the enclosing class.<br>
* For static, inner, or anonymous classes, this returns the simple name of the enclosing class.
* <br>
* For example, each of these classes return 'SomethingView':
* <code>
@@ -38,13 +39,13 @@ public class Logger {
String fullClassName = selfClass.getName();
final int dollarSignIndex = fullClassName.indexOf('$');
if (dollarSignIndex == -1) {
return selfClass.getSimpleName(); // already an outer class
if (dollarSignIndex < 0) {
return selfClass.getSimpleName(); // Already an outer class.
}
// class is inner, static, or anonymous
// parse the simple name full name
// a class with no package returns index of -1, but incrementing gives index zero which is correct
// Class is inner, static, or anonymous.
// Parse the simple name full name.
// A class with no package returns index of -1, but incrementing gives index zero which is correct.
final int simpleClassNameStartIndex = fullClassName.lastIndexOf('.') + 1;
return fullClassName.substring(simpleClassNameStartIndex, dollarSignIndex);
}
@@ -137,11 +138,19 @@ public class Logger {
}
/**
* Logging to use if {@link BaseSettings#DEBUG} or {@link Utils#context} may not be initialized.
* Always logs even if Debugging is not enabled.
* Logging to use if {@link BaseSettings#DEBUG} or {@link Utils#getContext()} may not be initialized.
* Normally this method should not be used.
*/
public static void initializationError(@NonNull Class<?> callingClass, @NonNull String message, @Nullable Exception ex) {
public static void initializationInfo(@NonNull Class<?> callingClass, @NonNull String message) {
Log.i(REVANCED_LOG_PREFIX + callingClass.getSimpleName(), message);
}
/**
* Logging to use if {@link BaseSettings#DEBUG} or {@link Utils#getContext()} may not be initialized.
* Normally this method should not be used.
*/
public static void initializationException(@NonNull Class<?> callingClass, @NonNull String message,
@Nullable Exception ex) {
Log.e(REVANCED_LOG_PREFIX + callingClass.getSimpleName(), message, ex);
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,101 @@
package app.revanced.integrations.shared.settings;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.integrations.shared.Logger;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Locale;
import java.util.Objects;
/**
* If an Enum value is removed or changed, any saved or imported data using the
* non-existent value will be reverted to the default value
* (the event is logged, but no user error is displayed).
*
* All saved JSON text is converted to lowercase to keep the output less obnoxious.
*/
@SuppressWarnings("unused")
public class EnumSetting<T extends Enum<?>> extends Setting<T> {
public EnumSetting(String key, T defaultValue) {
super(key, defaultValue);
}
public EnumSetting(String key, T defaultValue, boolean rebootApp) {
super(key, defaultValue, rebootApp);
}
public EnumSetting(String key, T defaultValue, boolean rebootApp, boolean includeWithImportExport) {
super(key, defaultValue, rebootApp, includeWithImportExport);
}
public EnumSetting(String key, T defaultValue, String userDialogMessage) {
super(key, defaultValue, userDialogMessage);
}
public EnumSetting(String key, T defaultValue, Availability availability) {
super(key, defaultValue, availability);
}
public EnumSetting(String key, T defaultValue, boolean rebootApp, String userDialogMessage) {
super(key, defaultValue, rebootApp, userDialogMessage);
}
public EnumSetting(String key, T defaultValue, boolean rebootApp, Availability availability) {
super(key, defaultValue, rebootApp, availability);
}
public EnumSetting(String key, T defaultValue, boolean rebootApp, String userDialogMessage, Availability availability) {
super(key, defaultValue, rebootApp, userDialogMessage, availability);
}
public EnumSetting(@NonNull String key, @NonNull T defaultValue, boolean rebootApp, boolean includeWithImportExport, @Nullable String userDialogMessage, @Nullable Availability availability) {
super(key, defaultValue, rebootApp, includeWithImportExport, userDialogMessage, availability);
}
@Override
protected void load() {
value = preferences.getEnum(key, defaultValue);
}
@Override
protected T readFromJSON(JSONObject json, String importExportKey) throws JSONException {
String enumName = json.getString(importExportKey);
try {
return getEnumFromString(enumName);
} catch (IllegalArgumentException ex) {
// Info level to allow removing enum values in the future without showing any user errors.
Logger.printInfo(() -> "Using default, and ignoring unknown enum value: " + enumName, ex);
return defaultValue;
}
}
@Override
protected void writeToJSON(JSONObject json, String importExportKey) throws JSONException {
// Use lowercase to keep the output less ugly.
json.put(importExportKey, value.name().toLowerCase(Locale.ENGLISH));
}
@NonNull
private T getEnumFromString(String enumName) {
//noinspection ConstantConditions
for (Enum<?> value : defaultValue.getClass().getEnumConstants()) {
if (value.name().equalsIgnoreCase(enumName)) {
// noinspection unchecked
return (T) value;
}
}
throw new IllegalArgumentException("Unknown enum value: " + enumName);
}
@Override
protected void setValueFromString(@NonNull String newValue) {
value = getEnumFromString(Objects.requireNonNull(newValue));
}
@Override
public void save(@NonNull T newValue) {
// Must set before saving to preferences (otherwise importing fails to update UI correctly).
value = Objects.requireNonNull(newValue);
preferences.saveEnumAsString(key, newValue);
}
@NonNull
@Override
public T get() {
return value;
}
}

View File

@@ -97,7 +97,7 @@ public abstract class Setting<T> {
@NonNull
private static List<Setting<?>> allLoadedSettingsSorted() {
Collections.sort(SETTINGS, (Setting<?> o1, Setting<?> o2) -> o1.key.compareTo(o2.key));
return Collections.unmodifiableList(SETTINGS);
return allLoadedSettings();
}
/**
@@ -131,6 +131,7 @@ public abstract class Setting<T> {
/**
* Confirmation message to display, if the user tries to change the setting from the default value.
* Currently this works only for Boolean setting types.
*/
@Nullable
public final StringRef userDialogMessage;
@@ -206,10 +207,9 @@ public abstract class Setting<T> {
/**
* Migrate a setting value if the path is renamed but otherwise the old and new settings are identical.
*/
public static void migrateOldSettingToNew(@NonNull Setting<?> oldSetting, @NonNull Setting newSetting) {
public static <T> void migrateOldSettingToNew(@NonNull Setting<T> oldSetting, @NonNull Setting<T> newSetting) {
if (!oldSetting.isSetToDefault()) {
Logger.printInfo(() -> "Migrating old setting value: " + oldSetting + " into replacement setting: " + newSetting);
//noinspection unchecked
newSetting.save(oldSetting.value);
oldSetting.resetToDefault();
}
@@ -224,6 +224,7 @@ public abstract class Setting<T> {
if (!oldPrefs.preferences.contains(settingKey)) {
return; // Nothing to do.
}
Object newValue = setting.get();
final Object migratedValue;
if (setting instanceof BooleanSetting) {
@@ -238,13 +239,17 @@ public abstract class Setting<T> {
migratedValue = oldPrefs.getString(settingKey, (String) newValue);
} else {
Logger.printException(() -> "Unknown setting: " + setting);
// Remove otherwise it'll show a toast on every launch
oldPrefs.preferences.edit().remove(settingKey).apply();
return;
}
oldPrefs.preferences.edit().remove(settingKey).apply(); // Remove the old setting.
if (migratedValue.equals(newValue)) {
Logger.printDebug(() -> "Value does not need migrating: " + settingKey);
return; // Old value is already equal to the new setting value.
}
Logger.printDebug(() -> "Migrating old preference value into current preference: " + settingKey);
//noinspection unchecked
setting.save(migratedValue);
@@ -324,6 +329,7 @@ public abstract class Setting<T> {
}
/**
* @param importExportKey The JSON key. The JSONObject parameter will contain data for this key.
* @return the value stored using the import/export key. Do not set any values in this method.
*/
protected abstract T readFromJSON(JSONObject json, String importExportKey) throws JSONException;

View File

@@ -7,6 +7,8 @@ import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.*;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.integrations.shared.Logger;
import app.revanced.integrations.shared.Utils;
import app.revanced.integrations.shared.settings.BooleanSetting;
@@ -14,10 +16,7 @@ import app.revanced.integrations.shared.settings.Setting;
import static app.revanced.integrations.shared.StringRef.str;
/**
*
*
* @noinspection deprecation, DataFlowIssue , unused */
@SuppressWarnings({"unused", "deprecation"})
public abstract class AbstractPreferenceFragment extends PreferenceFragment {
/**
* Indicates that if a preference changes,
@@ -25,6 +24,13 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
*/
public static boolean settingImportInProgress;
/**
* Confirm and restart dialog button text and title.
* Set by subclasses if Strings cannot be added as a resource.
*/
@Nullable
protected static String restartDialogButtonText, restartDialogTitle, confirmDialogTitle;
/**
* Used to prevent showing reboot dialog, if user cancels a setting user dialog.
*/
@@ -76,14 +82,19 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
if (identifier == 0) return;
addPreferencesFromResource(identifier);
Utils.sortPreferenceGroups(getPreferenceScreen());
}
private void showSettingUserDialogConfirmation(SwitchPreference switchPref, BooleanSetting setting) {
final var context = getContext();
Utils.verifyOnMainThread();
final var context = getContext();
if (confirmDialogTitle == null) {
confirmDialogTitle = str("revanced_settings_confirm_user_dialog_title");
}
showingUserDialogMessage = true;
new AlertDialog.Builder(context)
.setTitle(str("revanced_settings_confirm_user_dialog_title"))
.setTitle(confirmDialogTitle)
.setMessage(setting.userDialogMessage.toString())
.setPositiveButton(android.R.string.ok, (dialog, id) -> {
if (setting.rebootApp) {
@@ -138,47 +149,60 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
}
/**
* Updates a UI Preference with the {@link Setting} that backs it.
* Handles syncing a UI Preference with the {@link Setting} that backs it.
* If needed, subclasses can override this to handle additional UI Preference types.
*
* @param applySettingToPreference If true, then apply {@link Setting} -> Preference.
* If false, then apply {@link Setting} <- Preference.
*/
protected void syncSettingWithPreference(@NonNull Preference pref,
@NonNull Setting<?> setting,
boolean applySettingToPreference) {
if (pref instanceof SwitchPreference) {
SwitchPreference switchPref = (SwitchPreference) pref;
BooleanSetting boolSetting = (BooleanSetting) setting;
if (applySettingToPreference) {
switchPref.setChecked(boolSetting.get());
} else {
BooleanSetting.privateSetValue(boolSetting, switchPref.isChecked());
}
} else if (pref instanceof EditTextPreference) {
EditTextPreference editPreference = (EditTextPreference) pref;
if (applySettingToPreference) {
editPreference.setText(setting.get().toString());
} else {
Setting.privateSetValueFromString(setting, editPreference.getText());
}
} else if (pref instanceof ListPreference) {
ListPreference listPref = (ListPreference) pref;
if (applySettingToPreference) {
listPref.setValue(setting.get().toString());
} else {
Setting.privateSetValueFromString(setting, listPref.getValue());
}
updateListPreferenceSummary(listPref, setting);
} else {
Logger.printException(() -> "Setting cannot be handled: " + pref.getClass() + ": " + pref);
}
}
/**
* Updates a UI Preference with the {@link Setting} that backs it.
*
* @param syncSetting If the UI should be synced {@link Setting} <-> Preference
* @param applySettingToPreference If true, then apply {@link Setting} -> Preference.
* If false, then apply {@link Setting} <- Preference.
*/
protected void updatePreference(@NonNull Preference pref, @NonNull Setting<?> setting,
boolean syncSetting, boolean applySettingToPreference) {
private void updatePreference(@NonNull Preference pref, @NonNull Setting<?> setting,
boolean syncSetting, boolean applySettingToPreference) {
if (!syncSetting && applySettingToPreference) {
throw new IllegalArgumentException();
}
if (syncSetting) {
if (pref instanceof SwitchPreference) {
SwitchPreference switchPref = (SwitchPreference) pref;
BooleanSetting boolSetting = (BooleanSetting) setting;
if (applySettingToPreference) {
switchPref.setChecked(boolSetting.get());
} else {
BooleanSetting.privateSetValue(boolSetting, switchPref.isChecked());
}
} else if (pref instanceof EditTextPreference) {
EditTextPreference editPreference = (EditTextPreference) pref;
if (applySettingToPreference) {
editPreference.setText(setting.get().toString());
} else {
Setting.privateSetValueFromString(setting, editPreference.getText());
}
} else if (pref instanceof ListPreference) {
ListPreference listPref = (ListPreference) pref;
if (applySettingToPreference) {
listPref.setValue(setting.get().toString());
} else {
Setting.privateSetValueFromString(setting, listPref.getValue());
}
updateListPreferenceSummary(listPref, setting);
} else {
Logger.printException(() -> "Setting cannot be handled: " + pref.getClass() + ": " + pref);
return;
}
syncSettingWithPreference(pref, setting, applySettingToPreference);
}
updatePreferenceAvailability(pref, setting);
}
@@ -200,12 +224,17 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
}
public static void showRestartDialog(@NonNull final Context context) {
String positiveButton = str("revanced_settings_restart");
new AlertDialog.Builder(context).setMessage(str("revanced_settings_restart_title"))
.setPositiveButton(positiveButton, (dialog, id) -> {
Utils.restartApp(context);
})
Utils.verifyOnMainThread();
if (restartDialogTitle == null) {
restartDialogTitle = str("revanced_settings_restart_title");
}
if (restartDialogButtonText == null) {
restartDialogButtonText = str("revanced_settings_restart");
}
new AlertDialog.Builder(context)
.setMessage(restartDialogTitle)
.setPositiveButton(restartDialogButtonText, (dialog, id)
-> Utils.restartApp(context))
.setNegativeButton(android.R.string.cancel, null)
.setCancelable(false)
.show();

View File

@@ -15,7 +15,7 @@ import app.revanced.integrations.shared.Utils;
import static app.revanced.integrations.shared.StringRef.str;
/** @noinspection deprecation, unused */
@SuppressWarnings({"unused", "deprecation"})
public class ImportExportPreference extends EditTextPreference implements Preference.OnPreferenceClickListener {
private String existingSettings;

View File

@@ -14,7 +14,7 @@ import java.util.Objects;
import static app.revanced.integrations.shared.StringRef.str;
@SuppressWarnings("unused")
@SuppressWarnings({"unused", "deprecation"})
public class ResettableEditTextPreference extends EditTextPreference {
public ResettableEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
@@ -33,7 +33,7 @@ public class ResettableEditTextPreference extends EditTextPreference {
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
super.onPrepareDialogBuilder(builder);
Setting setting = Setting.getSettingFromPath(getKey());
Setting<?> setting = Setting.getSettingFromPath(getKey());
if (setting != null) {
builder.setNeutralButton(str("revanced_settings_reset"), null);
}
@@ -50,7 +50,7 @@ public class ResettableEditTextPreference extends EditTextPreference {
}
button.setOnClickListener(v -> {
try {
Setting setting = Objects.requireNonNull(Setting.getSettingFromPath(getKey()));
Setting<?> setting = Objects.requireNonNull(Setting.getSettingFromPath(getKey()));
String defaultStringValue = setting.defaultValue.toString();
EditText editText = getEditText();
editText.setText(defaultStringValue);

View File

@@ -32,17 +32,31 @@ public class SharedPrefCategory {
private void removeConflictingPreferenceKeyValue(@NonNull String key) {
Logger.printException(() -> "Found conflicting preference: " + key);
preferences.edit().remove(key).apply();
removeKey(key);
}
private void saveObjectAsString(@NonNull String key, @Nullable Object value) {
preferences.edit().putString(key, (value == null ? null : value.toString())).apply();
}
/**
* Removes any preference data type that has the specified key.
*/
public void removeKey(@NonNull String key) {
preferences.edit().remove(Objects.requireNonNull(key)).apply();
}
public void saveBoolean(@NonNull String key, boolean value) {
preferences.edit().putBoolean(key, value).apply();
}
/**
* @param value a NULL parameter removes the value from the preferences
*/
public void saveEnumAsString(@NonNull String key, @Nullable Enum<?> value) {
saveObjectAsString(key, value);
}
/**
* @param value a NULL parameter removes the value from the preferences
*/
@@ -83,6 +97,28 @@ public class SharedPrefCategory {
}
}
@NonNull
public <T extends Enum<?>> T getEnum(@NonNull String key, @NonNull T _default) {
Objects.requireNonNull(_default);
try {
String enumName = preferences.getString(key, null);
if (enumName != null) {
try {
// noinspection unchecked
return (T) Enum.valueOf(_default.getClass(), enumName);
} catch (IllegalArgumentException ex) {
// Info level to allow removing enum values in the future without showing any user errors.
Logger.printInfo(() -> "Using default, and ignoring unknown enum value: " + enumName);
removeKey(key);
}
}
} catch (ClassCastException ex) {
// Value stored is a completely different type (should never happen).
removeConflictingPreferenceKeyValue(key);
}
return _default;
}
public boolean getBoolean(@NonNull String key, boolean _default) {
try {
return preferences.getBoolean(key, _default);
@@ -100,17 +136,16 @@ public class SharedPrefCategory {
if (value != null) {
return Integer.valueOf(value);
}
return _default;
} catch (ClassCastException ex) {
} catch (ClassCastException | NumberFormatException ex) {
try {
// Old data previously stored as primitive.
return preferences.getInt(key, _default);
} catch (ClassCastException ex2) {
// Value stored is a completely different type (should never happen).
removeConflictingPreferenceKeyValue(key);
return _default;
}
}
return _default;
}
@NonNull
@@ -120,15 +155,14 @@ public class SharedPrefCategory {
if (value != null) {
return Long.valueOf(value);
}
return _default;
} catch (ClassCastException ex) {
} catch (ClassCastException | NumberFormatException ex) {
try {
return preferences.getLong(key, _default);
} catch (ClassCastException ex2) {
removeConflictingPreferenceKeyValue(key);
return _default;
}
}
return _default;
}
@NonNull
@@ -138,15 +172,14 @@ public class SharedPrefCategory {
if (value != null) {
return Float.valueOf(value);
}
return _default;
} catch (ClassCastException ex) {
} catch (ClassCastException | NumberFormatException ex) {
try {
return preferences.getFloat(key, _default);
} catch (ClassCastException ex2) {
removeConflictingPreferenceKeyValue(key);
return _default;
}
}
return _default;
}
@NonNull

View File

@@ -0,0 +1,42 @@
package app.revanced.integrations.syncforreddit;
import android.os.StrictMode;
import app.revanced.integrations.shared.Logger;
import java.net.HttpURLConnection;
import java.net.URL;
public final class FixSLinksPatch {
public static String resolveSLink(String link) {
if (link.matches(".*reddit\\.com/r/[^/]+/s/[^/]+")) {
Logger.printInfo(() -> "Resolving " + link);
try {
URL url = new URL(link);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setInstanceFollowRedirects(false);
connection.setRequestMethod("HEAD");
// Disable strict mode in order to allow network access on the main thread.
// This is not ideal, but it's the easiest solution for now.
final var currentPolicy = StrictMode.getThreadPolicy();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
connection.connect();
String location = connection.getHeaderField("location");
connection.disconnect();
// Restore the original strict mode policy.
StrictMode.setThreadPolicy(currentPolicy);
Logger.printInfo(() -> "Resolved " + link + " -> " + location);
return location;
} catch (Exception e) {
Logger.printException(() -> "Failed to resolve " + link, e);
}
}
return link;
}
}

View File

@@ -1,11 +1,15 @@
package app.revanced.integrations.tiktok.settings.preference;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import androidx.annotation.NonNull;
import app.revanced.integrations.shared.settings.Setting;
import app.revanced.integrations.shared.settings.preference.AbstractPreferenceFragment;
import app.revanced.integrations.tiktok.settings.preference.categories.DownloadsPreferenceCategory;
import app.revanced.integrations.tiktok.settings.preference.categories.FeedFilterPreferenceCategory;
import app.revanced.integrations.tiktok.settings.preference.categories.IntegrationsPreferenceCategory;
import app.revanced.integrations.tiktok.settings.preference.categories.SimSpoofPreferenceCategory;
import org.jetbrains.annotations.NotNull;
/**
* Preference fragment for ReVanced settings
@@ -13,10 +17,31 @@ import app.revanced.integrations.tiktok.settings.preference.categories.SimSpoofP
@SuppressWarnings("deprecation")
public class ReVancedPreferenceFragment extends AbstractPreferenceFragment {
@Override
protected void syncSettingWithPreference(@NonNull @NotNull Preference pref,
@NonNull @NotNull Setting<?> setting,
boolean applySettingToPreference) {
if (pref instanceof RangeValuePreference) {
RangeValuePreference rangeValuePref = (RangeValuePreference) pref;
Setting.privateSetValueFromString(setting, rangeValuePref.getValue());
} else if (pref instanceof DownloadPathPreference) {
DownloadPathPreference downloadPathPref = (DownloadPathPreference) pref;
Setting.privateSetValueFromString(setting, downloadPathPref.getValue());
} else {
super.syncSettingWithPreference(pref, setting, applySettingToPreference);
}
}
@Override
protected void initialize() {
final var context = getContext();
// Currently no resources can be compiled for TikTok (fails with aapt error).
// So all TikTok Strings are hard coded in integrations.
restartDialogTitle = "Refresh and restart";
restartDialogButtonText = "Restart";
confirmDialogTitle = "Do you wish to proceed?";
PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(context);
setPreferenceScreen(preferenceScreen);

View File

@@ -1,32 +1,37 @@
package app.revanced.integrations.tiktok.spoof.sim;
import app.revanced.integrations.shared.Logger;
import app.revanced.integrations.tiktok.settings.Settings;
@SuppressWarnings("unused")
public class SpoofSimPatch {
public static boolean isEnable() {
return Settings.SIM_SPOOF.get();
}
public static String getCountryIso(String value) {
if (isEnable()) {
return Settings.SIM_SPOOF_ISO.get();
} else {
return value;
}
private static final Boolean ENABLED = Settings.SIM_SPOOF.get();
public static String getCountryIso(String value) {
if (ENABLED) {
String iso = Settings.SIM_SPOOF_ISO.get();
Logger.printDebug(() -> "Spoofing sim ISO from: " + value + " to: " + iso);
return iso;
}
return value;
}
public static String getOperator(String value) {
if (isEnable()) {
return Settings.SIMSPOOF_MCCMNC.get();
} else {
return value;
if (ENABLED) {
String mcc_mnc = Settings.SIMSPOOF_MCCMNC.get();
Logger.printDebug(() -> "Spoofing sim MCC-MNC from: " + value + " to: " + mcc_mnc);
return mcc_mnc;
}
return value;
}
public static String getOperatorName(String value) {
if (isEnable()) {
return Settings.SIMSPOOF_OP_NAME.get();
} else {
return value;
if (ENABLED) {
String operator = Settings.SIMSPOOF_OP_NAME.get();
Logger.printDebug(() -> "Spoofing sim operator from: " + value + " to: " + operator);
return operator;
}
return value;
}
}

View File

@@ -17,9 +17,9 @@ import static app.revanced.integrations.shared.StringRef.str;
public class RequestInterceptor implements Interceptor {
private IAdblockService activeService = null;
private static final String PROXY_DISABLED = str("key_revanced_proxy_disabled");
private static final String LUMINOUS_SERVICE = str("key_revanced_proxy_luminous");
private static final String PURPLE_ADBLOCK_SERVICE = str("key_revanced_proxy_purpleadblock");
private static final String PROXY_DISABLED = str("revanced_block_embedded_ads_entry_1");
private static final String LUMINOUS_SERVICE = str("revanced_block_embedded_ads_entry_2");
private static final String PURPLE_ADBLOCK_SERVICE = str("revanced_block_embedded_ads_entry_3");
@NonNull

View File

@@ -18,6 +18,10 @@ import tv.twitch.android.shared.chat.util.ClickableUsernameSpan;
@SuppressWarnings("unused")
public class ShowDeletedMessagesPatch {
/**
* Injection point.
*/
public static boolean shouldUseSpoiler() {
return "spoiler".equals(Settings.SHOW_DELETED_MESSAGES.get());
}

View File

@@ -28,7 +28,7 @@ public class AppCompatActivityHook {
public static void startSettingsActivity() {
Logger.printDebug(() -> "Launching ReVanced settings");
final var context = app.revanced.integrations.shared.Utils.getContext();
final var context = Utils.getContext();
if (context != null) {
Intent intent = new Intent(context, SettingsActivity.class);

View File

@@ -6,4 +6,4 @@ abstract class BaseJsonHook : JsonHook {
abstract fun apply(json: JSONObject)
override fun transform(json: JSONObject) = json.apply { apply(json) }
}
}

View File

@@ -12,4 +12,4 @@ interface JsonHook : Hook<JSONObject> {
fun transform(json: JSONObject): JSONObject
override fun hook(type: JSONObject) = transform(type)
}
}

Some files were not shown because too many files have changed in this diff Show More