welcome.component.ts raw

   1  import { Component, inject } from '@angular/core';
   2  import { Router } from '@angular/router';
   3  import { BrowserSyncFlow, StorageService } from '@common';
   4  
   5  @Component({
   6    selector: 'app-welcome',
   7    imports: [],
   8    templateUrl: './welcome.component.html',
   9    styleUrl: './welcome.component.scss',
  10  })
  11  export class WelcomeComponent {
  12    readonly router = inject(Router);
  13    readonly #storage = inject(StorageService);
  14  
  15    async onClickSync(enabled: boolean) {
  16      const flow: BrowserSyncFlow = enabled
  17        ? BrowserSyncFlow.BROWSER_SYNC
  18        : BrowserSyncFlow.NO_SYNC;
  19  
  20      await this.#storage.enableBrowserSyncFlow(flow);
  21  
  22      // In case the user has selected the BROWSER_SYNC flow,
  23      // we have to check if there is sync data available (e.g. from
  24      // another browser instance).
  25      // If so, navigate to /vault-login, otherwise to /vault-create/home.
  26      if (flow === BrowserSyncFlow.BROWSER_SYNC) {
  27        const browserSyncData =
  28          await this.#storage.loadAndMigrateBrowserSyncData();
  29  
  30        if (
  31          typeof browserSyncData !== 'undefined' &&
  32          Object.keys(browserSyncData).length > 0
  33        ) {
  34          await this.router.navigateByUrl('/vault-login');
  35          return;
  36        }
  37      }
  38  
  39      await this.router.navigateByUrl('/vault-create/home');
  40    }
  41  }
  42