From 3da1a3e2702a8cbd4952f23395f31e1525b462c9 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 31 Aug 2018 12:00:46 -0700 Subject: [PATCH] Restore notification channels after backup. --- .../securesms/backup/FullBackupImporter.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/org/thoughtcrime/securesms/backup/FullBackupImporter.java b/src/org/thoughtcrime/securesms/backup/FullBackupImporter.java index 76daab62b6..f7f4c9ccb8 100644 --- a/src/org/thoughtcrime/securesms/backup/FullBackupImporter.java +++ b/src/org/thoughtcrime/securesms/backup/FullBackupImporter.java @@ -7,6 +7,8 @@ import android.content.Context; import android.content.SharedPreferences; import android.database.Cursor; import android.support.annotation.NonNull; + +import org.thoughtcrime.securesms.database.RecipientDatabase; import org.thoughtcrime.securesms.logging.Log; import android.util.Pair; @@ -28,7 +30,9 @@ import org.thoughtcrime.securesms.database.GroupReceiptDatabase; import org.thoughtcrime.securesms.database.MmsDatabase; import org.thoughtcrime.securesms.database.SearchDatabase; import org.thoughtcrime.securesms.database.ThreadDatabase; +import org.thoughtcrime.securesms.notifications.NotificationChannels; import org.thoughtcrime.securesms.profiles.AvatarHelper; +import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.Conversions; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.libsignal.kdf.HKDFv3; @@ -85,6 +89,7 @@ public class FullBackupImporter extends FullBackupBase { } trimEntriesForExpiredMessages(context, db); + restoreNotificationChannels(context); db.setTransactionSuccessful(); } finally { @@ -185,6 +190,21 @@ public class FullBackupImporter extends FullBackupBase { } } + private static void restoreNotificationChannels(@NonNull Context context) { + if (!NotificationChannels.supported()) { + return; + } + + RecipientDatabase db = DatabaseFactory.getRecipientDatabase(context); + + try (RecipientDatabase.RecipientReader reader = db.getRecipientsWithNotificationChannels()) { + Recipient recipient; + while ((recipient = reader.getNext()) != null) { + NotificationChannels.createChannelFor(context, recipient); + } + } + } + private static class BackupRecordInputStream extends BackupStream { private final InputStream in;