Skip to content

Commit

Permalink
Merge pull request #52 from zenoxs/ios-readir-bookmark-security-scope…
Browse files Browse the repository at this point in the history
…d-url

implement security scoped url with bookmark for readDir on iOS
  • Loading branch information
birdofpreyru authored Jun 15, 2024
2 parents 5454349 + 4f3d375 commit bda4fc6
Showing 1 changed file with 31 additions and 18 deletions.
49 changes: 31 additions & 18 deletions ios/ReactNativeFs.mm
Original file line number Diff line number Diff line change
Expand Up @@ -45,29 +45,42 @@ - (instancetype) init
resolve:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject)
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error = nil;
NSURL *dirUrl = [ReactNativeFs pathToUrl:dirPath error:&error];
if (error) return [[RNFSException fromError:error] reject:reject];

NSArray *contents = [fileManager contentsOfDirectoryAtPath:dirPath error:&error];
NSMutableArray *tagetContents = [[NSMutableArray alloc] init];
for (NSString *obj in contents) {
NSString *path = [dirPath stringByAppendingPathComponent:obj];
NSDictionary *attributes = [fileManager attributesOfItemAtPath:path error:nil];
if(attributes != nil) {
[tagetContents addObject:@{
@"ctime": [self dateToTimeIntervalNumber:(NSDate *)[attributes objectForKey:NSFileCreationDate]],
@"mtime": [self dateToTimeIntervalNumber:(NSDate *)[attributes objectForKey:NSFileModificationDate]],
@"name": obj,
@"path": path,
@"size": [attributes objectForKey:NSFileSize],
@"type": [attributes objectForKey:NSFileType]
}];
BOOL allowed = [dirUrl startAccessingSecurityScopedResource];

NSFileManager *fileManager = [NSFileManager defaultManager];

@try {
NSArray *contents = [fileManager contentsOfDirectoryAtPath:dirPath error:&error];
NSMutableArray *tagetContents = [[NSMutableArray alloc] init];
for (NSString *obj in contents) {
NSString *path = [dirUrl stringByAppendingPathComponent:obj];
NSDictionary *attributes = [fileManager attributesOfItemAtPath:path error:nil];
if(attributes != nil) {
[tagetContents addObject:@{
@"ctime": [self dateToTimeIntervalNumber:(NSDate *)[attributes objectForKey:NSFileCreationDate]],
@"mtime": [self dateToTimeIntervalNumber:(NSDate *)[attributes objectForKey:NSFileModificationDate]],
@"name": obj,
@"path": path,
@"size": [attributes objectForKey:NSFileSize],
@"type": [attributes objectForKey:NSFileType]
}];
}
}
}

if (error) return [[RNFSException fromError:error] reject:reject];
if (error) return [[RNFSException fromError:error] reject:reject];

resolve(tagetContents);
resolve(tagetContents);
}
@catch (NSException *exception) {
reject(@"exception", exception.reason, nil);
}
@finally {
if (allowed) [dirUrl stopAccessingSecurityScopedResource];
}
}

RCT_EXPORT_METHOD(exists:(NSString *)filepath
Expand Down

0 comments on commit bda4fc6

Please sign in to comment.