@@ -15,6 +15,8 @@ namespace Flow.Launcher.SettingPages.ViewModels;
15
15
16
16
public partial class SettingsPaneAboutViewModel : BaseModel
17
17
{
18
+ private static readonly string ClassName = nameof ( SettingsPaneAboutViewModel ) ;
19
+
18
20
private readonly Settings _settings ;
19
21
private readonly Updater _updater ;
20
22
@@ -103,13 +105,8 @@ private void AskClearLogFolderConfirmation()
103
105
104
106
if ( confirmResult == MessageBoxResult . Yes )
105
107
{
106
- try
108
+ if ( ! ClearLogFolder ( ) )
107
109
{
108
- ClearLogFolder ( ) ;
109
- }
110
- catch ( Exception e )
111
- {
112
- App . API . LogException ( nameof ( SettingsPaneAboutViewModel ) , "Failed to clear log folder" , e ) ;
113
110
App . API . ShowMsgBox ( App . API . GetTranslation ( "clearfolderfailMessage" ) ) ;
114
111
}
115
112
}
@@ -126,13 +123,8 @@ private void AskClearCacheFolderConfirmation()
126
123
127
124
if ( confirmResult == MessageBoxResult . Yes )
128
125
{
129
- try
130
- {
131
- ClearCacheFolder ( ) ;
132
- }
133
- catch ( Exception e )
126
+ if ( ! ClearCacheFolder ( ) )
134
127
{
135
- App . API . LogException ( nameof ( SettingsPaneAboutViewModel ) , "Failed to clear cache folder" , e ) ;
136
128
App . API . ShowMsgBox ( App . API . GetTranslation ( "clearfolderfailMessage" ) ) ;
137
129
}
138
130
}
@@ -161,19 +153,45 @@ private void OpenLogsFolder()
161
153
[ RelayCommand ]
162
154
private Task UpdateAppAsync ( ) => _updater . UpdateAppAsync ( false ) ;
163
155
164
- private void ClearLogFolder ( )
156
+ private bool ClearLogFolder ( )
165
157
{
158
+ var success = true ;
166
159
var logDirectory = GetLogDir ( ) ;
167
160
var logFiles = GetLogFiles ( ) ;
168
161
169
- logFiles . ForEach ( f => f . Delete ( ) ) ;
162
+ logFiles . ForEach ( f =>
163
+ {
164
+ try
165
+ {
166
+ f . Delete ( ) ;
167
+ }
168
+ catch ( Exception e )
169
+ {
170
+ App . API . LogException ( ClassName , $ "Failed to delete log file: { f . Name } ", e ) ;
171
+ success = false ;
172
+ }
173
+ } ) ;
170
174
171
175
logDirectory . EnumerateDirectories ( "*" , SearchOption . TopDirectoryOnly )
176
+ // Do not clean log files of current version
172
177
. Where ( dir => ! Constant . Version . Equals ( dir . Name ) )
173
178
. ToList ( )
174
- . ForEach ( dir => dir . Delete ( ) ) ;
179
+ . ForEach ( dir =>
180
+ {
181
+ try
182
+ {
183
+ dir . Delete ( ) ;
184
+ }
185
+ catch ( Exception e )
186
+ {
187
+ App . API . LogException ( ClassName , $ "Failed to delete log directory: { dir . Name } ", e ) ;
188
+ success = false ;
189
+ }
190
+ } ) ;
175
191
176
192
OnPropertyChanged ( nameof ( LogFolderSize ) ) ;
193
+
194
+ return success ;
177
195
}
178
196
179
197
private static DirectoryInfo GetLogDir ( string version = "" )
@@ -186,18 +204,43 @@ private static List<FileInfo> GetLogFiles(string version = "")
186
204
return GetLogDir ( version ) . EnumerateFiles ( "*" , SearchOption . AllDirectories ) . ToList ( ) ;
187
205
}
188
206
189
- private void ClearCacheFolder ( )
207
+ private bool ClearCacheFolder ( )
190
208
{
209
+ var success = true ;
191
210
var cacheDirectory = GetCacheDir ( ) ;
192
211
var cacheFiles = GetCacheFiles ( ) ;
193
212
194
- cacheFiles . ForEach ( f => f . Delete ( ) ) ;
213
+ cacheFiles . ForEach ( f =>
214
+ {
215
+ try
216
+ {
217
+ f . Delete ( ) ;
218
+ }
219
+ catch ( Exception e )
220
+ {
221
+ App . API . LogException ( ClassName , $ "Failed to delete cache file: { f . Name } ", e ) ;
222
+ success = false ;
223
+ }
224
+ } ) ;
195
225
196
226
cacheDirectory . EnumerateDirectories ( "*" , SearchOption . TopDirectoryOnly )
197
227
. ToList ( )
198
- . ForEach ( dir => dir . Delete ( true ) ) ;
228
+ . ForEach ( dir =>
229
+ {
230
+ try
231
+ {
232
+ dir . Delete ( true ) ;
233
+ }
234
+ catch ( Exception e )
235
+ {
236
+ App . API . LogException ( ClassName , $ "Failed to delete cache directory: { dir . Name } ", e ) ;
237
+ success = false ;
238
+ }
239
+ } ) ;
199
240
200
241
OnPropertyChanged ( nameof ( CacheFolderSize ) ) ;
242
+
243
+ return success ;
201
244
}
202
245
203
246
private static DirectoryInfo GetCacheDir ( )
0 commit comments