---
# System prepended metadata

title: '<center>6^th^ August, 2019</center>'
tags: [Daily Internship Documentation]

---

# <center>6^th^ August, 2019</center>

###### tags: `Daily Internship Documentation`
---
## 25^th^ Day of Internship

## Summary

Today I create a logout feature for the student app.

URL:
* [**NTUST_SmartDispenser Github ver 2019.08.06**](https://github.com/ianjoseph2204/NTUST_SmartDispenser/tree/7071ee36fb8dbe28dd0c85c018e38b39363709d8)

---
## Documentation

### 1. Dashboard Page
#### 1.1 dashboard.page.ts

1. Create a variable to store the boolean value of the Log out button.
```typescript=40
private static logoutButton: boolean = false;
```

2. Modify the ionViewDidEnter().
```typescript=90
  async ionViewDidEnter() {
    if (this.ngOnInitDone) {
      await this.getLoginEmail();

      // Log out button appear if user logged in.
      await DashboardPage.setLogOut(this.emailAddress);

      // always check if any report submitted from login id
      await this.setReportCondition(this.emailAddress);

      // always check if dispenser is being tracked
      await this.setTrackCondition(this.emailAddress);
    }
  }
```

3. Create getter & setter for logoutButton variable.
```typescript=105
  getLogoutButton(): boolean {
    return DashboardPage.logoutButton;
  }

  public static setLogoutButton(value: boolean) {
    this.logoutButton = value;
  }
```

4. Create *logout()* method.

```typescript=435
  /**
   * 1. Remove the user email from the preference.
   * 2. Display an alert when the logout is success.
   */
  async logout(){
    await this.pref.saveData(StaticVariable.KEY__SESSION_ID, "");

    // gives alert that track is success
    let alert = await this.alertCtrl.create({
      mode: 'ios',
      message: 'Logout success!',
      buttons: [
        {
          text: 'OK',
          handler: () => { }
        }
      ]
    });

    // display the alert controller
    await alert.present();

    DashboardPage.reloadPage();
  }
```

5. Create a method to set the logoutButton variable according to the session.
```typescript=493
  /**
   * Set the Log out button is on or off depend of the existence of the user's email.
   *
   * @param email User's email address.
   */
  static async setLogOutBySession (email: string) {
    //If email is exist, display Logout button.
    if (email !== "") {
      DashboardPage.setLogoutButton(true);
    } else {
      DashboardPage.setLogoutButton(false);
    }
  }
```

#### 1.2 dashboard.page.html

1. Create a Logout button that will be appear if the user logged in.
```htmlmixed=17
            <!--If user is logged in, show Log out button-->
            <button class="more-button" *ngIf="getLogoutButton()" (click)="logout()" color="red">Log out</button>
```

---
## Result

<font color=red>After the user log in, the Logout button will appear in the More button:</font>
![](https://i.imgur.com/zOGlNSs.gif)
