Skip to content

Commit 74ea145

Browse files
committed
[BOOK-437] refactor: 알림 설정 동기화 로직 단순화 및 유틸 함수로 분리
1 parent 329d6dc commit 74ea145

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.ninecraft.booket.core.common.utils
2+
3+
fun shouldSyncNotification(effectiveEnabled: Boolean, lastSynced: Boolean?): Boolean =
4+
lastSynced == null || lastSynced != effectiveEnabled

feature/home/src/main/kotlin/com/ninecraft/booket/feature/home/HomePresenter.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import androidx.compose.runtime.rememberCoroutineScope
77
import androidx.compose.runtime.setValue
88
import com.ninecraft.booket.core.common.analytics.AnalyticsHelper
99
import com.ninecraft.booket.core.common.utils.handleException
10+
import com.ninecraft.booket.core.common.utils.shouldSyncNotification
1011
import com.ninecraft.booket.core.data.api.repository.AuthRepository
1112
import com.ninecraft.booket.core.data.api.repository.BookRepository
1213
import com.ninecraft.booket.core.data.api.repository.UserRepository
@@ -115,14 +116,15 @@ class HomePresenter @AssistedInject constructor(
115116
is HomeUiEvent.OnNotificationPermissionResult -> {
116117
scope.launch {
117118
val isPermissionGranted = event.granted
118-
val userEnabled = userRepository.getUserNotificationEnabled()
119+
val userSettingEnabled = userRepository.getUserNotificationEnabled()
119120
val lastSyncedServerEnabled = userRepository.getLastSyncedNotificationEnabled()
120121

121-
val shouldSync = (!isPermissionGranted && lastSyncedServerEnabled != false) ||
122-
(userEnabled && (lastSyncedServerEnabled == null || lastSyncedServerEnabled != isPermissionGranted))
122+
val effectiveNotificationEnabled = userSettingEnabled && isPermissionGranted
123+
124+
val shouldSync = shouldSyncNotification(effectiveNotificationEnabled, lastSyncedServerEnabled)
123125

124126
if (shouldSync) {
125-
syncNotificationSettings(isPermissionGranted)
127+
syncNotificationSettings(effectiveNotificationEnabled)
126128
}
127129
}
128130
}

feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/notification/NotificationPresenter.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.compose.runtime.mutableStateOf
66
import androidx.compose.runtime.rememberCoroutineScope
77
import androidx.compose.runtime.setValue
88
import com.ninecraft.booket.core.common.utils.handleException
9+
import com.ninecraft.booket.core.common.utils.shouldSyncNotification
910
import com.ninecraft.booket.core.data.api.repository.UserRepository
1011
import com.ninecraft.booket.feature.screens.LoginScreen
1112
import com.ninecraft.booket.feature.screens.NotificationScreen
@@ -92,14 +93,15 @@ class NotificationPresenter @AssistedInject constructor(
9293
is NotificationUiEvent.OnNotificationPermissionResult -> {
9394
scope.launch {
9495
val isPermissionGranted = event.granted
95-
val userEnabled = userRepository.getUserNotificationEnabled()
96+
val userSettingEnabled = userRepository.getUserNotificationEnabled()
9697
val lastSyncedServerEnabled = userRepository.getLastSyncedNotificationEnabled()
9798

98-
val shouldSync = (!isPermissionGranted && lastSyncedServerEnabled != false) ||
99-
(userEnabled && (lastSyncedServerEnabled == null || lastSyncedServerEnabled != isPermissionGranted))
99+
val effectiveNotificationEnabled = userSettingEnabled && isPermissionGranted
100+
101+
val shouldSync = shouldSyncNotification(effectiveNotificationEnabled, lastSyncedServerEnabled)
100102

101103
if (shouldSync) {
102-
syncNotificationSettings(isPermissionGranted)
104+
syncNotificationSettings(effectiveNotificationEnabled)
103105
}
104106
}
105107
}

0 commit comments

Comments
 (0)