Skip to content

Commit c8725a8

Browse files
committed
[BOOK-274] refactor: repository 함수 호출 구문 함수화
1 parent 165c773 commit c8725a8

File tree

2 files changed

+100
-84
lines changed

2 files changed

+100
-84
lines changed

feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsPresenter.kt

Lines changed: 82 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.ninecraft.booket.feature.settings
22

33
import androidx.compose.runtime.Composable
4-
import androidx.compose.runtime.LaunchedEffect
54
import androidx.compose.runtime.getValue
65
import androidx.compose.runtime.mutableStateOf
76
import androidx.compose.runtime.rememberCoroutineScope
@@ -15,6 +14,7 @@ import com.ninecraft.booket.feature.screens.OssLicensesScreen
1514
import com.ninecraft.booket.feature.screens.SettingsScreen
1615
import com.ninecraft.booket.feature.screens.WebViewScreen
1716
import com.orhanobut.logger.Logger
17+
import com.skydoves.compose.effects.RememberedEffect
1818
import com.slack.circuit.codegen.annotations.CircuitInject
1919
import com.slack.circuit.retained.rememberRetained
2020
import com.slack.circuit.runtime.Navigator
@@ -41,26 +41,86 @@ class SettingsPresenter @AssistedInject constructor(
4141
var latestVersion by rememberRetained { mutableStateOf("") }
4242
var sideEffect by rememberRetained { mutableStateOf<SettingsSideEffect?>(null) }
4343

44-
suspend fun getLatestVersion() {
45-
try {
46-
isLoading = true
47-
remoteConfigRepository.getLatestVersion()
48-
.onSuccess { version ->
49-
latestVersion = version
50-
}
51-
.onFailure { exception ->
52-
val handleErrorMessage = { message: String ->
53-
Logger.e(message)
54-
sideEffect = SettingsSideEffect.ShowToast(message)
44+
fun logout() {
45+
scope.launch {
46+
try {
47+
isLoading = true
48+
authRepository.logout()
49+
.onSuccess {
50+
navigator.resetRoot(LoginScreen)
5551
}
52+
.onFailure { exception ->
53+
val handleErrorMessage = { message: String ->
54+
Logger.e(message)
55+
sideEffect = SettingsSideEffect.ShowToast(message)
56+
}
57+
58+
handleException(
59+
exception = exception,
60+
onError = handleErrorMessage,
61+
onLoginRequired = {
62+
navigator.resetRoot(LoginScreen)
63+
},
64+
)
65+
}
66+
} finally {
67+
isLoading = false
68+
isLogoutDialogVisible = false
69+
}
70+
}
71+
}
5672

57-
handleException(
58-
exception = exception,
59-
onError = handleErrorMessage,
60-
)
61-
}
62-
} finally {
63-
isLoading = false
73+
fun withdraw() {
74+
scope.launch {
75+
try {
76+
isLoading = true
77+
authRepository.withdraw()
78+
.onSuccess {
79+
navigator.resetRoot(LoginScreen)
80+
}
81+
.onFailure { exception ->
82+
val handleErrorMessage = { message: String ->
83+
Logger.e(message)
84+
sideEffect = SettingsSideEffect.ShowToast(message)
85+
}
86+
87+
handleException(
88+
exception = exception,
89+
onError = handleErrorMessage,
90+
onLoginRequired = {
91+
navigator.resetRoot(LoginScreen)
92+
},
93+
)
94+
}
95+
} finally {
96+
isLoading = false
97+
isWithdrawBottomSheetVisible = false
98+
}
99+
}
100+
}
101+
102+
fun getLatestVersion() {
103+
scope.launch {
104+
try {
105+
isLoading = true
106+
remoteConfigRepository.getLatestVersion()
107+
.onSuccess { version ->
108+
latestVersion = version
109+
}
110+
.onFailure { exception ->
111+
val handleErrorMessage = { message: String ->
112+
Logger.e(message)
113+
sideEffect = SettingsSideEffect.ShowToast(message)
114+
}
115+
116+
handleException(
117+
exception = exception,
118+
onError = handleErrorMessage,
119+
)
120+
}
121+
} finally {
122+
isLoading = false
123+
}
64124
}
65125
}
66126

@@ -107,66 +167,16 @@ class SettingsPresenter @AssistedInject constructor(
107167
}
108168

109169
is SettingsUiEvent.Logout -> {
110-
scope.launch {
111-
try {
112-
isLoading = true
113-
authRepository.logout()
114-
.onSuccess {
115-
navigator.resetRoot(LoginScreen)
116-
}
117-
.onFailure { exception ->
118-
val handleErrorMessage = { message: String ->
119-
Logger.e(message)
120-
sideEffect = SettingsSideEffect.ShowToast(message)
121-
}
122-
123-
handleException(
124-
exception = exception,
125-
onError = handleErrorMessage,
126-
onLoginRequired = {
127-
navigator.resetRoot(LoginScreen)
128-
},
129-
)
130-
}
131-
} finally {
132-
isLoading = false
133-
}
134-
}
135-
isLogoutDialogVisible = false
170+
logout()
136171
}
137172

138173
is SettingsUiEvent.Withdraw -> {
139-
scope.launch {
140-
try {
141-
isLoading = true
142-
authRepository.withdraw()
143-
.onSuccess {
144-
navigator.resetRoot(LoginScreen)
145-
}
146-
.onFailure { exception ->
147-
val handleErrorMessage = { message: String ->
148-
Logger.e(message)
149-
sideEffect = SettingsSideEffect.ShowToast(message)
150-
}
151-
152-
handleException(
153-
exception = exception,
154-
onError = handleErrorMessage,
155-
onLoginRequired = {
156-
navigator.resetRoot(LoginScreen)
157-
},
158-
)
159-
}
160-
} finally {
161-
isLoading = false
162-
}
163-
}
164-
isWithdrawBottomSheetVisible = false
174+
withdraw()
165175
}
166176
}
167177
}
168178

169-
LaunchedEffect(Unit) {
179+
RememberedEffect(Unit) {
170180
getLatestVersion()
171181
}
172182

feature/splash/src/main/kotlin/com/ninecraft/booket/splash/SplashPresenter.kt

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,23 @@ class SplashPresenter @AssistedInject constructor(
9595
}
9696
}
9797

98+
fun checkForceUpdate() {
99+
scope.launch {
100+
remoteConfigRepository.shouldUpdate()
101+
.onSuccess { shouldUpdate ->
102+
if (shouldUpdate) {
103+
isForceUpdateDialogVisible = true
104+
} else {
105+
proceedToNextScreen()
106+
}
107+
}
108+
.onFailure { exception ->
109+
Logger.e("${exception.message}")
110+
proceedToNextScreen()
111+
}
112+
}
113+
}
114+
98115
fun handleEvent(event: SplashUiEvent) {
99116
when (event) {
100117
SplashUiEvent.OnUpdateButtonClick -> {
@@ -114,18 +131,7 @@ class SplashPresenter @AssistedInject constructor(
114131
return@LaunchedEffect
115132
}
116133

117-
remoteConfigRepository.shouldUpdate()
118-
.onSuccess { shouldUpdate ->
119-
if (shouldUpdate) {
120-
isForceUpdateDialogVisible = true
121-
} else {
122-
proceedToNextScreen()
123-
}
124-
}
125-
.onFailure { exception ->
126-
Logger.e("${exception.message}")
127-
proceedToNextScreen()
128-
}
134+
checkForceUpdate()
129135
}
130136

131137
return SplashUiState(

0 commit comments

Comments
 (0)