Skip to content

Commit 50d3907

Browse files
committed
refactor: LoadingState 적용
1 parent 8d3af59 commit 50d3907

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

DevLog/Presentation/ViewModel/LoginViewModel.swift

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ final class LoginViewModel: Store {
2727
}
2828

2929
private let signInUseCase: SignInUseCase
30+
private let loadingState = LoadingState()
3031

3132
private(set) var state = State()
3233

@@ -54,12 +55,12 @@ final class LoginViewModel: Store {
5455
}
5556

5657
func run(_ effect: SideEffect) {
57-
send(.setLoading(true))
5858
switch effect {
5959
case .signIn(let authProvider):
60+
beginLoading(.immediate)
6061
Task {
6162
do {
62-
defer { send(.setLoading(false)) }
63+
defer { endLoading(.immediate) }
6364
try await self.signInUseCase.execute(authProvider)
6465
} catch {
6566
if error.isSocialLoginCancelled { return }
@@ -79,4 +80,16 @@ private extension LoginViewModel {
7980
state.alertMessage = String(localized: "common_error_message")
8081
state.showAlert = isPresented
8182
}
83+
84+
func beginLoading(_ mode: LoadingState.Mode) {
85+
loadingState.begin(mode: mode) { [weak self] isLoading in
86+
self?.send(.setLoading(isLoading))
87+
}
88+
}
89+
90+
func endLoading(_ mode: LoadingState.Mode) {
91+
loadingState.end(mode: mode) { [weak self] isLoading in
92+
self?.send(.setLoading(isLoading))
93+
}
94+
}
8295
}

0 commit comments

Comments
 (0)