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

Compare commits

...

134 Commits

Author SHA1 Message Date
semantic-release-bot
5cb5656324 chore(release): 0.101.0-dev.2 [skip ci]
# [0.101.0-dev.2](https://github.com/revanced/revanced-integrations/compare/v0.101.0-dev.1...v0.101.0-dev.2) (2023-03-19)

### Bug Fixes

* **youtube/remember-playback-speed:**  allow to not remember playback speed ([#338](https://github.com/revanced/revanced-integrations/issues/338)) ([7627e5d](7627e5d057))
2023-03-19 22:02:40 +00:00
LisoUseInAIKyrios
7627e5d057 fix(youtube/remember-playback-speed): allow to not remember playback speed (#338)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-19 23:00:34 +01:00
oSumAtrIX
0810f84c4c ci: add dependency section when opening a PR 2023-03-19 22:58:15 +01:00
semantic-release-bot
8301fa07fd chore(release): 0.101.0-dev.1 [skip ci]
# [0.101.0-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.100.2-dev.3...v0.101.0-dev.1) (2023-03-17)

### Features

* **youtube/spoof-signature-verification:** automatic signature spoofing ([d16980e](d16980ef2f))
2023-03-17 18:00:46 +00:00
LisoUseInAIKyrios
d16980ef2f feat(youtube/spoof-signature-verification): automatic signature spoofing
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-17 21:59:04 +04:00
semantic-release-bot
83510e51b3 chore(release): 0.100.2-dev.3 [skip ci]
## [0.100.2-dev.3](https://github.com/revanced/revanced-integrations/compare/v0.100.2-dev.2...v0.100.2-dev.3) (2023-03-15)

### Bug Fixes

* **youtube/spoof-signature-verification:** fix audio during home feed video playback ([#336](https://github.com/revanced/revanced-integrations/issues/336)) ([68d0930](68d09305b9))
2023-03-15 17:41:14 +00:00
LisoUseInAIKyrios
68d09305b9 fix(youtube/spoof-signature-verification): fix audio during home feed video playback (#336)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-15 21:39:18 +04:00
semantic-release-bot
dc5c1b45ba chore(release): 0.100.2-dev.2 [skip ci]
## [0.100.2-dev.2](https://github.com/revanced/revanced-integrations/compare/v0.100.2-dev.1...v0.100.2-dev.2) (2023-03-14)

### Bug Fixes

* **youtube/return-youtube-dislike:** layout fix for low dpi devices ([#335](https://github.com/revanced/revanced-integrations/issues/335)) ([46e0272](46e0272f9e))
2023-03-14 22:46:09 +00:00
LisoUseInAIKyrios
46e0272f9e fix(youtube/return-youtube-dislike): layout fix for low dpi devices (#335) 2023-03-15 02:44:05 +04:00
semantic-release-bot
69ccb5fc05 chore(release): 0.100.2-dev.1 [skip ci]
## [0.100.2-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.100.1...v0.100.2-dev.1) (2023-03-14)

### Bug Fixes

* **youtube/return-youtube-dislike:** fix right to left text layout ([#333](https://github.com/revanced/revanced-integrations/issues/333)) ([2dd1431](2dd14313a6))
2023-03-14 18:54:35 +00:00
LisoUseInAIKyrios
2dd14313a6 fix(youtube/return-youtube-dislike): fix right to left text layout (#333) 2023-03-14 22:52:45 +04:00
LisoUseInAIKyrios
5e518855d1 fixing LTR layout 2023-03-14 22:40:05 +04:00
semantic-release-bot
52ac4acff3 chore(release): 0.100.1 [skip ci]
## [0.100.1](https://github.com/revanced/revanced-integrations/compare/v0.100.0...v0.100.1) (2023-03-14)

### Bug Fixes

* minor syntax issue ([1e1504d](1e1504d118))
2023-03-14 15:28:44 +00:00
oSumAtrIX
a08bc53828 chore: merge branch dev to main (#332) 2023-03-14 16:26:48 +01:00
semantic-release-bot
5d7dc94d8d chore(release): 0.100.1-dev.1 [skip ci]
## [0.100.1-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.100.0...v0.100.1-dev.1) (2023-03-14)

### Bug Fixes

* minor syntax issue ([1e1504d](1e1504d118))
2023-03-14 15:25:08 +00:00
oSumAtrIX
1e1504d118 fix: minor syntax issue 2023-03-14 16:23:20 +01:00
semantic-release-bot
393d6e62f2 chore(release): 0.100.0 [skip ci]
# [0.100.0](https://github.com/revanced/revanced-integrations/compare/v0.99.0...v0.100.0) (2023-03-14)

### Bug Fixes

* **youtube/general-ads:** hide any kind of buttoned ad ([0b3508b](0b3508bd8d))
* **youtube/general-ads:** hide chapters in video description ([#326](https://github.com/revanced/revanced-integrations/issues/326)) ([f31e3a0](f31e3a02a0))
* **youtube/hide-floating-microphone-button:** reboot when changing settings ([919f285](919f2855ed))
* **youtube/remember-video-quality:** treat any connection as wifi except mobile and bluetooth ([1f90f7b](1f90f7b9cc))
* **youtube/return-youtube-dislike:** improve segmented like/dislike layout ([416c695](416c695837))

### Features

* **youtube/general-ads:** do not hide components in library tab ([3c00e58](3c00e58c13))
* **youtube/general-ads:** hide image shelf from search results ([db6ce55](db6ce55477))
* **youtube/general-ads:** hide new type of ad ([844bc3b](844bc3b24f))
* **youtube/general-ads:** hide new type of ad ([#331](https://github.com/revanced/revanced-integrations/issues/331)) ([7e64e05](7e64e05709))
* **youtube/hide-autoplay-button:** do not disable autoplay button when hidden ([519c2bd](519c2bd511))
* **youtube:** `hide-floating-microphone-button` patch ([cb77e96](cb77e96da9))
* **youtube:** remove `custom-video-buffer` patch ([#1718](https://github.com/revanced/revanced-integrations/issues/1718)) ([d5919a8](d5919a8a2c))
2023-03-14 15:01:22 +00:00
oSumAtrIX
1361595076 chore: merge branch dev to main (#324) 2023-03-14 15:59:09 +01:00
semantic-release-bot
2f5c839613 chore(release): 0.100.0-dev.6 [skip ci]
# [0.100.0-dev.6](https://github.com/revanced/revanced-integrations/compare/v0.100.0-dev.5...v0.100.0-dev.6) (2023-03-14)

### Bug Fixes

* **youtube/hide-floating-microphone-button:** reboot when changing settings ([919f285](919f2855ed))
* **youtube/remember-video-quality:** treat any connection as wifi except mobile and bluetooth ([1f90f7b](1f90f7b9cc))
* **youtube/return-youtube-dislike:** improve segmented like/dislike layout ([416c695](416c695837))

### Features

* **youtube/general-ads:** hide new type of ad ([844bc3b](844bc3b24f))
* **youtube/general-ads:** hide new type of ad ([#331](https://github.com/revanced/revanced-integrations/issues/331)) ([7e64e05](7e64e05709))
* **youtube:** remove `custom-video-buffer` patch ([#1718](https://github.com/revanced/revanced-integrations/issues/1718)) ([d5919a8](d5919a8a2c))
2023-03-14 14:30:11 +00:00
johnconner122
7e64e05709 feat(youtube/general-ads): hide new type of ad (#331)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-03-14 15:26:31 +01:00
oSumAtrIX
d5919a8a2c feat(youtube): remove custom-video-buffer patch (#1718) 2023-03-14 15:26:30 +01:00
oSumAtrIX
844bc3b24f feat(youtube/general-ads): hide new type of ad 2023-03-14 15:26:30 +01:00
oSumAtrIX
67fa87051f chore: fix logging message 2023-03-14 15:26:30 +01:00
oSumAtrIX
1f90f7b9cc fix(youtube/remember-video-quality): treat any connection as wifi except mobile and bluetooth 2023-03-14 15:26:29 +01:00
semantic-release-bot
0c725218fd chore(release): 0.100.0-dev.6 [skip ci]
# [0.100.0-dev.6](https://github.com/revanced/revanced-integrations/compare/v0.100.0-dev.5...v0.100.0-dev.6) (2023-02-26)

### Bug Fixes

* **youtube/hide-floating-microphone-button:** reboot when changing settings ([919f285](919f2855ed))
2023-03-14 15:26:00 +01:00
LisousEinaiKyrios
416c695837 fix(youtube/return-youtube-dislike): improve segmented like/dislike layout 2023-03-14 15:26:00 +01:00
oSumAtrIX
919f2855ed fix(youtube/hide-floating-microphone-button): reboot when changing settings
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-27 00:23:59 +01:00
semantic-release-bot
040ba24640 chore(release): 0.100.0-dev.5 [skip ci]
# [0.100.0-dev.5](https://github.com/revanced/revanced-integrations/compare/v0.100.0-dev.4...v0.100.0-dev.5) (2023-02-26)

### Features

* **youtube/hide-autoplay-button:** do not disable autoplay button when hidden ([519c2bd](519c2bd511))
* **youtube:** `hide-floating-microphone-button` patch ([cb77e96](cb77e96da9))
2023-02-26 22:17:18 +00:00
oSumAtrIX
a1d4fabaaf refactor(youtube/settings): remove unused code
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-26 23:15:36 +01:00
oSumAtrIX
66bcf12dc6 refactor(youtube/settings): remove deprecated settings
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-26 23:15:35 +01:00
oSumAtrIX
7dc6bb4428 refactor(youtube/settings): use default parameter
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-26 23:15:35 +01:00
oSumAtrIX
24162934ba refactor(youtube/hide-timestamp): use better descriptions
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-26 23:15:35 +01:00
oSumAtrIX
cb77e96da9 feat(youtube): hide-floating-microphone-button patch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-26 23:15:34 +01:00
oSumAtrIX
519c2bd511 feat(youtube/hide-autoplay-button): do not disable autoplay button when hidden
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-26 23:15:34 +01:00
semantic-release-bot
8a8924ab09 chore(release): 0.100.0-dev.4 [skip ci]
# [0.100.0-dev.4](https://github.com/revanced/revanced-integrations/compare/v0.100.0-dev.3...v0.100.0-dev.4) (2023-02-26)

### Bug Fixes

* **youtube/general-ads:** hide any kind of buttoned ad ([0b3508b](0b3508bd8d))
2023-02-26 21:19:20 +00:00
oSumAtrIX
0b3508bd8d fix(youtube/general-ads): hide any kind of buttoned ad
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-26 22:17:31 +01:00
semantic-release-bot
db60d983e5 chore(release): 0.100.0-dev.3 [skip ci]
# [0.100.0-dev.3](https://github.com/revanced/revanced-integrations/compare/v0.100.0-dev.2...v0.100.0-dev.3) (2023-02-25)

### Bug Fixes

* **youtube/general-ads:** hide chapters in video description ([#326](https://github.com/revanced/revanced-integrations/issues/326)) ([f31e3a0](f31e3a02a0))
2023-02-25 15:26:37 +00:00
johnconner122
f31e3a02a0 fix(youtube/general-ads): hide chapters in video description (#326) 2023-02-25 16:24:45 +01:00
semantic-release-bot
f758b09676 chore(release): 0.100.0-dev.2 [skip ci]
# [0.100.0-dev.2](https://github.com/revanced/revanced-integrations/compare/v0.100.0-dev.1...v0.100.0-dev.2) (2023-02-24)

### Features

* **youtube/general-ads:** do not hide components in library tab ([3c00e58](3c00e58c13))
2023-02-24 23:13:28 +00:00
oSumAtrIX
3c00e58c13 feat(youtube/general-ads): do not hide components in library tab
This reverts commit fd975ecd

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-25 00:09:48 +01:00
semantic-release-bot
0b83be989b chore(release): 0.100.0-dev.1 [skip ci]
# [0.100.0-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.99.0...v0.100.0-dev.1) (2023-02-24)

### Features

* **youtube/general-ads:** hide image shelf from search results ([db6ce55](db6ce55477))
2023-02-24 03:16:12 +00:00
oSumAtrIX
db6ce55477 feat(youtube/general-ads): hide image shelf from search results
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-24 04:14:08 +01:00
semantic-release-bot
0b1b6b3682 chore(release): 0.99.0 [skip ci]
# [0.99.0](https://github.com/revanced/revanced-integrations/compare/v0.98.0...v0.99.0) (2023-02-24)

### Bug Fixes

* **youtube/general-ads:** check for quick actions in path instead of component identifier ([476902e](476902e9ce))
* **youtube/general-ads:** use correct setting to hide related videos in quick actions ([e626bd0](e626bd08c1))
* **youtube/general-ads:** use correct setting to hide related videos in quick actions ([05bfc68](05bfc68907))

### Features

* **youtube/general-ads:** hide quick actions in fullscreen ([ae862cb](ae862cbac6))
* **youtube/general-ads:** hide related videos in quick action ([cfc571c](cfc571c12c))
* **youtube/return-youtube-dislike:** support for shorts ([#312](https://github.com/revanced/revanced-integrations/issues/312)) ([0aef5e6](0aef5e60e2))
* **youtube:** remove patch `open-links-directly` ([dce882b](dce882b128))
2023-02-24 02:49:24 +00:00
oSumAtrIX
b612cbf2c0 chore: merge branch dev to main (#323) 2023-02-24 03:47:25 +01:00
semantic-release-bot
10fff6a0b8 chore(release): 0.99.0-dev.4 [skip ci]
# [0.99.0-dev.4](https://github.com/revanced/revanced-integrations/compare/v0.99.0-dev.3...v0.99.0-dev.4) (2023-02-24)

### Bug Fixes

* **youtube/general-ads:** check for quick actions in path instead of component identifier ([476902e](476902e9ce))
* **youtube/general-ads:** use correct setting to hide related videos in quick actions ([e626bd0](e626bd08c1))
* **youtube/general-ads:** use correct setting to hide related videos in quick actions ([05bfc68](05bfc68907))
2023-02-24 02:30:21 +00:00
oSumAtrIX
e626bd08c1 fix(youtube/general-ads): use correct setting to hide related videos in quick actions
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-24 03:28:27 +01:00
oSumAtrIX
476902e9ce fix(youtube/general-ads): check for quick actions in path instead of component identifier
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-24 03:28:26 +01:00
oSumAtrIX
05bfc68907 fix(youtube/general-ads): use correct setting to hide related videos in quick actions
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-24 03:28:26 +01:00
semantic-release-bot
c3364226b8 chore(release): 0.99.0-dev.3 [skip ci]
# [0.99.0-dev.3](https://github.com/revanced/revanced-integrations/compare/v0.99.0-dev.2...v0.99.0-dev.3) (2023-02-24)

### Features

* **youtube/return-youtube-dislike:** support for shorts ([#312](https://github.com/revanced/revanced-integrations/issues/312)) ([0aef5e6](0aef5e60e2))
2023-02-24 02:01:49 +00:00
LisoUseInAIKyrios
0aef5e60e2 feat(youtube/return-youtube-dislike): support for shorts (#312)
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-24 02:59:32 +01:00
semantic-release-bot
fb1a69a7ba chore(release): 0.99.0-dev.2 [skip ci]
# [0.99.0-dev.2](https://github.com/revanced/revanced-integrations/compare/v0.99.0-dev.1...v0.99.0-dev.2) (2023-02-23)

### Features

* **youtube/general-ads:** hide quick actions in fullscreen ([ae862cb](ae862cbac6))
* **youtube/general-ads:** hide related videos in quick action ([cfc571c](cfc571c12c))
2023-02-23 12:33:42 +00:00
oSumAtrIX
cfc571c12c feat(youtube/general-ads): hide related videos in quick action
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-23 13:31:15 +01:00
oSumAtrIX
ae862cbac6 feat(youtube/general-ads): hide quick actions in fullscreen
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-23 13:30:49 +01:00
oSumAtrIX
178b90b490 ci: fix backmerge direction
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 16:40:05 +01:00
semantic-release-bot
4b052b19a3 chore(release): 0.99.0-dev.1 [skip ci]
# [0.99.0-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.98.0...v0.99.0-dev.1) (2023-02-22)

### Features

* **youtube:** remove patch `open-links-directly` ([dce882b](dce882b128))
2023-02-22 15:37:04 +00:00
oSumAtrIX
dce882b128 feat(youtube): remove patch open-links-directly
The patch did not serve any real purpose

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 16:23:06 +01:00
semantic-release-bot
ccb5d81d46 chore(release): 0.98.0 [skip ci]
# [0.98.0](https://github.com/revanced/revanced-integrations/compare/v0.97.0...v0.98.0) (2023-02-22)

### Bug Fixes

* remove nullable annotation in Kotlin code ([b5a29fd](b5a29fdce1))
* **twitter:** make `hide-ads` patch compatible with any version ([6655988](665598836a))
* **youtube/hide-watch-in-vr:** fix descriptions ([96fcc0b](96fcc0b1c7))

### Features

* **twitter:** `hide-recommended-users` patch ([96eea3d](96eea3d4fc))
* **youtube/general-ads:** hide channel bar ([35c4266](35c4266e8b))
* **youtube/general-ads:** hide full-screen feed banner ([da1572c](da1572c28d))
* **youtube/general-ads:** hide horizontal video shelf ([fd975ec](fd975ecd2a))
* **youtube/open-links-directly:** skip every redirect url ([2d73b8b](2d73b8b29b))
2023-02-22 05:51:41 +00:00
oSumAtrIX
5ed7170018 chore: merge branch dev to main (#321) 2023-02-22 06:49:37 +01:00
oSumAtrIX
621ef63d86 ci: add backmerge target branch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 06:45:15 +01:00
semantic-release-bot
37c0cc04c4 chore(release): 0.98.0-dev.5 [skip ci]
# [0.98.0-dev.5](https://github.com/revanced/revanced-integrations/compare/v0.98.0-dev.4...v0.98.0-dev.5) (2023-02-22)

### Features

* **youtube/open-links-directly:** skip every redirect url ([2d73b8b](2d73b8b29b))
2023-02-22 05:11:24 +00:00
oSumAtrIX
5749a1dd65 refactor(youtube/hide-info-cards): fix casing
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 06:09:37 +01:00
oSumAtrIX
2d73b8b29b feat(youtube/open-links-directly): skip every redirect url
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 06:09:36 +01:00
semantic-release-bot
85cae1e5d6 chore(release): 0.98.0-dev.4 [skip ci]
# [0.98.0-dev.4](https://github.com/revanced/revanced-integrations/compare/v0.98.0-dev.3...v0.98.0-dev.4) (2023-02-22)

### Bug Fixes

* remove nullable annotation in Kotlin code ([b5a29fd](b5a29fdce1))
2023-02-22 04:44:49 +00:00
oSumAtrIX
b5a29fdce1 fix: remove nullable annotation in Kotlin code
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 05:42:37 +01:00
semantic-release-bot
1809d1bbf9 chore(release): 0.98.0-dev.3 [skip ci]
# [0.98.0-dev.3](https://github.com/revanced/revanced-integrations/compare/v0.98.0-dev.2...v0.98.0-dev.3) (2023-02-22)

### Bug Fixes

* **twitter:** make `hide-ads` patch compatible with any version ([6655988](665598836a))

### Features

* **twitter:** `hide-recommended-users` patch ([96eea3d](96eea3d4fc))
2023-02-22 04:40:57 +00:00
oSumAtrIX
96eea3d4fc feat(twitter): hide-recommended-users patch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 05:38:27 +01:00
oSumAtrIX
665598836a fix(twitter): make hide-ads patch compatible with any version
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 05:38:26 +01:00
oSumAtrIX
f1e6cbcdf1 chore: update dependencies
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-22 05:33:42 +01:00
oSumAtrIX
24d7e47844 ci: use new semantic-release-backmerge option
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:25:02 +01:00
semantic-release-bot
f6573521ba chore(release): 0.98.0-dev.2 [skip ci]
# [0.98.0-dev.2](https://github.com/revanced/revanced-integrations/compare/v0.98.0-dev.1...v0.98.0-dev.2) (2023-02-20)

### Bug Fixes

* **youtube/hide-watch-in-vr:** fix descriptions ([96fcc0b](96fcc0b1c7))

### Features

* **youtube/general-ads:** hide channel bar ([35c4266](35c4266e8b))
* **youtube/general-ads:** hide horizontal video shelf ([fd975ec](fd975ecd2a))
2023-02-20 04:18:21 +00:00
oSumAtrIX
c320384066 refactor(youtube): remove dead code
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:16:20 +01:00
oSumAtrIX
45c3f6e774 refactor(youtube): separate patches into two
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:16:20 +01:00
oSumAtrIX
e040b7de2f refactor(youtube/general-ads): correct settings name
Syncing with 1a96d79356e0432cfcf6287cdebbad8227eef6d1 from revanced-patches

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:16:19 +01:00
oSumAtrIX
96fcc0b1c7 fix(youtube/hide-watch-in-vr): fix descriptions
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:16:19 +01:00
oSumAtrIX
35c4266e8b feat(youtube/general-ads): hide channel bar
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:16:19 +01:00
oSumAtrIX
fd975ecd2a feat(youtube/general-ads): hide horizontal video shelf
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-20 05:16:18 +01:00
semantic-release-bot
a857b9db6f chore(release): 0.98.0-dev.1 [skip ci]
# [0.98.0-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.97.0...v0.98.0-dev.1) (2023-02-18)

### Features

* **youtube/general-ads:** hide full-screen feed banner ([da1572c](da1572c28d))
2023-02-18 21:09:33 +00:00
oSumAtrIX
39e3d046f3 chore: merge branch main to dev 2023-02-18 22:06:55 +01:00
oSumAtrIX
da1572c28d feat(youtube/general-ads): hide full-screen feed banner
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-18 22:00:44 +01:00
semantic-release-bot
3f5e27d6b1 chore(release): 0.97.0 [skip ci]
# [0.97.0](https://github.com/revanced/revanced-integrations/compare/v0.96.2...v0.97.0) (2023-02-14)

### Bug Fixes

* **youtube/general-ads:** block other kind of survey ([cdf43ef](cdf43efcf2))

### Features

* **youtube/general-ads:** hide web search results ([9df1e46](9df1e460c5))
2023-02-14 14:02:41 +00:00
oSumAtrIX
3e113b6ab0 chore: merge branch dev to main (#320) 2023-02-14 15:00:30 +01:00
semantic-release-bot
0904f3c78a chore(release): 0.97.0-dev.1 [skip ci]
# [0.97.0-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.96.2...v0.97.0-dev.1) (2023-02-14)

### Bug Fixes

* **youtube/general-ads:** block other kind of survey ([cdf43ef](cdf43efcf2))

### Features

* **youtube/general-ads:** hide web search results ([9df1e46](9df1e460c5))
2023-02-14 13:59:04 +00:00
oSumAtrIX
9df1e460c5 feat(youtube/general-ads): hide web search results
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-14 14:56:47 +01:00
oSumAtrIX
cdf43efcf2 fix(youtube/general-ads): block other kind of survey 2023-02-14 14:56:47 +01:00
semantic-release-bot
370f331330 chore(release): 0.96.2 [skip ci]
## [0.96.2](https://github.com/revanced/revanced-integrations/compare/v0.96.1...v0.96.2) (2023-02-13)

### Bug Fixes

* **youtube/general-ads:** do not hide chapters when hiding preview comments ([cfb7aab](cfb7aab779))
* **youtube/general-ads:** use correct setting for `BlockRule` ([#316](https://github.com/revanced/revanced-integrations/issues/316)) ([7225bc3](7225bc3c48))
2023-02-13 21:44:11 +00:00
oSumAtrIX
622aa1dcaa chore: merge branch dev to main (#319) 2023-02-13 22:41:31 +01:00
semantic-release-bot
5071082fde chore(release): 0.96.2-dev.2 [skip ci]
## [0.96.2-dev.2](https://github.com/revanced/revanced-integrations/compare/v0.96.2-dev.1...v0.96.2-dev.2) (2023-02-13)

### Bug Fixes

* **youtube/general-ads:** do not hide chapters when hiding preview comments ([cfb7aab](cfb7aab779))
2023-02-13 21:35:24 +00:00
oSumAtrIX
71b558ba6a ci: update dependencies and target node version (#318) 2023-02-13 22:32:29 +01:00
Palm
9cea77ac59 ci: fix step name typo 2023-02-13 20:56:56 +07:00
Palm
b47b7cbc22 ci: target specific node version 2023-02-13 10:45:17 +07:00
Palm
25d51179cc ci: update dependencies 2023-02-13 10:44:45 +07:00
Palm
2e0758b3c8 ci: do not override dependency versions on install 2023-02-13 10:44:07 +07:00
oSumAtrIX
85bf637078 chore: merge branch dev to main (#317) 2023-02-13 03:36:08 +01:00
oSumAtrIX
cfb7aab779 fix(youtube/general-ads): do not hide chapters when hiding preview comments
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-13 03:31:01 +01:00
semantic-release-bot
0def31b2dd chore(release): 0.96.2-dev.1 [skip ci]
## [0.96.2-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.96.1...v0.96.2-dev.1) (2023-02-11)

### Bug Fixes

* **youtube/general-ads:** use correct setting for `BlockRule` ([#316](https://github.com/revanced/revanced-integrations/issues/316)) ([7225bc3](7225bc3c48))
2023-02-11 13:51:25 +00:00
johnconner122
7225bc3c48 fix(youtube/general-ads): use correct setting for BlockRule (#316) 2023-02-11 14:49:33 +01:00
semantic-release-bot
7d136e550c chore(release): 0.96.1 [skip ci]
## [0.96.1](https://github.com/revanced/revanced-integrations/compare/v0.96.0...v0.96.1) (2023-02-11)

### Bug Fixes

* **youtube/minimized-playback:** disable when playing shorts ([1dd84a3](1dd84a3785))
2023-02-11 00:36:55 +00:00
oSumAtrIX
70170e24ce chore: merge branch dev to main (#315) 2023-02-11 01:34:48 +01:00
semantic-release-bot
1864372298 chore(release): 0.96.1-dev.1 [skip ci]
## [0.96.1-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.96.0...v0.96.1-dev.1) (2023-02-11)

### Bug Fixes

* **youtube/minimized-playback:** disable when playing shorts ([1dd84a3](1dd84a3785))
2023-02-11 00:27:39 +00:00
oSumAtrIX
1dd84a3785 fix(youtube/minimized-playback): disable when playing shorts
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-11 01:25:48 +01:00
semantic-release-bot
512d747ec8 chore(release): 0.96.0 [skip ci]
# [0.96.0](https://github.com/revanced/revanced-integrations/compare/v0.95.0...v0.96.0) (2023-02-10)

### Features

* **youtube/general-ads:** hide pill to view products ([43e419e](43e419e6a6))
2023-02-10 22:28:00 +00:00
oSumAtrIX
e16d3a7284 chore: merge branch dev to main (#314) 2023-02-10 23:26:15 +01:00
semantic-release-bot
4469d1f3c4 chore(release): 0.96.0-dev.1 [skip ci]
# [0.96.0-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.95.0...v0.96.0-dev.1) (2023-02-10)

### Features

* **youtube/general-ads:** hide pill to view products ([43e419e](43e419e6a6))
2023-02-10 18:43:43 +00:00
oSumAtrIX
43e419e6a6 feat(youtube/general-ads): hide pill to view products
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-10 19:41:21 +01:00
oSumAtrIX
f67216ad9d chore: merge branch dev to main (#313) 2023-02-10 05:59:18 +01:00
oSumAtrIX
2e9d3fc63f refactor(youtube/microg-support): make use of MICROG_VENDOR field
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-06 23:07:19 +01:00
semantic-release-bot
d16153408c chore(release): 0.95.0 [skip ci]
# [0.95.0](https://github.com/revanced/revanced-integrations/compare/v0.94.1...v0.95.0) (2023-02-03)

### Features

* `spoof-wifi-connection` patch ([#297](https://github.com/revanced/revanced-integrations/issues/297)) ([293eae4](293eae4a46))
* spoof-wifi-connection patch ([6679e6e](6679e6ee45))
* **youtube:** `hide-player-buttons` patch ([d5bcef2](d5bcef2cdb))
2023-02-03 03:54:09 +00:00
oSumAtrIX
73d5400486 chore: merge branch dev to main (#310) 2023-02-03 04:52:05 +01:00
semantic-release-bot
e698e8c524 chore(release): 0.95.0-dev.2 [skip ci]
# [0.95.0-dev.2](https://github.com/revanced/revanced-integrations/compare/v0.95.0-dev.1...v0.95.0-dev.2) (2023-02-03)

### Features

* **youtube:** `hide-player-buttons` patch ([d5bcef2](d5bcef2cdb))
2023-02-03 03:43:13 +00:00
oSumAtrIX
d5bcef2cdb feat(youtube): hide-player-buttons patch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-03 04:39:38 +01:00
oSumAtrIX
5ca042a602 refactor(youtube): remove obsolete fix-playback patch
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-02-01 20:57:48 +01:00
semantic-release-bot
319a234df6 chore(release): 0.95.0-dev.1 [skip ci]
# [0.95.0-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.94.1...v0.95.0-dev.1) (2023-02-01)

### Features

* `spoof-wifi-connection` patch ([#297](https://github.com/revanced/revanced-integrations/issues/297)) ([293eae4](293eae4a46))
* spoof-wifi-connection patch ([6679e6e](6679e6ee45))
2023-02-01 19:55:36 +00:00
oSumAtrIX
293eae4a46 feat: spoof-wifi-connection patch (#297) 2023-02-01 20:52:40 +01:00
Linus789
dc1faa94e0 fix unregisterNetworkCallback throwing exception when the callback has not been registered
todo: squash
2023-01-31 15:04:14 +01:00
semantic-release-bot
2e6c73e4b5 chore(release): 0.94.1 [skip ci]
## [0.94.1](https://github.com/revanced/revanced-integrations/compare/v0.94.0...v0.94.1) (2023-01-29)

### Bug Fixes

* **youtube/sponsorblock:** fix saving and loading settings ([#304](https://github.com/revanced/revanced-integrations/issues/304)) ([49aedae](49aedae3fc))
* **youtube:** resolve duplicate preference keys ([#307](https://github.com/revanced/revanced-integrations/issues/307)) ([27d1392](27d1392a73))
2023-01-29 10:14:32 +00:00
oSumAtrIX
f50346aff2 chore: merge branch dev to main (#309) 2023-01-29 11:12:08 +01:00
github-actions[bot]
530260e248 chore: merge branch dev to main (#306)
Co-authored-by: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
2023-01-28 20:07:01 +01:00
semantic-release-bot
db2e5eec71 chore(release): 0.94.1-dev.1 [skip ci]
## [0.94.1-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.94.0...v0.94.1-dev.1) (2023-01-28)

### Bug Fixes

* **youtube/sponsorblock:** fix saving and loading settings ([#304](https://github.com/revanced/revanced-integrations/issues/304)) ([49aedae](49aedae3fc))
* **youtube:** resolve duplicate preference keys ([#307](https://github.com/revanced/revanced-integrations/issues/307)) ([27d1392](27d1392a73))
2023-01-28 19:04:41 +00:00
LisoUseInAIKyrios
27d1392a73 fix(youtube): resolve duplicate preference keys (#307) 2023-01-28 20:02:22 +01:00
LisoUseInAIKyrios
49aedae3fc fix(youtube/sponsorblock): fix saving and loading settings (#304) 2023-01-28 20:02:22 +01:00
semantic-release-bot
5c5a42da40 chore(release): 0.94.0 [skip ci]
# [0.94.0](https://github.com/revanced/revanced-integrations/compare/v0.93.1...v0.94.0) (2023-01-28)

### Bug Fixes

* **youtube/return-youtube-dislike:** do not fetch voting stats when watching shorts ([#302](https://github.com/revanced/revanced-integrations/issues/302)) ([7551f01](7551f0104c))
* **youtube/return-youtube-dislike:** gracefully exit if Vanced MicroG is missing or not running ([#303](https://github.com/revanced/revanced-integrations/issues/303)) ([03764bc](03764bcc65))
* **youtube:** save new instead of default value ([#298](https://github.com/revanced/revanced-integrations/issues/298)) ([559bbf9](559bbf9778))

### Features

* **youtube/general-ads:** remove hiding video shelf ([04147c1](04147c17c9))
* **youtube/microg-support:** check if Vanced MicroG is running in the background ([#301](https://github.com/revanced/revanced-integrations/issues/301)) ([6e31b78](6e31b7889a))
* **youtube:** `open-links-externally` patch ([4cbe833](4cbe8338b3))
* **youtube:** show toasts along exceptions ([#293](https://github.com/revanced/revanced-integrations/issues/293)) ([dbf1f3f](dbf1f3f0ce))
2023-01-28 08:05:25 +00:00
oSumAtrIX
bb8cdc494f chore: merge branch dev to main (#299) 2023-01-28 09:02:38 +01:00
semantic-release-bot
42346ee3cf chore(release): 0.94.0-dev.6 [skip ci]
# [0.94.0-dev.6](https://github.com/revanced/revanced-integrations/compare/v0.94.0-dev.5...v0.94.0-dev.6) (2023-01-28)

### Features

* **youtube:** show toasts along exceptions ([#293](https://github.com/revanced/revanced-integrations/issues/293)) ([dbf1f3f](dbf1f3f0ce))
2023-01-28 07:40:30 +00:00
LisoUseInAIKyrios
dbf1f3f0ce feat(youtube): show toasts along exceptions (#293)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 08:38:31 +01:00
semantic-release-bot
a70e80dfa0 chore(release): 0.94.0-dev.5 [skip ci]
# [0.94.0-dev.5](https://github.com/revanced/revanced-integrations/compare/v0.94.0-dev.4...v0.94.0-dev.5) (2023-01-28)

### Bug Fixes

* **youtube/return-youtube-dislike:** do not fetch voting stats when watching shorts ([#302](https://github.com/revanced/revanced-integrations/issues/302)) ([7551f01](7551f0104c))
2023-01-28 07:31:27 +00:00
LisoUseInAIKyrios
7551f0104c fix(youtube/return-youtube-dislike): do not fetch voting stats when watching shorts (#302)
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 08:28:42 +01:00
semantic-release-bot
d8bd27251c chore(release): 0.94.0-dev.4 [skip ci]
# [0.94.0-dev.4](https://github.com/revanced/revanced-integrations/compare/v0.94.0-dev.3...v0.94.0-dev.4) (2023-01-28)

### Features

* **youtube/general-ads:** remove hiding video shelf ([04147c1](04147c17c9))
2023-01-28 07:08:41 +00:00
oSumAtrIX
04147c17c9 feat(youtube/general-ads): remove hiding video shelf
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-28 06:00:34 +01:00
oSumAtrIX
84257a7348 Apply suggestions from code review [skip ci] 2023-01-23 02:46:27 +01:00
semantic-release-bot
32dc8a846c chore(release): 0.94.0-dev.3 [skip ci]
# [0.94.0-dev.3](https://github.com/revanced/revanced-integrations/compare/v0.94.0-dev.2...v0.94.0-dev.3) (2023-01-22)

### Bug Fixes

* **youtube/return-youtube-dislike:** gracefully exit if Vanced MicroG is missing or not running ([#303](https://github.com/revanced/revanced-integrations/issues/303)) ([03764bc](03764bcc65))
2023-01-22 19:23:44 +00:00
LisoUseInAIKyrios
03764bcc65 fix(youtube/return-youtube-dislike): gracefully exit if Vanced MicroG is missing or not running (#303)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-22 20:22:02 +01:00
semantic-release-bot
0127e7251c chore(release): 0.94.0-dev.2 [skip ci]
# [0.94.0-dev.2](https://github.com/revanced/revanced-integrations/compare/v0.94.0-dev.1...v0.94.0-dev.2) (2023-01-22)

### Features

* **youtube/microg-support:** check if Vanced MicroG is running in the background ([#301](https://github.com/revanced/revanced-integrations/issues/301)) ([6e31b78](6e31b7889a))
2023-01-22 16:21:15 +00:00
reis
6e31b7889a feat(youtube/microg-support): check if Vanced MicroG is running in the background (#301)
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-22 17:18:55 +01:00
Linus789
6679e6ee45 feat: spoof-wifi-connection patch 2023-01-21 23:20:57 +01:00
71 changed files with 3547 additions and 1349 deletions

View File

@@ -21,5 +21,10 @@ jobs:
with:
destination_branch: 'main'
pr_title: 'chore: ${{ env.MESSAGE }}'
pr_body: 'This pull request will ${{ env.MESSAGE }}.'
pr_body: |
This pull request will ${{ env.MESSAGE }}.
## Dependencies before merge
- [] https://github.com/revanced/revanced-patches
pr_draft: true

View File

@@ -3,7 +3,7 @@ name: Release
on:
workflow_dispatch:
push:
branches:
branches:
- main
- dev
pull_request:
@@ -16,7 +16,7 @@ jobs:
name: Release
runs-on: ubuntu-latest
steps:
- name: Cancel previou runs
- name: Cancel previous runs
uses: styfle/cancel-workflow-action@0.11.0
- name: Checkout
uses: actions/checkout@v3
@@ -33,11 +33,11 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: "latest"
node-version: "18"
cache: 'npm'
- name: Setup semantic-release
run: npm install semantic-release@19.0.5 @saithodev/semantic-release-backmerge @semantic-release/git @semantic-release/changelog gradle-semantic-release-plugin@1.7.4 -D
run: npm install
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}
run: npx semantic-release
run: npm exec semantic-release

View File

@@ -34,7 +34,7 @@
[
"@saithodev/semantic-release-backmerge",
{
branches: [{from: "main", to: "dev"}],
backmergeBranches: [{"from": "main", "to": "dev"}],
clearWorkspace: true
}
]

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,3 @@
import java.io.FileInputStream
import java.util.Properties
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
@@ -47,7 +44,7 @@ android {
dependencies {
compileOnly(project(mapOf("path" to ":dummy")))
compileOnly("androidx.annotation:annotation:1.5.0")
compileOnly("androidx.appcompat:appcompat:1.5.1")
compileOnly("androidx.appcompat:appcompat:1.6.1")
compileOnly("com.squareup.okhttp3:okhttp:5.0.0-alpha.11")
compileOnly("com.squareup.retrofit2:retrofit:2.9.0")
}

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,7 @@ final class CommentsPatch extends Filter {
var comments = new BlockRule(SettingsEnum.HIDE_COMMENTS_SECTION, "video_metadata_carousel", "_comments");
var previewComment = new BlockRule(
SettingsEnum.HIDE_PREVIEW_COMMENT,
"carousel_item",
"|carousel_item",
"comments_entry_point_teaser",
"comments_entry_point_simplebox"
);

View File

@@ -1,40 +0,0 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.LogHelper;
public final class FixPlaybackPatch {
private static Thread currentThread = null;
private static String videoId;
public static void newVideoLoaded(final String videoId) {
if (!SettingsEnum.FIX_PLAYBACK.getBoolean()) return;
if (videoId.equals(FixPlaybackPatch.videoId)) return;
else FixPlaybackPatch.videoId = videoId;
if (currentThread != null) {
currentThread.interrupt();
}
currentThread = new Thread(() -> {
try {
while (true) {
var currentVideoTime = VideoInformation.getVideoTime();
if (currentVideoTime > -1) {
VideoInformation.seekTo(Integer.MAX_VALUE);
VideoInformation.seekTo(currentVideoTime);
return;
}
Thread.sleep(10);
}
} catch (InterruptedException e) {
LogHelper.printDebug(() -> "Thread was interrupted");
}
});
currentThread.start();
}
}

View File

@@ -1,13 +1,10 @@
package app.revanced.integrations.patches;
import android.view.View;
import app.revanced.integrations.settings.SettingsEnum;
public class FullscreenPanelsRemoverPatch {
public static int getFullscreenPanelsVisibility() {
return SettingsEnum.HIDE_FULLSCREEN_PANELS.getBoolean() ? View.GONE : View.VISIBLE;
}
}

View File

@@ -1,7 +1,6 @@
package app.revanced.integrations.patches;
import android.view.View;
import app.revanced.integrations.adremover.AdRemoverAPI;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.LogHelper;
@@ -27,22 +26,27 @@ public final class GeneralAdsPatch extends Filter {
var subscribersCommunityGuidelines = new BlockRule(SettingsEnum.ADREMOVER_SUBSCRIBERS_COMMUNITY_GUIDELINES_REMOVAL, "sponsorships_comments_upsell");
var channelMemberShelf = new BlockRule(SettingsEnum.ADREMOVER_CHANNEL_MEMBER_SHELF_REMOVAL, "member_recognition_shelf");
var compactBanner = new BlockRule(SettingsEnum.ADREMOVER_COMPACT_BANNER_REMOVAL, "compact_banner");
var inFeedSurvey = new BlockRule(SettingsEnum.ADREMOVER_FEED_SURVEY_REMOVAL, "in_feed_survey");
var inFeedSurvey = new BlockRule(SettingsEnum.ADREMOVER_FEED_SURVEY_REMOVAL, "in_feed_survey", "slimline_survey");
var medicalPanel = new BlockRule(SettingsEnum.ADREMOVER_MEDICAL_PANEL_REMOVAL, "medical_panel");
var paidContent = new BlockRule(SettingsEnum.ADREMOVER_PAID_CONTENT_REMOVAL, "paid_content_overlay");
var merchandise = new BlockRule(SettingsEnum.ADREMOVER_MERCHANDISE_REMOVAL, "product_carousel");
var infoPanel = new BlockRule(SettingsEnum.ADREMOVER_INFO_PANEL_REMOVAL, "publisher_transparency_panel", "single_item_information_panel");
var suggestions = new BlockRule(SettingsEnum.ADREMOVER_SUGGESTIONS_REMOVAL, "horizontal_video_shelf");
var latestPosts = new BlockRule(SettingsEnum.ADREMOVER_HIDE_LATEST_POSTS, "post_shelf");
var channelGuidelines = new BlockRule(SettingsEnum.ADREMOVER_HIDE_CHANNEL_GUIDELINES, "channel_guidelines_entry_banner");
var artistCard = new BlockRule(SettingsEnum.HIDE_ARTIST_CARD, "official_card");
var artistCard = new BlockRule(SettingsEnum.HIDE_ARTIST_CARDS, "official_card");
var selfSponsor = new BlockRule(SettingsEnum.ADREMOVER_SELF_SPONSOR_REMOVAL, "cta_shelf_card");
var chapterTeaser = new BlockRule(SettingsEnum.ADREMOVER_CHAPTER_TEASER_REMOVAL, "expandable_metadata");
var chapterTeaser = new BlockRule(SettingsEnum.ADREMOVER_CHAPTER_TEASER_REMOVAL, "expandable_metadata", "macro_markers_carousel");
var viewProducts = new BlockRule(SettingsEnum.ADREMOVER_VIEW_PRODUCTS, "product_item", "products_in_video");
var webLinkPanel = new BlockRule(SettingsEnum.ADREMOVER_WEB_SEARCH_RESULTS, "web_link_panel");
var channelBar = new BlockRule(SettingsEnum.ADREMOVER_CHANNEL_BAR, "channel_bar");
var relatedVideos = new BlockRule(SettingsEnum.ADREMOVER_RELATED_VIDEOS, "fullscreen_related_videos");
var quickActions = new BlockRule(SettingsEnum.ADREMOVER_QUICK_ACTIONS, "quick_actions");
var imageShelf = new BlockRule(SettingsEnum.ADREMOVER_IMAGE_SHELF, "image_shelf");
var graySeparator = new BlockRule(SettingsEnum.ADREMOVER_GRAY_SEPARATOR,
"cell_divider" // layout residue (gray line above the buttoned ad),
);
var buttonedAd = new BlockRule(SettingsEnum.ADREMOVER_BUTTONED_REMOVAL,
"video_display_full_buttoned_layout",
"_buttoned_layout",
"full_width_square_image_layout",
"_ad_with",
"landscape_image_wide_button_layout"
@@ -53,7 +57,11 @@ public final class GeneralAdsPatch extends Filter {
"banner_text_icon",
"square_image_layout",
"watch_metadata_app_promo",
"video_display_full_layout"
"video_display_full_layout",
"hero_promo_image",
"statement_banner",
"carousel_footered_layout",
"text_image_button_layout"
);
var movieAds = new BlockRule(
SettingsEnum.ADREMOVER_MOVIE_REMOVAL,
@@ -67,21 +75,26 @@ public final class GeneralAdsPatch extends Filter {
this.pathRegister.registerAll(
generalAds,
buttonedAd,
channelBar,
communityPosts,
paidContent,
suggestions,
latestPosts,
movieAds,
chapterTeaser,
communityGuidelines,
quickActions,
relatedVideos,
compactBanner,
inFeedSurvey,
viewProducts,
medicalPanel,
merchandise,
infoPanel,
channelGuidelines,
artistCard,
selfSponsor,
webLinkPanel,
imageShelf,
subscribersCommunityGuidelines,
channelMemberShelf
);
@@ -115,7 +128,7 @@ public final class GeneralAdsPatch extends Filter {
else
result = BlockResult.UNBLOCKED;
log(String.format("%s (ID: %s): %s", result.message, identifier, path));
LogHelper.printDebug(() -> String.format("%s (ID: %s): %s", result.message, identifier, path));
return result.filter;
}
@@ -144,7 +157,7 @@ public final class GeneralAdsPatch extends Filter {
private static void hideView(SettingsEnum condition, View view) {
if (!condition.getBoolean()) return;
log("Hiding view with setting: " + condition);
LogHelper.printDebug(() -> "Hiding view with setting: " + condition);
AdRemoverAPI.HideViewWithLayout1dp(view);
}
@@ -167,7 +180,4 @@ public final class GeneralAdsPatch extends Filter {
hideView(SettingsEnum.ADREMOVER_SHORTS_REMOVAL, view);
}
private static void log(String message) {
LogHelper.printDebug(() -> message);
}
}

View File

@@ -3,8 +3,7 @@ package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class HideAutoplayButtonPatch {
public static boolean isButtonShown() {
return SettingsEnum.HIDE_AUTOPLAY_BUTTON.getBoolean() == false;
return !SettingsEnum.HIDE_AUTOPLAY_BUTTON.getBoolean();
}
}

View File

@@ -10,8 +10,7 @@ public class HideCreateButtonPatch {
//Used by app.revanced.patches.youtube.layout.createbutton.patch.CreateButtonRemoverPatch
public static void hideCreateButton(View view) {
boolean hidden = SettingsEnum.HIDE_CREATE_BUTTON.getBoolean();
String message = "Create button: " + (hidden ? "hidden" : "shown");
LogHelper.printDebug(() -> message);
LogHelper.printDebug(() -> "Create button: " + (hidden ? "hidden" : "shown"));
view.setVisibility(hidden ? View.GONE : View.VISIBLE);
}
}

View File

@@ -0,0 +1,9 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public final class HideFloatingMicrophoneButtonPatch {
public static boolean hideFloatingMicrophoneButton(final boolean original) {
return SettingsEnum.HIDE_FLOATING_MICROPHONE_BUTTON.getBoolean() || original;
}
}

View File

@@ -1,16 +1,15 @@
package app.revanced.integrations.patches;
import android.view.View;
import app.revanced.integrations.settings.SettingsEnum;
public class HideInfocardsPatch {
public static void hideInfocardsIncognito(View view) {
public class HideInfoCardsPatch {
public static void hideInfoCardsIncognito(View view) {
if (!SettingsEnum.HIDE_INFO_CARDS.getBoolean()) return;
view.setVisibility(View.GONE);
}
public static boolean hideInfocardsMethodCall() {
public static boolean hideInfoCardsMethodCall() {
return SettingsEnum.HIDE_INFO_CARDS.getBoolean();
}
}

View File

@@ -0,0 +1,11 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public final class HidePlayerButtonsPatch {
public static boolean hideButtons() {
return SettingsEnum.HIDE_PLAYER_BUTTONS.getBoolean();
}
}

View File

@@ -0,0 +1,9 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class HideSeekbarPatch {
public static boolean hideSeekbar() {
return SettingsEnum.HIDE_SEEKBAR.getBoolean();
}
}

View File

@@ -12,10 +12,9 @@ public class HideShortsButtonPatch {
public static void hideShortsButton(View view) {
if (lastPivotTab != null && lastPivotTab.name() == "TAB_SHORTS") {
boolean hide = SettingsEnum.HIDE_SHORTS_BUTTON.getBoolean();
String message = hide ? "Shorts button: hidden" : "Shorts button: shown";
LogHelper.printDebug(() -> message);
LogHelper.printDebug(() -> hide ? "Shorts button: hidden" : "Shorts button: shown");
if (hide) {
view.setVisibility(hide ? View.GONE : View.VISIBLE);
view.setVisibility(View.GONE);
}
}
}

View File

@@ -1,10 +0,0 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class HideTimeAndSeekbarPatch {
//Used by app.revanced.patches.youtube.layout.hidetimeandseekbar.patch.HideTimeAndSeekbarPatch
public static boolean hideTimeAndSeekbar() {
return SettingsEnum.HIDE_TIME_AND_SEEKBAR.getBoolean();
}
}

View File

@@ -0,0 +1,9 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class HideTimestampPatch {
public static boolean hideTimestamp() {
return SettingsEnum.HIDE_TIMESTAMP.getBoolean();
}
}

View File

@@ -2,9 +2,8 @@ package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class HideWatchinVRPatch {
//Used by app.revanced.patches.youtube.layout.watchinvr.patch.HideWatchinVRPatch
public static boolean hideWatchinVR() {
public class HideWatchInVRPatch {
public static boolean hideWatchInVR() {
return SettingsEnum.HIDE_WATCH_IN_VR.getBoolean();
}
}

View File

@@ -1,34 +1,50 @@
package app.revanced.integrations.patches;
import static app.revanced.integrations.sponsorblock.StringRef.str;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.widget.Toast;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
import java.util.Objects;
import static app.revanced.integrations.sponsorblock.StringRef.str;
public class MicroGSupport {
private static final String MICROG_VENDOR = "com.mgoogle";
private static final String MICROG_PACKAGE_NAME = "com.mgoogle.android.gms";
private static final String MICROG_PACKAGE_NAME = MICROG_VENDOR + ".android.gms";
private static final String VANCED_MICROG_DOWNLOAD_LINK = "https://github.com/TeamVanced/VancedMicroG/releases/latest";
private static final String DONT_KILL_MY_APP_LINK = "https://dontkillmyapp.com";
private static final Uri VANCED_MICROG_PROVIDER = Uri.parse("content://" + MICROG_VENDOR + ".android.gsf.gservices/prefix");
private static void startIntent(Context context, String uriString, String message) {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
var intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse(uriString));
context.startActivity(intent);
}
public static void checkAvailability() {
var context = ReVancedUtils.getContext();
assert context != null;
var context = Objects.requireNonNull(ReVancedUtils.getContext());
try {
context.getPackageManager().getPackageInfo(MICROG_PACKAGE_NAME, PackageManager.GET_ACTIVITIES);
LogHelper.printDebug(() -> "MicroG is installed on the device");
} catch (PackageManager.NameNotFoundException exception) {
LogHelper.printException(() -> ("MicroG was not found"), exception);
Toast.makeText(context, str("microg_not_installed_warning"), Toast.LENGTH_LONG).show();
LogHelper.printInfo(() -> "Vanced MicroG was not found", exception);
startIntent(context, VANCED_MICROG_DOWNLOAD_LINK, str("microg_not_installed_warning"));
var intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse(VANCED_MICROG_DOWNLOAD_LINK));
context.startActivity(intent);
// Gracefully exit the app, so it does not crash.
System.exit(0);
}
try (var client = context.getContentResolver().acquireContentProviderClient(VANCED_MICROG_PROVIDER)) {
if (client != null) return;
LogHelper.printInfo(() -> "Vanced MicroG is not running in the background");
startIntent(context, DONT_KILL_MY_APP_LINK, str("microg_not_running_warning"));
}
}
}

View File

@@ -1,9 +1,14 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.shared.PlayerType;
public class MinimizedPlaybackPatch {
public static boolean isNotPlayingShorts(boolean isPipEnabled) {
return !PlayerType.getCurrent().isNoneOrHidden() && isPipEnabled;
}
public static boolean isMinimizedPlaybackEnabled() {
return SettingsEnum.ENABLE_MINIMIZED_PLAYBACK.getBoolean();
}

View File

@@ -1,18 +0,0 @@
package app.revanced.integrations.patches;
import java.net.URLDecoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import app.revanced.integrations.settings.SettingsEnum;
public class OpenLinksDirectlyPatch {
public static String parseRedirectUri(String uri) {
if (SettingsEnum.OPEN_LINKS_DIRECTLY.getBoolean()) {
Matcher matcher = Pattern.compile("&q=(http.+?)&v=").matcher(uri);
return matcher.find() ? URLDecoder.decode(matcher.group(1)) : uri;
}
return uri;
}
}

View File

@@ -2,8 +2,8 @@ package app.revanced.integrations.patches;
import androidx.annotation.Nullable;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.shared.PlayerType;
import app.revanced.integrations.utils.LogHelper;
/**
* Hook receiver class for 'player-type-hook' patch
@@ -24,7 +24,9 @@ public class PlayerTypeHookPatch {
// update current player type
final PlayerType newType = PlayerType.safeParseFromString(type.toString());
if (newType != null) {
if (newType == null) {
LogHelper.printException(() -> "Unknown PlayerType encountered: " + type);
} else {
PlayerType.setCurrent(newType);
LogHelper.printDebug(() -> "YouTubePlayerOverlaysLayout player type was updated to " + newType);
}

View File

@@ -1,22 +1,25 @@
package app.revanced.integrations.patches;
import java.util.concurrent.atomic.AtomicReference;
import android.text.Spanned;
import app.revanced.integrations.returnyoutubedislike.ReturnYouTubeDislike;
import java.util.concurrent.atomic.AtomicReference;
/**
* Used by app.revanced.patches.youtube.layout.returnyoutubedislike.patch.ReturnYouTubeDislikePatch
*/
public class ReturnYouTubeDislikePatch {
/**
* Called when the video id changes
* Injection point
*/
public static void newVideoLoaded(String videoId) {
ReturnYouTubeDislike.newVideoLoaded(videoId);
}
/**
* Injection point
*
* Called when a litho text component is created
*/
public static void onComponentCreated(Object conversionContext, AtomicReference<Object> textRef) {
@@ -24,16 +27,22 @@ public class ReturnYouTubeDislikePatch {
}
/**
* Injection point
*
* Called when a Shorts dislike Spannable is created
*/
public static Spanned onShortsComponentCreated(Spanned dislike) {
return ReturnYouTubeDislike.onShortsComponentCreated(dislike);
}
/**
* Injection point
*
* Called when the like/dislike button is clicked
*
* @param vote -1 (dislike), 0 (none) or 1 (like)
*/
public static void sendVote(int vote) {
for (ReturnYouTubeDislike.Vote v : ReturnYouTubeDislike.Vote.values()) {
if (v.value == vote) {
ReturnYouTubeDislike.sendVote(v);
return;
}
}
ReturnYouTubeDislike.sendVote(vote);
}
}

View File

@@ -0,0 +1,83 @@
package app.revanced.integrations.patches;
import android.widget.Toast;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
public class SpoofSignatureVerificationPatch {
/**
* Protobuf parameters used by the player.
* Known issue: video preview not showing when using the seekbar.
*/
private static final String PROTOBUF_PARAMETER_GENERAL = "CgIQBg";
/**
* Protobuf parameter of shorts and YouTube stories.
* Known issue: captions are positioned on upper area in the player.
*/
private static final String PROTOBUF_PARAMETER_SHORTS = "8AEB"; // "8AEByAMTuAQP"
/**
* Target Protobuf parameters.
* Used by the generic player.
*/
private static final String PROTOBUF_PARAMETER_TARGET = "YADI";
/**
* Injection point.
*
* @param originalValue originalValue protobuf parameter
*/
public static String overrideProtobufParameter(String originalValue) {
try {
if (!SettingsEnum.SIGNATURE_SPOOFING.getBoolean()) {
return originalValue;
}
LogHelper.printDebug(() -> "Original protobuf parameter value: " + originalValue);
if (originalValue.startsWith(PROTOBUF_PARAMETER_TARGET) || originalValue.isEmpty()) {
return PROTOBUF_PARAMETER_SHORTS;
}
} catch (Exception ex) {
LogHelper.printException(() -> "overrideProtobufParameter failure", ex);
}
return originalValue;
}
/**
* Injection point. Runs off the main thread.
* <p>
* Used to check the response code of video playback requests made by YouTube.
* Response code of interest is 403 that indicate a signature verification failure for the current request
*
* @param responseCode HTTP status code of the completed YouTube connection
*/
public static void onResponse(int responseCode) {
try {
if (responseCode < 400 || responseCode >= 500) {
return; // everything normal
}
LogHelper.printDebug(() -> "YouTube HTTP status code: " + responseCode);
if (SettingsEnum.SIGNATURE_SPOOFING.getBoolean()) {
return; // already enabled
}
SettingsEnum.SIGNATURE_SPOOFING.saveValue(true);
ReVancedUtils.runOnMainThread(() -> {
Toast.makeText(
ReVancedUtils.getContext(),
"Spoofing app signature to prevent playback issues", Toast.LENGTH_LONG
).show();
// it would be great if the video could be forcefully reloaded, but currently there is no code to do this
});
} catch (Exception ex) {
LogHelper.printException(() -> "onResponse failure", ex);
}
}
}

View File

@@ -1,26 +0,0 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class VideoBufferPatch {
public static int getMaxBuffer() {
int confVal = SettingsEnum.MAX_BUFFER.getInt();
if (confVal < 1) confVal = 1;
return confVal;
}
public static int getPlaybackBuffer() {
int confVal = SettingsEnum.PLAYBACK_MAX_BUFFER.getInt();
if (confVal < 1) confVal = 1;
return confVal;
}
public static int getReBuffer() {
int confVal = SettingsEnum.MAX_PLAYBACK_BUFFER_AFTER_REBUFFER.getInt();
if (confVal < 1) confVal = 1;
return confVal;
}
}

View File

@@ -36,7 +36,7 @@ public final class VideoInformation {
seekMethod = thisRef.getClass().getMethod(SEEK_METHOD_NAME, Long.TYPE);
seekMethod.setAccessible(true);
} catch (NoSuchMethodException ex) {
LogHelper.printDebug(() -> "Failed to initialize: " + ex.getMessage());
LogHelper.printException(() -> "Failed to initialize", ex);
}
}
@@ -87,7 +87,7 @@ public final class VideoInformation {
LogHelper.printDebug(() -> "Seeking to " + millisecond);
seekMethod.invoke(playerController.get(), millisecond);
} catch (Exception ex) {
LogHelper.printDebug(() -> "Failed to seek: " + ex.getMessage());
LogHelper.printException(() -> "Failed to seek", ex);
}
});
}

View File

@@ -2,19 +2,17 @@ package app.revanced.integrations.patches.playback.quality;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.widget.Toast;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
public class RememberVideoQualityPatch {
public static int selectedQuality1 = -2;
@@ -23,37 +21,37 @@ public class RememberVideoQualityPatch {
public static void changeDefaultQuality(int defaultQuality) {
Context context = ReVancedUtils.getContext();
if (isConnectedWifi(context)) {
try {
SharedPrefHelper.saveString(SharedPrefHelper.SharedPrefNames.REVANCED_PREFS, "wifi_quality", defaultQuality + "");
} catch (Exception ex) {
LogHelper.printException(() -> ("Failed to change default WI-FI quality:" + ex));
Toast.makeText(context, "Failed to change default WI-FI quality:", Toast.LENGTH_SHORT).show();
}
LogHelper.printDebug(() -> "Changing default Wi-Fi quality to: " + defaultQuality);
Toast.makeText(context, "Changing default Wi-Fi quality to: " + defaultQuality, Toast.LENGTH_SHORT).show();
} else if (isConnectedMobile(context)) {
try {
SharedPrefHelper.saveString(SharedPrefHelper.SharedPrefNames.REVANCED_PREFS, "mobile_quality", defaultQuality + "");
} catch (Exception ex) {
LogHelper.printDebug(() -> "Failed to change default mobile data quality" + ex);
Toast.makeText(context, "Failed to change default mobile data quality", Toast.LENGTH_SHORT).show();
}
LogHelper.printDebug(() -> "Changing default mobile data quality to:" + defaultQuality);
Toast.makeText(context, "Changing default mobile data quality to:" + defaultQuality, Toast.LENGTH_SHORT).show();
var networkType = getNetworType(context);
if (networkType == NetworkType.NONE) {
String message = "No internet connection.";
LogHelper.printDebug(() -> message);
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
} else {
LogHelper.printDebug(() -> "No internet connection.");
Toast.makeText(context, "No internet connection.", Toast.LENGTH_SHORT).show();
var preferenceKey = "wifi_quality";
var networkTypeMessage = "WIFI";
if (networkType == NetworkType.MOBILE) {
networkTypeMessage = "mobile";
preferenceKey = "mobile_quality";
}
SharedPrefHelper.saveString(SharedPrefHelper.SharedPrefNames.REVANCED_PREFS, preferenceKey, defaultQuality + "");
String message = "Changing default " + networkTypeMessage + " quality to: " + defaultQuality;
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
userChangedQuality = false;
}
public static int setVideoQuality(Object[] qualities, int quality, Object qInterface, String qIndexMethod) {
int preferredQuality;
Field[] fields;
if (!(newVideo || userChangedQuality) || qInterface == null) {
return quality;
}
Class<?> intType = Integer.TYPE;
ArrayList<Integer> iStreamQualities = new ArrayList<>();
try {
@@ -88,55 +86,51 @@ public class RememberVideoQualityPatch {
LogHelper.printDebug(() -> "Quality: " + qualityToLog);
Context context = ReVancedUtils.getContext();
if (context == null) {
LogHelper.printException(() -> ("Context is null or settings not initialized, returning quality: " + qualityToLog));
LogHelper.printException(() -> "Context is null or settings not initialized, returning quality: " + qualityToLog);
return quality;
}
if (isConnectedWifi(context)) {
preferredQuality = SharedPrefHelper.getInt(SharedPrefHelper.SharedPrefNames.REVANCED_PREFS, "wifi_quality", -2);
LogHelper.printDebug(() -> "Wi-Fi connection detected, preferred quality: " + preferredQuality);
} else if (isConnectedMobile(context)) {
preferredQuality = SharedPrefHelper.getInt(SharedPrefHelper.SharedPrefNames.REVANCED_PREFS, "mobile_quality", -2);
LogHelper.printDebug(() -> "Mobile data connection detected, preferred quality: " + preferredQuality);
} else {
var networkType = getNetworType(context);
if (networkType == NetworkType.NONE) {
LogHelper.printDebug(() -> "No Internet connection!");
return quality;
}
if (preferredQuality == -2) {
return quality;
}
for (int streamQuality2 : iStreamQualities) {
final int indexToLog = index;
LogHelper.printDebug(() -> "Quality at index " + indexToLog + ": " + streamQuality2);
index++;
}
for (Integer iStreamQuality : iStreamQualities) {
int streamQuality3 = iStreamQuality;
if (streamQuality3 <= preferredQuality) {
quality = streamQuality3;
} else {
var preferenceKey = "wifi_quality";
if (networkType == NetworkType.MOBILE) preferenceKey = "mobile_quality";
int preferredQuality = SharedPrefHelper.getInt(SharedPrefHelper.SharedPrefNames.REVANCED_PREFS, preferenceKey, -2);
if (preferredQuality == -2) return quality;
for (int streamQuality2 : iStreamQualities) {
final int indexToLog = index;
LogHelper.printDebug(() -> "Quality at index " + indexToLog + ": " + streamQuality2);
index++;
}
for (Integer iStreamQuality : iStreamQualities) {
int streamQuality3 = iStreamQuality;
if (streamQuality3 <= preferredQuality) {
quality = streamQuality3;
}
}
if (quality == -2) return quality;
int qualityIndex = iStreamQualities.indexOf(quality);
final int qualityToLog2 = quality;
LogHelper.printDebug(() -> "Index of quality " + qualityToLog2 + " is " + qualityIndex);
try {
Class<?> cl = qInterface.getClass();
Method m = cl.getMethod(qIndexMethod, Integer.TYPE);
LogHelper.printDebug(() -> "Method is: " + qIndexMethod);
m.invoke(qInterface, iStreamQualities.get(qualityIndex));
LogHelper.printDebug(() -> "Quality changed to: " + qualityIndex);
return qualityIndex;
} catch (Exception ex) {
LogHelper.printException(() -> "Failed to set quality", ex);
return qualityIndex;
}
}
if (quality == -2) {
return quality;
}
int qualityIndex = iStreamQualities.indexOf(quality);
final int qualityToLog2 = quality;
LogHelper.printDebug(() -> "Index of quality " + qualityToLog2 + " is " + qualityIndex);
try {
Class<?> cl = qInterface.getClass();
Method m = cl.getMethod(qIndexMethod, Integer.TYPE);
LogHelper.printDebug(() -> "Method is: " + qIndexMethod);
m.invoke(qInterface, iStreamQualities.get(qualityIndex));
LogHelper.printDebug(() -> "Quality changed to: " + qualityIndex);
return qualityIndex;
} catch (Exception ex) {
LogHelper.printException(() -> ("Failed to set quality"), ex);
Toast.makeText(context, "Failed to set quality", Toast.LENGTH_SHORT).show();
return qualityIndex;
}
}
public static void userChangedQuality(int selectedQuality) {
// Do not remember a **new** quality if REMEMBER_VIDEO_QUALITY is false
if (!SettingsEnum.REMEMBER_VIDEO_QUALITY_LAST_SELECTED.getBoolean()) return;
selectedQuality1 = selectedQuality;
@@ -147,19 +141,23 @@ public class RememberVideoQualityPatch {
newVideo = true;
}
private static NetworkInfo getNetworkInfo(Context context) {
private static NetworkType getNetworType(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo();
var networkInfo = cm.getActiveNetworkInfo();
if (networkInfo == null || !networkInfo.isConnected()) {
return NetworkType.NONE;
} else {
var type = networkInfo.getType();
return type == ConnectivityManager.TYPE_MOBILE || type == ConnectivityManager.TYPE_BLUETOOTH ? NetworkType.MOBILE : NetworkType.OTHER;
}
}
private static boolean isConnectedWifi(Context context) {
NetworkInfo info = getNetworkInfo(context);
return info != null && info.isConnected() && info.getType() == 1;
}
private static boolean isConnectedMobile(Context context) {
NetworkInfo info = getNetworkInfo(context);
return info != null && info.isConnected() && info.getType() == 0;
enum NetworkType {
MOBILE,
OTHER,
NONE
}
}

View File

@@ -1,32 +0,0 @@
package app.revanced.integrations.patches.playback.speed;
import static app.revanced.integrations.utils.SharedPrefHelper.SharedPrefNames.REVANCED_PREFS;
import static app.revanced.integrations.utils.SharedPrefHelper.getFloat;
import static app.revanced.integrations.utils.SharedPrefHelper.saveFloat;
import android.widget.Toast;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
public final class RememberPlaybackRatePatch {
private static final String REMEMBERED_PLAYBACK_RATE_PREFERENCE_KEY = "revanced_remember_playback_rate_last_value";
public static void rememberPlaybackRate(final float selectedPlaybackRate) {
if (!SettingsEnum.REMEMBER_PLAYBACK_RATE_SELECTED.getBoolean()) return;
Toast.makeText(ReVancedUtils.getContext(), "Playback rate will be remembered", Toast.LENGTH_SHORT).show();
LogHelper.printDebug(() -> "Remembering playback rate: " + selectedPlaybackRate);
saveFloat(REVANCED_PREFS, REMEMBERED_PLAYBACK_RATE_PREFERENCE_KEY, selectedPlaybackRate);
}
public static float getRememberedPlaybackRate() {
final var playbackRateOverride = getFloat(REVANCED_PREFS, REMEMBERED_PLAYBACK_RATE_PREFERENCE_KEY, -2f);
LogHelper.printDebug(() -> "Overriding playback rate: " + playbackRateOverride);
return playbackRateOverride;
}
}

View File

@@ -0,0 +1,83 @@
package app.revanced.integrations.patches.playback.speed;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
public final class RememberPlaybackSpeedPatch {
/**
* The current playback speed
*/
private static float currentPlaybackSpeed = getLastRememberedPlaybackSpeed();
private final static float DEFAULT_PLAYBACK_SPEED = (float) SettingsEnum.REMEMBER_PLAYBACK_SPEED_LAST_SELECTED_VALUE.getDefaultValue();
@Nullable
private static String currentVideoId;
private static void showToast(final String message) {
Toast.makeText(ReVancedUtils.getContext(), message, Toast.LENGTH_LONG).show();
}
private static float getLastRememberedPlaybackSpeed() {
return SettingsEnum.REMEMBER_PLAYBACK_SPEED_LAST_SELECTED_VALUE.getFloat();
}
private static void rememberPlaybackSpeed() {
SettingsEnum.REMEMBER_PLAYBACK_SPEED_LAST_SELECTED_VALUE.saveValue(currentPlaybackSpeed);
}
private static boolean rememberLastSelectedPlaybackSpeed() {
return SettingsEnum.REMEMBER_PLAYBACK_SPEED_LAST_SELECTED.getBoolean();
}
/**
* Injection point.
* Called when a new video loads.
*/
public static void newVideoLoaded(@NonNull String videoId) {
if (videoId.equals(currentVideoId)) {
return;
}
currentVideoId = videoId;
currentPlaybackSpeed = getLastRememberedPlaybackSpeed();
}
/**
* Injection point.
* Called when a playback speed is selected.
*
* @param playbackSpeed The playback speed to set.
*/
public static void setPlaybackSpeed(final float playbackSpeed) {
LogHelper.printDebug(() -> "Playback speed changed to: " + playbackSpeed);
currentPlaybackSpeed = playbackSpeed;
if (rememberLastSelectedPlaybackSpeed()) {
rememberPlaybackSpeed();
showToast("Remembering playback speed: " + playbackSpeed + "x");
} else {
if (getLastRememberedPlaybackSpeed() == DEFAULT_PLAYBACK_SPEED) return;
showToast("Applying playback speed: " + playbackSpeed + "x");
}
}
/**
* Injection point.
* Called when playback first starts,
* and also called immediately after the user selects a new video speed.
*
* @return The currently set playback speed.
*/
public static float getCurrentPlaybackSpeed() {
return currentPlaybackSpeed;
}
}

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