Fixed bg task issue + notification icon

This commit is contained in:
Imran Remtulla
2022-08-25 11:17:47 -04:00
parent 1498bdda84
commit ffe212ebf2
2 changed files with 38 additions and 14 deletions

BIN
android/app/src/main/res/drawable/ic_notification.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -8,25 +8,49 @@ import 'package:provider/provider.dart';
import 'package:workmanager/workmanager.dart'; import 'package:workmanager/workmanager.dart';
import 'package:dynamic_color/dynamic_color.dart'; import 'package:dynamic_color/dynamic_color.dart';
@pragma('vm:entry-point')
void backgroundUpdateCheck() { void backgroundUpdateCheck() {
Workmanager().executeTask((task, inputData) async { Workmanager().executeTask((task, inputData) async {
var appsProvider = AppsProvider(bg: true); var appsProvider = AppsProvider(bg: true);
await appsProvider.loadApps(); await appsProvider.notify(
List<App> updates = await appsProvider.getUpdates(); 4,
if (updates.isNotEmpty) { 'Checking for Updates',
String message = updates.length == 1 '',
? '${updates[0].name} has an update.' 'BG_UPDATE_CHECK',
: '${(updates.length == 2 ? '${updates[0].name} and ${updates[1].name}' : '${updates[0].name} and ${updates.length - 1} more apps')} have updates.'; 'Checking for Updates',
await appsProvider.downloaderNotifications.cancel(2); 'Transient notification that appears when checking for updates',
important: false);
try {
await appsProvider.loadApps();
List<App> updates = await appsProvider.getUpdates();
if (updates.isNotEmpty) {
String message = updates.length == 1
? '${updates[0].name} has an update.'
: '${(updates.length == 2 ? '${updates[0].name} and ${updates[1].name}' : '${updates[0].name} and ${updates.length - 1} more apps')} have updates.';
await appsProvider.downloaderNotifications.cancel(2);
await appsProvider.notify(
2,
'Updates Available',
message,
'UPDATES_AVAILABLE',
'Updates Available',
'Notifies the user that updates are available for one or more Apps tracked by Obtainium');
}
return Future.value(true);
} catch (e) {
await appsProvider.downloaderNotifications.cancel(5);
await appsProvider.notify( await appsProvider.notify(
2, 5,
'Updates Available', 'Error Checking for Updates',
message, e.toString(),
'UPDATES_AVAILABLE', 'BG_UPDATE_CHECK_ERROR',
'Updates Available', 'Error Checking for Updates',
'Notifies the user that updates are available for one or more Apps tracked by Obtainium'); 'A notification that shows when background update checking fails',
important: false);
return Future.value(false);
} finally {
await appsProvider.downloaderNotifications.cancel(4);
} }
return Future.value(true);
}); });
} }