A fork of Simple Time Tracker with WearOS support. (Now integrated upstream)
0

Configure Feed

Select the types of activity you want to include in your feed.

add more case when goal notifications need to be rechecked

razeeman (Nov 26, 2023, 12:35 PM +0300) 9c4848dc fb9331cd

+43 -15
+13 -2
domain/src/main/java/com/example/util/simpletimetracker/domain/interactor/BackupInteractor.kt
··· 1 1 package com.example.util.simpletimetracker.domain.interactor 2 2 3 + import com.example.util.simpletimetracker.domain.model.WidgetType 3 4 import com.example.util.simpletimetracker.domain.resolver.BackupRepo 4 5 import com.example.util.simpletimetracker.domain.resolver.ResultCode 5 6 import javax.inject.Inject 6 7 7 8 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, 9 13 ) { 10 14 11 15 suspend fun saveBackupFile(uriString: String): ResultCode { ··· 13 17 } 14 18 15 19 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 17 28 } 18 29 }
+12 -1
domain/src/main/java/com/example/util/simpletimetracker/domain/interactor/CsvExportInteractor.kt
··· 1 1 package com.example.util.simpletimetracker.domain.interactor 2 2 3 3 import com.example.util.simpletimetracker.domain.model.Range 4 + import com.example.util.simpletimetracker.domain.model.WidgetType 4 5 import com.example.util.simpletimetracker.domain.resolver.CsvRepo 5 6 import com.example.util.simpletimetracker.domain.resolver.ResultCode 6 7 import javax.inject.Inject 7 8 8 9 class CsvExportInteractor @Inject constructor( 9 10 private val csvRepo: CsvRepo, 11 + private val runningRecordInteractor: RunningRecordInteractor, 12 + private val widgetInteractor: WidgetInteractor, 13 + private val notificationGoalTimeInteractor: NotificationGoalTimeInteractor, 10 14 ) { 11 15 12 16 suspend fun saveCsvFile(uriString: String, range: Range?): ResultCode { ··· 14 18 } 15 19 16 20 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 18 29 } 19 30 }
-4
domain/src/main/java/com/example/util/simpletimetracker/domain/interactor/RecordTypeCategoryInteractor.kt
··· 35 35 suspend fun removeTypes(categoryId: Long, typeIds: List<Long>) { 36 36 recordTypeCategoryRepo.removeTypes(categoryId, typeIds) 37 37 } 38 - 39 - suspend fun removeAllByType(typeId: Long) { 40 - recordTypeCategoryRepo.removeAllByType(typeId) 41 - } 42 38 }
+10 -1
features/feature_archive/src/main/java/com/example/util/simpletimetracker/feature_archive/viewModel/ArchiveViewModel.kt
··· 10 10 import com.example.util.simpletimetracker.domain.interactor.NotificationTypeInteractor 11 11 import com.example.util.simpletimetracker.domain.interactor.RecordTagInteractor 12 12 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 13 17 import com.example.util.simpletimetracker.feature_archive.R 14 18 import com.example.util.simpletimetracker.feature_archive.interactor.ArchiveViewDataInteractor 15 19 import com.example.util.simpletimetracker.feature_archive.viewData.ArchiveViewData ··· 33 37 private val recordTypeInteractor: RecordTypeInteractor, 34 38 private val recordTagInteractor: RecordTagInteractor, 35 39 private val notificationGoalTimeInteractor: NotificationGoalTimeInteractor, 40 + private val widgetInteractor: WidgetInteractor, 41 + private val runningRecordInteractor: RunningRecordInteractor, 36 42 ) : ViewModel() { 37 43 38 44 val viewData: LiveData<ArchiveViewData> by lazy { ··· 104 110 val message = when (params) { 105 111 is ArchiveDialogParams.Activity -> { 106 112 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)) 108 117 resourceRepo.getString(R.string.archive_activity_deleted) 109 118 } 110 119 is ArchiveDialogParams.RecordTag -> {
+1
features/feature_change_category/src/main/java/com/example/util/simpletimetracker/feature_change_category/viewModel/ChangeCategoryViewModel.kt
··· 164 164 if (categoryId != 0L) { 165 165 categoryInteractor.remove(categoryId) 166 166 notificationGoalTimeInteractor.cancel(RecordTypeGoal.IdData.Category(categoryId)) 167 + widgetInteractor.updateWidgets(listOf(WidgetType.STATISTICS_CHART)) 167 168 showMessage(R.string.change_category_removed) 168 169 (keyboardVisibility as MutableLiveData).value = false 169 170 router.back()
+7 -7
features/feature_notification/src/main/java/com/example/util/simpletimetracker/feature_notification/goalTime/interactor/NotificationGoalTimeInteractorImpl.kt
··· 19 19 20 20 /** 21 21 * 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 25 25 * - remove type 26 26 * 27 27 * 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 31 32 * - change type categories 32 33 * - change category activities 33 - * - remove category 34 34 */ 35 35 class NotificationGoalTimeInteractorImpl @Inject constructor( 36 36 private val recordTypeGoalInteractor: RecordTypeGoalInteractor,