Skip to content
Permalink

Comparing changes

This is a direct comparison between two commits made in this repository or its related repositories. View the default comparison for this range or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: TeamNewPipe/NewPipe
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 43c846756ddec2300091f7b2ca2439f9677ee9b3
Choose a base ref
..
head repository: TeamNewPipe/NewPipe
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: afe49a06347277b0b947d47c7252ea00b3579f02
Choose a head ref
Showing with 4,881 additions and 1,188 deletions.
  1. +1 −1 .github/workflows/ci.yml
  2. +4 −2 .github/workflows/image-minimizer.js
  3. +6 −6 app/build.gradle
  4. +1 −1 app/src/main/AndroidManifest.xml
  5. +1 −1 app/src/main/java/org/schabi/newpipe/MainActivity.java
  6. +49 −32 app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt
  7. +4 −1 app/src/main/java/org/schabi/newpipe/database/feed/dao/FeedDAO.kt
  8. +3 −8 app/src/main/java/org/schabi/newpipe/error/ErrorUtil.kt
  9. +74 −19 app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java
  10. +1 −2 app/src/main/java/org/schabi/newpipe/fragments/list/BaseListFragment.java
  11. +3 −2 app/src/main/java/org/schabi/newpipe/info_list/dialog/InfoItemDialog.java
  12. +1 −2 app/src/main/java/org/schabi/newpipe/local/BaseLocalListFragment.java
  13. +3 −6 app/src/main/java/org/schabi/newpipe/local/feed/notifications/NotificationHelper.kt
  14. +3 −7 app/src/main/java/org/schabi/newpipe/local/feed/service/FeedLoadService.kt
  15. +16 −20 app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt
  16. +6 −3 app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionViewModel.kt
  17. +2 −2 app/src/main/java/org/schabi/newpipe/local/subscription/dialog/FeedGroupDialog.kt
  18. +2 −5 app/src/main/java/org/schabi/newpipe/local/subscription/item/FeedGroupCarouselItem.kt
  19. +5 −2 ...ipe/local/subscription/item/{EmptyPlaceholderItem.kt → ImportSubscriptionsHintPlaceholderItem.kt}
  20. +7 −0 app/src/main/java/org/schabi/newpipe/player/helper/PlayerHolder.java
  21. +5 −5 app/src/main/java/org/schabi/newpipe/player/notification/NotificationUtil.java
  22. +3 −2 app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java
  23. +3 −1 app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java
  24. +2 −10 app/src/main/java/org/schabi/newpipe/settings/UpdateSettingsFragment.java
  25. +1 −1 app/src/main/java/org/schabi/newpipe/streams/WebMWriter.java
  26. +79 −0 app/src/main/java/org/schabi/newpipe/util/DeviceUtils.java
  27. +34 −64 app/src/main/java/org/schabi/newpipe/util/Localization.java
  28. +69 −0 app/src/main/java/org/schabi/newpipe/util/PendingIntentCompat.java
  29. +6 −3 app/src/main/java/org/schabi/newpipe/util/PicassoHelper.java
  30. +4 −1 app/src/main/java/org/schabi/newpipe/util/external_communication/ShareUtils.java
  31. +4 −2 app/src/main/java/us/shandian/giga/service/DownloadManagerService.java
  32. +1 −1 app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java
  33. +4 −16 app/src/main/java/us/shandian/giga/util/Utility.java
  34. +16 −17 app/src/main/res/layout-large-land/fragment_video_detail.xml
  35. +14 −18 app/src/main/res/layout/fragment_video_detail.xml
  36. +3 −1 app/src/main/res/layout/list_empty_view.xml
  37. +25 −0 app/src/main/res/layout/list_empty_view_subscriptions.xml
  38. +1 −1 app/src/main/res/menu/menu_feed_fragment.xml
  39. +2 −0 app/src/main/res/values-ang/strings.xml
  40. +7 −5 app/src/main/res/values-ar/strings.xml
  41. +2 −0 app/src/main/res/values-ars/strings.xml
  42. +2 −0 app/src/main/res/values-ay/strings.xml
  43. +158 −156 app/src/main/res/values-az/strings.xml
  44. +2 −4 app/src/main/res/values-b+ast/strings.xml
  45. +2 −4 app/src/main/res/values-b+uz+Latn/strings.xml
  46. +2 −4 app/src/main/res/values-be/strings.xml
  47. +0 −1 app/src/main/res/values-ber/strings.xml
  48. +2 −4 app/src/main/res/values-bg/strings.xml
  49. +2 −4 app/src/main/res/values-bn-rBD/strings.xml
  50. +0 −2 app/src/main/res/values-bn-rIN/strings.xml
  51. +3 −5 app/src/main/res/values-bn/strings.xml
  52. +34 −16 app/src/main/res/values-ca/strings.xml
  53. +2 −4 app/src/main/res/values-ckb/strings.xml
  54. +6 −4 app/src/main/res/values-cs/strings.xml
  55. +2 −4 app/src/main/res/values-da/strings.xml
  56. +14 −12 app/src/main/res/values-de/strings.xml
  57. +6 −4 app/src/main/res/values-el/strings.xml
  58. +2 −0 app/src/main/res/values-enm/strings.xml
  59. +8 −7 app/src/main/res/values-eo/strings.xml
  60. +9 −6 app/src/main/res/values-es/strings.xml
  61. +8 −6 app/src/main/res/values-et/strings.xml
  62. +2 −4 app/src/main/res/values-eu/strings.xml
  63. +12 −6 app/src/main/res/values-fa/strings.xml
  64. +2 −4 app/src/main/res/values-fi/strings.xml
  65. +15 −16 app/src/main/res/values-fil/strings.xml
  66. +19 −17 app/src/main/res/values-fr/strings.xml
  67. +7 −4 app/src/main/res/values-gl/strings.xml
  68. +6 −4 app/src/main/res/values-he/strings.xml
  69. +252 −86 app/src/main/res/values-hi/strings.xml
  70. +2 −6 app/src/main/res/values-hr/strings.xml
  71. +12 −8 app/src/main/res/values-hu/strings.xml
  72. +2 −3 app/src/main/res/values-hy/strings.xml
  73. +2 −3 app/src/main/res/values-ia/strings.xml
  74. +6 −4 app/src/main/res/values-in/strings.xml
  75. +6 −5 app/src/main/res/values-is/strings.xml
  76. +11 −5 app/src/main/res/values-it/strings.xml
  77. +2 −4 app/src/main/res/values-ja/strings.xml
  78. +722 −0 app/src/main/res/values-ka/strings.xml
  79. +0 −2 app/src/main/res/values-kab/strings.xml
  80. +2 −0 app/src/main/res/values-kk/strings.xml
  81. +2 −4 app/src/main/res/values-kmr/strings.xml
  82. +34 −32 app/src/main/res/values-ko/strings.xml
  83. +2 −0 app/src/main/res/values-ks/strings.xml
  84. +2 −4 app/src/main/res/values-ku/strings.xml
  85. +10 −7 app/src/main/res/values-lt/strings.xml
  86. +15 −4 app/src/main/res/values-lv/strings.xml
  87. +2 −3 app/src/main/res/values-mk/strings.xml
  88. +2 −4 app/src/main/res/values-ml/strings.xml
  89. +2 −4 app/src/main/res/values-ms/strings.xml
  90. +83 −41 app/src/main/res/values-nb-rNO/strings.xml
  91. +2 −0 app/src/main/res/values-nds/strings.xml
  92. +2 −4 app/src/main/res/values-ne/strings.xml
  93. +2 −4 app/src/main/res/values-nl-rBE/strings.xml
  94. +2 −4 app/src/main/res/values-nl/strings.xml
  95. +66 −0 app/src/main/res/values-nn/strings.xml
  96. +695 −5 app/src/main/res/values-or/strings.xml
  97. +8 −0 app/src/main/res/values-pa-rPK/strings.xml
  98. +305 −202 app/src/main/res/values-pa/strings.xml
  99. +26 −24 app/src/main/res/values-pl/strings.xml
  100. +19 −4 app/src/main/res/values-pt-rBR/strings.xml
  101. +2 −4 app/src/main/res/values-pt-rPT/strings.xml
  102. +7 −4 app/src/main/res/values-pt/strings.xml
  103. +7 −5 app/src/main/res/values-ro/strings.xml
  104. +7 −5 app/src/main/res/values-ru/strings.xml
  105. +5 −0 app/src/main/res/values-sat/strings.xml
  106. +2 −4 app/src/main/res/values-sc/strings.xml
  107. +2 −0 app/src/main/res/values-scn/strings.xml
  108. +2 −4 app/src/main/res/values-sk/strings.xml
  109. +2 −4 app/src/main/res/values-sl/strings.xml
  110. +2 −4 app/src/main/res/values-so/strings.xml
  111. +2 −4 app/src/main/res/values-sq/strings.xml
  112. +2 −4 app/src/main/res/values-sr/strings.xml
  113. +11 −5 app/src/main/res/values-sv/strings.xml
  114. +2 −4 app/src/main/res/values-ta/strings.xml
  115. +1 −2 app/src/main/res/values-te/strings.xml
  116. +2 −3 app/src/main/res/values-th/strings.xml
  117. +8 −6 app/src/main/res/values-tr/strings.xml
  118. +0 −1 app/src/main/res/values-tzm/strings.xml
  119. +9 −7 app/src/main/res/values-uk/strings.xml
  120. +0 −3 app/src/main/res/values-und/strings.xml
  121. +2 −4 app/src/main/res/values-ur/strings.xml
  122. +18 −14 app/src/main/res/values-vi/strings.xml
  123. +7 −5 app/src/main/res/values-zh-rCN/strings.xml
  124. +8 −6 app/src/main/res/values-zh-rHK/strings.xml
  125. +6 −4 app/src/main/res/values-zh-rTW/strings.xml
  126. +6 −4 app/src/main/res/values/strings.xml
  127. +9 −1 checkstyle/checkstyle.xml
  128. +9 −8 fastlane/metadata/android/ar/changelogs/71.txt
  129. +1 −1 fastlane/metadata/android/ar_LY/short_description.txt
  130. +1 −0 fastlane/metadata/android/ast/full_description.txt
  131. +1 −0 fastlane/metadata/android/ast/short_description.txt
  132. +13 −0 fastlane/metadata/android/az/changelogs/991.txt
  133. +8 −0 fastlane/metadata/android/bg/changelogs/63.txt
  134. +1 −0 fastlane/metadata/android/bg/short_description.txt
  135. +13 −0 fastlane/metadata/android/cs/changelogs/991.txt
  136. +1 −1 fastlane/metadata/android/de/changelogs/730.txt
  137. +1 −1 fastlane/metadata/android/de/changelogs/910.txt
  138. +13 −0 fastlane/metadata/android/en-US/changelogs/991.txt
  139. +13 −0 fastlane/metadata/android/es/changelogs/991.txt
  140. +2 −0 fastlane/metadata/android/fa/changelogs/870.txt
  141. +1 −0 fastlane/metadata/android/fa/changelogs/910.txt
  142. +7 −7 fastlane/metadata/android/fil/changelogs/63.txt
  143. +1 −0 fastlane/metadata/android/hi/changelogs/953.txt
  144. +8 −0 fastlane/metadata/android/hi/changelogs/954.txt
  145. +3 −3 fastlane/metadata/android/hi/changelogs/955.txt
  146. +1 −0 fastlane/metadata/android/hi/changelogs/956.txt
  147. +10 −0 fastlane/metadata/android/hi/changelogs/957.txt
  148. +15 −0 fastlane/metadata/android/hi/changelogs/958.txt
  149. +5 −0 fastlane/metadata/android/hi/changelogs/959.txt
  150. +4 −0 fastlane/metadata/android/hi/changelogs/960.txt
  151. +12 −0 fastlane/metadata/android/hi/changelogs/961.txt
  152. +2 −0 fastlane/metadata/android/hi/changelogs/962.txt
  153. +3 −0 fastlane/metadata/android/hu/changelogs/989.txt
  154. +15 −0 fastlane/metadata/android/hu/changelogs/990.txt
  155. +13 −0 fastlane/metadata/android/hu/changelogs/991.txt
  156. +26 −0 fastlane/metadata/android/it/changelogs/65.txt
  157. +33 −0 fastlane/metadata/android/it/changelogs/66.txt
  158. +31 −0 fastlane/metadata/android/it/changelogs/68.txt
  159. +19 −0 fastlane/metadata/android/it/changelogs/69.txt
  160. +25 −0 fastlane/metadata/android/it/changelogs/70.txt
  161. +10 −0 fastlane/metadata/android/it/changelogs/71.txt
  162. +23 −0 fastlane/metadata/android/it/changelogs/740.txt
  163. +22 −0 fastlane/metadata/android/it/changelogs/750.txt
  164. +43 −0 fastlane/metadata/android/it/changelogs/760.txt
  165. +12 −0 fastlane/metadata/android/it/changelogs/780.txt
  166. +14 −0 fastlane/metadata/android/it/changelogs/790.txt
  167. +27 −0 fastlane/metadata/android/it/changelogs/800.txt
  168. +19 −0 fastlane/metadata/android/it/changelogs/810.txt
  169. +1 −0 fastlane/metadata/android/it/changelogs/820.txt
  170. +22 −0 fastlane/metadata/android/it/changelogs/840.txt
  171. +14 −0 fastlane/metadata/android/it/changelogs/900.txt
  172. +9 −0 fastlane/metadata/android/it/changelogs/920.txt
  173. +19 −0 fastlane/metadata/android/it/changelogs/930.txt
  174. +17 −0 fastlane/metadata/android/it/changelogs/951.txt
  175. +10 −0 fastlane/metadata/android/it/changelogs/957.txt
  176. +6 −0 fastlane/metadata/android/it/changelogs/965.txt
  177. +14 −0 fastlane/metadata/android/it/changelogs/966.txt
  178. +1 −0 fastlane/metadata/android/it/changelogs/967.txt
  179. +7 −0 fastlane/metadata/android/it/changelogs/968.txt
  180. +8 −0 fastlane/metadata/android/it/changelogs/969.txt
  181. +11 −0 fastlane/metadata/android/it/changelogs/970.txt
  182. +3 −0 fastlane/metadata/android/it/changelogs/971.txt
  183. +14 −0 fastlane/metadata/android/it/changelogs/972.txt
  184. +4 −0 fastlane/metadata/android/it/changelogs/973.txt
  185. +5 −0 fastlane/metadata/android/it/changelogs/974.txt
  186. +17 −0 fastlane/metadata/android/it/changelogs/975.txt
  187. +10 −0 fastlane/metadata/android/it/changelogs/976.txt
  188. +10 −0 fastlane/metadata/android/it/changelogs/977.txt
  189. +1 −0 fastlane/metadata/android/it/changelogs/978.txt
  190. +2 −0 fastlane/metadata/android/it/changelogs/979.txt
  191. +13 −0 fastlane/metadata/android/it/changelogs/980.txt
  192. +2 −0 fastlane/metadata/android/it/changelogs/981.txt
  193. +1 −0 fastlane/metadata/android/it/changelogs/982.txt
  194. +9 −0 fastlane/metadata/android/it/changelogs/983.txt
  195. +16 −0 fastlane/metadata/android/it/changelogs/986.txt
  196. +13 −0 fastlane/metadata/android/it/changelogs/991.txt
  197. +8 −0 fastlane/metadata/android/ka/changelogs/63.txt
  198. +8 −0 fastlane/metadata/android/ka/changelogs/64.txt
  199. +26 −0 fastlane/metadata/android/ka/changelogs/65.txt
  200. +33 −0 fastlane/metadata/android/ka/changelogs/66.txt
  201. +31 −0 fastlane/metadata/android/ka/changelogs/68.txt
  202. +19 −0 fastlane/metadata/android/ka/changelogs/69.txt
  203. +25 −0 fastlane/metadata/android/ka/changelogs/70.txt
  204. +10 −0 fastlane/metadata/android/ka/changelogs/71.txt
  205. +2 −0 fastlane/metadata/android/ka/changelogs/730.txt
  206. +23 −0 fastlane/metadata/android/ka/changelogs/740.txt
  207. +22 −0 fastlane/metadata/android/ka/changelogs/750.txt
  208. +43 −0 fastlane/metadata/android/ka/changelogs/760.txt
  209. +4 −0 fastlane/metadata/android/ka/changelogs/770.txt
  210. +12 −0 fastlane/metadata/android/ka/changelogs/780.txt
  211. +14 −0 fastlane/metadata/android/ka/changelogs/790.txt
  212. +27 −0 fastlane/metadata/android/ka/changelogs/800.txt
  213. +19 −0 fastlane/metadata/android/ka/changelogs/810.txt
  214. +1 −0 fastlane/metadata/android/ka/changelogs/820.txt
  215. +1 −0 fastlane/metadata/android/ka/changelogs/830.txt
  216. +22 −0 fastlane/metadata/android/ka/changelogs/840.txt
  217. +1 −0 fastlane/metadata/android/ka/changelogs/850.txt
  218. +7 −0 fastlane/metadata/android/ka/changelogs/860.txt
  219. +2 −0 fastlane/metadata/android/ka/changelogs/870.txt
  220. +14 −0 fastlane/metadata/android/ka/changelogs/900.txt
  221. +1 −0 fastlane/metadata/android/ka/changelogs/910.txt
  222. +9 −0 fastlane/metadata/android/ka/changelogs/920.txt
  223. +19 −0 fastlane/metadata/android/ka/changelogs/930.txt
  224. +16 −0 fastlane/metadata/android/ka/changelogs/940.txt
  225. +4 −0 fastlane/metadata/android/ka/changelogs/950.txt
  226. +17 −0 fastlane/metadata/android/ka/changelogs/951.txt
  227. +7 −0 fastlane/metadata/android/ka/changelogs/952.txt
  228. +1 −0 fastlane/metadata/android/ka/changelogs/953.txt
  229. +9 −0 fastlane/metadata/android/ka/changelogs/954.txt
  230. +3 −0 fastlane/metadata/android/ka/changelogs/955.txt
  231. +1 −0 fastlane/metadata/android/ka/changelogs/956.txt
  232. +10 −0 fastlane/metadata/android/ka/changelogs/957.txt
  233. +15 −0 fastlane/metadata/android/ka/changelogs/958.txt
  234. +3 −0 fastlane/metadata/android/ka/changelogs/959.txt
  235. +4 −0 fastlane/metadata/android/ka/changelogs/960.txt
  236. +12 −0 fastlane/metadata/android/ka/changelogs/961.txt
  237. +2 −0 fastlane/metadata/android/ka/changelogs/962.txt
  238. +1 −0 fastlane/metadata/android/ka/changelogs/963.txt
  239. +8 −0 fastlane/metadata/android/ka/changelogs/964.txt
  240. +6 −0 fastlane/metadata/android/ka/changelogs/965.txt
  241. +14 −0 fastlane/metadata/android/ka/changelogs/966.txt
  242. +1 −0 fastlane/metadata/android/ka/changelogs/967.txt
  243. +7 −0 fastlane/metadata/android/ka/changelogs/968.txt
  244. +8 −0 fastlane/metadata/android/ka/changelogs/969.txt
  245. +11 −0 fastlane/metadata/android/ka/changelogs/970.txt
  246. +3 −0 fastlane/metadata/android/ka/changelogs/971.txt
  247. +14 −0 fastlane/metadata/android/ka/changelogs/972.txt
  248. +4 −0 fastlane/metadata/android/ka/changelogs/973.txt
  249. +5 −0 fastlane/metadata/android/ka/changelogs/974.txt
  250. +17 −0 fastlane/metadata/android/ka/changelogs/975.txt
  251. +10 −0 fastlane/metadata/android/ka/changelogs/976.txt
  252. +10 −0 fastlane/metadata/android/ka/changelogs/977.txt
  253. +1 −0 fastlane/metadata/android/ka/changelogs/978.txt
  254. +2 −0 fastlane/metadata/android/ka/changelogs/979.txt
  255. +13 −0 fastlane/metadata/android/ka/changelogs/980.txt
  256. +2 −0 fastlane/metadata/android/ka/changelogs/981.txt
  257. +1 −0 fastlane/metadata/android/ka/changelogs/982.txt
  258. +9 −0 fastlane/metadata/android/ka/changelogs/983.txt
  259. +7 −0 fastlane/metadata/android/ka/changelogs/984.txt
  260. +1 −0 fastlane/metadata/android/ka/changelogs/985.txt
  261. +16 −0 fastlane/metadata/android/ka/changelogs/986.txt
  262. +12 −0 fastlane/metadata/android/ka/changelogs/987.txt
  263. +2 −0 fastlane/metadata/android/ka/changelogs/988.txt
  264. +3 −0 fastlane/metadata/android/ka/changelogs/989.txt
  265. +15 −0 fastlane/metadata/android/ka/changelogs/990.txt
  266. +13 −0 fastlane/metadata/android/ka/changelogs/991.txt
  267. +1 −0 fastlane/metadata/android/ka/full_description.txt
  268. +1 −0 fastlane/metadata/android/ka/short_description.txt
  269. +1 −1 fastlane/metadata/android/lv/changelogs/63.txt
  270. +4 −4 fastlane/metadata/android/lv/changelogs/64.txt
  271. +1 −0 fastlane/metadata/android/or/full_description.txt
  272. +13 −0 fastlane/metadata/android/pa/changelogs/991.txt
  273. +1 −1 fastlane/metadata/android/pa/short_description.txt
  274. +13 −0 fastlane/metadata/android/pl/changelogs/991.txt
  275. +14 −0 fastlane/metadata/android/pt-PT/changelogs/990.txt
  276. +13 −0 fastlane/metadata/android/pt-PT/changelogs/991.txt
  277. +1 −1 fastlane/metadata/android/pt/changelogs/65.txt
  278. +2 −0 fastlane/metadata/android/pt/changelogs/951.txt
  279. +13 −0 fastlane/metadata/android/pt/changelogs/991.txt
  280. +2 −0 fastlane/metadata/android/ru/changelogs/730.txt
  281. +23 −0 fastlane/metadata/android/ru/changelogs/740.txt
  282. +22 −0 fastlane/metadata/android/ru/changelogs/750.txt
  283. +1 −1 fastlane/metadata/android/ru/changelogs/780.txt
  284. +1 −0 fastlane/metadata/android/ru/changelogs/820.txt
  285. +1 −0 fastlane/metadata/android/ru/changelogs/830.txt
  286. +1 −0 fastlane/metadata/android/ru/changelogs/850.txt
  287. +1 −0 fastlane/metadata/android/ru/changelogs/910.txt
  288. +1 −0 fastlane/metadata/android/ru/changelogs/963.txt
  289. +13 −0 fastlane/metadata/android/sk/changelogs/991.txt
  290. +13 −0 fastlane/metadata/android/uk/changelogs/991.txt
  291. +13 −0 fastlane/metadata/android/zh-Hant/changelogs/991.txt
  292. +13 −0 fastlane/metadata/android/zh_Hant_HK/changelogs/991.txt
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -126,4 +126,4 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew build sonarqube --info
run: ./gradlew build sonar --info
6 changes: 4 additions & 2 deletions .github/workflows/image-minimizer.js
Original file line number Diff line number Diff line change
@@ -55,6 +55,7 @@ module.exports = async ({github, context}) => {
return match;
}

let probeAspectRatio = 0;
let shouldModify = false;
try {
console.log(`Probing ${g2}`);
@@ -76,7 +77,8 @@ module.exports = async ({github, context}) => {
}
console.log(`Probing resulted in ${probeResult.width}x${probeResult.height}px`);

shouldModify = probeResult.height > IMG_MAX_HEIGHT_PX && (probeResult.width / probeResult.height) < MIN_ASPECT_RATIO;
probeAspectRatio = probeResult.width / probeResult.height;
shouldModify = probeResult.height > IMG_MAX_HEIGHT_PX && probeAspectRatio < MIN_ASPECT_RATIO;
} catch(e) {
console.log('Probing failed:', e);
// Immediately abort
@@ -86,7 +88,7 @@ module.exports = async ({github, context}) => {
if (shouldModify) {
wasMatchModified = true;
console.log(`Modifying match '${match}'`);
return `<img alt="${g1}" src="${g2}" height=${IMG_MAX_HEIGHT_PX} />`;
return `<img alt="${g1}" src="${g2}" width=${Math.min(600, (IMG_MAX_HEIGHT_PX * probeAspectRatio).toFixed(0))} />`;
}

console.log(`Match '${match}' is ok/will not be modified`);
12 changes: 6 additions & 6 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ plugins {
id "kotlin-kapt"
id "kotlin-parcelize"
id "checkstyle"
id "org.sonarqube" version "3.3"
id "org.sonarqube" version "3.5.0.2730"
}

android {
@@ -16,8 +16,8 @@ android {
resValue "string", "app_name", "NewPipe"
minSdk 21
targetSdk 29
versionCode 990
versionName "0.24.0"
versionCode 991
versionName "0.24.1"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

@@ -169,7 +169,7 @@ afterEvaluate {
preDebugBuild.dependsOn runCheckstyle, runKtlint
}

sonarqube {
sonar {
properties {
property "sonar.projectKey", "TeamNewPipe_NewPipe"
property "sonar.organization", "teamnewpipe"
@@ -187,7 +187,7 @@ dependencies {
// name and the commit hash with the commit hash of the (pushed) commit you want to test
// This works thanks to JitPack: https://jitpack.io/
implementation 'com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751'
implementation 'com.github.TeamNewPipe:NewPipeExtractor:9ffdd0948b2ecd82655f5ff2a3e127b2b7695d5b'
implementation 'com.github.TeamNewPipe:NewPipeExtractor:eb07d70a2ce03bee3cc74fc33b2e4173e1c21436'
implementation 'com.github.TeamNewPipe:NoNonsense-FilePicker:5.0.0'

/** Checkstyle **/
@@ -271,7 +271,7 @@ dependencies {
implementation "com.jakewharton.rxbinding4:rxbinding:4.0.0"

// Date and time formatting
implementation "org.ocpsoft.prettytime:prettytime:5.0.3.Final"
implementation "org.ocpsoft.prettytime:prettytime:5.0.6.Final"

/** Debugging **/
// Memory leak detection
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -153,6 +153,7 @@
<data android:pathPrefix="/channel/" />
<data android:pathPrefix="/user/" />
<data android:pathPrefix="/c/" />
<data android:pathPrefix="/@" />
<!-- playlist prefix -->
<data android:pathPrefix="/playlist" />
</intent-filter>
@@ -336,7 +337,6 @@
<data android:host="peertube.mastodon.host" />
<data android:host="peertube.fr" />
<data android:host="tilvids.com" />
<data android:host="tube.privacytools.io" />
<data android:host="video.ploud.fr" />
<data android:host="video.lqdn.fr" />
<data android:host="skeptikon.fr" />
2 changes: 1 addition & 1 deletion app/src/main/java/org/schabi/newpipe/MainActivity.java
Original file line number Diff line number Diff line change
@@ -172,7 +172,7 @@ protected void onPostCreate(final Bundle savedInstanceState) {
if (prefs.getBoolean(app.getString(R.string.update_app_key), true)) {
// Start the worker which is checking all conditions
// and eventually searching for a new version.
NewVersionWorker.enqueueNewVersionCheckingWork(app);
NewVersionWorker.enqueueNewVersionCheckingWork(app, false);
}
}

81 changes: 49 additions & 32 deletions app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
package org.schabi.newpipe

import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.util.Log
import android.widget.Toast
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat
import androidx.core.content.edit
import androidx.core.net.toUri
import androidx.preference.PreferenceManager
import androidx.work.OneTimeWorkRequest
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager
import androidx.work.WorkRequest
import androidx.work.Worker
import androidx.work.WorkerParameters
import androidx.work.workDataOf
import com.grack.nanojson.JsonParser
import com.grack.nanojson.JsonParserException
import org.schabi.newpipe.extractor.downloader.Response
import org.schabi.newpipe.extractor.exceptions.ReCaptchaException
import org.schabi.newpipe.util.PendingIntentCompat
import org.schabi.newpipe.util.ReleaseVersionUtil.coerceUpdateCheckExpiry
import org.schabi.newpipe.util.ReleaseVersionUtil.isLastUpdateCheckExpired
import org.schabi.newpipe.util.ReleaseVersionUtil.isReleaseApk
@@ -42,26 +44,40 @@ class NewVersionWorker(
versionCode: Int
) {
if (BuildConfig.VERSION_CODE >= versionCode) {
if (inputData.getBoolean(IS_MANUAL, false)) {
// Show toast stating that the app is up-to-date if the update check was manual.
ContextCompat.getMainExecutor(applicationContext).execute {
Toast.makeText(
applicationContext, R.string.app_update_unavailable_toast,
Toast.LENGTH_SHORT
).show()
}
}
return
}
val app = App.getApp()

// A pending intent to open the apk location url in the browser.
val intent = Intent(Intent.ACTION_VIEW, apkLocationUrl?.toUri())
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
val pendingIntent = PendingIntent.getActivity(app, 0, intent, 0)
val channelId = app.getString(R.string.app_update_notification_channel_id)
val notificationBuilder = NotificationCompat.Builder(app, channelId)
val pendingIntent = PendingIntentCompat.getActivity(
applicationContext, 0, intent, 0
)
val channelId = applicationContext.getString(R.string.app_update_notification_channel_id)
val notificationBuilder = NotificationCompat.Builder(applicationContext, channelId)
.setSmallIcon(R.drawable.ic_newpipe_update)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.setContentTitle(app.getString(R.string.app_update_notification_content_title))
.setContentIntent(pendingIntent)
.setContentTitle(
applicationContext.getString(R.string.app_update_available_notification_title)
)
.setContentText(
app.getString(R.string.app_update_notification_content_text) +
" " + versionName
applicationContext.getString(
R.string.app_update_available_notification_text, versionName
)
)
val notificationManager = NotificationManagerCompat.from(app)

val notificationManager = NotificationManagerCompat.from(applicationContext)
notificationManager.notify(2000, notificationBuilder.build())
}

@@ -72,12 +88,14 @@ class NewVersionWorker(
return
}

val prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext)
// Check if the last request has happened a certain time ago
// to reduce the number of API requests.
val expiry = prefs.getLong(applicationContext.getString(R.string.update_expiry_key), 0)
if (!isLastUpdateCheckExpired(expiry)) {
return
if (!inputData.getBoolean(IS_MANUAL, false)) {
val prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext)
// Check if the last request has happened a certain time ago
// to reduce the number of API requests.
val expiry = prefs.getLong(applicationContext.getString(R.string.update_expiry_key), 0)
if (!isLastUpdateCheckExpired(expiry)) {
return
}
}

// Make a network request to get latest NewPipe data.
@@ -120,43 +138,42 @@ class NewVersionWorker(
}

override fun doWork(): Result {
try {
return try {
checkNewVersion()
Result.success()
} catch (e: IOException) {
Log.w(TAG, "Could not fetch NewPipe API: probably network problem", e)
return Result.failure()
Result.failure()
} catch (e: ReCaptchaException) {
Log.e(TAG, "ReCaptchaException should never happen here.", e)
return Result.failure()
Result.failure()
}
return Result.success()
}

companion object {
private val DEBUG = MainActivity.DEBUG
private val TAG = NewVersionWorker::class.java.simpleName
private const val NEWPIPE_API_URL = "https://newpipe.net/api/data.json"
private const val IS_MANUAL = "isManual"

/**
* Start a new worker which
* checks if all conditions for performing a version check are met,
* fetches the API endpoint [.NEWPIPE_API_URL] containing info
* about the latest NewPipe version
* and displays a notification about ana available update.
* Start a new worker which checks if all conditions for performing a version check are met,
* fetches the API endpoint [.NEWPIPE_API_URL] containing info about the latest NewPipe
* version and displays a notification about an available update if one is available.
* <br></br>
* Following conditions need to be met, before data is request from the server:
* Following conditions need to be met, before data is requested from the server:
*
* * The app is signed with the correct signing key (by TeamNewPipe / schabi).
* If the signing key differs from the one used upstream, the update cannot be installed.
* * The user enabled searching for and notifying about updates in the settings.
* * The app did not recently check for updates.
* We do not want to make unnecessary connections and DOS our servers.
*
*/
@JvmStatic
fun enqueueNewVersionCheckingWork(context: Context) {
val workRequest: WorkRequest =
OneTimeWorkRequest.Builder(NewVersionWorker::class.java).build()
fun enqueueNewVersionCheckingWork(context: Context, isManual: Boolean) {
val workRequest = OneTimeWorkRequestBuilder<NewVersionWorker>()
.setInputData(workDataOf(IS_MANUAL to isManual))
.build()
WorkManager.getInstance(context).enqueue(workRequest)
}
}
Original file line number Diff line number Diff line change
@@ -48,7 +48,10 @@ abstract class FeedDAO {
ON s.uid = f.stream_id
LEFT JOIN feed_group_subscription_join fgs
ON fgs.subscription_id = f.subscription_id
ON (
:groupId <> ${FeedGroupEntity.GROUP_ALL_ID}
AND fgs.subscription_id = f.subscription_id
)
WHERE (
:groupId = ${FeedGroupEntity.GROUP_ALL_ID}
11 changes: 3 additions & 8 deletions app/src/main/java/org/schabi/newpipe/error/ErrorUtil.kt
Original file line number Diff line number Diff line change
@@ -5,14 +5,14 @@ import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.os.Build
import android.view.View
import android.widget.Toast
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.fragment.app.Fragment
import com.google.android.material.snackbar.Snackbar
import org.schabi.newpipe.R
import org.schabi.newpipe.util.PendingIntentCompat

/**
* This class contains all of the methods that should be used to let the user know that an error has
@@ -104,11 +104,6 @@ class ErrorUtil {
*/
@JvmStatic
fun createNotification(context: Context, errorInfo: ErrorInfo) {
var pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
pendingIntentFlags = pendingIntentFlags or PendingIntent.FLAG_IMMUTABLE
}

val notificationBuilder: NotificationCompat.Builder =
NotificationCompat.Builder(
context,
@@ -119,11 +114,11 @@ class ErrorUtil {
.setContentText(context.getString(errorInfo.messageStringId))
.setAutoCancel(true)
.setContentIntent(
PendingIntent.getActivity(
PendingIntentCompat.getActivity(
context,
0,
getErrorActivityIntent(context, errorInfo),
pendingIntentFlags
PendingIntent.FLAG_UPDATE_CURRENT
)
)

Loading