Skip to content

Commit d1cbc17

Browse files
committed
Merge branch 'dev' into feat/similar-youtube-client-screen-rotation
2 parents a4cc1d1 + ffb82dc commit d1cbc17

File tree

219 files changed

+3342
-409
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

219 files changed

+3342
-409
lines changed

.editorconfig

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#
2+
# SPDX-FileCopyrightText: 2025 NewPipe e.V. <https://newpipe-ev.de>
3+
# SPDX-License-Identifier: GPL-3.0-or-later
4+
#
5+
6+
root = true
7+
8+
[*.{kt,kts}]
9+
ktlint_standard_annotation = disabled
10+
ktlint_standard_argument-list-wrapping = disabled
11+
ktlint_standard_backing-property-naming = disabled
12+
ktlint_standard_blank-line-before-declaration = disabled
13+
ktlint_standard_blank-line-between-when-conditions = disabled
14+
ktlint_standard_chain-method-continuation = disabled
15+
ktlint_standard_class-signature = disabled
16+
ktlint_standard_comment-wrapping = disabled
17+
ktlint_standard_enum-wrapping = disabled
18+
ktlint_standard_function-expression-body = disabled
19+
ktlint_standard_function-literal = disabled
20+
ktlint_standard_function-signature = disabled
21+
ktlint_standard_indent = disabled
22+
ktlint_standard_kdoc = disabled
23+
ktlint_standard_max-line-length = disabled
24+
ktlint_standard_mixed-condition-operators = disabled
25+
ktlint_standard_multiline-expression-wrapping = disabled
26+
ktlint_standard_multiline-if-else = disabled
27+
ktlint_standard_no-blank-line-in-list = disabled
28+
ktlint_standard_no-consecutive-comments = disabled
29+
ktlint_standard_no-empty-first-line-in-class-body = disabled
30+
ktlint_standard_no-empty-first-line-in-method-block = disabled
31+
ktlint_standard_no-line-break-after-else = disabled
32+
ktlint_standard_no-semi = disabled
33+
ktlint_standard_no-single-line-block-comment = disabled
34+
ktlint_standard_package-name = disabled
35+
ktlint_standard_parameter-list-wrapping = disabled
36+
ktlint_standard_property-naming = disabled
37+
ktlint_standard_spacing-between-declarations-with-annotations = disabled
38+
ktlint_standard_spacing-between-declarations-with-comments = disabled
39+
ktlint_standard_statement-wrapping = disabled
40+
ktlint_standard_string-template-indent = disabled
41+
ktlint_standard_trailing-comma-on-call-site = disabled
42+
ktlint_standard_trailing-comma-on-declaration-site = disabled
43+
ktlint_standard_try-catch-finally-spacing = disabled
44+
ktlint_standard_when-entry-bracing = disabled

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#### What is it?
44
- [ ] Bugfix (user facing)
5-
- [ ] Feature (user facing)
5+
- [ ] Feature (user facing) ⚠️ **Your PR must target the [`refactor`](https://github.com/TeamNewPipe/NewPipe/tree/refactor) branch**
66
- [ ] Codebase improvement (dev facing)
77
- [ ] Meta improvement to the project (dev facing)
88

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ captures/
77
*.iml
88
*~
99
.weblate
10+
.kotlin
1011
*.class
1112
app/debug/
1213
app/release/

app/build.gradle.kts

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66
plugins {
77
alias(libs.plugins.android.application)
88
alias(libs.plugins.jetbrains.kotlin.android)
9+
alias(libs.plugins.jetbrains.kotlin.kapt)
910
alias(libs.plugins.google.ksp)
1011
alias(libs.plugins.jetbrains.kotlin.parcelize)
1112
alias(libs.plugins.sonarqube)
1213
checkstyle
1314
}
1415

15-
apply(from = "check-dependencies.gradle.kts")
16-
1716
val gitWorkingBranch = providers.exec {
1817
commandLine("git", "rev-parse", "--abbrev-ref", "HEAD")
1918
}.standardOutput.asText.map { it.trim() }
@@ -24,6 +23,15 @@ java {
2423
}
2524
}
2625

26+
kotlin {
27+
compilerOptions {
28+
// TODO: Drop annotation default target when it is stable
29+
freeCompilerArgs.addAll(
30+
"-Xannotation-default-target=param-property"
31+
)
32+
}
33+
}
34+
2735
android {
2836
compileSdk = 36
2937
namespace = "org.schabi.newpipe"
@@ -159,7 +167,7 @@ tasks.register<JavaExec>("runKtlint") {
159167
outputs.dir(outputDir)
160168
mainClass.set("com.pinterest.ktlint.Main")
161169
classpath = configurations.getByName("ktlint")
162-
args = listOf("src/**/*.kt")
170+
args = listOf("--editorconfig=../.editorconfig", "src/**/*.kt")
163171
jvmArgs = listOf("--add-opens", "java.base/java.lang=ALL-UNNAMED")
164172
}
165173

@@ -168,10 +176,14 @@ tasks.register<JavaExec>("formatKtlint") {
168176
outputs.dir(outputDir)
169177
mainClass.set("com.pinterest.ktlint.Main")
170178
classpath = configurations.getByName("ktlint")
171-
args = listOf("-F", "src/**/*.kt")
179+
args = listOf("--editorconfig=../.editorconfig", "-F", "src/**/*.kt")
172180
jvmArgs = listOf("--add-opens", "java.base/java.lang=ALL-UNNAMED")
173181
}
174182

183+
tasks.register<CheckDependenciesOrder>("checkDependenciesOrder") {
184+
tomlFile = layout.projectDirectory.file("../gradle/libs.versions.toml")
185+
}
186+
175187
afterEvaluate {
176188
tasks.named("preDebugBuild").configure {
177189
if (!System.getProperties().containsKey("skipFormatKtlint")) {
@@ -228,7 +240,7 @@ dependencies {
228240
/** Third-party libraries **/
229241
implementation(libs.livefront.bridge)
230242
implementation(libs.evernote.statesaver.core)
231-
ksp(libs.evernote.statesaver.compiler)
243+
kapt(libs.evernote.statesaver.compiler)
232244

233245
// HTML parser
234246
implementation(libs.jsoup)
@@ -246,10 +258,6 @@ dependencies {
246258
implementation(libs.google.exoplayer.smoothstreaming)
247259
implementation(libs.google.exoplayer.ui)
248260

249-
// Metadata generator for service descriptors
250-
compileOnly(libs.google.autoservice.annotations)
251-
ksp(libs.google.autoservice.compiler)
252-
253261
// Manager for complex RecyclerView layouts
254262
implementation(libs.lisawray.groupie.core)
255263
implementation(libs.lisawray.groupie.viewbinding)
@@ -263,6 +271,8 @@ dependencies {
263271

264272
// Crash reporting
265273
implementation(libs.acra.core)
274+
compileOnly(libs.google.autoservice.annotations)
275+
ksp(libs.zacsweers.autoservice.compiler)
266276

267277
// Properly restarting
268278
implementation(libs.jakewharton.phoenix)

app/src/main/java/org/schabi/newpipe/database/history/dao/HistoryDAO.kt

Lines changed: 0 additions & 13 deletions
This file was deleted.

app/src/main/java/org/schabi/newpipe/database/history/dao/SearchHistoryDAO.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ package org.schabi.newpipe.database.history.dao
99
import androidx.room.Dao
1010
import androidx.room.Query
1111
import io.reactivex.rxjava3.core.Flowable
12+
import org.schabi.newpipe.database.BasicDAO
1213
import org.schabi.newpipe.database.history.model.SearchHistoryEntry
1314

1415
@Dao
15-
interface SearchHistoryDAO : HistoryDAO<SearchHistoryEntry> {
16+
interface SearchHistoryDAO : BasicDAO<SearchHistoryEntry> {
1617

1718
@get:Query("SELECT * FROM search_history WHERE id = (SELECT MAX(id) FROM search_history)")
18-
override val latestEntry: SearchHistoryEntry
19+
val latestEntry: SearchHistoryEntry?
1920

2021
@Query("DELETE FROM search_history")
2122
override fun deleteAll(): Int

app/src/main/java/org/schabi/newpipe/database/history/dao/StreamHistoryDAO.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@ import androidx.room.Dao
1010
import androidx.room.Query
1111
import androidx.room.RewriteQueriesToDropUnusedColumns
1212
import io.reactivex.rxjava3.core.Flowable
13+
import org.schabi.newpipe.database.BasicDAO
1314
import org.schabi.newpipe.database.history.model.StreamHistoryEntity
1415
import org.schabi.newpipe.database.history.model.StreamHistoryEntry
1516
import org.schabi.newpipe.database.stream.StreamStatisticsEntry
1617

1718
@Dao
18-
abstract class StreamHistoryDAO : HistoryDAO<StreamHistoryEntity> {
19-
20-
@get:Query("SELECT * FROM stream_history WHERE access_date = (SELECT MAX(access_date) FROM stream_history)")
21-
abstract override val latestEntry: StreamHistoryEntity
19+
abstract class StreamHistoryDAO : BasicDAO<StreamHistoryEntity> {
2220

2321
@Query("SELECT * FROM stream_history")
2422
abstract override fun getAll(): Flowable<List<StreamHistoryEntity>>

app/src/main/java/org/schabi/newpipe/settings/BackupRestoreSettingsFragment.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
import java.util.Date;
4141
import java.util.Locale;
4242
import java.util.Objects;
43+
import java.util.concurrent.ExecutorService;
44+
import java.util.concurrent.Executors;
4345

4446
public class BackupRestoreSettingsFragment extends BasePreferenceFragment {
4547

@@ -155,9 +157,9 @@ private void requestImportPathResult(final ActivityResult result) {
155157
}
156158

157159
private void exportDatabase(final StoredFileHelper file, final Uri exportDataUri) {
158-
try {
160+
try (ExecutorService executor = Executors.newSingleThreadExecutor()) {
159161
//checkpoint before export
160-
NewPipeDatabase.checkpoint();
162+
executor.submit(NewPipeDatabase::checkpoint).get();
161163

162164
final SharedPreferences preferences = PreferenceManager
163165
.getDefaultSharedPreferences(requireContext());

app/src/main/res/values-ar/strings.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -886,4 +886,24 @@
886886
<string name="search_with_service_name_and_filter">البحث %1$s (%2$s)</string>
887887
<string name="migration_info_6_7_title">تمت إزالة صفحة أفضل 50 من SoundCloud</string>
888888
<string name="migration_info_6_7_message">أوقفت SoundCloud صفحة أفضل 50 الأصلية. تمت إزالة علامة التبويب المقابلة من صفحتك الرئيسية.</string>
889+
<string name="migration_info_7_8_title">تمت إزالة تريندات YouTube المجمعة</string>
890+
<string name="migration_info_7_8_message">أوقف YouTube صفحة الترند المدمجة اعتبارًا من 21 يوليو 2025. استبدلت NewPipe صفحة الموضوعات المتداولة الافتراضية بصفحة الموضوعات المتداولة الشائعة مع البث المباشر المتداول.\n\nيمكنك أيضًا تحديد صفحات رائجة مختلفة في \"الإعدادات &gt; المحتوى &gt; محتوى الصفحة الرئيسية\".</string>
891+
<string name="trending_gaming">توجهات الألعاب</string>
892+
<string name="trending_podcasts">توجهات البث الصوتي</string>
893+
<string name="trending_movies">الأفلام والعروض الأكثر رواجاً</string>
894+
<string name="trending_music">الموسيقى الرائجة</string>
895+
<string name="short_thousand">%s الف</string>
896+
<string name="short_million">%s مليون</string>
897+
<string name="short_billion">%sمليار</string>
898+
<string name="permission_display_over_apps_message">لاستخدام المشغل المنبثق، يرجى تحديد %1$s في قائمة إعدادات اندرويد التالية وتمكين %2$s.</string>
899+
<string name="permission_display_over_apps_permission_name">“السماح بالعرض فوق التطبيقات الاخرى”</string>
900+
<string name="delete_file">حذف ملف</string>
901+
<string name="delete_entry">حذف المدخلات</string>
902+
<string name="account_terminated_service_provides_reason">تم إنهاء الحساب\n\n%1$s يقدم هذا السبب: %2$s</string>
903+
<string name="entry_deleted">تم حذف المدخلات</string>
904+
<string name="player_http_403">تم تلقي خطأ HTTP 403 من الخادم أثناء التشغيل، ويرجح أن يكون السبب هو انتهاء صلاحية عنوان URL للبث أو حظر عنوان IP</string>
905+
<string name="player_http_invalid_status">حدث خطأ HTTP %1$s من الخادم أثناء التشغيل</string>
906+
<string name="youtube_player_http_403">تم تلقي خطأ HTTP 403 من الخادم أثناء التشغيل، ويرجح أن يكون السبب هو حظر عنوان IP أو مشكلات في إزالة التعتيم عن عنوان URL للبث</string>
907+
<string name="sign_in_confirm_not_bot_error">رفض %1$s تقديم البيانات، وطلب تسجيل الدخول للتأكد من أن الطالب ليس روبوتًا.\n\nربما تم حظر عنوان IP الخاص بك مؤقتًا من قبل %1$s، يمكنك الانتظار بعض الوقت أو التبديل إلى عنوان IP مختلف (على سبيل المثال عن طريق تشغيل/إيقاف تشغيل VPN، أو التبديل من WiFi إلى بيانات الهاتف المحمول).</string>
908+
<string name="unsupported_content_in_country">هذا المحتوى غير متاح للبلد المحدد حاليًا.\n\nقم بتغيير اختيارك من ”الإعدادات &gt; المحتوى &gt; البلد الافتراضي للمحتوى“.</string>
889909
</resources>

app/src/main/res/values-az/strings.xml

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,10 +192,10 @@
192192
<string name="delete">Sil</string>
193193
<string name="no_channel_subscribed_yet">Hələ ki, kanal abunəliyi yoxdur</string>
194194
<string name="select_a_channel">Kanal seç</string>
195-
<string name="channel_page_summary">Kanal Səhifəsi</string>
195+
<string name="channel_page_summary">Kanal səhifəsi</string>
196196
<string name="default_kiosk_page_summary">Standart Bölmə</string>
197-
<string name="kiosk_page_summary">Kənar Səhifə</string>
198-
<string name="blank_page_summary">Boş Səhifə</string>
197+
<string name="kiosk_page_summary">Kənar səhifə</string>
198+
<string name="blank_page_summary">Boş səhifə</string>
199199
<string name="main_page_content_summary">Əsas səhifədə hansı tablar göstərilir</string>
200200
<string name="main_page_content">Əsas səhifə məzmunu</string>
201201
<string name="updates_setting_description">Yeni versiya mövcud olduqda tətbiq yeniləməsini xatırlatmaq üçün bildiriş göstər</string>
@@ -295,7 +295,7 @@
295295
<string name="what_happened_headline">Nə baş verdi:</string>
296296
<string name="detail_uploader_thumbnail_view_description">Yükləyənin avatar miniatürü</string>
297297
<string name="detail_likes_img_view_description">Bəyən</string>
298-
<string name="detail_dislikes_img_view_description">Bəyənmə</string>
298+
<string name="detail_dislikes_img_view_description">Bəyənməmə</string>
299299
<string name="detail_drag_description">Yenidən sıralamaq üçün sürüklə</string>
300300
<string name="drawer_header_description">Xidməti dəyiş, hazırda seçilmiş:</string>
301301
<string name="no_subscribers">Abunəçi yoxdur</string>
@@ -803,4 +803,29 @@
803803
<string name="select_a_feed_group">Axın qrupu seçin</string>
804804
<string name="no_feed_group_created_yet">Hələ heç bir axın qrupu yaradılmayıb</string>
805805
<string name="feed_group_page_summary">Kanal qrupu səhifəsi</string>
806+
<string name="search_with_service_name">%1$s axtar</string>
807+
<string name="search_with_service_name_and_filter">%1$s (%2$s) axtar</string>
808+
<string name="channel_tab_likes">Bəyənmə</string>
809+
<string name="migration_info_6_7_title">SoundCloud Top 50 səhifəsi silindi</string>
810+
<string name="migration_info_6_7_message">SoundCloud ilk Ən yaxşı 50 siyahısın ləğv etdi. Uyğun səhifə əsas səhifənizdən silindi.</string>
811+
<string name="short_thousand">%sMin</string>
812+
<string name="short_million">%sMln</string>
813+
<string name="short_billion">%sMlrd</string>
814+
<string name="migration_info_7_8_title">YouTube birləşmiş trend silindi</string>
815+
<string name="migration_info_7_8_message">YouTube 21 iyul 2025-ci il tarixindən birləşmiş trend səhifəsini ləğv etdi. NewPipe ilkin trend səhifəsini trend olan canlı yayımlarla əvəz etdi. \n\nHəmçinin \"Tənzimləmələr &gt; Məzmun &gt; Əsas səhifə məzmunu\" bölməsində müxtəlif trendli səhifələri seçə bilərsiniz.</string>
816+
<string name="trending_gaming">Trenddə olan Oyun</string>
817+
<string name="trending_podcasts">Trenddə olan podkastlar</string>
818+
<string name="trending_movies">Trend film və tamaşalar</string>
819+
<string name="trending_music">Trenddə olan musiqilər</string>
820+
<string name="permission_display_over_apps_message">Ani oynadıcı istifadə etmək üçün lütfən, aşağıdakı Android tənzimləmələr menyusunda %1$s seçin və %2$s-ı aktivləşdirin.</string>
821+
<string name="permission_display_over_apps_permission_name">\"Digər tətbiqlər üzərində göstərməyə icazə verin\"</string>
822+
<string name="delete_file">Faylı sil</string>
823+
<string name="delete_entry">Girişi silin</string>
824+
<string name="entry_deleted">Giriş silindi</string>
825+
<string name="account_terminated_service_provides_reason">Hesab ləğv edilib\n\n %1$s bu səbəbi təmin edir: %2$s</string>
826+
<string name="player_http_403">Oynadarkən serverdən alınan HTTP xətası 403, çox güman ki, yayım URL-si müddətinin bitməsi və ya IP qadağası ilə bağlıdır</string>
827+
<string name="player_http_invalid_status">HTTP xətası %1$s oynadarkən serverdən alındı</string>
828+
<string name="youtube_player_http_403">HTTP xətası 403 oynadarkən serverdən alındı, ehtimal ki, IP qadağası və ya yayım URL-nin deobfuscation problemləri ilə bağlıdır</string>
829+
<string name="sign_in_confirm_not_bot_error">%1$s sorğuçunun bot olmadığını təsdiqləmək üçün giriş tələb edərək data təmin etməkdən imtina etdi.\n\nIP-niz %1$s tərəfindən müvəqqəti şəkildə qadağan oluna bilər, bir müddət gözləyə və ya başqa IP-yə keçə bilərsiniz (məsələn, VPN-i açıb/qapatmaqla və ya WiFi-dan mobil dataya keçməklə).</string>
830+
<string name="unsupported_content_in_country">Bu məzmun hazırda seçilən məzmun ölkəsi üçün əlçatan deyil. \n\nSeçiminizi \"Tənzimləmələr &gt; Məzmun &gt; İlkin məzmun ölkəsi\"- dən dəyişin.</string>
806831
</resources>

0 commit comments

Comments
 (0)