@@ -53,45 +53,36 @@ @implementation FirestackStorage
5353 return callback (@[err]);
5454 }
5555
56+ FIRStorageReference *storageRef = [[FIRStorage storage ] referenceForURL: urlStr];
57+ FIRStorageReference *uploadRef = [storageRef child: name];
58+ FIRStorageMetadata *firmetadata = [[FIRStorageMetadata alloc ] initWithDictionary: metadata];
59+
5660 if ([path hasPrefix: @" assets-library://" ]) {
5761 NSURL *localFile = [[NSURL alloc ] initWithString: path];
5862 PHFetchResult* assets = [PHAsset fetchAssetsWithALAssetURLs: @[localFile] options: nil ];
5963 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- }];
64+ [[PHImageManager defaultManager ] requestImageDataForAsset: asset
65+ options: nil
66+ resultHandler: ^(NSData * imageData, NSString * dataUTI, UIImageOrientation orientation, NSDictionary * info) {
67+ FIRStorageUploadTask *uploadTask = [uploadRef putData: imageData
68+ metadata: firmetadata];
69+ [self addUploadObservers: uploadTask
70+ callback: callback];
71+ }];
7072 } else {
71- NSURL *localFile = [NSURL fileURLWithPath: path];
72- FIRStorageMetadata *firmetadata = [[FIRStorageMetadata alloc ] initWithDictionary: metadata];
73+ NSURL *imageFile = [NSURL fileURLWithPath: path];
74+ FIRStorageUploadTask *uploadTask = [uploadRef putFile: imageFile
75+ metadata: firmetadata];
7376
74- [self performUpload: urlStr
75- name: name
76- file: localFile
77- metadata: firmetadata
78- callback: callback];
77+ [self addUploadObservers: uploadTask
78+ callback: callback];
7979 }
8080
8181}
8282
83- - (void ) performUpload : (NSString *) urlStr
84- name : (NSString *) name
85- file : (NSURL *) imageFile
86- metadata : (FIRStorageMetadata *) firmetadata
87- callback : (RCTResponseSenderBlock) callback
83+ - (void ) addUploadObservers : (FIRStorageUploadTask *) uploadTask
84+ callback : (RCTResponseSenderBlock) callback
8885{
89- FIRStorageReference *storageRef = [[FIRStorage storage ] referenceForURL: urlStr];
90- FIRStorageReference *uploadRef = [storageRef child: name];
91-
92- FIRStorageUploadTask *uploadTask = [uploadRef putFile: imageFile
93- metadata: firmetadata];
94-
9586 // Listen for state changes, errors, and completion of the upload.
9687 [uploadTask observeStatus: FIRStorageTaskStatusResume handler: ^(FIRStorageTaskSnapshot *snapshot) {
9788 // Upload resumed, also fires when the upload starts
0 commit comments