11import { Inject , Injectable } from '@angular/core' ;
2- import { FirebaseUrl } from '../tokens' ;
2+ import { FirebaseConfig } from '../tokens' ;
3+ import { FirebaseAppConfig } from '../angularfire2' ;
34import { FirebaseListObservable } from '../utils/firebase_list_observable' ;
45import { FirebaseObjectObservable } from '../utils/firebase_object_observable' ;
56import { FirebaseListFactory , FirebaseListFactoryOpts } from '../utils/firebase_list_factory' ;
@@ -8,25 +9,26 @@ import * as utils from '../utils/utils'
89
910@Injectable ( )
1011export class FirebaseDatabase {
11- constructor ( @Inject ( FirebaseUrl ) private fbUrl : string ) { }
12- list ( urlOrRef :string | Firebase , opts ?:FirebaseListFactoryOpts ) :FirebaseListObservable < any [ ] > {
12+ constructor ( @Inject ( FirebaseConfig ) private fbConfig : FirebaseAppConfig ) { }
13+ list ( urlOrRef :string | firebase . database . Reference , opts ?:FirebaseListFactoryOpts ) :FirebaseListObservable < any [ ] > {
1314 return utils . checkForUrlOrFirebaseRef ( urlOrRef , {
14- isUrl : ( ) => FirebaseListFactory ( getAbsUrl ( this . fbUrl , < string > urlOrRef ) , opts ) ,
15- isRef : ( ) => FirebaseListFactory ( < Firebase > urlOrRef )
15+ isUrl : ( ) => FirebaseListFactory ( getAbsUrl ( this . fbConfig , < string > urlOrRef ) , opts ) ,
16+ isRef : ( ) => FirebaseListFactory ( < firebase . database . Reference > urlOrRef )
1617 } ) ;
1718 }
18- object ( urlOrRef : string | Firebase , opts ?:FirebaseObjectFactoryOpts ) :FirebaseObjectObservable < any > {
19+ object ( urlOrRef : string | firebase . database . Reference , opts ?:FirebaseObjectFactoryOpts ) :FirebaseObjectObservable < any > {
1920 return utils . checkForUrlOrFirebaseRef ( urlOrRef , {
20- isUrl : ( ) => FirebaseObjectFactory ( getAbsUrl ( this . fbUrl , < string > urlOrRef ) , opts ) ,
21+ isUrl : ( ) => FirebaseObjectFactory ( getAbsUrl ( this . fbConfig , < string > urlOrRef ) , opts ) ,
2122 isRef : ( ) => FirebaseObjectFactory ( urlOrRef )
2223 } ) ;
2324 }
2425}
2526
26- function getAbsUrl ( root :string , url :string ) {
27+ function getAbsUrl ( root :FirebaseAppConfig , url :string ) {
2728 if ( ! ( / ^ [ a - z ] + : \/ \/ .* / . test ( url ) ) ) {
2829 // Provided url is relative.
29- url = root + url ;
30+ // Strip any leading slash
31+ url = root . databaseURL + '/' + utils . stripLeadingSlash ( url ) ;
3032 }
3133 return url ;
32- }
34+ }
0 commit comments