Skip to content

Commit 48ee1a4

Browse files
Isira-SeneviratneStypox
authored andcommitted
Show toast when no updates are available.
Co-authored-by: Stypox <stypox@pm.me>
1 parent a8ce54d commit 48ee1a4

64 files changed

Lines changed: 248 additions & 249 deletions

File tree

Some content is hidden

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

app/src/main/java/org/schabi/newpipe/MainActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ protected void onPostCreate(final Bundle savedInstanceState) {
193193
if (prefs.getBoolean(app.getString(R.string.update_app_key), true)) {
194194
// Start the worker which is checking all conditions
195195
// and eventually searching for a new version.
196-
NewVersionWorker.enqueueNewVersionCheckingWork(app);
196+
NewVersionWorker.enqueueNewVersionCheckingWork(app, false);
197197
}
198198
}
199199

app/src/main/java/org/schabi/newpipe/NewVersionWorker.kt

Lines changed: 37 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,18 @@ import android.content.Context
55
import android.content.Intent
66
import android.os.Build
77
import android.util.Log
8+
import android.widget.Toast
89
import androidx.core.app.NotificationCompat
910
import androidx.core.app.NotificationManagerCompat
11+
import androidx.core.content.ContextCompat
1012
import androidx.core.content.edit
1113
import androidx.core.net.toUri
1214
import androidx.preference.PreferenceManager
13-
import androidx.work.OneTimeWorkRequest
15+
import androidx.work.OneTimeWorkRequestBuilder
1416
import androidx.work.WorkManager
15-
import androidx.work.WorkRequest
1617
import androidx.work.Worker
1718
import androidx.work.WorkerParameters
19+
import androidx.work.workDataOf
1820
import com.grack.nanojson.JsonParser
1921
import com.grack.nanojson.JsonParserException
2022
import org.schabi.newpipe.extractor.downloader.Response
@@ -48,31 +50,35 @@ class NewVersionWorker(
4850
val versionCodes = versionName.split(".")
4951
val buildVersionCodes = BuildConfig.VERSION_NAME.split(".")
5052
if (!compareVersionName(buildVersionCodes, versionCodes)) {
53+
ContextCompat.getMainExecutor(applicationContext).execute {
54+
Toast.makeText(
55+
applicationContext, R.string.app_update_unavailable_toast,
56+
Toast.LENGTH_SHORT
57+
).show()
58+
}
5159
return
5260
}
53-
val app = App.getApp()
5461

5562
// A pending intent to open the apk location url in the browser.
5663
val intent = Intent(Intent.ACTION_VIEW, apkLocationUrl?.toUri())
5764
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
5865
val pendingIntent = PendingIntent.getActivity(
59-
app, 0, intent,
66+
applicationContext, 0, intent,
6067
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
6168
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
6269
else PendingIntent.FLAG_UPDATE_CURRENT
6370
)
64-
val channelId = app.getString(R.string.app_update_notification_channel_id)
65-
val notificationBuilder = NotificationCompat.Builder(app, channelId)
71+
val channelId = applicationContext.getString(R.string.app_update_notification_channel_id)
72+
val notificationBuilder = NotificationCompat.Builder(applicationContext, channelId)
6673
.setSmallIcon(R.drawable.ic_newpipe_update)
6774
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
68-
.setContentIntent(pendingIntent)
6975
.setAutoCancel(true)
70-
.setContentTitle(app.getString(R.string.app_update_notification_content_title_new))
76+
.setContentTitle(applicationContext.getString(R.string.app_update_notification_content_title_new))
7177
.setContentText(
72-
app.getString(R.string.app_update_notification_content_text) +
78+
applicationContext.getString(R.string.app_update_notification_content_text) +
7379
" " + versionName
7480
)
75-
val notificationManager = NotificationManagerCompat.from(app)
81+
val notificationManager = NotificationManagerCompat.from(applicationContext)
7682
notificationManager.notify(2000, notificationBuilder.build())
7783
}
7884

@@ -83,12 +89,14 @@ class NewVersionWorker(
8389
// return
8490
// }
8591

86-
val prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext)
87-
// Check if the last request has happened a certain time ago
88-
// to reduce the number of API requests.
89-
val expiry = prefs.getLong(applicationContext.getString(R.string.update_expiry_key), 0)
90-
if (!isLastUpdateCheckExpired(expiry)) {
91-
return
92+
if (!inputData.getBoolean(IS_MANUAL, false)) {
93+
val prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext)
94+
// Check if the last request has happened a certain time ago
95+
// to reduce the number of API requests.
96+
val expiry = prefs.getLong(applicationContext.getString(R.string.update_expiry_key), 0)
97+
if (!isLastUpdateCheckExpired(expiry)) {
98+
return
99+
}
92100
}
93101

94102
// Make a network request to get latest NewPipe data.
@@ -133,43 +141,41 @@ class NewVersionWorker(
133141
}
134142

135143
override fun doWork(): Result {
136-
try {
144+
return try {
137145
checkNewVersion()
146+
Result.success()
138147
} catch (e: IOException) {
139148
Log.w(TAG, "Could not fetch NewPipe API: probably network problem", e)
140-
return Result.failure()
149+
Result.failure()
141150
} catch (e: ReCaptchaException) {
142151
Log.e(TAG, "ReCaptchaException should never happen here.", e)
143-
return Result.failure()
152+
Result.failure()
144153
}
145-
return Result.success()
146154
}
147155

148156
companion object {
149157
private val DEBUG = MainActivity.DEBUG
150158
private val TAG = NewVersionWorker::class.java.simpleName
151159
private const val NEWPIPE_API_URL = "https://codeberg.org/api/v1/repos/NullPointerException/AnimePipe/releases"
152-
160+
private const val IS_MANUAL = "isManual"
153161
/**
154-
* Start a new worker which
155-
* checks if all conditions for performing a version check are met,
156-
* fetches the API endpoint [.NEWPIPE_API_URL] containing info
157-
* about the latest NewPipe version
158-
* and displays a notification about ana available update.
162+
* Start a new worker which checks if all conditions for performing a version check are met,
163+
* fetches the API endpoint [.NEWPIPE_API_URL] containing info about the latest NewPipe
164+
* version and displays a notification about an available update if one is available.
159165
* <br></br>
160-
* Following conditions need to be met, before data is request from the server:
166+
* Following conditions need to be met, before data is requested from the server:
161167
*
162168
* * The app is signed with the correct signing key (by TeamNewPipe / schabi).
163169
* If the signing key differs from the one used upstream, the update cannot be installed.
164170
* * The user enabled searching for and notifying about updates in the settings.
165171
* * The app did not recently check for updates.
166172
* We do not want to make unnecessary connections and DOS our servers.
167-
*
168173
*/
169174
@JvmStatic
170-
fun enqueueNewVersionCheckingWork(context: Context) {
171-
val workRequest: WorkRequest =
172-
OneTimeWorkRequest.Builder(NewVersionWorker::class.java).build()
175+
fun enqueueNewVersionCheckingWork(context: Context, isManual: Boolean) {
176+
val workRequest = OneTimeWorkRequestBuilder<NewVersionWorker>()
177+
.setInputData(workDataOf(IS_MANUAL to isManual))
178+
.build()
173179
WorkManager.getInstance(context).enqueue(workRequest)
174180
}
175181
}

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

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,18 @@ public class UpdateSettingsFragment extends BasePreferenceFragment {
1515
.putBoolean(getString(R.string.update_app_key), (boolean) checkForUpdates).apply();
1616

1717
if ((boolean) checkForUpdates) {
18-
checkNewVersionNow();
18+
NewVersionWorker.enqueueNewVersionCheckingWork(requireContext(), true);
1919
}
2020
return true;
2121
};
2222

2323
private final Preference.OnPreferenceClickListener manualUpdateClick
2424
= preference -> {
2525
Toast.makeText(getContext(), R.string.checking_updates_toast, Toast.LENGTH_SHORT).show();
26-
checkNewVersionNow();
26+
NewVersionWorker.enqueueNewVersionCheckingWork(requireContext(), true);
2727
return true;
2828
};
2929

30-
private void checkNewVersionNow() {
31-
// Search for updates immediately when update checks are enabled.
32-
// Reset the expire time. This is necessary to check for an update immediately.
33-
defaultPreferences.edit()
34-
.putLong(getString(R.string.update_expiry_key), 0).apply();
35-
NewVersionWorker.enqueueNewVersionCheckingWork(getContext());
36-
}
37-
3830
@Override
3931
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
4032
addPreferencesFromResourceRegistry();

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -309,14 +309,14 @@
309309
\n5. انقر على زر \"تحميل\" بعد ظهوره
310310
\n6. انقر على IMPORT FILE أدناه وحدد الملف البريدي تحميلها
311311
\n7. [إذا فشل استيراد الرمز البريدي] استخراج ملف .csv (عادة تحت عنوان \"يوتيوب ويوتيوب الموسيقى / الاشتراكات / الاشتراكات.csv\")، انقر على IMPORT FILE أدناه وحدد ملف csv المستخرج</string>
312-
<string name="import_soundcloud_instructions">قم باستيراد ملف تعريف SoundCloud عن طريق كتابة عنوان URL أو معرفك:
313-
\n
314-
\n1. تمكين \"وضع سطح المكتب\" في متصفح الويب (الموقع غير متاح للأجهزة المحمولة)
315-
\n2. انتقل إلى عنوان URL هذا: %1$s
312+
<string name="import_soundcloud_instructions">قم باستيراد ملف تعريف SoundCloud عن طريق كتابة عنوان URL أو معرفك:
313+
\n
314+
\n1. تمكين \"وضع سطح المكتب\" في متصفح الويب (الموقع غير متاح للأجهزة المحمولة)
315+
\n2. انتقل إلى عنوان URL هذا: %1$s
316316
\n3. تسجيل الدخول عندما يطلب منك
317317
\n4. انسخ عنوان URL للملف الشخصي الذي تمت إعادة توجيهك إليه.</string>
318-
<string name="import_network_expensive_warning">ضع في اعتبارك أن هذه العملية يمكن أن تكون مكلفة اذا كنت تستخدم بيانات اشتراك انترنت.
319-
\n
318+
<string name="import_network_expensive_warning">ضع في اعتبارك أن هذه العملية يمكن أن تكون مكلفة اذا كنت تستخدم بيانات اشتراك انترنت.
319+
\n
320320
\nهل تريد الاستمرار؟</string>
321321
<string name="playback_speed_control">ضوابط سرعة التشغيل</string>
322322
<string name="playback_tempo">سرعة الأداء</string>
@@ -760,4 +760,4 @@
760760
<item quantity="many">%s دفق جديد</item>
761761
<item quantity="other">%s دفق جديد</item>
762762
</plurals>
763-
</resources>
763+
</resources>

app/src/main/res/values-b+ast/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -573,4 +573,4 @@
573573
<string name="install">Instalar</string>
574574
<string name="no_player_found">Nun s\'atopó nengún reproductor de fluxos. ¿Instalar VLC\?</string>
575575
<string name="main_bg_subtitle">Toca «Buscar» pa entamar</string>
576-
</resources>
576+
</resources>

app/src/main/res/values-b+uz+Latn/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,4 +565,4 @@
565565
<string name="error_unable_to_load_comments">Fikrlarni yuklab bo‘lmadi</string>
566566
<string name="import_settings">Sozlamalarni ham import qilmoqchimisiz\?</string>
567567
<string name="override_current_data">Bu sizning joriy sozlamangizni bekor qiladi.</string>
568-
</resources>
568+
</resources>

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

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@
199199
<string name="msg_wait">Пачакайце…</string>
200200
<string name="msg_copied">Скапіявана ў буфер абмену</string>
201201
<string name="no_available_dir">Абярыце тэчку для загрузкі пазней у наладах</string>
202-
<string name="msg_popup_permission">Гэтае разрозненне трэба для
202+
<string name="msg_popup_permission">Гэтае разрозненне трэба для
203203
\nпрайгравання ў акне</string>
204204
<string name="one_item_deleted">1 элемент выдалены.</string>
205205
<string name="title_activity_recaptcha">Запыт reCAPTCHA</string>
@@ -226,7 +226,7 @@
226226
<string name="website_title">Вэб-сайт</string>
227227
<string name="website_encouragement">Дзеля атрымання больш падрабязнай інфармацыі і апошніх навін аб NewPipe наведайце наш вэб-сайт.</string>
228228
<string name="privacy_policy_title">Палітыка прыватнасці NewPipe</string>
229-
<string name="privacy_policy_encouragement">Праект NewPipe вельмі сур\'ёзна ставіцца да вашай прыватнасці. Таму прыкладанне не збірае ніякіх дадзеных без вашай згоды.
229+
<string name="privacy_policy_encouragement">Праект NewPipe вельмі сур\'ёзна ставіцца да вашай прыватнасці. Таму прыкладанне не збірае ніякіх дадзеных без вашай згоды.
230230
\nПалітыка прыватнасці NewPipe падрабязна тлумачыць, якія дадзеныя адпраўляюцца і захоўваюцца пры адпраўцы справаздачы аб збоях.</string>
231231
<string name="read_privacy_policy">Прачытаць палітыку</string>
232232
<string name="app_license_title">Ліцэнзія NewPipe</string>
@@ -299,20 +299,20 @@
299299
<string name="previous_export">Папярэдні экспарт</string>
300300
<string name="subscriptions_import_unsuccessful">Не атрымалася імпартаваць падпіскі</string>
301301
<string name="subscriptions_export_unsuccessful">Не атрымалася экспартаваць падпіскі</string>
302-
<string name="import_youtube_instructions">Імпарт падпісак з YouTube загрузкай файла экспарту:
303-
\n
304-
\n1. Перайдзіце на: %1$s
305-
\n2. Увайдзіце, калі неабходна
302+
<string name="import_youtube_instructions">Імпарт падпісак з YouTube загрузкай файла экспарту:
303+
\n
304+
\n1. Перайдзіце на: %1$s
305+
\n2. Увайдзіце, калі неабходна
306306
\n3. Павінна пачацца загрузка (гэта будзе файл экспарту)</string>
307-
<string name="import_soundcloud_instructions">Імпарт падпісак з SoundCloud набраўшы альбо URL, альбо ваш ID:
308-
\n
309-
\n1. Уключыце \"рэжым працоўнага стала\" у браўзэры (сайт недаступны на тэлефоне)
310-
\n2. Перайдзіце на: %1$s
311-
\n3. Увайдзіце, калі неабходна
307+
<string name="import_soundcloud_instructions">Імпарт падпісак з SoundCloud набраўшы альбо URL, альбо ваш ID:
308+
\n
309+
\n1. Уключыце \"рэжым працоўнага стала\" у браўзэры (сайт недаступны на тэлефоне)
310+
\n2. Перайдзіце на: %1$s
311+
\n3. Увайдзіце, калі неабходна
312312
\n4. Скапіруйце адрас з адраснага радка.</string>
313313
<string name="import_soundcloud_instructions_hint">вашID, soundcloud.com/вашID</string>
314-
<string name="import_network_expensive_warning">Гэтае дзеянне можа выклікаць вялікі расход трафіку.
315-
\n
314+
<string name="import_network_expensive_warning">Гэтае дзеянне можа выклікаць вялікі расход трафіку.
315+
\n
316316
\nПрацягнуць?</string>
317317
<string name="playback_speed_control">Кіраванне хуткасцю прайгравання</string>
318318
<string name="playback_tempo">Тэмп</string>
@@ -321,7 +321,7 @@
321321
<string name="skip_silence_checkbox">Прапускаць цішыню</string>
322322
<string name="playback_step">Крок</string>
323323
<string name="playback_reset">Скід</string>
324-
<string name="start_accept_privacy_policy">У адпаведнасці з Агульным рэгламентам па абароне дадзеных ЕС (GDPR), звяртаем вашу ўвагу на палітыку прыватнасці NewPipe. Калі ласка, уважліва азнаёмцеся з ёй.
324+
<string name="start_accept_privacy_policy">У адпаведнасці з Агульным рэгламентам па абароне дадзеных ЕС (GDPR), звяртаем вашу ўвагу на палітыку прыватнасці NewPipe. Калі ласка, уважліва азнаёмцеся з ёй.
325325
\nВам неабходна прыняць яе ўмовы, каб адправіць нам справаздачу пра памылку.</string>
326326
<string name="accept">Прыняць</string>
327327
<string name="decline">Адмовіцца</string>
@@ -484,4 +484,4 @@
484484
<string name="notification_colorize_summary">Афарбоўваць апавяшчэнне асноўным колерам мініяцюры. Падтрымваецца не ўсімі прыладамі</string>
485485
<string name="notification_actions_at_most_three">У кампактным апавяшчэнні дасяжна не больш за тры дзеянні!</string>
486486
<string name="notification_actions_summary">Дзеянні можна змяніць, націснуўшы на іх. Адзначце не больш за трох для адлюстравання ў кампактным апавяшчэнні</string>
487-
</resources>
487+
</resources>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -553,4 +553,4 @@
553553
<string name="show_image_indicators_summary">Показвай цветни Picasso-панделки в горната част на изображенията като индикатор за техния произход (червен – от мрежата, син – от диска и червен – от паметта)</string>
554554
<string name="auto_device_theme_title">Автоматична (тази на устройството)</string>
555555
<string name="notification_scale_to_square_image_summary">Мащабиране на миниатюрата в известието от 16:9 към 1:1 формат (възможни са изкривявания)</string>
556-
</resources>
556+
</resources>

app/src/main/res/values-bn-rIN/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,4 +300,4 @@
300300
<string name="notification_action_0_title">প্রথম অ্যাকশান বোতাম</string>
301301
<string name="notification_action_1_title">দ্বিতীয় অ্যাকশান বোতাম</string>
302302
<string name="streams_notification_channel_name">নতুন স্ট্রিম</string>
303-
</resources>
303+
</resources>

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
<string name="recaptcha_request_toast">reCAPTCHA চ্যালেঞ্জ অনুরোধ করা হয়েছে</string>
8484
<string name="title_activity_recaptcha">reCAPTCHA চ্যালেঞ্জ</string>
8585
<string name="one_item_deleted">একটি আইটেম ডিলিট হয়েছে।</string>
86-
<string name="msg_popup_permission">এই অনুমতিটি
86+
<string name="msg_popup_permission">এই অনুমতিটি
8787
\nপপআপ মোডে খুলতে প্রয়োজন</string>
8888
<string name="no_available_dir">অনুগ্রহ করে একটি উপলব্ধ ডাউনলোড ডিরেক্টরি নির্বাচন করো</string>
8989
<string name="msg_copied">ক্লিপবোর্ডে অনুলিপি করা হয়েছে</string>
@@ -582,4 +582,4 @@
582582
<item quantity="other">%sটি ডাউনলোড সমাপ্ত</item>
583583
</plurals>
584584
<string name="mark_as_watched">দেখা হয়েছে চিহ্নিত করো</string>
585-
</resources>
585+
</resources>

0 commit comments

Comments
 (0)