Skip to content

Commit 2342bf0

Browse files
committed
Cleanup for observeForever in TimerAlarmRepository
1 parent 76e7573 commit 2342bf0

2 files changed

Lines changed: 14 additions & 6 deletions

File tree

app/src/main/java/com/meenbeese/chronos/db/TimerAlarmRepository.kt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import android.os.Build
66

77
import androidx.lifecycle.LiveData
88
import androidx.lifecycle.MutableLiveData
9+
import androidx.lifecycle.Observer
910

1011
import com.meenbeese.chronos.data.AlarmData
1112
import com.meenbeese.chronos.data.Preferences
@@ -29,17 +30,23 @@ class TimerAlarmRepository(
2930
private val _timers = MutableLiveData<List<TimerData>>(emptyList())
3031
val timers: LiveData<List<TimerData>> get() = _timers
3132

33+
private val alarmObserver = Observer<List<AlarmEntity>> { entities ->
34+
_alarms.postValue(
35+
entities.map { it.toData() }
36+
)
37+
}
38+
3239
init {
3340
observeAlarms()
3441
loadTimers()
3542
}
3643

3744
private fun observeAlarms() {
38-
alarmRepository.getAll().observeForever { entities ->
39-
_alarms.postValue(
40-
entities.map { it.toData() }
41-
)
42-
}
45+
alarmRepository.getAll().observeForever(alarmObserver)
46+
}
47+
48+
fun clear() {
49+
alarmRepository.getAll().removeObserver(alarmObserver)
4350
}
4451

4552
suspend fun insertAlarm(alarm: AlarmEntity): Long {

app/src/main/java/com/meenbeese/chronos/di/AppModule.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ import com.meenbeese.chronos.db.TimerAlarmRepository
88
import com.meenbeese.chronos.utils.MediaManager
99

1010
import org.koin.dsl.module
11+
import org.koin.dsl.onClose
1112

1213
@UnstableApi
1314
val appModule = module {
1415
single { MediaManager(get()) }
1516
single { AlarmDatabase.getDatabase(get()) }
1617
single { get<AlarmDatabase>().alarmDao() }
1718
single { AlarmRepository(get()) }
18-
single { TimerAlarmRepository(get(), get()) }
19+
single { TimerAlarmRepository(get(), get()) } onClose { it?.clear() }
1920
}

0 commit comments

Comments
 (0)