Repository navigation
Expand file tree
/
Copy pathref.ts
More file actions
47 lines (45 loc) · 1.94 KB
/
Copy pathref.ts
File metadata and controls
47 lines (45 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { SettableMetadata, UploadMetadata, Reference, StringFormat } from './interfaces';
import { createUploadTask, AngularFireUploadTask } from './task';
import { Observable, from } from 'rxjs';
import { FirebaseZoneScheduler } from '@angular/fire';
export interface AngularFireStorageReference {
getDownloadURL(): Observable<any>;
getMetadata(): Observable<any>;
delete(): Observable<any>;
child(path: string): any;
updateMetatdata(meta: SettableMetadata): Observable<any>;
updateMetadata(meta: SettableMetadata): Observable<any>;
put(data: any, metadata?: UploadMetadata | undefined): AngularFireUploadTask;
putString(data: string, format?: string | undefined, metadata?: UploadMetadata | undefined): AngularFireUploadTask;
}
/**
* Create an AngularFire wrapped Storage Reference. This object
* creates observable methods from promise based methods.
* @param ref
*/
export function createStorageRef(ref: Reference, scheduler: FirebaseZoneScheduler): AngularFireStorageReference {
return {
getDownloadURL: () => scheduler.keepUnstableUntilFirst(
scheduler.runOutsideAngular(
from(scheduler.zone.runOutsideAngular(() => ref.getDownloadURL()))
)
),
getMetadata: () => scheduler.keepUnstableUntilFirst(
scheduler.runOutsideAngular(
from(scheduler.zone.runOutsideAngular(() => ref.getMetadata()))
)
),
delete: () => from(ref.delete()),
child: (path: string) => createStorageRef(ref.child(path), scheduler),
updateMetatdata: (meta: SettableMetadata) => from(ref.updateMetadata(meta)),
updateMetadata: (meta: SettableMetadata) => from(ref.updateMetadata(meta)),
put: (data: any, metadata?: UploadMetadata) => {
const task = ref.put(data, metadata);
return createUploadTask(task);
},
putString: (data: string, format?: StringFormat, metadata?: UploadMetadata) => {
const task = ref.putString(data, format, metadata);
return createUploadTask(task);
}
};
}