Repository navigation
Expand file tree
/
Copy pathref.ts
More file actions
51 lines (49 loc) · 2.01 KB
/
Copy pathref.ts
File metadata and controls
51 lines (49 loc) · 2.01 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
48
49
50
51
import { ListResult, Reference, SettableMetadata, StringFormat, UploadMetadata } from './interfaces';
import { AngularFireUploadTask, createUploadTask } from './task';
import { from, Observable, of } from 'rxjs';
import { ɵAngularFireSchedulers } from '@angular/fire';
import { observeOn, switchMap } from 'rxjs/operators';
export interface AngularFireStorageReference {
getDownloadURL(): Observable<any>;
getMetadata(): Observable<any>;
delete(): Observable<any>;
child(path: string): any;
updateMetadata(meta: SettableMetadata): Observable<any>;
put(data: any, metadata?: UploadMetadata | undefined): AngularFireUploadTask;
putString(data: string, format?: string | undefined, metadata?: UploadMetadata | undefined): AngularFireUploadTask;
listAll(): Observable<ListResult>;
}
/**
* Create an AngularFire wrapped Storage Reference. This object
* creates observable methods from promise based methods.
*/
export function createStorageRef(
ref: Reference,
schedulers: ɵAngularFireSchedulers,
keepUnstableUntilFirst: <T>(obs$: Observable<T>) => Observable<T>
): AngularFireStorageReference {
return {
getDownloadURL: () => of(undefined).pipe(
observeOn(schedulers.outsideAngular),
switchMap(() => ref.getDownloadURL()),
keepUnstableUntilFirst
),
getMetadata: () => of(undefined).pipe(
observeOn(schedulers.outsideAngular),
switchMap(() => ref.getMetadata()),
keepUnstableUntilFirst
),
delete: () => from(ref.delete()),
child: (path: string) => createStorageRef(ref.child(path), schedulers, keepUnstableUntilFirst),
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);
},
listAll: () => from(ref.listAll())
};
}