Skip to content

Commit 9c4848d

Browse files
committed
add more case when goal notifications need to be rechecked
1 parent fb9331c commit 9c4848d

File tree

6 files changed

+43
-15
lines changed

6 files changed

+43
-15
lines changed
Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,29 @@
11
package com.example.util.simpletimetracker.domain.interactor
22

3+
import com.example.util.simpletimetracker.domain.model.WidgetType
34
import com.example.util.simpletimetracker.domain.resolver.BackupRepo
45
import com.example.util.simpletimetracker.domain.resolver.ResultCode
56
import javax.inject.Inject
67

78
class BackupInteractor @Inject constructor(
8-
private val backupRepo: BackupRepo
9+
private val backupRepo: BackupRepo,
10+
private val runningRecordInteractor: RunningRecordInteractor,
11+
private val widgetInteractor: WidgetInteractor,
12+
private val notificationGoalTimeInteractor: NotificationGoalTimeInteractor,
913
) {
1014

1115
suspend fun saveBackupFile(uriString: String): ResultCode {
1216
return backupRepo.saveBackupFile(uriString)
1317
}
1418

1519
suspend fun restoreBackupFile(uriString: String): ResultCode {
16-
return backupRepo.restoreBackupFile(uriString)
20+
val resultCode = backupRepo.restoreBackupFile(uriString)
21+
22+
val runningRecords = runningRecordInteractor.getAll()
23+
notificationGoalTimeInteractor.checkAndReschedule(runningRecords.map { it.id })
24+
widgetInteractor.updateWidgets(listOf(WidgetType.STATISTICS_CHART))
25+
widgetInteractor.updateWidgets(listOf(WidgetType.RECORD_TYPE))
26+
27+
return resultCode
1728
}
1829
}
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,30 @@
11
package com.example.util.simpletimetracker.domain.interactor
22

33
import com.example.util.simpletimetracker.domain.model.Range
4+
import com.example.util.simpletimetracker.domain.model.WidgetType
45
import com.example.util.simpletimetracker.domain.resolver.CsvRepo
56
import com.example.util.simpletimetracker.domain.resolver.ResultCode
67
import javax.inject.Inject
78

89
class CsvExportInteractor @Inject constructor(
910
private val csvRepo: CsvRepo,
11+
private val runningRecordInteractor: RunningRecordInteractor,
12+
private val widgetInteractor: WidgetInteractor,
13+
private val notificationGoalTimeInteractor: NotificationGoalTimeInteractor,
1014
) {
1115

1216
suspend fun saveCsvFile(uriString: String, range: Range?): ResultCode {
1317
return csvRepo.saveCsvFile(uriString = uriString, range = range)
1418
}
1519

1620
suspend fun importCsvFile(uriString: String): ResultCode {
17-
return csvRepo.importCsvFile(uriString)
21+
val resultCode = csvRepo.importCsvFile(uriString)
22+
23+
val runningRecords = runningRecordInteractor.getAll()
24+
notificationGoalTimeInteractor.checkAndReschedule(runningRecords.map { it.id })
25+
widgetInteractor.updateWidgets(listOf(WidgetType.STATISTICS_CHART))
26+
widgetInteractor.updateWidgets(listOf(WidgetType.RECORD_TYPE))
27+
28+
return resultCode
1829
}
1930
}

domain/src/main/java/com/example/util/simpletimetracker/domain/interactor/RecordTypeCategoryInteractor.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,4 @@ class RecordTypeCategoryInteractor @Inject constructor(
3535
suspend fun removeTypes(categoryId: Long, typeIds: List<Long>) {
3636
recordTypeCategoryRepo.removeTypes(categoryId, typeIds)
3737
}
38-
39-
suspend fun removeAllByType(typeId: Long) {
40-
recordTypeCategoryRepo.removeAllByType(typeId)
41-
}
4238
}

features/feature_archive/src/main/java/com/example/util/simpletimetracker/feature_archive/viewModel/ArchiveViewModel.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ import com.example.util.simpletimetracker.domain.interactor.NotificationGoalTime
1010
import com.example.util.simpletimetracker.domain.interactor.NotificationTypeInteractor
1111
import com.example.util.simpletimetracker.domain.interactor.RecordTagInteractor
1212
import com.example.util.simpletimetracker.domain.interactor.RecordTypeInteractor
13+
import com.example.util.simpletimetracker.domain.interactor.RunningRecordInteractor
14+
import com.example.util.simpletimetracker.domain.interactor.WidgetInteractor
15+
import com.example.util.simpletimetracker.domain.model.RecordTypeGoal
16+
import com.example.util.simpletimetracker.domain.model.WidgetType
1317
import com.example.util.simpletimetracker.feature_archive.R
1418
import com.example.util.simpletimetracker.feature_archive.interactor.ArchiveViewDataInteractor
1519
import com.example.util.simpletimetracker.feature_archive.viewData.ArchiveViewData
@@ -33,6 +37,8 @@ class ArchiveViewModel @Inject constructor(
3337
private val recordTypeInteractor: RecordTypeInteractor,
3438
private val recordTagInteractor: RecordTagInteractor,
3539
private val notificationGoalTimeInteractor: NotificationGoalTimeInteractor,
40+
private val widgetInteractor: WidgetInteractor,
41+
private val runningRecordInteractor: RunningRecordInteractor,
3642
) : ViewModel() {
3743

3844
val viewData: LiveData<ArchiveViewData> by lazy {
@@ -104,7 +110,10 @@ class ArchiveViewModel @Inject constructor(
104110
val message = when (params) {
105111
is ArchiveDialogParams.Activity -> {
106112
recordTypeInteractor.remove(params.id)
107-
notificationGoalTimeInteractor.checkAndReschedule(listOf(params.id))
113+
val runningRecordIds = runningRecordInteractor.getAll().map { it.id }
114+
notificationGoalTimeInteractor.cancel(RecordTypeGoal.IdData.Type(params.id))
115+
notificationGoalTimeInteractor.checkAndReschedule(runningRecordIds + params.id)
116+
widgetInteractor.updateWidgets(listOf(WidgetType.STATISTICS_CHART))
108117
resourceRepo.getString(R.string.archive_activity_deleted)
109118
}
110119
is ArchiveDialogParams.RecordTag -> {

features/feature_change_category/src/main/java/com/example/util/simpletimetracker/feature_change_category/viewModel/ChangeCategoryViewModel.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ class ChangeCategoryViewModel @Inject constructor(
164164
if (categoryId != 0L) {
165165
categoryInteractor.remove(categoryId)
166166
notificationGoalTimeInteractor.cancel(RecordTypeGoal.IdData.Category(categoryId))
167+
widgetInteractor.updateWidgets(listOf(WidgetType.STATISTICS_CHART))
167168
showMessage(R.string.change_category_removed)
168169
(keyboardVisibility as MutableLiveData).value = false
169170
router.back()

features/feature_notification/src/main/java/com/example/util/simpletimetracker/feature_notification/goalTime/interactor/NotificationGoalTimeInteractorImpl.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,18 @@ import javax.inject.Inject
1919

2020
/**
2121
* Type goal can be changed:
22-
* - change / remove running record
23-
* - change / remove record
24-
* - change / remove type goal
22+
* - add / change / remove running record
23+
* - add / change / remove record
24+
* - add / change / remove type goal
2525
* - remove type
2626
*
2727
* Category goal can be changed:
28-
* - change / remove running record
29-
* - change / remove record
30-
* - change / remove category goal
28+
* - add / change / remove running record
29+
* - add / change / remove record
30+
* - add / change / remove category goal
31+
* - remove category
3132
* - change type categories
3233
* - change category activities
33-
* - remove category
3434
*/
3535
class NotificationGoalTimeInteractorImpl @Inject constructor(
3636
private val recordTypeGoalInteractor: RecordTypeGoalInteractor,

0 commit comments

Comments
 (0)