diff --git a/app/src/main/java/eu/faircode/email/ActivitySetup.java b/app/src/main/java/eu/faircode/email/ActivitySetup.java index fe97cd9dae..338aa67907 100644 --- a/app/src/main/java/eu/faircode/email/ActivitySetup.java +++ b/app/src/main/java/eu/faircode/email/ActivitySetup.java @@ -844,11 +844,12 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On account.deleteNotificationChannel(context); if (account.notify) if (jaccount.has("channel")) { - NotificationChannelGroup group = new NotificationChannelGroup(account.name, account.name); + NotificationChannelGroup group = new NotificationChannelGroup("group." + account.id, account.name); nm.createNotificationChannelGroup(group); JSONObject jchannel = (JSONObject) jaccount.get("channel"); jchannel.put("id", EntityAccount.getNotificationChannelId(account.id)); + jchannel.put("group", group.getId()); nm.createNotificationChannel(channelFromJSON(context, jchannel)); Log.i("Imported account channel=" + jchannel); @@ -892,11 +893,12 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (jfolder.has("channel")) { - NotificationChannelGroup group = new NotificationChannelGroup(account.name, account.name); + NotificationChannelGroup group = new NotificationChannelGroup("group." + account.id, account.name); nm.createNotificationChannelGroup(group); JSONObject jchannel = (JSONObject) jfolder.get("channel"); jchannel.put("id", EntityFolder.getNotificationChannelId(folder.id)); + jchannel.put("group", group.getId()); nm.createNotificationChannel(channelFromJSON(context, jchannel)); Log.i("Imported folder channel=" + jchannel); diff --git a/app/src/main/java/eu/faircode/email/DaoFolder.java b/app/src/main/java/eu/faircode/email/DaoFolder.java index 07aeac5042..93b33a3dda 100644 --- a/app/src/main/java/eu/faircode/email/DaoFolder.java +++ b/app/src/main/java/eu/faircode/email/DaoFolder.java @@ -32,7 +32,7 @@ public interface DaoFolder { List getFolders(long account); @Query("SELECT folder.*" + - ", account.`order` AS accountOrder, account.name AS accountName, account.color AS accountColor, account.state AS accountState" + + ", account.id AS accountId, account.`order` AS accountOrder, account.name AS accountName, account.color AS accountColor, account.state AS accountState" + ", COUNT(message.id) AS messages" + ", SUM(CASE WHEN message.content = 1 THEN 1 ELSE 0 END) AS content" + ", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" + @@ -64,7 +64,7 @@ public interface DaoFolder { List getSortedFolders(); @Query("SELECT folder.*" + - ", account.`order` AS accountOrder, account.name AS accountName, account.color AS accountColor, account.state AS accountState" + + ", account.id AS accountId, account.`order` AS accountOrder, account.name AS accountName, account.color AS accountColor, account.state AS accountState" + ", COUNT(message.id) AS messages" + ", SUM(CASE WHEN message.content = 1 THEN 1 ELSE 0 END) AS content" + ", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" + @@ -80,7 +80,7 @@ public interface DaoFolder { LiveData> liveFolders(Long account); @Query("SELECT folder.*" + - ", account.`order` AS accountOrder, account.name AS accountName, account.color AS accountColor, account.state AS accountState" + + ", account.id AS accountId, account.`order` AS accountOrder, account.name AS accountName, account.color AS accountColor, account.state AS accountState" + ", COUNT(message.id) AS messages" + ", SUM(CASE WHEN message.content = 1 THEN 1 ELSE 0 END) AS content" + ", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" + @@ -119,7 +119,7 @@ public interface DaoFolder { LiveData liveSynchronizing(); @Query("SELECT folder.*" + - ", account.`order` AS accountOrder, account.name AS accountName, account.color AS accountColor, account.state AS accountState" + + ", account.id AS accountId, account.`order` AS accountOrder, account.name AS accountName, account.color AS accountColor, account.state AS accountState" + ", COUNT(message.id) AS messages" + ", SUM(CASE WHEN message.content = 1 THEN 1 ELSE 0 END) AS content" + ", SUM(CASE WHEN message.ui_seen = 0 THEN 1 ELSE 0 END) AS unseen" + diff --git a/app/src/main/java/eu/faircode/email/EntityAccount.java b/app/src/main/java/eu/faircode/email/EntityAccount.java index 41b15f0ae4..8116e29cc9 100644 --- a/app/src/main/java/eu/faircode/email/EntityAccount.java +++ b/app/src/main/java/eu/faircode/email/EntityAccount.java @@ -110,13 +110,13 @@ public class EntityAccount extends EntityOrder implements Serializable { void createNotificationChannel(Context context) { NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - NotificationChannelGroup group = new NotificationChannelGroup(name, name); + NotificationChannelGroup group = new NotificationChannelGroup("group." + id, name); nm.createNotificationChannelGroup(group); NotificationChannel channel = new NotificationChannel( getNotificationChannelId(id), name, NotificationManager.IMPORTANCE_HIGH); - channel.setGroup(name); + channel.setGroup(group.getId()); channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE); channel.enableLights(true); nm.createNotificationChannel(channel); diff --git a/app/src/main/java/eu/faircode/email/TupleFolderEx.java b/app/src/main/java/eu/faircode/email/TupleFolderEx.java index a71212c6cc..4b913495c4 100644 --- a/app/src/main/java/eu/faircode/email/TupleFolderEx.java +++ b/app/src/main/java/eu/faircode/email/TupleFolderEx.java @@ -37,6 +37,7 @@ import java.util.Locale; import java.util.Objects; public class TupleFolderEx extends EntityFolder implements Serializable { + public Long accountId; public Integer accountOrder; public String accountName; public Integer accountColor; @@ -63,6 +64,7 @@ public class TupleFolderEx extends EntityFolder implements Serializable { if (obj instanceof TupleFolderEx) { TupleFolderEx other = (TupleFolderEx) obj; return (super.equals(obj) && + Objects.equals(this.accountId, other.accountId) && Objects.equals(this.accountName, other.accountName) && Objects.equals(this.accountColor, other.accountColor) && Objects.equals(this.accountState, other.accountState) && @@ -78,13 +80,13 @@ public class TupleFolderEx extends EntityFolder implements Serializable { void createNotificationChannel(Context context) { NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - NotificationChannelGroup group = new NotificationChannelGroup(accountName, accountName); + NotificationChannelGroup group = new NotificationChannelGroup("group." + accountId, accountName); nm.createNotificationChannelGroup(group); NotificationChannel channel = new NotificationChannel( getNotificationChannelId(id), getDisplayName(context), NotificationManager.IMPORTANCE_HIGH); - channel.setGroup(accountName); + channel.setGroup(group.getId()); channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE); channel.enableLights(true); nm.createNotificationChannel(channel);