Cancel notification when no new chapters are found. Closes #121

This commit is contained in:
inorichi 2016-02-07 19:15:45 +01:00
parent 050b9c9fce
commit 945625d3ad

View File

@ -111,7 +111,7 @@ public class LibraryUpdateService extends Service {
.toList().toBlocking().single(); .toList().toBlocking().single();
return Observable.from(mangas) return Observable.from(mangas)
.doOnNext(manga -> showNotification( .doOnNext(manga -> showProgressNotification(
getString(R.string.notification_update_progress, getString(R.string.notification_update_progress,
count.incrementAndGet(), mangas.size()), manga.title)) count.incrementAndGet(), mangas.size()), manga.title))
.concatMap(manga -> updateManga(manga) .concatMap(manga -> updateManga(manga)
@ -123,8 +123,14 @@ public class LibraryUpdateService extends Service {
.filter(pair -> pair.first > 0) .filter(pair -> pair.first > 0)
.map(pair -> new MangaUpdate(manga, pair.first))) .map(pair -> new MangaUpdate(manga, pair.first)))
.doOnNext(updates::add) .doOnNext(updates::add)
.doOnCompleted(() -> showBigNotification(getString(R.string.notification_update_completed), .doOnCompleted(() -> {
getUpdatedMangas(updates, failedUpdates))); if (updates.isEmpty()) {
cancelNotification();
} else {
showResultNotification(getString(R.string.notification_update_completed),
getUpdatedMangasResult(updates, failedUpdates));
}
});
} }
private Observable<Pair<Integer, Integer>> updateManga(Manga manga) { private Observable<Pair<Integer, Integer>> updateManga(Manga manga) {
@ -133,7 +139,7 @@ public class LibraryUpdateService extends Service {
.flatMap(chapters -> db.insertOrRemoveChapters(manga, chapters)); .flatMap(chapters -> db.insertOrRemoveChapters(manga, chapters));
} }
private String getUpdatedMangas(List<MangaUpdate> updates, List<Manga> failedUpdates) { private String getUpdatedMangasResult(List<MangaUpdate> updates, List<Manga> failedUpdates) {
final StringBuilder result = new StringBuilder(); final StringBuilder result = new StringBuilder();
if (updates.isEmpty()) { if (updates.isEmpty()) {
result.append(getString(R.string.notification_no_new_chapters)).append("\n"); result.append(getString(R.string.notification_no_new_chapters)).append("\n");
@ -185,7 +191,20 @@ public class LibraryUpdateService extends Service {
notificationManager.notify(UPDATE_NOTIFICATION_ID, builder.build()); notificationManager.notify(UPDATE_NOTIFICATION_ID, builder.build());
} }
private void showBigNotification(String title, String body) { private void showProgressNotification(String title, String body) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_action_refresh)
.setContentTitle(title)
.setContentText(body)
.setOngoing(true);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(UPDATE_NOTIFICATION_ID, builder.build());
}
private void showResultNotification(String title, String body) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this) NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_action_refresh) .setSmallIcon(R.drawable.ic_action_refresh)
.setContentTitle(title) .setContentTitle(title)
@ -199,6 +218,13 @@ public class LibraryUpdateService extends Service {
notificationManager.notify(UPDATE_NOTIFICATION_ID, builder.build()); notificationManager.notify(UPDATE_NOTIFICATION_ID, builder.build());
} }
private void cancelNotification() {
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(UPDATE_NOTIFICATION_ID);
}
private PendingIntent getNotificationIntent() { private PendingIntent getNotificationIntent() {
Intent intent = new Intent(this, MainActivity.class); Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);