1.1.0 • Published 5 months ago

@remscodes/ngx-renault-api-client v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

github ci npm version bundle size license

Installation

npm install @remscodes/ngx-renault-api-client

Usage

// app.config.ts
import { ApplicationConfig } from '@angular/core';
import { provideRenaultClient } from '@remscodes/ngx-renault-api-client';

export const appConfig: ApplicationConfig = {
  providers: [provideRenaultClient()],
};
// app.component.ts
import { Component, DestroyRef, inject } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { NgxGigyaClient, NgxKamereonClient, NgxRenaultSession } from '@remscodes/ngx-renault-api-client';
import { concatMap } from 'rxjs';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrl: './app.component.css',
  standalone: true,
  imports: [],
})
export class AppComponent {

  private gigya = inject(NgxGigyaClient);
  private kamereon = inject(NgxKamereonClient);
  private session = inject(NgxRenaultSession);
  private destroyRef = inject(DestroyRef);

  // (1) Login to gigya service
  login(): void {
    // will store automatically `gigyaToken` into session.
    this.gigya.login('myLogin', 'myPassword')
      .pipe(
        // will store automatically `personId` into session
        concatMap(() => this.gigya.getAccountInfo()),
        // will store automatically `token` into session
        concatMap(() => this.gigya.getJwt()),
        takeUntilDestroyed(this.destroyRef),
      )
      .subscribe({
        next: () => console.info('Logged in.'),
      });
  }

  // (2) Get user's accounts
  getAccounts(): void {
    this.kamereon.getPerson()
      .pipe(takeUntilDestroyed(this.destroyRef))
      .subscribe({
        next: ({ accounts }) => {
          // Select the accountId you want
          this.session.accountId = accounts[0].accountId;
        },
      });
  }

  // (3) Get account's vehicles
  getVehicles(): void {
    this.kamereon.getAccountVehicles()
      .pipe(takeUntilDestroyed(this.destroyRef))
      .subscribe({
        next: ({ vehicleLinks }) => {
          // Select the vin you want 
          this.session.vin = vehicleLinks[0].vin;
        },
      });
  }

  // (4) Get current battery status
  getBatteryStatus(): void {
    this.kamereon.readBatteryStatus()
      .pipe(takeUntilDestroyed(this.destroyRef))
      .subscribe({
        next: (batteryStatus) => {
          // handle battery status
        },
      });
  }

  // (5) Invalidate the gigya token (stored in session)
  logout(): void {
    this.gigya.logout()
      .pipe(takeUntilDestroyed(this.destroyRef))
      .subscribe({
        next: () => console.info('Logged out.'),
      });
  }
}

Examples

Disclaimer

This project is not affiliated with, endorsed by, or connected to Renault. I accept no responsibility for any consequences, intentional or accidental, resulting from interaction with the Renault's API using this project.

Credit

Resources API based on @remscodes/renault-api.

License

MIT © Rémy Abitbol.

1.1.0

5 months ago

1.0.0

6 months ago