Skip to content

Commit 8be56c3

Browse files
committed
[BOOK-420] feat: 토스트 및 로그인 화면 이동 로직을 공통 다이얼로그 이벤트로 변경
1 parent 8c29fbe commit 8be56c3

File tree

3 files changed

+31
-12
lines changed

3 files changed

+31
-12
lines changed

core/common/src/main/kotlin/com/ninecraft/booket/core/common/event/DialogEvents.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,14 @@ fun postErrorDialog(
4646

4747
EventHelper.sendEvent(event = ReedEvent.ShowDialog(spec))
4848
}
49+
50+
fun postLoginRequiredDialog(onConfirm: () -> Unit) {
51+
val spec = DialogSpec(
52+
message = "로그인이 필요한 기능입니다.\n로그인 해주세요.",
53+
confirmLabel = "로그인 하기",
54+
onConfirm = onConfirm,
55+
dismissLabel = "닫기"
56+
)
57+
58+
EventHelper.sendEvent(event = ReedEvent.ShowDialog(spec))
59+
}

feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryPresenter.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import androidx.compose.runtime.mutableStateOf
77
import androidx.compose.runtime.rememberCoroutineScope
88
import androidx.compose.runtime.setValue
99
import com.ninecraft.booket.core.common.analytics.AnalyticsHelper
10-
import com.ninecraft.booket.core.common.utils.UiText
10+
import com.ninecraft.booket.core.common.event.postLoginRequiredDialog
1111
import com.ninecraft.booket.core.common.utils.handleException
1212
import com.ninecraft.booket.core.data.api.repository.AuthRepository
1313
import com.ninecraft.booket.core.data.api.repository.BookRepository
@@ -35,7 +35,6 @@ import dagger.hilt.android.components.ActivityRetainedComponent
3535
import kotlinx.collections.immutable.persistentListOf
3636
import kotlinx.collections.immutable.toPersistentList
3737
import kotlinx.coroutines.launch
38-
import com.ninecraft.booket.core.designsystem.R as designR
3938

4039
class LibraryPresenter @AssistedInject constructor(
4140
@Assisted private val navigator: Navigator,
@@ -127,10 +126,13 @@ class LibraryPresenter @AssistedInject constructor(
127126

128127
is LibraryUiEvent.OnLibrarySearchClick -> {
129128
if (userState is UserState.Guest) {
130-
scope.launch {
131-
sideEffect = LibrarySideEffect.ShowToast(UiText.StringResource(designR.string.login_required))
132-
navigator.redirectToLogin()
133-
}
129+
postLoginRequiredDialog(
130+
onConfirm = {
131+
scope.launch {
132+
navigator.redirectToLogin()
133+
}
134+
},
135+
)
134136
} else {
135137
navigator.goTo(LibrarySearchScreen)
136138
}

feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchPresenter.kt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.compose.runtime.rememberCoroutineScope
1010
import androidx.compose.runtime.setValue
1111
import com.ninecraft.booket.core.common.analytics.AnalyticsHelper
1212
import com.ninecraft.booket.core.common.constants.BookStatus
13+
import com.ninecraft.booket.core.common.event.postLoginRequiredDialog
1314
import com.ninecraft.booket.core.common.utils.UiText
1415
import com.ninecraft.booket.core.common.utils.handleException
1516
import com.ninecraft.booket.core.data.api.repository.AuthRepository
@@ -120,13 +121,18 @@ class BookSearchPresenter @AssistedInject constructor(
120121
}
121122

122123
fun upsertBook(isbn13: String, bookStatus: String) {
123-
scope.launch {
124-
if (userState is UserState.Guest) {
125-
sideEffect = BookSearchSideEffect.ShowToast(UiText.StringResource(designR.string.login_required))
126-
navigator.redirectToLogin()
127-
return@launch
128-
}
124+
if (userState is UserState.Guest) {
125+
postLoginRequiredDialog(
126+
onConfirm = {
127+
scope.launch {
128+
navigator.redirectToLogin()
129+
}
130+
},
131+
)
132+
return
133+
}
129134

135+
scope.launch {
130136
repository.upsertBook(isbn13, bookStatus)
131137
.onSuccess {
132138
registeredUserBookId = it.userBookId

0 commit comments

Comments
 (0)