package ml.docilealligator.infinityforreddit.utils; import android.content.Context; import androidx.core.app.NotificationChannelCompat; import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationManagerCompat; import ml.docilealligator.infinityforreddit.R; public class NotificationUtils { public static final String CHANNEL_SUBMIT_POST = "Submit Post"; public static final String CHANNEL_ID_NEW_MESSAGES = "new_messages"; public static final String CHANNEL_NEW_MESSAGES = "New Messages"; public static final String CHANNEL_ID_DOWNLOAD_REDDIT_VIDEO = "download_reddit_video"; public static final String CHANNEL_DOWNLOAD_REDDIT_VIDEO = "Download Reddit Video"; public static final String CHANNEL_ID_DOWNLOAD_VIDEO = "download_video"; public static final String CHANNEL_DOWNLOAD_VIDEO = "Download Video"; public static final String CHANNEL_ID_DOWNLOAD_IMAGE = "download_image"; public static final String CHANNEL_DOWNLOAD_IMAGE = "Download Image"; public static final String CHANNEL_ID_DOWNLOAD_GIF = "download_gif"; public static final String CHANNEL_DOWNLOAD_GIF = "Download Gif"; public static final String CHANNEL_ID_MATERIAL_YOU = "material_you"; public static final String CHANNEL_MATERIAL_YOU = "Material You"; public static final int SUBMIT_POST_SERVICE_NOTIFICATION_ID = 10000; public static final int DOWNLOAD_REDDIT_VIDEO_NOTIFICATION_ID = 20000; public static final int DOWNLOAD_VIDEO_NOTIFICATION_ID = 30000; public static final int DOWNLOAD_IMAGE_NOTIFICATION_ID = 40000; public static final int DOWNLOAD_GIF_NOTIFICATION_ID = 50000; public static final int MATERIAL_YOU_NOTIFICATION_ID = 60000; public static final int EDIT_PROFILE_SERVICE_NOTIFICATION_ID = 70000; private static final int SUMMARY_BASE_ID_UNREAD_MESSAGE = 0; private static final int NOTIFICATION_BASE_ID_UNREAD_MESSAGE = 1; private static final String GROUP_USER_BASE = "ml.docilealligator.infinityforreddit."; public static NotificationCompat.Builder buildNotification(NotificationManagerCompat notificationManager, Context context, String title, String content, String summary, String channelId, String channelName, String group, int color) { NotificationChannelCompat channel = new NotificationChannelCompat.Builder(channelId, NotificationManagerCompat.IMPORTANCE_DEFAULT) .setName(channelName) .build(); notificationManager.createNotificationChannel(channel); return new NotificationCompat.Builder(context.getApplicationContext(), channelId) .setContentTitle(title) .setContentText(content) .setSmallIcon(R.drawable.ic_notification) .setColor(color) .setStyle(new NotificationCompat.BigTextStyle() .setSummaryText(summary) .bigText(content)) .setGroup(group) .setAutoCancel(true); } public static NotificationCompat.Builder buildSummaryNotification(Context context, NotificationManagerCompat notificationManager, String title, String content, String channelId, String channelName, String group, int color) { NotificationChannelCompat channel = new NotificationChannelCompat.Builder(channelId, NotificationManagerCompat.IMPORTANCE_DEFAULT) .setName(channelName) .build(); notificationManager.createNotificationChannel(channel); return new NotificationCompat.Builder(context, channelId) .setContentTitle(title) //set content text to support devices running API level < 24 .setContentText(content) .setSmallIcon(R.drawable.ic_notification) .setColor(color) .setGroup(group) .setGroupSummary(true) .setAutoCancel(true); } public static NotificationManagerCompat getNotificationManager(Context context) { return NotificationManagerCompat.from(context); } public static String getAccountGroupName(String accountName) { return GROUP_USER_BASE + accountName; } public static int getSummaryIdUnreadMessage(int accountIndex) { return SUMMARY_BASE_ID_UNREAD_MESSAGE + accountIndex * 1000; } public static int getNotificationIdUnreadMessage(int accountIndex, int messageIndex) { return NOTIFICATION_BASE_ID_UNREAD_MESSAGE + accountIndex * 1000 + messageIndex; } }