@@ -299,7 +299,9 @@ - (void)sendUpdateProgressForTaskId: (NSString*)taskId inStatus: (NSNumber*) sta
299299{
300300 NSArray *args = @[@(_callbackHandle), taskId, status, progress];
301301 if (initialized && _callbackHandle != 0 ) {
302- [_callbackChannel invokeMethod: @" " arguments: args];
302+ dispatch_async (dispatch_get_main_queue (), ^{
303+ [self -> _callbackChannel invokeMethod: @" " arguments: args];
304+ });
303305 } else {
304306 [_eventQueue addObject: args];
305307 }
@@ -361,11 +363,7 @@ - (NSURL*)fileUrlOf:(NSString*)taskId taskInfo:(NSDictionary*)taskInfo downloadT
361363 if (filename == nil || ![filename isKindOfClass: [NSString class ]] || [filename isEqualToString: @" " ]) {
362364 // If suggestedFilename is empty, use the last path component of the URL as the filename
363365 filename = [self sanitizeFilename: suggestedFilename];
364- } else {
365- // Sanitize the suggestedFilename to remove unsafe characters
366- filename = [self sanitizeFilename: filename];
367- }
368-
366+ }
369367 // Update the taskInfo with the sanitized filename
370368 NSMutableDictionary *mutableTaskInfo = [taskInfo mutableCopy ];
371369 mutableTaskInfo[KEY_FILE_NAME] = filename;
@@ -390,7 +388,25 @@ - (NSString*)absoluteSavedDirPathWithShortSavedDir:(NSString*)shortSavedDir sear
390388
391389- (NSString *)sanitizeFilename : (nullable NSString *)filename {
392390 // Define a list of allowed characters for filenames
393- NSCharacterSet *allowedCharacters = [NSCharacterSet characterSetWithCharactersInString: @" abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_." ];
391+ NSMutableCharacterSet *allowedCharacters = [[NSMutableCharacterSet alloc ] init ];
392+
393+ // Allow alphabetical characters (lowercase and uppercase)
394+ [allowedCharacters formUnionWithCharacterSet: [NSCharacterSet letterCharacterSet ]];
395+
396+ // Allow digits
397+ [allowedCharacters addCharactersInRange: NSMakeRange (' 0' , 10 )]; // ASCII digits
398+
399+ // Allow additional characters: -_.()
400+ [allowedCharacters addCharactersInString: @" -_.()" ];
401+
402+ // Allow empty spaces
403+ [allowedCharacters addCharactersInString: @" " ];
404+
405+ // Remove the backslash (if you want to disallow it)
406+ [allowedCharacters removeCharactersInString: @" \\ " ];
407+
408+ // Now, you have a character set that allows the specified characters
409+ NSCharacterSet *finalCharacterSet = [allowedCharacters copy ];
394410 if (filename == nil || [filename isEqual: [NSNull null ]] || [filename isEqualToString: @" " ]) {
395411 NSString *defaultFilename = @" default_filename" ;
396412 return defaultFilename;
0 commit comments