42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { Component, inject } from '@angular/core';
|
|
import { Router } from '@angular/router';
|
|
import { BrowserSyncFlow, StorageService } from '@common';
|
|
|
|
@Component({
|
|
selector: 'app-welcome',
|
|
imports: [],
|
|
templateUrl: './welcome.component.html',
|
|
styleUrl: './welcome.component.scss',
|
|
})
|
|
export class WelcomeComponent {
|
|
readonly router = inject(Router);
|
|
readonly #storage = inject(StorageService);
|
|
|
|
async onClickSync(enabled: boolean) {
|
|
const flow: BrowserSyncFlow = enabled
|
|
? BrowserSyncFlow.BROWSER_SYNC
|
|
: BrowserSyncFlow.NO_SYNC;
|
|
|
|
await this.#storage.enableBrowserSyncFlow(flow);
|
|
|
|
// In case the user has selected the BROWSER_SYNC flow,
|
|
// we have to check if there is sync data available (e.g. from
|
|
// another browser instance).
|
|
// If so, navigate to /vault-login, otherwise to /vault-create/home.
|
|
if (flow === BrowserSyncFlow.BROWSER_SYNC) {
|
|
const browserSyncData =
|
|
await this.#storage.loadAndMigrateBrowserSyncData();
|
|
|
|
if (
|
|
typeof browserSyncData !== 'undefined' &&
|
|
Object.keys(browserSyncData).length > 0
|
|
) {
|
|
await this.router.navigateByUrl('/vault-login');
|
|
return;
|
|
}
|
|
}
|
|
|
|
await this.router.navigateByUrl('/vault-create/home');
|
|
}
|
|
}
|