1+ /* @flow */
12import { NativeModules , NativeEventEmitter } from 'react-native' ;
23
34import { promisify , noop } from '../utils' ;
@@ -13,9 +14,14 @@ class StorageRef extends ReferenceBase {
1314 this . storage = storage ;
1415 }
1516
16- downloadUrl ( ) {
17+ downloadUrl ( ) : Promise < Object > {
1718 const path = this . pathToString ( ) ;
18- return promisify ( 'downloadUrl' , FirestackStorage ) ( this . storage . storageUrl , path ) ;
19+ this . log . debug ( 'downloadUrl(' , path , ')' ) ;
20+ return promisify ( 'downloadUrl' , FirestackStorage ) ( this . storage . storageUrl , path )
21+ . catch ( err => {
22+ this . log . error ( 'Error downloading URL for ' , path , '. Error: ' , err ) ;
23+ throw err ;
24+ } ) ;
1925 }
2026
2127 /**
@@ -24,8 +30,9 @@ class StorageRef extends ReferenceBase {
2430 * @param listener
2531 * @return {Promise }
2632 */
27- download ( downloadPath : string , listener : Function = noop ) {
33+ download ( downloadPath : string , listener : Function = noop ) : Promise < Object > {
2834 const path = this . pathToString ( ) ;
35+ this . log . debug ( 'download(' , path , ') -> ' , downloadPath ) ;
2936 const listeners = [
3037 this . storage . _addListener ( 'download_progress' , listener ) ,
3138 this . storage . _addListener ( 'download_paused' , listener ) ,
@@ -34,19 +41,22 @@ class StorageRef extends ReferenceBase {
3441
3542 return promisify ( 'downloadFile' , FirestackStorage ) ( this . storage . storageUrl , path , downloadPath )
3643 . then ( ( res ) => {
37- console . log ( 'res --->' , res ) ;
38- listeners . forEach ( this . storage . _removeListener ) ;
44+ this . log . debug ( 'res --->' , res ) ;
45+ listeners . forEach ( listener => listener . remove ( ) ) ;
3946 return res ;
4047 } )
41- . catch ( ( downloadError ) => {
42- console . log ( 'Got an error ->' , downloadError ) ;
43- return Promise . reject ( downloadError ) ;
48+ . catch ( err => {
49+ this . log . error ( 'Error downloading ' , path , ' to ' , downloadPath , '. Error: ' , err ) ;
50+ throw err ;
4451 } ) ;
4552 }
4653}
4754
55+ type StorageOptionsType = {
56+ storageBucket ?: ?string ,
57+ } ;
4858export default class Storage extends Base {
49- constructor ( firestack , options = { } ) {
59+ constructor ( firestack : Object , options : StorageOptionsType = { } ) {
5060 super ( firestack , options ) ;
5161
5262 if ( this . options . storageBucket ) {
@@ -56,8 +66,8 @@ export default class Storage extends Base {
5666 this . refs = { } ;
5767 }
5868
59- ref ( ...path ) {
60- const key = this . _pathKey ( path ) ;
69+ ref ( ...path : Array < string > ) : StorageRef {
70+ const key = this . _pathKey ( ... path ) ;
6171 if ( ! this . refs [ key ] ) {
6272 const ref = new StorageRef ( this , path ) ;
6373 this . refs [ key ] = ref ;
@@ -73,8 +83,9 @@ export default class Storage extends Base {
7383 * @param listener
7484 * @return {Promise }
7585 */
76- uploadFile ( name : string , filePath : string , metadata : Object = { } , listener : Function = noop ) {
86+ uploadFile ( name : string , filePath : string , metadata : Object = { } , listener : Function = noop ) : Promise < Object > {
7787 const _filePath = filePath . replace ( 'file://' , '' ) ;
88+ this . log . debug ( 'uploadFile(' , _filepath , ') -> ' , name ) ;
7889 const listeners = [
7990 this . _addListener ( 'upload_paused' , listener ) ,
8091 this . _addListener ( 'upload_resumed' , listener ) ,
@@ -83,29 +94,30 @@ export default class Storage extends Base {
8394
8495 return promisify ( 'uploadFile' , FirestackStorage ) ( this . storageUrl , name , _filePath , metadata )
8596 . then ( ( res ) => {
86- listeners . forEach ( this . _removeListener ) ;
97+ listeners . forEach ( listener => listener . remove ( ) ) ;
8798 return res ;
99+ } )
100+ . catch ( err => {
101+ this . log . error ( 'Error uploading file ' , name , ' to ' , filepath , '. Error: ' , err ) ;
102+ throw err ;
88103 } ) ;
89104 }
90105
91- getRealPathFromURI ( uri ) {
106+ getRealPathFromURI ( uri : string ) : Promise < string > {
92107 return promisify ( 'getRealPathFromURI ', FirestackStorage ) ( uri ) ;
93108 }
94109
95- _addListener ( evt , cb ) {
96- return FirestackStorageEvt . addListener ( evt , cb ) ;
97- }
98-
99- _removeListener ( evt ) {
100- return FirestackStorageEvt . removeListener ( evt ) ;
110+ _addListener ( evt : string , cb : ( evt : Object ) => Object ) : { remove : ( ) => void } {
111+ let listener = FirestackStorageEvt . addListener ( evt , cb ) ;
112+ return listener ;
101113 }
102114
103- setStorageUrl ( url ) {
115+ setStorageUrl ( url : string ) : void {
104116 // return promisify('setStorageUrl', FirestackStorage)(url);
105117 this . storageUrl = `gs://${ url } ` ;
106118 }
107119
108- _pathKey ( ...path ) {
120+ _pathKey ( ...path : Array < string > ) : string {
109121 return path . join ( '-' ) ;
110122 }
111123
@@ -121,8 +133,8 @@ export default class Storage extends Base {
121133 FILETYPE_DIRECTORY : FirestackStorage . FILETYPE_DIRECTORY ,
122134 } ;
123135
124- get namespace ( ) {
125- return 'firestack:storage' ;
136+ get namespace ( ) : string {
137+ return 'firestack :storage '
126138 }
127139}
128140
0 commit comments