Skip to content

Commit 641ca98

Browse files
committed
[FEAT/#278] 알람 해제 시 PostFortuneTaskScheduler 대신 FortuneRepository를 사용하여 운세 생성 로직 구현
1 parent 360666f commit 641ca98

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

core/alarm/src/main/java/com/yapp/alarm/services/AlarmService.kt

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,20 @@ import com.yapp.alarm.pendingIntent.interaction.createAlarmAlertPendingIntent
2323
import com.yapp.alarm.pendingIntent.interaction.createAlarmDismissPendingIntent
2424
import com.yapp.alarm.pendingIntent.interaction.createAlarmSnoozePendingIntent
2525
import com.yapp.alarm.pendingIntent.interaction.createNavigateToMissionPendingIntent
26-
import com.yapp.alarm.scheduler.PostFortuneTaskScheduler
2726
import com.yapp.domain.model.Alarm
2827
import com.yapp.domain.model.AlarmDay
2928
import com.yapp.domain.model.MissionType
3029
import com.yapp.domain.repository.AlarmRepository
30+
import com.yapp.domain.repository.FortuneRepository
31+
import com.yapp.domain.repository.UserInfoRepository
32+
import com.yapp.domain.tracker.FortuneCreationTracker
3133
import com.yapp.media.sound.SoundPlayer
3234
import dagger.hilt.android.AndroidEntryPoint
3335
import kotlinx.coroutines.CoroutineScope
3436
import kotlinx.coroutines.Dispatchers
3537
import kotlinx.coroutines.SupervisorJob
3638
import kotlinx.coroutines.cancel
39+
import kotlinx.coroutines.flow.first
3740
import kotlinx.coroutines.launch
3841
import javax.inject.Inject
3942

@@ -52,7 +55,13 @@ class AlarmService : Service() {
5255
lateinit var androidAlarmScheduler: AndroidAlarmScheduler
5356

5457
@Inject
55-
lateinit var postFortuneTaskScheduler: PostFortuneTaskScheduler
58+
lateinit var fortuneRepository: FortuneRepository
59+
60+
@Inject
61+
lateinit var userInfoRepository: UserInfoRepository
62+
63+
@Inject
64+
lateinit var fortuneCreationTracker: FortuneCreationTracker
5665

5766
private val serviceScope = CoroutineScope(Dispatchers.IO + SupervisorJob())
5867

@@ -79,7 +88,7 @@ class AlarmService : Service() {
7988
super.onDestroy()
8089
}
8190

82-
private fun handleIntent(intent: Intent) {
91+
private suspend fun handleIntent(intent: Intent) {
8392
val alarm: Alarm? = intent.getStringExtra(AlarmConstants.EXTRA_ALARM)?.let(Alarm::fromJson)
8493

8594
if (alarm == null) {
@@ -117,7 +126,19 @@ class AlarmService : Service() {
117126
turnOffAlarm(alarmId = notificationId)
118127
}
119128

120-
postFortuneTaskScheduler.enqueueOnceForToday()
129+
val shouldPostFortune = !fortuneRepository.hasTodayFortune()
130+
if (shouldPostFortune) {
131+
val userId = userInfoRepository.userIdFlow.first()
132+
userId?.let {
133+
fortuneCreationTracker.start()
134+
fortuneRepository.postFortune(userId).onSuccess { fortune ->
135+
fortuneCreationTracker.succeed(fortune.id)
136+
fortuneRepository.markFortuneAsCreated(fortune.id)
137+
}.onFailure {
138+
fortuneCreationTracker.fail()
139+
}
140+
}
141+
}
121142
}
122143

123144
private fun shouldNavigateToMission(

0 commit comments

Comments
 (0)