@@ -32,6 +32,7 @@ import dagger.assisted.AssistedFactory
3232import dagger.assisted.AssistedInject
3333import dagger.hilt.android.components.ActivityRetainedComponent
3434import kotlinx.collections.immutable.toPersistentList
35+ import kotlinx.coroutines.delay
3536import kotlinx.coroutines.launch
3637
3738class RecordRegisterPresenter @AssistedInject constructor(
@@ -43,6 +44,7 @@ class RecordRegisterPresenter @AssistedInject constructor(
4344 @Composable
4445 override fun present (): RecordRegisterUiState {
4546 val scope = rememberCoroutineScope()
47+ var isLoading by rememberRetained { mutableStateOf(false ) }
4648 var sideEffect by rememberRetained { mutableStateOf<RecordRegisterSideEffect ?>(null ) }
4749 var currentStep by rememberRetained { mutableStateOf(RecordStep .QUOTE ) }
4850 val recordPageState = rememberTextFieldState()
@@ -108,33 +110,38 @@ class RecordRegisterPresenter @AssistedInject constructor(
108110 impression : String ,
109111 ) {
110112 scope.launch {
111- repository.postRecord(
112- userBookId = userBookId,
113- pageNumber = pageNumber,
114- quote = quote,
115- emotionTags = emotionTags,
116- review = impression,
117- ).onSuccess { result ->
118- savedRecordId = result.id
119- isRecordSavedDialogVisible = true
120- }.onFailure { exception ->
121- postErrorDialog(
122- errorScope = ErrorScope .RECORD_REGISTER ,
123- exception = exception,
124- )
125-
126- val handleErrorMessage = { message: String ->
127- Logger .e(message)
128- sideEffect = RecordRegisterSideEffect .ShowToast (message)
129- }
113+ try {
114+ isLoading = true
115+ repository.postRecord(
116+ userBookId = userBookId,
117+ pageNumber = pageNumber,
118+ quote = quote,
119+ emotionTags = emotionTags,
120+ review = impression,
121+ ).onSuccess { result ->
122+ savedRecordId = result.id
123+ isRecordSavedDialogVisible = true
124+ }.onFailure { exception ->
125+ postErrorDialog(
126+ errorScope = ErrorScope .RECORD_REGISTER ,
127+ exception = exception,
128+ )
129+
130+ val handleErrorMessage = { message: String ->
131+ Logger .e(message)
132+ sideEffect = RecordRegisterSideEffect .ShowToast (message)
133+ }
130134
131- handleException(
132- exception = exception,
133- onError = handleErrorMessage,
134- onLoginRequired = {
135- navigator.resetRoot(LoginScreen )
136- },
137- )
135+ handleException(
136+ exception = exception,
137+ onError = handleErrorMessage,
138+ onLoginRequired = {
139+ navigator.resetRoot(LoginScreen )
140+ },
141+ )
142+ }
143+ } finally {
144+ isLoading = false
138145 }
139146 }
140147 }
@@ -259,6 +266,7 @@ class RecordRegisterPresenter @AssistedInject constructor(
259266 }
260267
261268 return RecordRegisterUiState (
269+ isLoading = isLoading,
262270 currentStep = currentStep,
263271 recordPageState = recordPageState,
264272 recordSentenceState = recordSentenceState,
0 commit comments