Skip to content

Commit 167d179

Browse files
authored
Merge pull request #60 from chrisbianca/master
Support asset-library / camera roll URLs
2 parents d6d78fe + 6ef97b8 commit 167d179

File tree

1 file changed

+37
-5
lines changed

1 file changed

+37
-5
lines changed

ios/Firestack/FirestackStorage.m

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#import "FirestackStorage.h"
1010
#import "FirestackEvents.h"
1111

12+
#import <Photos/Photos.h>
13+
1214
@implementation FirestackStorage
1315

1416
RCT_EXPORT_MODULE(FirestackStorage);
@@ -51,15 +53,45 @@ @implementation FirestackStorage
5153
return callback(@[err]);
5254
}
5355

56+
if ([path hasPrefix:@"assets-library://"]) {
57+
NSURL *localFile = [[NSURL alloc] initWithString:path];
58+
PHFetchResult* assets = [PHAsset fetchAssetsWithALAssetURLs:@[localFile] options:nil];
59+
PHAsset *asset = [assets firstObject];
60+
[asset requestContentEditingInputWithOptions:nil
61+
completionHandler:^(PHContentEditingInput *contentEditingInput, NSDictionary *info) {
62+
NSURL *imageFile = contentEditingInput.fullSizeImageURL;
63+
64+
[self performUpload:urlStr
65+
name:name
66+
file:imageFile
67+
metadata:nil
68+
callback:callback];
69+
}];
70+
} else {
71+
NSURL *localFile = [NSURL fileURLWithPath:path];
72+
FIRStorageMetadata *firmetadata = [[FIRStorageMetadata alloc] initWithDictionary:metadata];
73+
74+
[self performUpload:urlStr
75+
name:name
76+
file:localFile
77+
metadata:firmetadata
78+
callback:callback];
79+
}
80+
81+
}
82+
83+
- (void) performUpload:(NSString *) urlStr
84+
name:(NSString *) name
85+
file:(NSURL *) imageFile
86+
metadata:(FIRStorageMetadata *) firmetadata
87+
callback:(RCTResponseSenderBlock) callback
88+
{
5489
FIRStorageReference *storageRef = [[FIRStorage storage] referenceForURL:urlStr];
5590
FIRStorageReference *uploadRef = [storageRef child:name];
5691

57-
NSURL *localFile = [NSURL fileURLWithPath:path];
58-
59-
FIRStorageMetadata *firmetadata = [[FIRStorageMetadata alloc] initWithDictionary:metadata];
60-
61-
FIRStorageUploadTask *uploadTask = [uploadRef putFile:localFile
92+
FIRStorageUploadTask *uploadTask = [uploadRef putFile:imageFile
6293
metadata:firmetadata];
94+
6395
// Listen for state changes, errors, and completion of the upload.
6496
[uploadTask observeStatus:FIRStorageTaskStatusResume handler:^(FIRStorageTaskSnapshot *snapshot) {
6597
// Upload resumed, also fires when the upload starts

0 commit comments

Comments
 (0)