Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: angular/angularfire
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: ashishpatelcs/angularfire2
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 14 commits
  • 5 files changed
  • 1 contributor

Commits on Oct 21, 2018

  1. Minor grammar fix

    ashishpatelcs authored Oct 21, 2018
    Configuration menu
    Copy the full SHA
    42b3400 View commit details
    Browse the repository at this point in the history
  2. Update version-4-upgrade.md

    # Upgrading to AngularFire2 4.0
    
    AngularFire2 4.0 is a refactor of the AngularFire2 package which implements
    @NgModule, simplifies authentication, and better supports Angular 4.
    
    ### Removing `AngularFire` for Modularity
    
    Prior to 4.0, AngularFire2 did not take advantage of the Firebase SDK's modularity for tree shaking. The `AngularFire` service has now been removed and the library is broken up into smaller `@NgModule`s:
    
    * `AngularFireModule`
    * `AngularFireDatabaseModule`
    * `AngularFireAuthModule`
    
    When upgrading, replace calls to `AngularFire.database` and `AngularFire.auth` with `AngularFireDatabase` and `AngularFireAuth` respectively.
    
    ```typescript
    constructor(af: AngularFire) {
      af.database.list('foo');
      af.auth;
    }
    ```
    Should now be:
    
    ```typescript
    constructor(db: AngularFireDatabase, afAuth: AngularFireAuth) {
      db.list('foo');
      afAuth.authState;
    }
    ```
    
    ### Simplified Authentication API
    
    In 4.0 we've reduced the complexity of the auth module by providing only [`firebase.User`](https://firebase.google.com/docs/reference/js/firebase.User) observers (`AngularFireAuth.authState`, `AngularFireAuth.idToken`) and cutting the methods that were wrapping the Firebase SDK.
    
    
    ```typescript
    import { AngularFireAuth } from 'angularfire2/auth';
    // Do not import from 'firebase' as you'd lose the tree shaking benefits
    import firebase from 'firebase/app';
    ...
    
    user: Observable<firebase.User>;
    constructor(afAuth: AngularFireAuth) {
      this.user = afAuth.authState; // only triggered on sign-in/out (for old behavior use .idToken)
    }
    ```
    
    AngularFire2 exposes the raw Firebase Auth object via `AngularFireAuth.auth`. For actions like login, logout, user creation, etc. you should use the [methods available to `firebase.auth.Auth`](https://firebase.google.com/docs/reference/js/firebase.auth.Auth).
    
    While convenient, the pre-configured login feature added unneeded complexity. `AngularFireModule.initializeApp` no longer takes a default sign in method. Sign in should be done with the Firebase SDK via `firebase.auth.Auth`:
    
    ```typescript
    login() {
      this.afAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider());
    }
    logout() {
      this.afAuth.auth.signOut();
    }
    ```
    
    ### FirebaseListFactory and FirebaseObjectFactory API Changes
    
    If you directly use `FirebaseListFactory` or `FirebaseObjectFactory` you will no longer be able to pass in a string, it will instead expect a Firebase database reference.
    
    ## Putting this all together
    
    Here's an example of what AngularFire2 4.0 looks like:
    
    ```typescript
    import { NgModule, Component } from '@angular/core';
    import { Observable } from 'rxjs/Observable';
    import { AngularFireModule } from 'angularfire2';
    import { AngularFireDatabaseModule, AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';
    import { AngularFireAuthModule, AngularFireAuth } from 'angularfire2/auth';
    import { environment } from '../environments/environment';
    
    // Do not import from 'firebase' as you'd lose the tree shaking benefits
    import firebase from 'firebase/app';
    
    
    @NgModule({
      declarations: [ App ],
      exports: [ App ],
      imports: [ 
        AngularFireModule.initializeApp(environment.firebase, 'my-app'),
        AngularFireDatabaseModule,
        AngularFireAuthModule
      ],
      bootstrap: [ App ]
    })
    export class MyModule { }
    
    ```
    
    ```typescript
    @component({
      selector: 'my-app',
      template: `
        <div> {{ (items | async)? | json }} </div>
        <div> {{ (user | async)? | json }} </div>
        <button (click)="login()">Login</button>
        <button (click)="logout()">Logout</button>
      `
    })
    export class App {
      user: Observable<firebase.User>;
      items: FirebaseListObservable<any[]>;
      constructor(afAuth: AngularFireAuth, db: AngularFireDatabase) {
        this.user = afAuth.authState;
        this.items = db.list('items');
      }
      login() {
        this.afAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider());
      }
      logout() {
         this.afAuth.auth.signOut();
      }
    }
    ```
    ashishpatelcs authored Oct 21, 2018
    Configuration menu
    Copy the full SHA
    46d67a6 View commit details
    Browse the repository at this point in the history
  3. minor grammar fix

    ashishpatelcs authored Oct 21, 2018
    Configuration menu
    Copy the full SHA
    7a9b89a View commit details
    Browse the repository at this point in the history
  4. typo fix

    ashishpatelcs authored Oct 21, 2018
    Configuration menu
    Copy the full SHA
    dc78792 View commit details
    Browse the repository at this point in the history
  5. typo and grammar fixes

    ashishpatelcs authored Oct 21, 2018
    Configuration menu
    Copy the full SHA
    333faa7 View commit details
    Browse the repository at this point in the history
  6. small typo fix

    ashishpatelcs authored Oct 21, 2018
    Configuration menu
    Copy the full SHA
    59e4337 View commit details
    Browse the repository at this point in the history
  7. Merge pull request #1 from ashishpatelcs/patch-1

    Minor grammar fix
    ashishpatelcs authored Oct 21, 2018
    Configuration menu
    Copy the full SHA
    9fff1a2 View commit details
    Browse the repository at this point in the history
  8. Merge pull request #2 from ashishpatelcs/patch-2

    Update version-4-upgrade.md
    ashishpatelcs authored Oct 21, 2018
    Configuration menu
    Copy the full SHA
    bd2b5ad View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    d10cac2 View commit details
    Browse the repository at this point in the history
  10. Merge pull request #3 from ashishpatelcs/patch-3

    minor grammar fix
    ashishpatelcs authored Oct 21, 2018
    Configuration menu
    Copy the full SHA
    e46b202 View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    05bccbf View commit details
    Browse the repository at this point in the history
  12. Merge pull request #5 from ashishpatelcs/patch-5

    typo and grammar fixes
    ashishpatelcs authored Oct 21, 2018
    Configuration menu
    Copy the full SHA
    03a408b View commit details
    Browse the repository at this point in the history
  13. Merge pull request #6 from ashishpatelcs/patch-6

    small typo fix
    ashishpatelcs authored Oct 21, 2018
    Configuration menu
    Copy the full SHA
    c7b2e56 View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    81a1e31 View commit details
    Browse the repository at this point in the history
Loading