feat(system): add notification manager system service for DND

This commit is contained in:
Nishant Mishra
2025-10-25 09:07:19 +05:30
parent e1219f77b7
commit fdbc4e16d0
3 changed files with 8 additions and 2 deletions

View File

@@ -18,6 +18,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

View File

@@ -17,6 +17,7 @@
package org.nsh07.pomodoro.data
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import androidx.compose.ui.graphics.Color
@@ -34,6 +35,7 @@ interface AppContainer {
val appStatRepository: AppStatRepository
val appTimerRepository: AppTimerRepository
val notificationManager: NotificationManagerCompat
val notificationManagerService: NotificationManager
val notificationBuilder: NotificationCompat.Builder
val timerState: MutableStateFlow<TimerState>
val time: MutableStateFlow<Long>
@@ -56,6 +58,9 @@ class DefaultAppContainer(context: Context) : AppContainer {
NotificationManagerCompat.from(context)
}
override val notificationManagerService: NotificationManager =
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
override val notificationBuilder: NotificationCompat.Builder by lazy {
NotificationCompat.Builder(context, "timer")
.setSmallIcon(R.drawable.tomato_logo_notification)

View File

@@ -30,7 +30,6 @@ import android.os.Vibrator
import android.os.VibratorManager
import androidx.compose.ui.graphics.toArgb
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
@@ -53,7 +52,8 @@ class TimerService : Service() {
private val timerRepository by lazy { appContainer.appTimerRepository }
private val statRepository by lazy { appContainer.appStatRepository }
private val notificationManager by lazy { NotificationManagerCompat.from(this) }
private val notificationManager by lazy { appContainer.notificationManager }
private val notificationManagerService by lazy { appContainer.notificationManagerService }
private val notificationBuilder by lazy { appContainer.notificationBuilder }
private val _timerState by lazy { appContainer.timerState }
private val _time by lazy { appContainer.time }