mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-27 11:43:47 +01:00 
			
		
		
		
	Enable experimental BG update support (not well tested) (#25)
This commit is contained in:
		| @@ -247,6 +247,9 @@ | |||||||
|    "sortByFileNamesNotLinks": "Sort by file names instead of full links", |    "sortByFileNamesNotLinks": "Sort by file names instead of full links", | ||||||
|    "filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression", |    "filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression", | ||||||
|    "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", |    "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", | ||||||
|  |    "appsPossiblyUpdated": "App Updates Attempted", | ||||||
|  |    "appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background", | ||||||
|  |    "xWasPossiblyUpdatedToY": "An attempt was made to update {} to {}.", | ||||||
|    "removeAppQuestion": { |    "removeAppQuestion": { | ||||||
|       "one": "Želite li ukloniti aplikaciju?", |       "one": "Želite li ukloniti aplikaciju?", | ||||||
|       "other": "Želite li ukloniti aplikacije?" |       "other": "Želite li ukloniti aplikacije?" | ||||||
| @@ -294,5 +297,9 @@ | |||||||
|    "xAndNMoreUpdatesInstalled": { |    "xAndNMoreUpdatesInstalled": { | ||||||
|       "one": "{} i još 1 aplikacija je ažurirana.", |       "one": "{} i još 1 aplikacija je ažurirana.", | ||||||
|       "other": "{} i još {} aplikacija je ažurirano." |       "other": "{} i još {} aplikacija je ažurirano." | ||||||
|  |    }, | ||||||
|  |    "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|  |        "one": "Attempts were made to update {} and 1 more app.", | ||||||
|  |        "other": "Attempts were made to update {} and {} more apps." | ||||||
|    } |    } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -247,6 +247,9 @@ | |||||||
|     "sortByFileNamesNotLinks": "Sortiere nach Dateinamen, anstelle von ganzen Links", |     "sortByFileNamesNotLinks": "Sortiere nach Dateinamen, anstelle von ganzen Links", | ||||||
|     "filterReleaseNotesByRegEx": "Versionshinweise nach regulärem Ausdruck filtern", |     "filterReleaseNotesByRegEx": "Versionshinweise nach regulärem Ausdruck filtern", | ||||||
|     "customLinkFilterRegex": "Benutzerdefinierter Link Filter nach Regulärem Ausdruck (Standard '.apk$')", |     "customLinkFilterRegex": "Benutzerdefinierter Link Filter nach Regulärem Ausdruck (Standard '.apk$')", | ||||||
|  |     "appsPossiblyUpdated": "App Updates Attempted", | ||||||
|  |     "appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background", | ||||||
|  |     "xWasPossiblyUpdatedToY": "An attempt was made to update {} to {}.", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "App entfernen?", |         "one": "App entfernen?", | ||||||
|         "other": "Apps entfernen?" |         "other": "Apps entfernen?" | ||||||
| @@ -294,5 +297,9 @@ | |||||||
|     "xAndNMoreUpdatesInstalled": { |     "xAndNMoreUpdatesInstalled": { | ||||||
|         "one": "{} und 1 weitere Anwendung wurden aktualisiert.", |         "one": "{} und 1 weitere Anwendung wurden aktualisiert.", | ||||||
|         "other": "{} und {} weitere Anwendungen wurden aktualisiert." |         "other": "{} und {} weitere Anwendungen wurden aktualisiert." | ||||||
|  |     }, | ||||||
|  |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|  |         "one": "Attempts were made to update {} and 1 more app.", | ||||||
|  |         "other": "Attempts were made to update {} and {} more apps." | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -247,6 +247,9 @@ | |||||||
|     "sortByFileNamesNotLinks": "Sort by file names instead of full links", |     "sortByFileNamesNotLinks": "Sort by file names instead of full links", | ||||||
|     "filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression", |     "filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression", | ||||||
|     "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", |     "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", | ||||||
|  |     "appsPossiblyUpdated": "App Updates Attempted", | ||||||
|  |     "appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background", | ||||||
|  |     "xWasPossiblyUpdatedToY": "An attempt was made to update {} to {}.", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Remove App?", |         "one": "Remove App?", | ||||||
|         "other": "Remove Apps?" |         "other": "Remove Apps?" | ||||||
| @@ -294,5 +297,9 @@ | |||||||
|     "xAndNMoreUpdatesInstalled": { |     "xAndNMoreUpdatesInstalled": { | ||||||
|         "one": "{} and 1 more app were updated.", |         "one": "{} and 1 more app were updated.", | ||||||
|         "other": "{} and {} more apps were updated." |         "other": "{} and {} more apps were updated." | ||||||
|  |     }, | ||||||
|  |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|  |         "one": "Attempts were made to update {} and 1 more app.", | ||||||
|  |         "other": "Attempts were made to update {} and {} more apps." | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -247,6 +247,9 @@ | |||||||
|     "sortByFileNamesNotLinks": "Sort by file names instead of full links", |     "sortByFileNamesNotLinks": "Sort by file names instead of full links", | ||||||
|     "filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression", |     "filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression", | ||||||
|     "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", |     "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", | ||||||
|  |     "appsPossiblyUpdated": "App Updates Attempted", | ||||||
|  |     "appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background", | ||||||
|  |     "xWasPossiblyUpdatedToY": "An attempt was made to update {} to {}.", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "¿Eliminar Aplicación?", |         "one": "¿Eliminar Aplicación?", | ||||||
|         "other": "¿Eliminar Aplicaciones?" |         "other": "¿Eliminar Aplicaciones?" | ||||||
| @@ -294,5 +297,9 @@ | |||||||
|     "xAndNMoreUpdatesInstalled": { |     "xAndNMoreUpdatesInstalled": { | ||||||
|         "one": "{} y 1 aplicación más han sido actualizadas.", |         "one": "{} y 1 aplicación más han sido actualizadas.", | ||||||
|         "other": "{} y {} aplicaciones más han sido actualizadas." |         "other": "{} y {} aplicaciones más han sido actualizadas." | ||||||
|  |     }, | ||||||
|  |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|  |         "one": "Attempts were made to update {} and 1 more app.", | ||||||
|  |         "other": "Attempts were made to update {} and {} more apps." | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -247,6 +247,9 @@ | |||||||
|     "sortByFileNamesNotLinks": "مرتب سازی بر اساس نام فایل به جای پیوندهای کامل", |     "sortByFileNamesNotLinks": "مرتب سازی بر اساس نام فایل به جای پیوندهای کامل", | ||||||
|     "filterReleaseNotesByRegEx": "یادداشت های انتشار را با بیان منظم فیلتر کنید", |     "filterReleaseNotesByRegEx": "یادداشت های انتشار را با بیان منظم فیلتر کنید", | ||||||
|     "customLinkFilterRegex": "فیلتر پیوند سفارشی بر اساس عبارت منظم (پیشفرض '.apk$')", |     "customLinkFilterRegex": "فیلتر پیوند سفارشی بر اساس عبارت منظم (پیشفرض '.apk$')", | ||||||
|  |     "appsPossiblyUpdated": "App Updates Attempted", | ||||||
|  |     "appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background", | ||||||
|  |     "xWasPossiblyUpdatedToY": "An attempt was made to update {} to {}.", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "برنامه حذف شود؟", |         "one": "برنامه حذف شود؟", | ||||||
|         "other": "برنامه ها حذف شوند؟" |         "other": "برنامه ها حذف شوند؟" | ||||||
| @@ -294,5 +297,9 @@ | |||||||
|     "xAndNMoreUpdatesInstalled": { |     "xAndNMoreUpdatesInstalled": { | ||||||
|         "one": "{} و 1 برنامه دیگر به روز شدند.", |         "one": "{} و 1 برنامه دیگر به روز شدند.", | ||||||
|         "other": "{} و {} برنامه دیگر به روز شدند." |         "other": "{} و {} برنامه دیگر به روز شدند." | ||||||
|  |     }, | ||||||
|  |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|  |         "one": "Attempts were made to update {} and 1 more app.", | ||||||
|  |         "other": "Attempts were made to update {} and {} more apps." | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -247,6 +247,9 @@ | |||||||
|     "sortByFileNamesNotLinks": "Sort by file names instead of full links", |     "sortByFileNamesNotLinks": "Sort by file names instead of full links", | ||||||
|     "filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression", |     "filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression", | ||||||
|     "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", |     "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", | ||||||
|  |     "appsPossiblyUpdated": "App Updates Attempted", | ||||||
|  |     "appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background", | ||||||
|  |     "xWasPossiblyUpdatedToY": "An attempt was made to update {} to {}.", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Supprimer l'application ?", |         "one": "Supprimer l'application ?", | ||||||
|         "other": "Supprimer les applications ?" |         "other": "Supprimer les applications ?" | ||||||
| @@ -294,5 +297,9 @@ | |||||||
|     "xAndNMoreUpdatesInstalled": { |     "xAndNMoreUpdatesInstalled": { | ||||||
|         "one": "{} et 1 autre application ont été mises à jour.", |         "one": "{} et 1 autre application ont été mises à jour.", | ||||||
|         "other": "{} et {} autres applications ont été mises à jour." |         "other": "{} et {} autres applications ont été mises à jour." | ||||||
|  |     }, | ||||||
|  |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|  |         "one": "Attempts were made to update {} and 1 more app.", | ||||||
|  |         "other": "Attempts were made to update {} and {} more apps." | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -246,6 +246,9 @@ | |||||||
|     "sortByFileNamesNotLinks": "Fájlnevek szerinti elrendezés teljes linkek helyett", |     "sortByFileNamesNotLinks": "Fájlnevek szerinti elrendezés teljes linkek helyett", | ||||||
|     "filterReleaseNotesByRegEx": "Kiadási megjegyzések szűrése reguláris kifejezéssel", |     "filterReleaseNotesByRegEx": "Kiadási megjegyzések szűrése reguláris kifejezéssel", | ||||||
|     "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", |     "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", | ||||||
|  |     "appsPossiblyUpdated": "App Updates Attempted", | ||||||
|  |     "appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background", | ||||||
|  |     "xWasPossiblyUpdatedToY": "An attempt was made to update {} to {}.", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Eltávolítja az alkalmazást?", |         "one": "Eltávolítja az alkalmazást?", | ||||||
|         "other": "Eltávolítja az alkalmazást?" |         "other": "Eltávolítja az alkalmazást?" | ||||||
| @@ -293,5 +296,9 @@ | |||||||
|     "xAndNMoreUpdatesInstalled": { |     "xAndNMoreUpdatesInstalled": { | ||||||
|         "one": "A(z) {} és 1 további alkalmazás frissítve.", |         "one": "A(z) {} és 1 további alkalmazás frissítve.", | ||||||
|         "other": "{} és {} további alkalmazás frissítve." |         "other": "{} és {} további alkalmazás frissítve." | ||||||
|  |     }, | ||||||
|  |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|  |         "one": "Attempts were made to update {} and 1 more app.", | ||||||
|  |         "other": "Attempts were made to update {} and {} more apps." | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -247,6 +247,9 @@ | |||||||
|     "sortByFileNamesNotLinks": "Sort by file names instead of full links", |     "sortByFileNamesNotLinks": "Sort by file names instead of full links", | ||||||
|     "filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression", |     "filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression", | ||||||
|     "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", |     "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", | ||||||
|  |     "appsPossiblyUpdated": "App Updates Attempted", | ||||||
|  |     "appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background", | ||||||
|  |     "xWasPossiblyUpdatedToY": "An attempt was made to update {} to {}.", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Rimuovere l'app?", |         "one": "Rimuovere l'app?", | ||||||
|         "other": "Rimuovere le app?" |         "other": "Rimuovere le app?" | ||||||
| @@ -294,5 +297,9 @@ | |||||||
|     "xAndNMoreUpdatesInstalled": { |     "xAndNMoreUpdatesInstalled": { | ||||||
|         "one": "{} e un'altra app sono state aggiornate.", |         "one": "{} e un'altra app sono state aggiornate.", | ||||||
|         "other": "{} e altre {} app sono state aggiornate." |         "other": "{} e altre {} app sono state aggiornate." | ||||||
|  |     }, | ||||||
|  |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|  |         "one": "Attempts were made to update {} and 1 more app.", | ||||||
|  |         "other": "Attempts were made to update {} and {} more apps." | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -247,6 +247,9 @@ | |||||||
|     "sortByFileNamesNotLinks": "フルのリンクではなくファイル名でソートする", |     "sortByFileNamesNotLinks": "フルのリンクではなくファイル名でソートする", | ||||||
|     "filterReleaseNotesByRegEx": "正規表現でリリースノートをフィルタリングする", |     "filterReleaseNotesByRegEx": "正規表現でリリースノートをフィルタリングする", | ||||||
|     "customLinkFilterRegex": "正規表現によるカスタムリンクフィルター (デフォルト '.apk$')", |     "customLinkFilterRegex": "正規表現によるカスタムリンクフィルター (デフォルト '.apk$')", | ||||||
|  |     "appsPossiblyUpdated": "App Updates Attempted", | ||||||
|  |     "appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background", | ||||||
|  |     "xWasPossiblyUpdatedToY": "An attempt was made to update {} to {}.", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "アプリを削除しますか?", |         "one": "アプリを削除しますか?", | ||||||
|         "other": "アプリを削除しますか?" |         "other": "アプリを削除しますか?" | ||||||
| @@ -294,5 +297,9 @@ | |||||||
|     "xAndNMoreUpdatesInstalled": { |     "xAndNMoreUpdatesInstalled": { | ||||||
|         "one": "{} とさらに {} 個のアプリがアップデートされました", |         "one": "{} とさらに {} 個のアプリがアップデートされました", | ||||||
|         "other": "{} とさらに {} 個のアプリがアップデートされました" |         "other": "{} とさらに {} 個のアプリがアップデートされました" | ||||||
|  |     }, | ||||||
|  |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|  |         "one": "Attempts were made to update {} and 1 more app.", | ||||||
|  |         "other": "Attempts were made to update {} and {} more apps." | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -251,6 +251,9 @@ | |||||||
|     "sortByFileNamesNotLinks": "Sortuj wg nazw plików zamiast pełnych linków", |     "sortByFileNamesNotLinks": "Sortuj wg nazw plików zamiast pełnych linków", | ||||||
|     "filterReleaseNotesByRegEx": "Filtruj informacje o wersji według wyrażenia regularnego", |     "filterReleaseNotesByRegEx": "Filtruj informacje o wersji według wyrażenia regularnego", | ||||||
|     "customLinkFilterRegex": "Niestandardowy filtr linków wg. wyrażenia regularnego (domyślnie \".apk$\")", |     "customLinkFilterRegex": "Niestandardowy filtr linków wg. wyrażenia regularnego (domyślnie \".apk$\")", | ||||||
|  |     "appsPossiblyUpdated": "App Updates Attempted", | ||||||
|  |     "appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background", | ||||||
|  |     "xWasPossiblyUpdatedToY": "An attempt was made to update {} to {}.", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Usunąć aplikację?", |         "one": "Usunąć aplikację?", | ||||||
|         "other": "Usunąć aplikacje?" |         "other": "Usunąć aplikacje?" | ||||||
| @@ -294,5 +297,9 @@ | |||||||
|     "xAndNMoreUpdatesInstalled": { |     "xAndNMoreUpdatesInstalled": { | ||||||
|         "one": "Zaktualizowano {} i jeszcze 1 aplikację.", |         "one": "Zaktualizowano {} i jeszcze 1 aplikację.", | ||||||
|         "other": "Zaktualizowano {} i {} aplik." |         "other": "Zaktualizowano {} i {} aplik." | ||||||
|  |     }, | ||||||
|  |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|  |         "one": "Attempts were made to update {} and 1 more app.", | ||||||
|  |         "other": "Attempts were made to update {} and {} more apps." | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -247,6 +247,9 @@ | |||||||
|     "sortByFileNamesNotLinks": "Sort by file names instead of full links", |     "sortByFileNamesNotLinks": "Sort by file names instead of full links", | ||||||
|     "filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression", |     "filterReleaseNotesByRegEx": "Filter Release Notes by Regular Expression", | ||||||
|     "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", |     "customLinkFilterRegex": "Custom Link Filter by Regular Expression (Default '.apk$')", | ||||||
|  |     "appsPossiblyUpdated": "App Updates Attempted", | ||||||
|  |     "appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background", | ||||||
|  |     "xWasPossiblyUpdatedToY": "An attempt was made to update {} to {}.", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "Удалить приложение?", |         "one": "Удалить приложение?", | ||||||
|         "other": "Удалить приложения?" |         "other": "Удалить приложения?" | ||||||
| @@ -294,5 +297,9 @@ | |||||||
|     "xAndNMoreUpdatesInstalled": { |     "xAndNMoreUpdatesInstalled": { | ||||||
|         "one": "{} и еще 1 приложение были обновлены.", |         "one": "{} и еще 1 приложение были обновлены.", | ||||||
|         "other": "{} и еще {} приложений были обновлены." |         "other": "{} и еще {} приложений были обновлены." | ||||||
|  |     }, | ||||||
|  |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|  |         "one": "Attempts were made to update {} and 1 more app.", | ||||||
|  |         "other": "Attempts were made to update {} and {} more apps." | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -247,6 +247,9 @@ | |||||||
|     "sortByFileNamesNotLinks": "根据文件名而不是完整链接来排序", |     "sortByFileNamesNotLinks": "根据文件名而不是完整链接来排序", | ||||||
|     "filterReleaseNotesByRegEx": "用正则表达式筛选发布说明", |     "filterReleaseNotesByRegEx": "用正则表达式筛选发布说明", | ||||||
|     "customLinkFilterRegex": "用正则表达式自定义链接筛选(默认 '.apk$')", |     "customLinkFilterRegex": "用正则表达式自定义链接筛选(默认 '.apk$')", | ||||||
|  |     "appsPossiblyUpdated": "App Updates Attempted", | ||||||
|  |     "appsPossiblyUpdatedNotifDescription": "Notifies the user that updates to one or more Apps were potentially applied in the background", | ||||||
|  |     "xWasPossiblyUpdatedToY": "An attempt was made to update {} to {}.", | ||||||
|     "removeAppQuestion": { |     "removeAppQuestion": { | ||||||
|         "one": "是否删除应用?", |         "one": "是否删除应用?", | ||||||
|         "other": "是否删除应用?" |         "other": "是否删除应用?" | ||||||
| @@ -294,5 +297,9 @@ | |||||||
|     "xAndNMoreUpdatesInstalled": { |     "xAndNMoreUpdatesInstalled": { | ||||||
|         "one": "{} 和另外 1 个应用已更新。", |         "one": "{} 和另外 1 个应用已更新。", | ||||||
|         "other": "{} 和另外 {} 个应用已更新。" |         "other": "{} 和另外 {} 个应用已更新。" | ||||||
|  |     }, | ||||||
|  |     "xAndNMoreUpdatesPossiblyInstalled": { | ||||||
|  |         "one": "Attempts were made to update {} and 1 more app.", | ||||||
|  |         "other": "Attempts were made to update {} and {} more apps." | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -88,10 +88,8 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async { | |||||||
|       : null; |       : null; | ||||||
|   logs.add(tr('bgUpdateIgnoreAfterIs', args: [ignoreAfter.toString()])); |   logs.add(tr('bgUpdateIgnoreAfterIs', args: [ignoreAfter.toString()])); | ||||||
|   var notificationsProvider = NotificationsProvider(); |   var notificationsProvider = NotificationsProvider(); | ||||||
|   await notificationsProvider.notify(checkingUpdatesNotification); |  | ||||||
|   try { |   try { | ||||||
|     var appsProvider = AppsProvider(); |     var appsProvider = AppsProvider(); | ||||||
|     await notificationsProvider.cancel(ErrorCheckingUpdatesNotification('').id); |  | ||||||
|     await appsProvider.loadApps(); |     await appsProvider.loadApps(); | ||||||
|     List<String> existingUpdateIds = |     List<String> existingUpdateIds = | ||||||
|         appsProvider.findExistingUpdates(installedOnly: true); |         appsProvider.findExistingUpdates(installedOnly: true); | ||||||
| @@ -100,7 +98,9 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async { | |||||||
|     try { |     try { | ||||||
|       logs.add(tr('startedActualBGUpdateCheck')); |       logs.add(tr('startedActualBGUpdateCheck')); | ||||||
|       await appsProvider.checkUpdates( |       await appsProvider.checkUpdates( | ||||||
|           ignoreAppsCheckedAfter: ignoreAfter, throwErrorsForRetry: true); |           ignoreAppsCheckedAfter: ignoreAfter, | ||||||
|  |           throwErrorsForRetry: true, | ||||||
|  |           notificationsProvider: notificationsProvider); | ||||||
|     } catch (e) { |     } catch (e) { | ||||||
|       if (e is RateLimitError || e is ClientException) { |       if (e is RateLimitError || e is ClientException) { | ||||||
|         var remainingMinutes = e is RateLimitError ? e.remainingMinutes : 15; |         var remainingMinutes = e is RateLimitError ? e.remainingMinutes : 15; | ||||||
| @@ -124,34 +124,29 @@ Future<void> bgUpdateCheck(int taskId, Map<String, dynamic>? params) async { | |||||||
|         .where((id) => !existingUpdateIds.contains(id)) |         .where((id) => !existingUpdateIds.contains(id)) | ||||||
|         .map((e) => appsProvider.apps[e]!.app) |         .map((e) => appsProvider.apps[e]!.app) | ||||||
|         .toList(); |         .toList(); | ||||||
|  |     List<App> nonSilentUpdates = []; | ||||||
|     // TODO: This silent update code doesn't work yet |     List<App> silentUpdates = []; | ||||||
|     // List<String> silentlyUpdated = await appsProvider |     for (var a in newUpdates) { | ||||||
|     //     .downloadAndInstallLatestApp( |       if (await appsProvider.canInstallSilently(a)) { | ||||||
|     //         [...newUpdates.map((e) => e.id), ...existingUpdateIds], null); |         silentUpdates.add(a); | ||||||
|     // if (silentlyUpdated.isNotEmpty) { |       } else { | ||||||
|     //   newUpdates = newUpdates |         nonSilentUpdates.add(a); | ||||||
|     //       .where((element) => !silentlyUpdated.contains(element.id)) |  | ||||||
|     //       .toList(); |  | ||||||
|     //   notificationsProvider.notify( |  | ||||||
|     //       SilentUpdateNotification( |  | ||||||
|     //           silentlyUpdated.map((e) => appsProvider.apps[e]!.app).toList()), |  | ||||||
|     //       cancelExisting: true); |  | ||||||
|     // } |  | ||||||
|     logs.add( |  | ||||||
|         plural('bgCheckFoundUpdatesWillNotifyIfNeeded', newUpdates.length)); |  | ||||||
|     if (newUpdates.isNotEmpty) { |  | ||||||
|       notificationsProvider.notify(UpdateNotification(newUpdates)); |  | ||||||
|       } |       } | ||||||
|  |     } | ||||||
|  |     if (silentUpdates.isNotEmpty) { | ||||||
|  |       await appsProvider.downloadAndInstallLatestApps( | ||||||
|  |           silentUpdates.map((e) => e.id).toList(), null, | ||||||
|  |           notificationsProvider: notificationsProvider); | ||||||
|  |     } | ||||||
|  |     logs.add(plural( | ||||||
|  |         'bgCheckFoundUpdatesWillNotifyIfNeeded', nonSilentUpdates.length)); | ||||||
|     if (err != null) { |     if (err != null) { | ||||||
|       throw err; |       throw err; | ||||||
|     } |     } | ||||||
|   } catch (e) { |   } catch (e) { | ||||||
|     notificationsProvider |     logs.add('${tr('errorCheckingUpdates')}: ${e.toString()}'); | ||||||
|         .notify(ErrorCheckingUpdatesNotification(e.toString())); |  | ||||||
|   } finally { |   } finally { | ||||||
|     logs.add(tr('bgUpdateTaskFinished')); |     logs.add(tr('bgUpdateTaskFinished')); | ||||||
|     await notificationsProvider.cancel(checkingUpdatesNotification.id); |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -239,9 +239,8 @@ class AppsProvider with ChangeNotifier { | |||||||
|     return downloadedFile; |     return downloadedFile; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   Future<Object> downloadApp(App app, BuildContext? context) async { |   Future<Object> downloadApp(App app, BuildContext? context, | ||||||
|     NotificationsProvider? notificationsProvider = |       {NotificationsProvider? notificationsProvider}) async { | ||||||
|         context?.read<NotificationsProvider>(); |  | ||||||
|     var notifId = DownloadNotification(app.finalName, 0).id; |     var notifId = DownloadNotification(app.finalName, 0).id; | ||||||
|     if (apps[app.id] != null) { |     if (apps[app.id] != null) { | ||||||
|       apps[app.id]!.downloadProgress = 0; |       apps[app.id]!.downloadProgress = 0; | ||||||
| @@ -507,7 +506,10 @@ class AppsProvider with ChangeNotifier { | |||||||
|   // Returns an array of Ids for Apps that were successfully downloaded, regardless of installation result |   // Returns an array of Ids for Apps that were successfully downloaded, regardless of installation result | ||||||
|   Future<List<String>> downloadAndInstallLatestApps( |   Future<List<String>> downloadAndInstallLatestApps( | ||||||
|       List<String> appIds, BuildContext? context, |       List<String> appIds, BuildContext? context, | ||||||
|       {SettingsProvider? settingsProvider}) async { |       {SettingsProvider? settingsProvider, | ||||||
|  |       NotificationsProvider? notificationsProvider}) async { | ||||||
|  |     notificationsProvider = | ||||||
|  |         notificationsProvider ?? context?.read<NotificationsProvider>(); | ||||||
|     List<String> appsToInstall = []; |     List<String> appsToInstall = []; | ||||||
|     List<String> trackOnlyAppsToUpdate = []; |     List<String> trackOnlyAppsToUpdate = []; | ||||||
|     // For all specified Apps, filter out those for which: |     // For all specified Apps, filter out those for which: | ||||||
| @@ -567,8 +569,10 @@ class AppsProvider with ChangeNotifier { | |||||||
|  |  | ||||||
|     for (var id in appsToInstall) { |     for (var id in appsToInstall) { | ||||||
|       try { |       try { | ||||||
|  |         var downloadedArtifact = | ||||||
|             // ignore: use_build_context_synchronously |             // ignore: use_build_context_synchronously | ||||||
|         var downloadedArtifact = await downloadApp(apps[id]!.app, context); |             await downloadApp(apps[id]!.app, context, | ||||||
|  |                 notificationsProvider: notificationsProvider); | ||||||
|         DownloadedApk? downloadedFile; |         DownloadedApk? downloadedFile; | ||||||
|         DownloadedXApkDir? downloadedDir; |         DownloadedXApkDir? downloadedDir; | ||||||
|         if (downloadedArtifact is DownloadedApk) { |         if (downloadedArtifact is DownloadedApk) { | ||||||
| @@ -576,8 +580,8 @@ class AppsProvider with ChangeNotifier { | |||||||
|         } else { |         } else { | ||||||
|           downloadedDir = downloadedArtifact as DownloadedXApkDir; |           downloadedDir = downloadedArtifact as DownloadedXApkDir; | ||||||
|         } |         } | ||||||
|         bool willBeSilent = await canInstallSilently( |         var appId = downloadedFile?.appId ?? downloadedDir!.appId; | ||||||
|             apps[downloadedFile?.appId ?? downloadedDir!.appId]!.app); |         bool willBeSilent = await canInstallSilently(apps[appId]!.app); | ||||||
|         if (!(await settingsProvider?.getInstallPermission(enforce: false) ?? |         if (!(await settingsProvider?.getInstallPermission(enforce: false) ?? | ||||||
|             true)) { |             true)) { | ||||||
|           throw ObtainiumError(tr('cancelled')); |           throw ObtainiumError(tr('cancelled')); | ||||||
| @@ -590,10 +594,25 @@ class AppsProvider with ChangeNotifier { | |||||||
|         notifyListeners(); |         notifyListeners(); | ||||||
|         try { |         try { | ||||||
|           if (downloadedFile != null) { |           if (downloadedFile != null) { | ||||||
|  |             if (willBeSilent) { | ||||||
|  |               // Would await forever - workaround - TODO | ||||||
|  |               installApk(downloadedFile); | ||||||
|  |             } else { | ||||||
|               await installApk(downloadedFile); |               await installApk(downloadedFile); | ||||||
|  |             } | ||||||
|  |           } else { | ||||||
|  |             if (willBeSilent) { | ||||||
|  |               // Would await forever - workaround - TODO | ||||||
|  |               installXApkDir(downloadedDir!); | ||||||
|             } else { |             } else { | ||||||
|               await installXApkDir(downloadedDir!); |               await installXApkDir(downloadedDir!); | ||||||
|             } |             } | ||||||
|  |           } | ||||||
|  |           if (willBeSilent) { | ||||||
|  |             notificationsProvider?.notify(SilentUpdateAttemptNotification( | ||||||
|  |                 [apps[appId]!.app], | ||||||
|  |                 id: appId.hashCode)); | ||||||
|  |           } | ||||||
|         } finally { |         } finally { | ||||||
|           apps[id]?.downloadProgress = null; |           apps[id]?.downloadProgress = null; | ||||||
|           notifyListeners(); |           notifyListeners(); | ||||||
| @@ -608,8 +627,6 @@ class AppsProvider with ChangeNotifier { | |||||||
|       throw errors; |       throw errors; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     NotificationsProvider().cancel(UpdateNotification([]).id); |  | ||||||
|  |  | ||||||
|     return installedIds; |     return installedIds; | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -971,7 +988,8 @@ class AppsProvider with ChangeNotifier { | |||||||
|  |  | ||||||
|   Future<List<App>> checkUpdates( |   Future<List<App>> checkUpdates( | ||||||
|       {DateTime? ignoreAppsCheckedAfter, |       {DateTime? ignoreAppsCheckedAfter, | ||||||
|       bool throwErrorsForRetry = false}) async { |       bool throwErrorsForRetry = false, | ||||||
|  |       NotificationsProvider? notificationsProvider}) async { | ||||||
|     List<App> updates = []; |     List<App> updates = []; | ||||||
|     MultiAppMultiError errors = MultiAppMultiError(); |     MultiAppMultiError errors = MultiAppMultiError(); | ||||||
|     if (!gettingUpdates) { |     if (!gettingUpdates) { | ||||||
| @@ -998,9 +1016,14 @@ class AppsProvider with ChangeNotifier { | |||||||
|               rethrow; |               rethrow; | ||||||
|             } |             } | ||||||
|             errors.add(appIds[i], e.toString()); |             errors.add(appIds[i], e.toString()); | ||||||
|  |             notificationsProvider?.notify(ErrorCheckingUpdatesNotification( | ||||||
|  |                 '${appIds[i]}: ${e.toString()}', | ||||||
|  |                 id: appIds[i].hashCode)); | ||||||
|           } |           } | ||||||
|           if (newApp != null) { |           if (newApp != null) { | ||||||
|             updates.add(newApp); |             updates.add(newApp); | ||||||
|  |             notificationsProvider | ||||||
|  |                 ?.notify(UpdateNotification([newApp], id: newApp.id.hashCode)); | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|       } finally { |       } finally { | ||||||
|   | |||||||
| @@ -22,9 +22,9 @@ class ObtainiumNotification { | |||||||
| } | } | ||||||
|  |  | ||||||
| class UpdateNotification extends ObtainiumNotification { | class UpdateNotification extends ObtainiumNotification { | ||||||
|   UpdateNotification(List<App> updates) |   UpdateNotification(List<App> updates, {int? id}) | ||||||
|       : super( |       : super( | ||||||
|             2, |             id ?? 2, | ||||||
|             tr('updatesAvailable'), |             tr('updatesAvailable'), | ||||||
|             '', |             '', | ||||||
|             'UPDATES_AVAILABLE', |             'UPDATES_AVAILABLE', | ||||||
| @@ -41,8 +41,8 @@ class UpdateNotification extends ObtainiumNotification { | |||||||
| } | } | ||||||
|  |  | ||||||
| class SilentUpdateNotification extends ObtainiumNotification { | class SilentUpdateNotification extends ObtainiumNotification { | ||||||
|   SilentUpdateNotification(List<App> updates) |   SilentUpdateNotification(List<App> updates, {int? id}) | ||||||
|       : super(3, tr('appsUpdated'), '', 'APPS_UPDATED', tr('appsUpdated'), |       : super(id ?? 3, tr('appsUpdated'), '', 'APPS_UPDATED', tr('appsUpdated'), | ||||||
|             tr('appsUpdatedNotifDescription'), Importance.defaultImportance) { |             tr('appsUpdatedNotifDescription'), Importance.defaultImportance) { | ||||||
|     message = updates.length == 1 |     message = updates.length == 1 | ||||||
|         ? tr('xWasUpdatedToY', |         ? tr('xWasUpdatedToY', | ||||||
| @@ -52,10 +52,28 @@ class SilentUpdateNotification extends ObtainiumNotification { | |||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| class ErrorCheckingUpdatesNotification extends ObtainiumNotification { | class SilentUpdateAttemptNotification extends ObtainiumNotification { | ||||||
|   ErrorCheckingUpdatesNotification(String error) |   SilentUpdateAttemptNotification(List<App> updates, {int? id}) | ||||||
|       : super( |       : super( | ||||||
|             5, |             id ?? 3, | ||||||
|  |             tr('appsPossiblyUpdated'), | ||||||
|  |             '', | ||||||
|  |             'APPS_POSSIBLY_UPDATED', | ||||||
|  |             tr('appsPossiblyUpdated'), | ||||||
|  |             tr('appsPossiblyUpdatedNotifDescription'), | ||||||
|  |             Importance.defaultImportance) { | ||||||
|  |     message = updates.length == 1 | ||||||
|  |         ? tr('xWasPossiblyUpdatedToY', | ||||||
|  |             args: [updates[0].finalName, updates[0].latestVersion]) | ||||||
|  |         : plural('xAndNMoreUpdatesPossiblyInstalled', updates.length - 1, | ||||||
|  |             args: [updates[0].finalName, (updates.length - 1).toString()]); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | class ErrorCheckingUpdatesNotification extends ObtainiumNotification { | ||||||
|  |   ErrorCheckingUpdatesNotification(String error, {int? id}) | ||||||
|  |       : super( | ||||||
|  |             id ?? 5, | ||||||
|             tr('errorCheckingUpdates'), |             tr('errorCheckingUpdates'), | ||||||
|             error, |             error, | ||||||
|             'BG_UPDATE_CHECK_ERROR', |             'BG_UPDATE_CHECK_ERROR', | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user