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

Compare commits

...

82 Commits

Author SHA1 Message Date
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
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
semantic-release-bot
057e599aec chore(release): 0.94.0-dev.1 [skip ci]
# [0.94.0-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.93.2-dev.1...v0.94.0-dev.1) (2023-01-22)

### Features

* **youtube:** `open-links-externally` patch ([4cbe833](4cbe8338b3))
2023-01-22 14:51:44 +00:00
Rizwan
4cbe8338b3 feat(youtube): open-links-externally patch 2023-01-22 15:49:14 +01:00
Linus789
6679e6ee45 feat: spoof-wifi-connection patch 2023-01-21 23:20:57 +01:00
semantic-release-bot
d65a107c53 chore(release): 0.93.2-dev.1 [skip ci]
## [0.93.2-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.93.1...v0.93.2-dev.1) (2023-01-21)

### Bug Fixes

* **youtube:** save new instead of default value ([#298](https://github.com/revanced/revanced-integrations/issues/298)) ([559bbf9](559bbf9778))
2023-01-21 22:20:12 +00:00
LisoUseInAIKyrios
559bbf9778 fix(youtube): save new instead of default value (#298) 2023-01-21 23:17:50 +01:00
semantic-release-bot
737246636b chore(release): 0.93.1 [skip ci]
## [0.93.1](https://github.com/revanced/revanced-integrations/compare/v0.93.0...v0.93.1) (2023-01-17)

### Bug Fixes

* **youtube/microg-support:** open download link if Vanced MicroG is missing ([#290](https://github.com/revanced/revanced-integrations/issues/290)) ([0af87e2](0af87e2908))
2023-01-17 23:40:49 +00:00
oSumAtrIX
c2d121f32b chore: merge branch dev to main (#291) 2023-01-18 00:38:50 +01:00
reis
0af87e2908 fix(youtube/microg-support): open download link if Vanced MicroG is missing (#290) 2023-01-16 23:42:37 +01:00
semantic-release-bot
6960b0bda5 chore(release): 0.93.0 [skip ci]
# [0.93.0](https://github.com/revanced/revanced-integrations/compare/v0.92.2...v0.93.0) (2023-01-14)

### Features

* `remove-screenshot-restriction` patch ([#285](https://github.com/revanced/revanced-integrations/issues/285)) ([c3eff91](c3eff913dd))
* **youtube/return-youtube-dislike:** better matching color for separators ([#281](https://github.com/revanced/revanced-integrations/issues/281)) ([2a16da1](2a16da15d9))
* **youtube/return-youtube-dislike:** style for minimum width ([#284](https://github.com/revanced/revanced-integrations/issues/284)) ([a80fab7](a80fab7070))
* **youtube:** `spoof-app-version` patch ([#282](https://github.com/revanced/revanced-integrations/issues/282)) ([fd818a3](fd818a35f5))
2023-01-14 02:26:52 +00:00
oSumAtrIX
5b9a0d3d23 chore: merge branch dev to main (#289) 2023-01-14 03:24:56 +01:00
oSumAtrIX
9480f20d44 ci: fix spelling mistake 2023-01-14 03:20:37 +01:00
oSumAtrIX
557c311825 chore: merge branch dev to main (#288) 2023-01-14 03:16:53 +01:00
oSumAtrIX
62eb76415c ci: fix spelling mistake 2023-01-14 03:15:59 +01:00
oSumAtrIX
5d2cc2ca5d chore: merge branch dev to main (#287) 2023-01-13 22:35:04 +01:00
oSumAtrIX
09afccce27 ci: use PAT in step Release
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-13 22:32:40 +01:00
oSumAtrIX
f393d3790a ci: only fetch latest commit when checking out
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-13 22:32:14 +01:00
oSumAtrIX
d33c69f8c2 chore: merge branch dev to main (#283) 2023-01-13 16:03:26 +01:00
oSumAtrIX
b56f472813 ci: give jobs names
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-13 14:40:44 +01:00
semantic-release-bot
803130a693 chore(release): 0.93.0-dev.1 [skip ci]
# [0.93.0-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.92.2...v0.93.0-dev.1) (2023-01-10)

### Features

* `remove-screenshot-restriction` patch ([#285](https://github.com/revanced/revanced-integrations/issues/285)) ([c3eff91](c3eff913dd))
* **youtube/return-youtube-dislike:** better matching color for separators ([#281](https://github.com/revanced/revanced-integrations/issues/281)) ([2a16da1](2a16da15d9))
* **youtube/return-youtube-dislike:** style for minimum width ([#284](https://github.com/revanced/revanced-integrations/issues/284)) ([a80fab7](a80fab7070))
* **youtube:** `spoof-app-version` patch ([#282](https://github.com/revanced/revanced-integrations/issues/282)) ([fd818a3](fd818a35f5))
2023-01-10 21:45:18 +00:00
oSumAtrIX
8032a3f46a ci: bypass push permission on protected branches with owner PAT
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-10 22:43:30 +01:00
oSumAtrIX
d72937c2fd ci: downgrade semantic release and plugins to v19
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-10 22:43:30 +01:00
LisoUseInAIKyrios
fd818a35f5 feat(youtube): spoof-app-version patch (#282)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-10 19:27:43 +01:00
LisoUseInAIKyrios
a80fab7070 feat(youtube/return-youtube-dislike): style for minimum width (#284) 2023-01-10 19:01:21 +01:00
Linus
c3eff913dd feat: remove-screenshot-restriction patch (#285)
Co-authored-by: Linus789 <Linus789@users.noreply.github.com>
2023-01-08 22:24:31 +01:00
LisoUseInAIKyrios
2a16da15d9 feat(youtube/return-youtube-dislike): better matching color for separators (#281) 2023-01-08 07:31:07 +01:00
semantic-release-bot
d076fe0dce chore(release): 0.92.2 [skip ci]
## [0.92.2](https://github.com/revanced/revanced-integrations/compare/v0.92.1...v0.92.2) (2023-01-07)

### Bug Fixes

* load numeric preferences as type String ([212d3a7](212d3a72d8))
2023-01-07 13:43:20 +00:00
oSumAtrIX
e833d16bb8 chore: merge branch dev to main (#280) 2023-01-07 14:41:14 +01:00
semantic-release-bot
bcd93db9b8 chore(release): 0.92.2-dev.1 [skip ci]
## [0.92.2-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.92.1...v0.92.2-dev.1) (2023-01-07)

### Bug Fixes

* load numeric preferences as type String ([212d3a7](212d3a72d8))
2023-01-07 13:39:49 +00:00
oSumAtrIX
212d3a72d8 fix: load numeric preferences as type String
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-07 14:19:00 +01:00
semantic-release-bot
758b645913 chore(release): 0.92.1 [skip ci]
## [0.92.1](https://github.com/revanced/revanced-integrations/compare/v0.92.0...v0.92.1) (2023-01-07)

### Bug Fixes

* save preferences with correct type ([56c1a3c](56c1a3c03c))

Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-07 13:29:21 +01:00
oSumAtrIX
e9fd05f4c6 chore: merge branch dev to main 2023-01-07 11:37:53 +01:00
semantic-release-bot
31df68d2c3 chore(release): 0.92.1-dev.1 [skip ci]
## [0.92.1-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.92.0...v0.92.1-dev.1) (2023-01-07)

### Bug Fixes

* save preferences with correct type ([56c1a3c](56c1a3c03c))
2023-01-07 10:32:17 +00:00
oSumAtrIX
56c1a3c03c fix: save preferences with correct type
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-07 11:30:21 +01:00
oSumAtrIX
915b8d371a refactor: early return in saveValue
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
2023-01-07 11:30:21 +01:00
semantic-release-bot
eea37a9bad chore(release): 0.92.0 [skip ci]
# [0.92.0](https://github.com/revanced/revanced-integrations/compare/v0.91.2...v0.92.0) (2023-01-07)

### Bug Fixes

* ensure thread safety for class `StringRef` ([#273](https://github.com/revanced/revanced-integrations/issues/273)) ([f5c5fcb](f5c5fcb5e4))

### Features

* **youtube:** `remember-playback-rate` patch ([b5c0c84](b5c0c843a5))
2023-01-07 08:49:14 +00:00
oSumAtrIX
05cca001ac chore: merge branch dev to main (#275) 2023-01-07 09:47:28 +01:00
49 changed files with 2546 additions and 888 deletions

View File

@@ -11,6 +11,7 @@ env:
jobs:
pull-request:
name: Open pull request
runs-on: ubuntu-latest
steps:
- name: Checkout

View File

@@ -3,7 +3,7 @@ name: Release
on:
workflow_dispatch:
push:
branches:
branches:
- main
- dev
pull_request:
@@ -12,13 +12,19 @@ on:
- dev
jobs:
build:
release:
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
with:
# Make sure the release step uses its own credentials:
# https://github.com/cycjimmy/semantic-release-action#private-packages
persist-credentials: false
fetch-depth: 0
- name: Set up JDK
uses: actions/setup-java@v3
with:
@@ -27,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 @saithodev/semantic-release-backmerge @semantic-release/git @semantic-release/changelog gradle-semantic-release-plugin -D
run: npm install
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npx semantic-release
GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}
run: npm exec semantic-release

View File

@@ -1,3 +1,225 @@
## [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](https://github.com/revanced/revanced-integrations/commit/cfb7aab77991e8a123fb6956e699df8ad53bf59d))
## [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](https://github.com/revanced/revanced-integrations/commit/7225bc3c48b2d8f94d21b5481e37d78a26f49544))
## [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](https://github.com/revanced/revanced-integrations/commit/1dd84a37851359143140d1d1df664c3eab680fa7))
## [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](https://github.com/revanced/revanced-integrations/commit/1dd84a37851359143140d1d1df664c3eab680fa7))
# [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](https://github.com/revanced/revanced-integrations/commit/43e419e6a6b7e6da372b5ec970a70ae86702b706))
# [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](https://github.com/revanced/revanced-integrations/commit/43e419e6a6b7e6da372b5ec970a70ae86702b706))
# [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](https://github.com/revanced/revanced-integrations/commit/293eae4a46ee8acf3484ac271a1ccf194853d42e))
* spoof-wifi-connection patch ([6679e6e](https://github.com/revanced/revanced-integrations/commit/6679e6ee45385c8a3cf559f685dae7e6cf1f0c1f))
* **youtube:** `hide-player-buttons` patch ([d5bcef2](https://github.com/revanced/revanced-integrations/commit/d5bcef2cdbe5dfdb1ad2552e7fde339cee1a3f27))
# [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](https://github.com/revanced/revanced-integrations/commit/d5bcef2cdbe5dfdb1ad2552e7fde339cee1a3f27))
# [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](https://github.com/revanced/revanced-integrations/commit/293eae4a46ee8acf3484ac271a1ccf194853d42e))
* spoof-wifi-connection patch ([6679e6e](https://github.com/revanced/revanced-integrations/commit/6679e6ee45385c8a3cf559f685dae7e6cf1f0c1f))
## [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](https://github.com/revanced/revanced-integrations/commit/49aedae3fcbb4ec1cfe6b9291c95ccac6935d1d0))
* **youtube:** resolve duplicate preference keys ([#307](https://github.com/revanced/revanced-integrations/issues/307)) ([27d1392](https://github.com/revanced/revanced-integrations/commit/27d1392a73ba634e4d05c0c22849bb933a8f04b3))
## [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](https://github.com/revanced/revanced-integrations/commit/49aedae3fcbb4ec1cfe6b9291c95ccac6935d1d0))
* **youtube:** resolve duplicate preference keys ([#307](https://github.com/revanced/revanced-integrations/issues/307)) ([27d1392](https://github.com/revanced/revanced-integrations/commit/27d1392a73ba634e4d05c0c22849bb933a8f04b3))
# [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](https://github.com/revanced/revanced-integrations/commit/7551f0104c463714749acc6abedbea5cd7afb52f))
* **youtube/return-youtube-dislike:** gracefully exit if Vanced MicroG is missing or not running ([#303](https://github.com/revanced/revanced-integrations/issues/303)) ([03764bc](https://github.com/revanced/revanced-integrations/commit/03764bcc651c6b723a999a58ed9cc9d253075905))
* **youtube:** save new instead of default value ([#298](https://github.com/revanced/revanced-integrations/issues/298)) ([559bbf9](https://github.com/revanced/revanced-integrations/commit/559bbf9778f20ac0f5ce3af677230a1ec28a55ff))
### Features
* **youtube/general-ads:** remove hiding video shelf ([04147c1](https://github.com/revanced/revanced-integrations/commit/04147c17c98bccea27e0293a71ffccc97f5a155d))
* **youtube/microg-support:** check if Vanced MicroG is running in the background ([#301](https://github.com/revanced/revanced-integrations/issues/301)) ([6e31b78](https://github.com/revanced/revanced-integrations/commit/6e31b7889a2488b3d61042111437a6ed4eec019c))
* **youtube:** `open-links-externally` patch ([4cbe833](https://github.com/revanced/revanced-integrations/commit/4cbe8338b3f4ab49139168d7a3d0c9ebebf68952))
* **youtube:** show toasts along exceptions ([#293](https://github.com/revanced/revanced-integrations/issues/293)) ([dbf1f3f](https://github.com/revanced/revanced-integrations/commit/dbf1f3f0ce0500752e5d6c4ce49d7d2b27cc6dc4))
# [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](https://github.com/revanced/revanced-integrations/commit/dbf1f3f0ce0500752e5d6c4ce49d7d2b27cc6dc4))
# [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](https://github.com/revanced/revanced-integrations/commit/7551f0104c463714749acc6abedbea5cd7afb52f))
# [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](https://github.com/revanced/revanced-integrations/commit/04147c17c98bccea27e0293a71ffccc97f5a155d))
# [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](https://github.com/revanced/revanced-integrations/commit/03764bcc651c6b723a999a58ed9cc9d253075905))
# [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](https://github.com/revanced/revanced-integrations/commit/6e31b7889a2488b3d61042111437a6ed4eec019c))
# [0.94.0-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.93.2-dev.1...v0.94.0-dev.1) (2023-01-22)
### Features
* **youtube:** `open-links-externally` patch ([4cbe833](https://github.com/revanced/revanced-integrations/commit/4cbe8338b3f4ab49139168d7a3d0c9ebebf68952))
## [0.93.2-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.93.1...v0.93.2-dev.1) (2023-01-21)
### Bug Fixes
* **youtube:** save new instead of default value ([#298](https://github.com/revanced/revanced-integrations/issues/298)) ([559bbf9](https://github.com/revanced/revanced-integrations/commit/559bbf9778f20ac0f5ce3af677230a1ec28a55ff))
## [0.93.1](https://github.com/revanced/revanced-integrations/compare/v0.93.0...v0.93.1) (2023-01-17)
### Bug Fixes
* **youtube/microg-support:** open download link if Vanced MicroG is missing ([#290](https://github.com/revanced/revanced-integrations/issues/290)) ([0af87e2](https://github.com/revanced/revanced-integrations/commit/0af87e29085fb5b55cd80ccb61f6e58f72fc5271))
# [0.93.0](https://github.com/revanced/revanced-integrations/compare/v0.92.2...v0.93.0) (2023-01-14)
### Features
* `remove-screenshot-restriction` patch ([#285](https://github.com/revanced/revanced-integrations/issues/285)) ([c3eff91](https://github.com/revanced/revanced-integrations/commit/c3eff913ddb076dc86efd0398e34d04336a655ec))
* **youtube/return-youtube-dislike:** better matching color for separators ([#281](https://github.com/revanced/revanced-integrations/issues/281)) ([2a16da1](https://github.com/revanced/revanced-integrations/commit/2a16da15d9a8d37ca65973671f0b4edff0078b47))
* **youtube/return-youtube-dislike:** style for minimum width ([#284](https://github.com/revanced/revanced-integrations/issues/284)) ([a80fab7](https://github.com/revanced/revanced-integrations/commit/a80fab7070be203aa8aaf4c8422ea8e998843e67))
* **youtube:** `spoof-app-version` patch ([#282](https://github.com/revanced/revanced-integrations/issues/282)) ([fd818a3](https://github.com/revanced/revanced-integrations/commit/fd818a35f5252fc0a37e12b528e020cdfac0ab53))
# [0.93.0-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.92.2...v0.93.0-dev.1) (2023-01-10)
### Features
* `remove-screenshot-restriction` patch ([#285](https://github.com/revanced/revanced-integrations/issues/285)) ([c3eff91](https://github.com/revanced/revanced-integrations/commit/c3eff913ddb076dc86efd0398e34d04336a655ec))
* **youtube/return-youtube-dislike:** better matching color for separators ([#281](https://github.com/revanced/revanced-integrations/issues/281)) ([2a16da1](https://github.com/revanced/revanced-integrations/commit/2a16da15d9a8d37ca65973671f0b4edff0078b47))
* **youtube/return-youtube-dislike:** style for minimum width ([#284](https://github.com/revanced/revanced-integrations/issues/284)) ([a80fab7](https://github.com/revanced/revanced-integrations/commit/a80fab7070be203aa8aaf4c8422ea8e998843e67))
* **youtube:** `spoof-app-version` patch ([#282](https://github.com/revanced/revanced-integrations/issues/282)) ([fd818a3](https://github.com/revanced/revanced-integrations/commit/fd818a35f5252fc0a37e12b528e020cdfac0ab53))
## [0.92.2](https://github.com/revanced/revanced-integrations/compare/v0.92.1...v0.92.2) (2023-01-07)
### Bug Fixes
* load numeric preferences as type String ([212d3a7](https://github.com/revanced/revanced-integrations/commit/212d3a72d879189c061fb77805cda81ca0519495))
## [0.92.2-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.92.1...v0.92.2-dev.1) (2023-01-07)
### Bug Fixes
* load numeric preferences as type String ([212d3a7](https://github.com/revanced/revanced-integrations/commit/212d3a72d879189c061fb77805cda81ca0519495))
## [0.92.1](https://github.com/revanced/revanced-integrations/compare/v0.92.0...v0.92.1) (2023-01-07)
### Bug Fixes
* save preferences with correct type ([56c1a3c](https://github.com/revanced/revanced-integrations/commit/56c1a3c03c67393285a7499e9d3e92eb710691f0))
## [0.92.1](https://github.com/revanced/revanced-integrations/compare/v0.92.0...v0.92.1) (2023-01-07)
### Bug Fixes
* save preferences with correct type ([56c1a3c](https://github.com/revanced/revanced-integrations/commit/56c1a3c03c67393285a7499e9d3e92eb710691f0))
## [0.92.1-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.92.0...v0.92.1-dev.1) (2023-01-07)
### Bug Fixes
* save preferences with correct type ([56c1a3c](https://github.com/revanced/revanced-integrations/commit/56c1a3c03c67393285a7499e9d3e92eb710691f0))
# [0.92.0](https://github.com/revanced/revanced-integrations/compare/v0.91.2...v0.92.0) (2023-01-07)
### Bug Fixes
* ensure thread safety for class `StringRef` ([#273](https://github.com/revanced/revanced-integrations/issues/273)) ([f5c5fcb](https://github.com/revanced/revanced-integrations/commit/f5c5fcb5e46f43b2e5abbbc4f55a1cf1c52e0549))
### Features
* **youtube:** `remember-playback-rate` patch ([b5c0c84](https://github.com/revanced/revanced-integrations/commit/b5c0c843a502a7f4938053d136e826fbf7399e7b))
# [0.92.0-dev.1](https://github.com/revanced/revanced-integrations/compare/v0.91.3-dev.1...v0.92.0-dev.1) (2023-01-07)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
package app.revanced.all.screenshot.removerestriction;
import android.view.Window;
import android.view.WindowManager;
public class RemoveScreenshotRestrictionPatch {
public static void setFlags(Window window, int flags, int mask) {
window.setFlags(flags & ~WindowManager.LayoutParams.FLAG_SECURE, mask & ~WindowManager.LayoutParams.FLAG_SECURE);
}
}

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,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;
@@ -32,12 +31,12 @@ public final class GeneralAdsPatch extends Filter {
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 selfSponsor = new BlockRule(SettingsEnum.ADREMOVER_SELF_SPONSOR_REMOVAL, "cta_shelf_card");
var chapterTeaser = new BlockRule(SettingsEnum.ADREMOVER_CHAPTER_TEASER_REMOVAL, "expandable_metadata");
var viewProducts = new BlockRule(SettingsEnum.ADREMOVER_VIEW_PRODUCTS, "product_item", "products_in_video");
var graySeparator = new BlockRule(SettingsEnum.ADREMOVER_GRAY_SEPARATOR,
"cell_divider" // layout residue (gray line above the buttoned ad),
);
@@ -69,13 +68,13 @@ public final class GeneralAdsPatch extends Filter {
buttonedAd,
communityPosts,
paidContent,
suggestions,
latestPosts,
movieAds,
chapterTeaser,
communityGuidelines,
compactBanner,
inFeedSurvey,
viewProducts,
medicalPanel,
merchandise,
infoPanel,
@@ -115,7 +114,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 +143,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 +166,4 @@ public final class GeneralAdsPatch extends Filter {
hideView(SettingsEnum.ADREMOVER_SHORTS_REMOVAL, view);
}
private static void log(String message) {
LogHelper.printDebug(() -> message);
}
}

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,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

@@ -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,33 +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.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

@@ -0,0 +1,19 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class OpenLinksExternallyPatch {
/**
* Override 'android.support.customtabs.action.CustomTabsService',
* in order to open links in the default browser. This is done by returning an empty string,
* for the service that handles custom tabs in the Android support library
* which opens links in the default service instead.
*
* @param original The original custom tabs service.
* @return The new, default service to open links with or the original service.
*/
public static String enableExternalBrowser(String original) {
if (SettingsEnum.ENABLE_EXTERNAL_BROWSER.getBoolean()) original = "";
return original;
}
}

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

@@ -0,0 +1,15 @@
package app.revanced.integrations.patches;
import app.revanced.integrations.settings.SettingsEnum;
public class SpoofAppVersionPatch {
public static String getYouTubeVersionOverride(String version) {
if (SettingsEnum.SPOOF_APP_VERSION.getBoolean()){
// Override with the most recent version that does not show the new UI player layout.
// If the new UI shows up for some users, then change this to an older version (such as 17.29.34).
return "17.30.34";
}
return version;
}
}

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

@@ -1,5 +1,6 @@
package app.revanced.integrations.patches.playback.quality;
import android.annotation.SuppressLint;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
@@ -26,24 +27,25 @@ public class RememberVideoQualityPatch {
if (isConnectedWifi(context)) {
try {
SharedPrefHelper.saveString(SharedPrefHelper.SharedPrefNames.REVANCED_PREFS, "wifi_quality", defaultQuality + "");
String message = "Changing default Wi-Fi quality to: " + defaultQuality;
LogHelper.printDebug(() -> message);
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
} 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.printException(() -> "Failed to change default WI-FI quality", ex);
}
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 + "");
String message = "Changing default mobile data quality to:" + defaultQuality;
LogHelper.printDebug(() -> message);
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
} 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.printException(() -> "Failed to change default mobile data quality", ex);
}
LogHelper.printDebug(() -> "Changing default mobile data quality to:" + defaultQuality);
Toast.makeText(context, "Changing default mobile data quality to:" + defaultQuality, Toast.LENGTH_SHORT).show();
} else {
LogHelper.printDebug(() -> "No internet connection.");
Toast.makeText(context, "No internet connection.", Toast.LENGTH_SHORT).show();
String message = "No internet connection.";
LogHelper.printDebug(() -> message);
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
userChangedQuality = false;
}
@@ -88,7 +90,7 @@ 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)) {
@@ -129,8 +131,7 @@ public class RememberVideoQualityPatch {
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();
LogHelper.printException(() -> "Failed to set quality", ex);
return qualityIndex;
}
}
@@ -147,6 +148,7 @@ public class RememberVideoQualityPatch {
newVideo = true;
}
@SuppressLint("MissingPermission")
private static NetworkInfo getNetworkInfo(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo();

View File

@@ -185,11 +185,15 @@ public class ReturnYouTubeDislikeApi {
lastTimeRateLimitWasHit = System.currentTimeMillis();
LogHelper.printDebug(() -> "API rate limit was hit. Stopping API calls for the next "
+ RATE_LIMIT_BACKOFF_SECONDS + " seconds");
ReVancedUtils.runOnMainThread(() -> { // must show toasts on main thread
Toast.makeText(ReVancedUtils.getContext(), str("revanced_ryd_failure_client_rate_limit_requested"), Toast.LENGTH_LONG).show();
});
return true;
}
return false;
}
@SuppressWarnings("NonAtomicOperationOnVolatileField") // do not want to pay performance cost of full synchronization for debug fields that are only estimates anyways
private static void updateStatistics(long timeNetworkCallStarted, long timeNetworkCallEnded, boolean connectionError, boolean rateLimitHit) {
if (connectionError && rateLimitHit) {
throw new IllegalArgumentException("both connection error and rate limit parameter were true");
@@ -202,11 +206,9 @@ public class ReturnYouTubeDislikeApi {
if (connectionError) {
fetchCallResponseTimeLast = responseTimeOfFetchCall;
fetchCallNumberOfFailures++;
showToast("revanced_ryd_failure_connection_timeout");
} else if (rateLimitHit) {
fetchCallResponseTimeLast = FETCH_CALL_RESPONSE_TIME_VALUE_RATE_LIMIT;
numberOfRateLimitRequestsEncountered++;
showToast("revanced_ryd_failure_client_rate_limit_requested");
} else {
fetchCallResponseTimeLast = responseTimeOfFetchCall;
}
@@ -226,6 +228,7 @@ public class ReturnYouTubeDislikeApi {
LogHelper.printDebug(() -> "Fetching votes for: " + videoId);
final long timeNetworkCallStarted = System.currentTimeMillis();
String connectionErrorMessageStringKey = "revanced_ryd_failure_connection_timeout";
try {
HttpURLConnection connection = getRYDConnectionFromRoute(ReturnYouTubeDislikeRoutes.GET_DISLIKES, videoId);
// request headers, as per https://returnyoutubedislike.com/docs/fetching
@@ -261,12 +264,12 @@ public class ReturnYouTubeDislikeApi {
// fall thru to update statistics
}
} else {
LogHelper.printDebug(() -> "Failed to fetch votes for video: " + videoId
+ " response code was: " + responseCode);
LogHelper.printException(() -> "Failed to fetch votes for video: " + videoId
+ " response code was: " + responseCode, null, str(connectionErrorMessageStringKey));
connection.disconnect(); // something went wrong, might as well disconnect
}
} catch (Exception ex) { // connection timed out, response timeout, or some other network error
LogHelper.printException(() -> "Failed to fetch votes", ex);
LogHelper.printException(() -> "Failed to fetch votes", ex, str(connectionErrorMessageStringKey));
}
updateStatistics(timeNetworkCallStarted, System.currentTimeMillis(), true, false);
@@ -304,13 +307,12 @@ public class ReturnYouTubeDislikeApi {
String solution = solvePuzzle(challenge, difficulty);
return confirmRegistration(userId, solution);
}
LogHelper.printDebug(() -> "Failed to register new user: " + userId
LogHelper.printException(() -> "Failed to register new user: " + userId
+ " response code was: " + responseCode);
connection.disconnect();
} catch (Exception ex) {
LogHelper.printException(() -> "Failed to register user", ex);
}
showToast("revanced_ryd_failure_register_user");
return null;
}
@@ -344,10 +346,10 @@ public class ReturnYouTubeDislikeApi {
LogHelper.printDebug(() -> "Registration confirmation successful for user: " + userId);
return userId;
}
LogHelper.printDebug(() -> "Failed to confirm registration for user: " + userId
LogHelper.printException(() -> "Failed to confirm registration for user: " + userId
+ " solution: " + solution + " response string was: " + result);
} else {
LogHelper.printDebug(() -> "Failed to confirm registration for user: " + userId
LogHelper.printException(() -> "Failed to confirm registration for user: " + userId
+ " solution: " + solution + " response code was: " + responseCode);
}
connection.disconnect(); // something went wrong, might as well disconnect
@@ -355,8 +357,6 @@ public class ReturnYouTubeDislikeApi {
LogHelper.printException(() -> "Failed to confirm registration for user: " + userId
+ "solution: " + solution, ex);
}
showToast("revanced_ryd_failure_confirm_user");
return null;
}
@@ -395,14 +395,13 @@ public class ReturnYouTubeDislikeApi {
String solution = solvePuzzle(challenge, difficulty);
return confirmVote(videoId, userId, solution);
}
LogHelper.printDebug(() -> "Failed to send vote for video: " + videoId
LogHelper.printException(() -> "Failed to send vote for video: " + videoId
+ " userId: " + userId + " vote: " + vote + " response code was: " + responseCode);
connection.disconnect(); // something went wrong, might as well disconnect
} catch (Exception ex) {
LogHelper.printException(() -> "Failed to send vote for video: " + videoId
+ " user: " + userId + " vote: " + vote, ex);
}
showToast("revanced_ryd_failure_send_vote_failed");
return false;
}
@@ -438,10 +437,10 @@ public class ReturnYouTubeDislikeApi {
LogHelper.printDebug(() -> "Vote confirm successful for video: " + videoId);
return true;
}
LogHelper.printDebug(() -> "Failed to confirm vote for video: " + videoId
LogHelper.printException(() -> "Failed to confirm vote for video: " + videoId
+ " user: " + userId + " solution: " + solution + " response string was: " + result);
} else {
LogHelper.printDebug(() -> "Failed to confirm vote for video: " + videoId
LogHelper.printException(() -> "Failed to confirm vote for video: " + videoId
+ " user: " + userId + " solution: " + solution + " response code was: " + responseCode);
}
connection.disconnect(); // something went wrong, might as well disconnect
@@ -449,16 +448,9 @@ public class ReturnYouTubeDislikeApi {
LogHelper.printException(() -> "Failed to confirm vote for video: " + videoId
+ " user: " + userId + " solution: " + solution, ex);
}
showToast("revanced_ryd_failure_confirm_vote_failed");
return false;
}
private static void showToast(String toastTextStringKey) {
ReVancedUtils.runOnMainThread(() -> { // must show toasts on main thread
Toast.makeText(ReVancedUtils.getContext(), str(toastTextStringKey), Toast.LENGTH_LONG).show();
});
}
private static void applyCommonPostRequestSettings(HttpURLConnection connection) throws ProtocolException {
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
@@ -477,7 +469,7 @@ public class ReturnYouTubeDislikeApi {
byte[] decodedChallenge = Base64.decode(challenge, Base64.NO_WRAP);
byte[] buffer = new byte[20];
for (int i = 4; i < 20; i++) {
for (int i = 4; i < 20; i++) { // FIXME replace with System.arrayCopy
buffer[i] = decodedChallenge[i - 4];
}

View File

@@ -7,6 +7,8 @@ import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.TextView;
import androidx.annotation.Nullable;
import com.google.android.libraries.social.licenses.LicenseActivity;
import app.revanced.integrations.utils.LogHelper;
@@ -44,15 +46,23 @@ public class ReVancedSettingActivity {
}
try {
getTextView((ViewGroup) base.findViewById(getIdentifier("toolbar", "id"))).setText(preferenceIdentifier);
TextView toolbar = getTextView((ViewGroup) base.findViewById(getIdentifier("toolbar", "id")));
if (toolbar == null) {
// FIXME
// https://github.com/revanced/revanced-patches/issues/1384
LogHelper.printDebug(() -> "Could not find toolbar");
} else {
toolbar.setText(preferenceIdentifier);
}
} catch (Exception e) {
LogHelper.printException(() -> ("Couldn't set Toolbar title"), e);
LogHelper.printException(() -> "Could not set Toolbar title", e);
}
base.getFragmentManager().beginTransaction().replace(getIdentifier("revanced_settings_fragments", "id"), preferenceFragment).commit();
}
@Nullable
public static <T extends View> T getView(Class<T> typeClass, ViewGroup viewGroup) {
if (viewGroup == null) {
return null;
@@ -67,10 +77,12 @@ public class ReVancedSettingActivity {
return null;
}
@Nullable
public static ImageButton getImageButton(ViewGroup viewGroup) {
return getView(ImageButton.class, viewGroup);
}
@Nullable
public static TextView getTextView(ViewGroup viewGroup) {
return getView(TextView.class, viewGroup);
}

View File

@@ -66,12 +66,12 @@ public class ReVancedSettingsFragment extends PreferenceFragment {
value = Integer.parseInt(editPref.getText());
break;
default:
LogHelper.printException(() -> ("Setting has no valid return type! " + setting.getReturnType()));
LogHelper.printException(() -> "Setting has no valid return type! " + setting.getReturnType());
break;
}
setting.setValue(value);
} else {
LogHelper.printException(() -> ("Setting cannot be handled! " + pref.toString()));
LogHelper.printException(() -> "Setting cannot be handled: " + pref.getClass() + " " + pref.toString());
}
if (ReVancedUtils.getContext() != null && settingsInitialized && setting.shouldRebootOnChange()) {
@@ -96,7 +96,7 @@ public class ReVancedSettingsFragment extends PreferenceFragment {
this.settingsInitialized = true;
} catch (Throwable th) {
LogHelper.printException(() -> ("Error during onCreate()"), th);
LogHelper.printException(() -> "Error during onCreate()", th);
}
}
@@ -111,7 +111,7 @@ public class ReVancedSettingsFragment extends PreferenceFragment {
private Preference findPreferenceOnScreen(CharSequence key) {
if (key == null) {
LogHelper.printException(() -> ("Key cannot be null!"));
LogHelper.printException(() -> "Key cannot be null!");
return null;
}
Preference pref = null;
@@ -144,7 +144,7 @@ public class ReVancedSettingsFragment extends PreferenceFragment {
private String getPackageName() {
Context context = ReVancedUtils.getContext();
if (context == null) {
LogHelper.printException(() -> ("Context is null, returning com.google.android.youtube!"));
LogHelper.printException(() -> "Context is null, returning com.google.android.youtube!");
return "com.google.android.youtube";
}
String PACKAGE_NAME = context.getPackageName();
@@ -169,7 +169,7 @@ public class ReVancedSettingsFragment extends PreferenceFragment {
Resources res = context.getResources();
return res.getString(res.getIdentifier(name, "string", context.getPackageName()));
} catch (Throwable exception) {
LogHelper.printException(() -> ("Resource not found."), exception);
LogHelper.printException(() -> "Resource not found.", exception);
return "";
}
}

View File

@@ -29,18 +29,27 @@ public class ReturnYouTubeDislikeSettingsFragment extends PreferenceFragment {
*/
private SwitchPreference percentagePreference;
/**
* If segmented like/dislike button uses smaller compact layout
*/
private SwitchPreference compactLayoutPreference;
private void updateUIState() {
final boolean rydIsEnabled = SettingsEnum.RYD_ENABLED.getBoolean();
final boolean dislikePercentageEnabled = SettingsEnum.RYD_SHOW_DISLIKE_PERCENTAGE.getBoolean();
enabledPreference.setSummary(rydIsEnabled
? str("revanced_ryd_enable_summary_on")
: str("revanced_ryd_enable_summary_off"));
percentagePreference.setSummary(dislikePercentageEnabled
percentagePreference.setSummary(SettingsEnum.RYD_SHOW_DISLIKE_PERCENTAGE.getBoolean()
? str("revanced_ryd_dislike_percentage_summary_on")
: str("revanced_ryd_dislike_percentage_summary_off"));
percentagePreference.setEnabled(rydIsEnabled);
compactLayoutPreference.setSummary(SettingsEnum.RYD_USE_COMPACT_LAYOUT.getBoolean()
? str("revanced_ryd_compact_layout_summary_on")
: str("revanced_ryd_compact_layout_summary_off"));
compactLayoutPreference.setEnabled(rydIsEnabled);
}
@Override
@@ -53,8 +62,6 @@ public class ReturnYouTubeDislikeSettingsFragment extends PreferenceFragment {
setPreferenceScreen(preferenceScreen);
enabledPreference = new SwitchPreference(context);
enabledPreference.setKey(SettingsEnum.RYD_ENABLED.getPath());
enabledPreference.setDefaultValue(SettingsEnum.RYD_ENABLED.getDefaultValue());
enabledPreference.setChecked(SettingsEnum.RYD_ENABLED.getBoolean());
enabledPreference.setTitle(str("revanced_ryd_enable_title"));
enabledPreference.setOnPreferenceChangeListener((pref, newValue) -> {
@@ -68,8 +75,6 @@ public class ReturnYouTubeDislikeSettingsFragment extends PreferenceFragment {
preferenceScreen.addPreference(enabledPreference);
percentagePreference = new SwitchPreference(context);
percentagePreference.setKey(SettingsEnum.RYD_SHOW_DISLIKE_PERCENTAGE.getPath());
percentagePreference.setDefaultValue(SettingsEnum.RYD_SHOW_DISLIKE_PERCENTAGE.getDefaultValue());
percentagePreference.setChecked(SettingsEnum.RYD_SHOW_DISLIKE_PERCENTAGE.getBoolean());
percentagePreference.setTitle(str("revanced_ryd_dislike_percentage_title"));
percentagePreference.setOnPreferenceChangeListener((pref, newValue) -> {
@@ -80,6 +85,17 @@ public class ReturnYouTubeDislikeSettingsFragment extends PreferenceFragment {
});
preferenceScreen.addPreference(percentagePreference);
compactLayoutPreference = new SwitchPreference(context);
compactLayoutPreference.setChecked(SettingsEnum.RYD_USE_COMPACT_LAYOUT.getBoolean());
compactLayoutPreference.setTitle(str("revanced_ryd_compact_layout_title"));
compactLayoutPreference.setOnPreferenceChangeListener((pref, newValue) -> {
SettingsEnum.RYD_USE_COMPACT_LAYOUT.saveValue((Boolean)newValue);
updateUIState();
return true;
});
preferenceScreen.addPreference(compactLayoutPreference);
updateUIState();

View File

@@ -171,6 +171,7 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements
screen.addPreference(colorPreference);
colorPreference.setTitle(str("color_change"));
colorPreference.setSummary(str("color_change_sum"));
colorPreference.setSelectable(false);
preferencesToDisableWhenSBDisabled.add(colorPreference);
}
@@ -184,6 +185,7 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements
Preference preference = new Preference(context);
category.addPreference(preference);
preference.setTitle(str("stats_loading"));
preference.setSelectable(false);
SBRequester.retrieveUserStats(category, preference);
}
@@ -211,6 +213,7 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements
Preference preference = new Preference(context);
screen.addPreference(preference);
preference.setTitle(str("about_madeby"));
preference.setSelectable(false);
}
}
@@ -233,11 +236,14 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements
}
{
Preference preference = new SwitchPreference(context);
SwitchPreference preference = new SwitchPreference(context);
preference.setTitle(str("general_skiptoast"));
preference.setSummary(str("general_skiptoast_sum"));
preference.setKey(SettingsEnum.SB_SHOW_TOAST_WHEN_SKIP.getPath());
preference.setDefaultValue(SettingsEnum.SB_SHOW_TOAST_WHEN_SKIP.getDefaultValue());
preference.setChecked(SettingsEnum.SB_SHOW_TOAST_WHEN_SKIP.getBoolean());
preference.setOnPreferenceChangeListener((preference1, newValue) -> {
SettingsEnum.SB_SHOW_TOAST_WHEN_SKIP.saveValue(newValue);
return true;
});
preference.setOnPreferenceClickListener(preference12 -> {
Toast.makeText(preference12.getContext(), str("skipped_sponsor"), Toast.LENGTH_SHORT).show();
return false;
@@ -247,21 +253,28 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements
}
{
Preference preference = new SwitchPreference(context);
SwitchPreference preference = new SwitchPreference(context);
preference.setTitle(str("general_skipcount"));
preference.setSummary(str("general_skipcount_sum"));
preference.setKey(SettingsEnum.SB_COUNT_SKIPS.getPath());
preference.setDefaultValue(SettingsEnum.SB_COUNT_SKIPS.getDefaultValue());
preference.setChecked(SettingsEnum.SB_COUNT_SKIPS.getBoolean());
preference.setOnPreferenceChangeListener((preference1, newValue) -> {
SettingsEnum.SB_COUNT_SKIPS.saveValue(newValue);
return true;
});
preferencesToDisableWhenSBDisabled.add(preference);
screen.addPreference(preference);
}
{
Preference preference = new SwitchPreference(context);
SwitchPreference preference = new SwitchPreference(context);
preference.setTitle(str("general_time_without_sb"));
preference.setSummary(str("general_time_without_sb_sum"));
preference.setKey(SettingsEnum.SB_SHOW_TIME_WITHOUT_SEGMENTS.getPath());
preference.setDefaultValue(SettingsEnum.SB_SHOW_TIME_WITHOUT_SEGMENTS.getDefaultValue());
preference.setChecked(SettingsEnum.SB_SHOW_TIME_WITHOUT_SEGMENTS.getBoolean());
preference.setOnPreferenceChangeListener((preference1, newValue) -> {
SettingsEnum.SB_SHOW_TIME_WITHOUT_SEGMENTS.saveValue(newValue);
return true;
});
preferencesToDisableWhenSBDisabled.add(preference);
screen.addPreference(preference);
}
@@ -271,8 +284,11 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements
preference.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);
preference.setTitle(str("general_adjusting"));
preference.setSummary(str("general_adjusting_sum"));
preference.setKey(SettingsEnum.SB_ADJUST_NEW_SEGMENT_STEP.getPath());
preference.setDefaultValue(SettingsEnum.SB_ADJUST_NEW_SEGMENT_STEP.getDefaultValue() + "");
preference.setText(String.valueOf(SettingsEnum.SB_ADJUST_NEW_SEGMENT_STEP.getInt()));
preference.setOnPreferenceChangeListener((preference1, newValue) -> {
SettingsEnum.SB_ADJUST_NEW_SEGMENT_STEP.saveValue(Integer.valueOf(newValue.toString()));
return true;
});
screen.addPreference(preference);
preferencesToDisableWhenSBDisabled.add(preference);
}
@@ -282,18 +298,25 @@ public class SponsorBlockSettingsFragment extends PreferenceFragment implements
preference.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
preference.setTitle(str("general_min_duration"));
preference.setSummary(str("general_min_duration_sum"));
preference.setKey(SettingsEnum.SB_MIN_DURATION.getPath());
preference.setDefaultValue(SettingsEnum.SB_MIN_DURATION.getDefaultValue() + "");
preference.setText(String.valueOf(SettingsEnum.SB_MIN_DURATION.getFloat()));
preference.setOnPreferenceChangeListener((preference1, newValue) -> {
SettingsEnum.SB_MIN_DURATION.saveValue(Float.valueOf(newValue.toString()));
return true;
});
screen.addPreference(preference);
preferencesToDisableWhenSBDisabled.add(preference);
}
{
Preference preference = new EditTextPreference(context);
EditTextPreference preference = new EditTextPreference(context);
preference.setTitle(str("general_uuid"));
preference.setSummary(str("general_uuid_sum"));
preference.setKey(SettingsEnum.SB_UUID.getPath());
preference.setDefaultValue(SettingsEnum.SB_UUID.getDefaultValue() + "");
preference.setText(SettingsEnum.SB_UUID.getString());
preference.setOnPreferenceChangeListener((preference1, newValue) -> {
SettingsEnum.SB_UUID.saveValue(newValue.toString());
return true;
});
screen.addPreference(preference);
preferencesToDisableWhenSBDisabled.add(preference);
}

View File

@@ -7,7 +7,7 @@ import app.revanced.integrations.utils.Event
*/
@Suppress("unused")
enum class PlayerType {
NONE,
NONE, // this also includes when shorts are playing
HIDDEN,
WATCH_WHILE_MINIMIZED,
WATCH_WHILE_MAXIMIZED,
@@ -49,4 +49,11 @@ enum class PlayerType {
*/
val onChange = Event<PlayerType>()
}
/**
* Weather Shorts are being played.
*/
fun isNoneOrHidden(): Boolean {
return this == NONE || this == HIDDEN
}
}

View File

@@ -52,7 +52,7 @@ public class ShieldButton {
isShowing = true;
changeVisibilityImmediate(false);
} catch (Exception ex) {
LogHelper.printException(() -> ("Unable to set RelativeLayout"), ex);
LogHelper.printException(() -> "Unable to set RelativeLayout", ex);
}
}
@@ -69,29 +69,33 @@ public class ShieldButton {
}
public static void changeVisibility(boolean visible, boolean immediate) {
if (isShowing == visible) return;
isShowing = visible;
try {
if (isShowing == visible) return;
isShowing = visible;
ImageView iView = _shieldBtn.get();
if (_youtubeControlsLayout == null || iView == null) return;
ImageView iView = _shieldBtn.get();
if (_youtubeControlsLayout == null || iView == null) return;
if (visible && shouldBeShown()) {
if (getLastKnownVideoTime() >= getCurrentVideoLength()) {
if (visible && shouldBeShown()) {
if (getLastKnownVideoTime() >= getCurrentVideoLength()) {
return;
}
LogHelper.printDebug(() -> "Fading in");
iView.setVisibility(View.VISIBLE);
if (!immediate)
iView.startAnimation(fadeIn);
return;
}
LogHelper.printDebug(() -> "Fading in");
iView.setVisibility(View.VISIBLE);
if (!immediate)
iView.startAnimation(fadeIn);
return;
}
if (iView.getVisibility() == View.VISIBLE) {
LogHelper.printDebug(() -> "Fading out");
if (!immediate)
iView.startAnimation(fadeOut);
iView.setVisibility(shouldBeShown() ? View.INVISIBLE : View.GONE);
if (iView.getVisibility() == View.VISIBLE) {
LogHelper.printDebug(() -> "Fading out");
if (!immediate)
iView.startAnimation(fadeOut);
iView.setVisibility(shouldBeShown() ? View.INVISIBLE : View.GONE);
}
} catch (Exception ex) {
LogHelper.printException(() -> "changeVisibility failure", ex);
}
}

View File

@@ -13,7 +13,7 @@ import app.revanced.integrations.utils.ReVancedUtils;
import static app.revanced.integrations.sponsorblock.player.ui.SponsorBlockView.hideSkipButton;
import static app.revanced.integrations.sponsorblock.player.ui.SponsorBlockView.showSkipButton;
@SuppressLint({"RtlHardcoded", "SetTextI18n", "LongLogTag", "AppCompatCustomView"})
@SuppressLint({"RtlHardcoded", "SetTextI18n", "AppCompatCustomView"})
public class SkipSegmentView {
private static SponsorSegment lastNotifiedSegment;

View File

@@ -83,7 +83,7 @@ public class SponsorBlockSettings {
sponsorBlockUrlCategories = "[%22" + TextUtils.join("%22,%22", enabledCategories) + "%22]";
String uuid = SettingsEnum.SB_UUID.getString();
if (uuid == null) {
if (uuid == null || uuid.length() == 0) {
uuid = (UUID.randomUUID().toString() +
UUID.randomUUID().toString() +
UUID.randomUUID().toString())

View File

@@ -46,12 +46,12 @@ import java.util.TimeZone;
import app.revanced.integrations.settings.SettingsEnum;
import app.revanced.integrations.sponsorblock.player.PlayerType;
import app.revanced.integrations.utils.LogHelper;
import app.revanced.integrations.utils.ReVancedUtils;
import app.revanced.integrations.utils.SharedPrefHelper;
import app.revanced.integrations.sponsorblock.objects.SponsorSegment;
import app.revanced.integrations.sponsorblock.objects.UserStats;
import app.revanced.integrations.sponsorblock.requests.SBRequester;
@SuppressWarnings({"LongLogTag"})
public abstract class SponsorBlockUtils {
public static final String DATE_FORMAT = "HH:mm:ss.SSS";
@SuppressLint("SimpleDateFormat")
@@ -154,7 +154,7 @@ public abstract class SponsorBlockUtils {
Toast.makeText(context, str("submit_started"), Toast.LENGTH_SHORT).show();
appContext = new WeakReference<>(context);
new Thread(submitRunnable).start();
ReVancedUtils.runOnBackgroundThread(submitRunnable);
}
};
public static String messageToToast = "";
@@ -233,13 +233,13 @@ public abstract class SponsorBlockUtils {
final SponsorBlockSettings.SegmentInfo segmentType = SponsorBlockUtils.newSponsorBlockSegmentType;
try {
if (start < 0 || end < 0 || start >= end || segmentType == null || videoId == null || uuid == null) {
LogHelper.printException(() -> ("Unable to submit times, invalid parameters"));
LogHelper.printException(() -> "Unable to submit times, invalid parameters");
return;
}
SBRequester.submitSegments(videoId, uuid, ((float) start) / 1000f, ((float) end) / 1000f, segmentType.key, toastRunnable);
newSponsorSegmentEndMillis = newSponsorSegmentStartMillis = -1;
} catch (Exception e) {
LogHelper.printException(() -> ("Unable to submit segment"), e);
LogHelper.printException(() -> "Unable to submit segment", e);
}
if (videoId != null)
@@ -403,11 +403,15 @@ public abstract class SponsorBlockUtils {
}
public static String appendTimeWithoutSegments(String totalTime) {
if (videoHasSegments && (SettingsEnum.SB_ENABLED.getBoolean() && SettingsEnum.SB_SHOW_TIME_WITHOUT_SEGMENTS.getBoolean()) && !TextUtils.isEmpty(totalTime) && getCurrentVideoLength() > 1) {
if (timeWithoutSegments.isEmpty()) {
timeWithoutSegments = getTimeWithoutSegments(sponsorSegmentsOfCurrentVideo);
try {
if (videoHasSegments && (SettingsEnum.SB_ENABLED.getBoolean() && SettingsEnum.SB_SHOW_TIME_WITHOUT_SEGMENTS.getBoolean()) && !TextUtils.isEmpty(totalTime) && getCurrentVideoLength() > 1) {
if (timeWithoutSegments.isEmpty()) {
timeWithoutSegments = getTimeWithoutSegments(sponsorSegmentsOfCurrentVideo);
}
return totalTime + timeWithoutSegments;
}
return totalTime + timeWithoutSegments;
} catch (Exception ex) {
LogHelper.printException(() -> "appendTimeWithoutSegments failure", ex);
}
return totalTime;
@@ -436,7 +440,7 @@ public abstract class SponsorBlockUtils {
PlayerController.setCurrentVideoId(null);
}
} catch (Exception ex) {
LogHelper.printException(() -> ("Player type changed caused a crash."), ex);
LogHelper.printException(() -> "Player type changed caused a crash.", ex);
}
}
@@ -470,6 +474,7 @@ public abstract class SponsorBlockUtils {
category.addPreference(preference);
String formatted = FORMATTER.format(stats.getSegmentCount());
preference.setTitle(fromHtml(str("stats_submissions", formatted)));
preference.setSelectable(false);
}
{
@@ -503,6 +508,7 @@ public abstract class SponsorBlockUtils {
preference.setTitle(fromHtml(str("stats_self_saved", formatted)));
preference.setSummary(fromHtml(str("stats_self_saved_sum", formattedSaved)));
preference.setSelectable(false);
}
}
@@ -541,25 +547,18 @@ public abstract class SponsorBlockUtils {
editor.putString(category.key, behaviour.key);
}
SettingsEnum.SB_UUID.saveValue(settingsJson.getString("userID"));
SettingsEnum.SB_IS_VIP.saveValue(settingsJson.getBoolean("isVip"));
SettingsEnum.SB_API_URL.saveValue(settingsJson.getString("serverAddress"));
SettingsEnum.SB_SHOW_TOAST_WHEN_SKIP.saveValue(!settingsJson.getBoolean("dontShowNotice"));
SettingsEnum.SB_SHOW_TIME_WITHOUT_SEGMENTS.saveValue(settingsJson.getBoolean("showTimeWithSkips"));
SettingsEnum.SB_COUNT_SKIPS.saveValue(settingsJson.getBoolean("trackViewCount"));
SettingsEnum.SB_IS_VIP.saveValue(settingsJson.getBoolean("isVip"));
SettingsEnum.SB_MIN_DURATION.saveValue(Float.valueOf(settingsJson.getString("minDuration")));
SettingsEnum.SB_UUID.saveValue(settingsJson.getString("userID"));
SettingsEnum.SB_LAST_VIP_CHECK.saveValue(settingsJson.getLong("lastIsVipUpdate"));
String serverAddress = settingsJson.getString("serverAddress");
if (serverAddress.equalsIgnoreCase("https://sponsor.ajay.app")) {
serverAddress = (String) SettingsEnum.SB_API_URL.getDefaultValue();
}
SettingsEnum.SB_API_URL.saveValue(serverAddress);
SettingsEnum.SB_COUNT_SKIPS.saveValue(settingsJson.getBoolean("trackViewCount"));
Toast.makeText(context, str("settings_import_successful"), Toast.LENGTH_SHORT).show();
} catch (Exception ex) {
LogHelper.printInfo(() -> "failed to import settings", ex); // use info level, as we are showing our own toast
Toast.makeText(context, str("settings_import_failed"), Toast.LENGTH_SHORT).show();
ex.printStackTrace();
}
}
@@ -585,21 +584,20 @@ public abstract class SponsorBlockUtils {
categorySelectionsArray.put(behaviorObject);
}
}
json.put("userID", SettingsEnum.SB_UUID.getString());
json.put("isVip", SettingsEnum.SB_IS_VIP.getBoolean());
json.put("serverAddress", SettingsEnum.SB_API_URL.getString());
json.put("dontShowNotice", !SettingsEnum.SB_SHOW_TOAST_WHEN_SKIP.getBoolean());
json.put("barTypes", barTypesObject);
json.put("showTimeWithSkips", SettingsEnum.SB_SHOW_TIME_WITHOUT_SEGMENTS.getBoolean());
json.put("minDuration", SettingsEnum.SB_MIN_DURATION.getFloat());
json.put("trackViewCount", SettingsEnum.SB_COUNT_SKIPS.getBoolean());
json.put("categorySelections", categorySelectionsArray);
json.put("userID", SettingsEnum.SB_UUID.getString());
json.put("isVip", SettingsEnum.SB_IS_VIP.getBoolean());
json.put("lastIsVipUpdate", SettingsEnum.SB_LAST_VIP_CHECK.getLong());
json.put("serverAddress", SettingsEnum.SB_API_URL.getString());
json.put("barTypes", barTypesObject);
return json.toString();
} catch (Exception ex) {
LogHelper.printInfo(() -> "failed to export settings", ex); // use info level, as we are showing our own toast
Toast.makeText(context, str("settings_export_failed"), Toast.LENGTH_SHORT).show();
ex.printStackTrace();
return "";
}
}

View File

@@ -103,11 +103,11 @@ public class StringRef {
if (resources != null) {
final int identifier = resources.getIdentifier(value, "string", packageName);
if (identifier == 0)
LogHelper.printException(() -> ("Resource not found: " + value));
LogHelper.printException(() -> "Resource not found: " + value);
else
value = resources.getString(identifier);
} else {
LogHelper.printException(() -> ("Could not resolve resources!"));
LogHelper.printException(() -> "Could not resolve resources!");
}
}
return value;

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