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