mirror of
https://github.com/M66B/FairEmail.git
synced 2026-01-04 03:43:55 +01:00
Simplify account notification management
This commit is contained in:
@@ -770,9 +770,9 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On
|
||||
account.id = db.account().insertAccount(account);
|
||||
Log.i("Imported account=" + account.name);
|
||||
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
|
||||
if (account.notify)
|
||||
account.createNotificationChannel(context);
|
||||
account.deleteNotificationChannel(context);
|
||||
if (account.notify)
|
||||
account.createNotificationChannel(context);
|
||||
|
||||
JSONArray jidentities = (JSONArray) jaccount.get("identities");
|
||||
for (int i = 0; i < jidentities.length(); i++) {
|
||||
|
||||
@@ -23,10 +23,8 @@ import android.app.Notification;
|
||||
import android.app.NotificationChannel;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
@@ -105,20 +103,22 @@ public class EntityAccount extends EntityOrder implements Serializable {
|
||||
return "notification" + (account == 0 ? "" : "." + account);
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
void createNotificationChannel(Context context) {
|
||||
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
NotificationChannel channel = new NotificationChannel(
|
||||
getNotificationChannelId(id), name,
|
||||
NotificationManager.IMPORTANCE_HIGH);
|
||||
channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
|
||||
nm.createNotificationChannel(channel);
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
|
||||
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
NotificationChannel channel = new NotificationChannel(
|
||||
getNotificationChannelId(id), name,
|
||||
NotificationManager.IMPORTANCE_HIGH);
|
||||
channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
|
||||
nm.createNotificationChannel(channel);
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
void deleteNotificationChannel(Context context) {
|
||||
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nm.deleteNotificationChannel(getNotificationChannelId(id));
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
|
||||
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
nm.deleteNotificationChannel(getNotificationChannelId(id));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -965,13 +965,10 @@ public class FragmentAccount extends FragmentBase {
|
||||
EntityLog.log(context, (update ? "Updated" : "Added") + " account=" + account.name);
|
||||
|
||||
// Make sure the channel exists on commit
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
|
||||
if (account.notify) {
|
||||
// Add or update notification channel
|
||||
account.deleteNotificationChannel(context);
|
||||
account.createNotificationChannel(context);
|
||||
} else if (!account.synchronize)
|
||||
account.deleteNotificationChannel(context);
|
||||
if (account.notify)
|
||||
account.createNotificationChannel(context);
|
||||
else if (!account.synchronize)
|
||||
account.deleteNotificationChannel(context);
|
||||
|
||||
List<EntityFolder> folders = new ArrayList<>();
|
||||
|
||||
|
||||
@@ -447,11 +447,10 @@ public class ServiceSynchronize extends LifecycleService {
|
||||
// Start monitoring accounts
|
||||
List<EntityAccount> accounts = db.account().getSynchronizingAccounts();
|
||||
for (final EntityAccount account : accounts) {
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O)
|
||||
if (account.notify)
|
||||
account.createNotificationChannel(ServiceSynchronize.this);
|
||||
else
|
||||
account.deleteNotificationChannel(ServiceSynchronize.this);
|
||||
if (account.notify)
|
||||
account.createNotificationChannel(ServiceSynchronize.this);
|
||||
else
|
||||
account.deleteNotificationChannel(ServiceSynchronize.this);
|
||||
|
||||
Log.i(account.host + "/" + account.user + " run");
|
||||
final Core.State astate = new Core.State(state);
|
||||
|
||||
Reference in New Issue
Block a user