Skip to content

Commit 005277d

Browse files
author
Admin Apple
committed
added storage url pipe
1 parent f6815be commit 005277d

File tree

4 files changed

+39
-0
lines changed

4 files changed

+39
-0
lines changed

docs/storage/storage.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,16 @@ export class AppComponent {
186186

187187
### Downloading Files
188188

189+
A convenient pipe exists for simple in page references
190+
191+
```ts
192+
@Component({
193+
selector: 'app-root',
194+
template: `<img [src]="'users/davideast.jpg' | ngfbStorageUrl | async" />`
195+
})
196+
export class AppComponent {}
197+
```
198+
189199
To download a file you'll need to create a reference and call the `getDownloadURL()` method on an `AngularFireStorageReference`.
190200

191201
```ts
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { Pipe } from '@angular/core'
2+
import { AngularFireStorage } from '../storage';
3+
4+
/** to be used with in combination with | async */
5+
@Pipe({
6+
name: 'ngfbStorageUrl'
7+
}) export class AngularFirestoreStorageUrl {
8+
constructor(public storage:AngularFireStorage){}
9+
10+
transform(path) {
11+
return this.storage.ref(path).getDownloadURL()
12+
}
13+
}

src/storage/storage.module.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { NgModule, InjectionToken } from '@angular/core';
22
import { AngularFireStorage, StorageBucket } from './storage';
33
import 'firebase/storage';
4+
import { AngularFirestoreStorageUrl } from './pipes/storageUrl.pipe'
5+
46

57
@NgModule({
8+
declarations: [ AngularFirestoreStorageUrl ],
69
providers: [ AngularFireStorage ]
710
})
811
export class AngularFireStorageModule { }

src/storage/storage.spec.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { TestBed, inject } from '@angular/core/testing';
44
import { FirebaseApp, FirebaseOptionsToken, AngularFireModule, FirebaseNameOrConfigToken } from '@angular/fire';
55
import { AngularFireStorageModule, AngularFireStorage, AngularFireUploadTask, StorageBucket } from '@angular/fire/storage';
66
import { COMMON_CONFIG } from './test-config';
7+
import { AngularFirestoreStorageUrl } from './pipes/storageUrl.pipe'
78

89
describe('AngularFireStorage', () => {
910
let app: FirebaseApp;
@@ -199,4 +200,16 @@ describe('AngularFireStorage w/options', () => {
199200

200201
});
201202

203+
describe('pipes', () => {
204+
it('ngfbStorageUrl should download a url', (done) => {
205+
const ngfbStorageUrl = new AngularFirestoreStorageUrl( afStorage )
206+
const url$ = ngfbStorageUrl.transform('af.json')
207+
url$.subscribe(
208+
url => { expect(url).toBeDefined(); },
209+
e => { done.fail(); },
210+
done
211+
);
212+
});
213+
});
214+
202215
});

0 commit comments

Comments
 (0)