@@ -24,6 +24,7 @@ final class SettingViewModel: Store {
2424 enum Action {
2525 case networkStatusChanged( Bool )
2626 case setAlert( isPresented: Bool , type: AlertType ? = nil )
27+ case setDirSize( Int64 )
2728 case setLoading( Bool )
2829 case setTheme( SystemTheme )
2930 case updateDirSize
@@ -34,7 +35,9 @@ final class SettingViewModel: Store {
3435 }
3536
3637 enum SideEffect {
38+ case clearWebPageImageDirectory
3739 case deleteAuth
40+ case fetchWebPageImageDirSize
3841 case signOut
3942 }
4043
@@ -86,27 +89,24 @@ final class SettingViewModel: Store {
8689 state. isNetworkConnected = isConnected
8790 case . setAlert( let isPresented, let type) :
8891 setAlert ( & state, isPresented: isPresented, type: type)
92+ case . setDirSize( let value) :
93+ state. dirSize = value
8994 case . setLoading( let value) :
9095 state. isLoading = value
9196 case . setTheme( let value) :
9297 state. theme = value
9398 updateSystemThemeUseCase. execute ( value)
9499 case . updateDirSize:
95- state . dirSize = fetchWebPageImageDirSizeUseCase . execute ( )
100+ effects = [ . fetchWebPageImageDirSize ]
96101 case . tapDeleteAuthButton:
97102 effects = [ . deleteAuth]
98103 case . tapSignOutButton:
99104 effects = [ . signOut]
100105 case . tapRemoveCacheButton:
101106 setAlert ( & state, isPresented: true , type: . removeCache)
102107 case . confirmRemoveCache:
103- do {
104- setAlert ( & state, isPresented: false )
105- try clearWebPageImageDirectoryUseCase. execute ( )
106- state. dirSize = fetchWebPageImageDirSizeUseCase. execute ( )
107- } catch {
108- setAlert ( & state, isPresented: true , type: . error)
109- }
108+ setAlert ( & state, isPresented: false )
109+ effects = [ . clearWebPageImageDirectory]
110110 }
111111
112112 if self . state != state { self . state = state }
@@ -115,6 +115,16 @@ final class SettingViewModel: Store {
115115
116116 func run( _ effect: SideEffect ) {
117117 switch effect {
118+ case . clearWebPageImageDirectory:
119+ Task {
120+ do {
121+ try await clearWebPageImageDirectoryUseCase. execute ( )
122+ let dirSize = await fetchWebPageImageDirSizeUseCase. execute ( )
123+ send ( . setDirSize( dirSize) )
124+ } catch {
125+ send ( . setAlert( isPresented: true , type: . error) )
126+ }
127+ }
118128 case . deleteAuth:
119129 beginLoading ( . delayed)
120130 Task {
@@ -126,6 +136,11 @@ final class SettingViewModel: Store {
126136 send ( . setAlert( isPresented: true , type: . error) )
127137 }
128138 }
139+ case . fetchWebPageImageDirSize:
140+ Task {
141+ let dirSize = await fetchWebPageImageDirSizeUseCase. execute ( )
142+ send ( . setDirSize( dirSize) )
143+ }
129144 case . signOut:
130145 beginLoading ( . delayed)
131146 Task {
0 commit comments