bitwarden-estensione-browser/apps/web/src/app/app.component.ts

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

323 lines
12 KiB
TypeScript
Raw Normal View History

2022-06-14 17:10:53 +02:00
import { DOCUMENT } from "@angular/common";
2022-06-06 19:08:06 +02:00
import { Component, Inject, NgZone, OnDestroy, OnInit, SecurityContext } from "@angular/core";
import { DomSanitizer } from "@angular/platform-browser";
import { NavigationEnd, Router } from "@angular/router";
2021-12-07 20:41:45 +01:00
import * as jq from "jquery";
import { IndividualConfig, ToastrService } from "ngx-toastr";
import { Subject, takeUntil } from "rxjs";
2021-12-07 20:41:45 +01:00
import Swal from "sweetalert2";
2018-06-05 05:10:41 +02:00
2022-06-14 17:10:53 +02:00
import { AuthService } from "@bitwarden/common/abstractions/auth.service";
import { BroadcasterService } from "@bitwarden/common/abstractions/broadcaster.service";
import { CipherService } from "@bitwarden/common/abstractions/cipher.service";
import { CollectionService } from "@bitwarden/common/abstractions/collection.service";
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
import { EventService } from "@bitwarden/common/abstractions/event.service";
import { InternalFolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction";
2022-06-14 17:10:53 +02:00
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
import { KeyConnectorService } from "@bitwarden/common/abstractions/keyConnector.service";
import { NotificationsService } from "@bitwarden/common/abstractions/notifications.service";
import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwordGeneration.service";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
import { InternalPolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction";
2022-06-14 17:10:53 +02:00
import { SearchService } from "@bitwarden/common/abstractions/search.service";
import { SettingsService } from "@bitwarden/common/abstractions/settings.service";
import { StateService } from "@bitwarden/common/abstractions/state.service";
import { SyncService } from "@bitwarden/common/abstractions/sync.service";
import { VaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout.service";
2022-07-26 19:34:45 +02:00
import { PolicyListService, RouterService } from "./core";
import { DisableSendPolicy } from "./organizations/policies/disable-send.component";
import { MasterPasswordPolicy } from "./organizations/policies/master-password.component";
import { PasswordGeneratorPolicy } from "./organizations/policies/password-generator.component";
import { PersonalOwnershipPolicy } from "./organizations/policies/personal-ownership.component";
import { RequireSsoPolicy } from "./organizations/policies/require-sso.component";
import { ResetPasswordPolicy } from "./organizations/policies/reset-password.component";
import { SendOptionsPolicy } from "./organizations/policies/send-options.component";
import { SingleOrgPolicy } from "./organizations/policies/single-org.component";
import { TwoFactorAuthenticationPolicy } from "./organizations/policies/two-factor-authentication.component";
2018-06-08 23:08:19 +02:00
const BroadcasterSubscriptionId = "AppComponent";
2018-08-23 04:56:00 +02:00
const IdleTimeout = 60000 * 10; // 10 minutes
2018-06-08 23:08:19 +02:00
2018-06-05 05:10:41 +02:00
@Component({
selector: "app-root",
2018-06-06 15:43:28 +02:00
templateUrl: "app.component.html",
2018-06-05 05:10:41 +02:00
})
2018-06-08 23:08:19 +02:00
export class AppComponent implements OnDestroy, OnInit {
private lastActivity: number = null;
2018-08-23 04:37:55 +02:00
private idleTimer: number = null;
private isIdle = false;
private destroy$ = new Subject<void>();
2018-06-08 23:08:19 +02:00
constructor(
2022-06-06 19:08:06 +02:00
@Inject(DOCUMENT) private document: Document,
2018-06-08 23:08:19 +02:00
private broadcasterService: BroadcasterService,
private folderService: InternalFolderService,
[Account Switching] [Refactor] Implement new account centric services (#1220) * [chore] updated services.module to use account services * [refactor] sorted services provided by services.module * [chore] removed references to deleted jslib services * [chore] used activeAccount over storageService for account level storage items * [chore] resolved linter warnings * Refactor activeAccountService to stateService * [bug] Remove uneeded calls to state service on logout This was causing console erros on logout. Clearing of data is handled fully in dedicated services, clearing them in state afterwards is essentially a redundant call. * [bug] Add back null locked callback to VaultTimeoutService * Move call to get showUpdateKey * [bug] Ensure HtmlStorageService does not override StateService options and locations * [bug] Adjust theme logic to pull from the new storage locations * [bug] Correct theme not sticking on refresh * [bug] Add enableFullWidth to the account model * [bug] fix theme option empty when light is selected * [bug] init state on application start * [bug] Reinit state when coming back from a lock * [style] Fix lint complaints * [bug] Clean state on logout * [chore] Resolved merge issues * [bug] Correct default for enableGravitars * Bump angular to 12. * Remove angular.json * Bump rxjs * Fix build errors, remove file-loader with asset/resource * Use contenthash * Bump jslib * Bump ngx-toastr * [chore] resolve issues from merge * [chore] resolve issues from merge * [bug] Add missing bracket * Use newer import syntax * [bug] Correct service orge * [style] Fix lint complaints * [chore] update jslib * [review] Address code review * [review] Address code review * [review] Rename providerService to webProviderService Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com> Co-authored-by: Hinton <oscar@oscarhinton.com>
2021-12-14 17:10:26 +01:00
private settingsService: SettingsService,
private syncService: SyncService,
private passwordGenerationService: PasswordGenerationService,
private cipherService: CipherService,
private authService: AuthService,
private router: Router,
private toastrService: ToastrService,
private i18nService: I18nService,
2018-06-08 23:08:19 +02:00
private platformUtilsService: PlatformUtilsService,
2018-08-23 04:37:55 +02:00
private ngZone: NgZone,
private vaultTimeoutService: VaultTimeoutService,
[Account Switching] [Refactor] Implement new account centric services (#1220) * [chore] updated services.module to use account services * [refactor] sorted services provided by services.module * [chore] removed references to deleted jslib services * [chore] used activeAccount over storageService for account level storage items * [chore] resolved linter warnings * Refactor activeAccountService to stateService * [bug] Remove uneeded calls to state service on logout This was causing console erros on logout. Clearing of data is handled fully in dedicated services, clearing them in state afterwards is essentially a redundant call. * [bug] Add back null locked callback to VaultTimeoutService * Move call to get showUpdateKey * [bug] Ensure HtmlStorageService does not override StateService options and locations * [bug] Adjust theme logic to pull from the new storage locations * [bug] Correct theme not sticking on refresh * [bug] Add enableFullWidth to the account model * [bug] fix theme option empty when light is selected * [bug] init state on application start * [bug] Reinit state when coming back from a lock * [style] Fix lint complaints * [bug] Clean state on logout * [chore] Resolved merge issues * [bug] Correct default for enableGravitars * Bump angular to 12. * Remove angular.json * Bump rxjs * Fix build errors, remove file-loader with asset/resource * Use contenthash * Bump jslib * Bump ngx-toastr * [chore] resolve issues from merge * [chore] resolve issues from merge * [bug] Add missing bracket * Use newer import syntax * [bug] Correct service orge * [style] Fix lint complaints * [chore] update jslib * [review] Address code review * [review] Address code review * [review] Rename providerService to webProviderService Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com> Co-authored-by: Hinton <oscar@oscarhinton.com>
2021-12-14 17:10:26 +01:00
private cryptoService: CryptoService,
2018-08-23 04:37:55 +02:00
private collectionService: CollectionService,
private sanitizer: DomSanitizer,
[Account Switching] [Refactor] Implement new account centric services (#1220) * [chore] updated services.module to use account services * [refactor] sorted services provided by services.module * [chore] removed references to deleted jslib services * [chore] used activeAccount over storageService for account level storage items * [chore] resolved linter warnings * Refactor activeAccountService to stateService * [bug] Remove uneeded calls to state service on logout This was causing console erros on logout. Clearing of data is handled fully in dedicated services, clearing them in state afterwards is essentially a redundant call. * [bug] Add back null locked callback to VaultTimeoutService * Move call to get showUpdateKey * [bug] Ensure HtmlStorageService does not override StateService options and locations * [bug] Adjust theme logic to pull from the new storage locations * [bug] Correct theme not sticking on refresh * [bug] Add enableFullWidth to the account model * [bug] fix theme option empty when light is selected * [bug] init state on application start * [bug] Reinit state when coming back from a lock * [style] Fix lint complaints * [bug] Clean state on logout * [chore] Resolved merge issues * [bug] Correct default for enableGravitars * Bump angular to 12. * Remove angular.json * Bump rxjs * Fix build errors, remove file-loader with asset/resource * Use contenthash * Bump jslib * Bump ngx-toastr * [chore] resolve issues from merge * [chore] resolve issues from merge * [bug] Add missing bracket * Use newer import syntax * [bug] Correct service orge * [style] Fix lint complaints * [chore] update jslib * [review] Address code review * [review] Address code review * [review] Rename providerService to webProviderService Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com> Co-authored-by: Hinton <oscar@oscarhinton.com>
2021-12-14 17:10:26 +01:00
private searchService: SearchService,
private notificationsService: NotificationsService,
private routerService: RouterService,
private stateService: StateService,
private eventService: EventService,
private policyService: InternalPolicyService,
2018-08-23 04:37:55 +02:00
protected policyListService: PolicyListService,
private keyConnectorService: KeyConnectorService
2021-12-17 15:57:11 +01:00
) {}
2018-06-08 23:08:19 +02:00
ngOnInit() {
this.i18nService.locale$.pipe(takeUntil(this.destroy$)).subscribe((locale) => {
this.document.documentElement.lang = locale;
});
2022-06-06 19:08:06 +02:00
this.ngZone.runOutsideAngular(() => {
[Account Switching] [Refactor] Implement new account centric services (#1220) * [chore] updated services.module to use account services * [refactor] sorted services provided by services.module * [chore] removed references to deleted jslib services * [chore] used activeAccount over storageService for account level storage items * [chore] resolved linter warnings * Refactor activeAccountService to stateService * [bug] Remove uneeded calls to state service on logout This was causing console erros on logout. Clearing of data is handled fully in dedicated services, clearing them in state afterwards is essentially a redundant call. * [bug] Add back null locked callback to VaultTimeoutService * Move call to get showUpdateKey * [bug] Ensure HtmlStorageService does not override StateService options and locations * [bug] Adjust theme logic to pull from the new storage locations * [bug] Correct theme not sticking on refresh * [bug] Add enableFullWidth to the account model * [bug] fix theme option empty when light is selected * [bug] init state on application start * [bug] Reinit state when coming back from a lock * [style] Fix lint complaints * [bug] Clean state on logout * [chore] Resolved merge issues * [bug] Correct default for enableGravitars * Bump angular to 12. * Remove angular.json * Bump rxjs * Fix build errors, remove file-loader with asset/resource * Use contenthash * Bump jslib * Bump ngx-toastr * [chore] resolve issues from merge * [chore] resolve issues from merge * [bug] Add missing bracket * Use newer import syntax * [bug] Correct service orge * [style] Fix lint complaints * [chore] update jslib * [review] Address code review * [review] Address code review * [review] Rename providerService to webProviderService Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com> Co-authored-by: Hinton <oscar@oscarhinton.com>
2021-12-14 17:10:26 +01:00
window.onmousemove = () => this.recordActivity();
window.onmousedown = () => this.recordActivity();
window.ontouchstart = () => this.recordActivity();
window.onclick = () => this.recordActivity();
window.onscroll = () => this.recordActivity();
window.onkeypress = () => this.recordActivity();
});
2018-06-08 23:08:19 +02:00
this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {
this.ngZone.run(async () => {
switch (message.command) {
case "loggedIn":
this.notificationsService.updateConnection(false);
break;
2018-06-08 23:08:19 +02:00
case "loggedOut":
this.routerService.setPreviousUrl(null);
this.notificationsService.updateConnection(false);
break;
2018-08-21 04:21:13 +02:00
case "unlocked":
2018-06-08 23:08:19 +02:00
this.notificationsService.updateConnection(false);
2021-12-17 15:57:11 +01:00
break;
2019-04-18 16:11:04 +02:00
case "authBlocked":
this.routerService.setPreviousUrl(message.url);
2019-04-18 16:11:04 +02:00
this.router.navigate(["/"]);
2018-06-08 23:08:19 +02:00
break;
case "logout":
this.logOut(!!message.expired);
2021-12-17 15:57:11 +01:00
break;
2018-06-08 23:08:19 +02:00
case "lockVault":
await this.vaultTimeoutService.lock();
2021-12-17 15:57:11 +01:00
break;
2018-06-08 23:08:19 +02:00
case "locked":
this.notificationsService.updateConnection(false);
2018-06-09 20:55:34 +02:00
this.router.navigate(["lock"]);
2021-12-17 15:57:11 +01:00
break;
2019-02-22 19:17:10 +01:00
case "lockedUrl":
this.routerService.setPreviousUrl(message.url);
2018-06-08 23:08:19 +02:00
break;
case "syncStarted":
2021-12-17 15:57:11 +01:00
break;
2018-06-08 23:08:19 +02:00
case "syncCompleted":
2021-12-17 15:57:11 +01:00
break;
2022-02-24 12:10:07 +01:00
case "upgradeOrganization": {
2018-06-08 23:08:19 +02:00
const upgradeConfirmed = await this.platformUtilsService.showDialog(
this.i18nService.t("upgradeOrganizationDesc"),
2018-07-18 15:21:23 +02:00
this.i18nService.t("upgradeOrganization"),
this.i18nService.t("upgradeOrganization"),
this.i18nService.t("cancel")
2018-06-08 23:08:19 +02:00
);
if (upgradeConfirmed) {
this.router.navigate([
2018-07-18 15:21:23 +02:00
"organizations",
2018-06-08 23:08:19 +02:00
message.organizationId,
"settings",
2021-12-17 15:57:11 +01:00
"billing",
]);
}
break;
2022-02-24 12:10:07 +01:00
}
case "premiumRequired": {
2018-06-08 23:08:19 +02:00
const premiumConfirmed = await this.platformUtilsService.showDialog(
2018-07-18 15:21:23 +02:00
this.i18nService.t("premiumRequiredDesc"),
this.i18nService.t("premiumRequired"),
this.i18nService.t("upgrade"),
2018-07-18 15:21:23 +02:00
this.i18nService.t("cancel")
2021-12-17 15:57:11 +01:00
);
2018-06-08 23:08:19 +02:00
if (premiumConfirmed) {
this.router.navigate(["settings/subscription/premium"]);
2021-12-17 15:57:11 +01:00
}
break;
2022-02-24 12:10:07 +01:00
}
case "emailVerificationRequired": {
2018-06-08 23:08:19 +02:00
const emailVerificationConfirmed = await this.platformUtilsService.showDialog(
this.i18nService.t("emailVerificationRequiredDesc"),
this.i18nService.t("emailVerificationRequired"),
this.i18nService.t("learnMore"),
this.i18nService.t("cancel")
2021-12-17 15:57:11 +01:00
);
if (emailVerificationConfirmed) {
2018-06-08 23:08:19 +02:00
this.platformUtilsService.launchUri(
2022-01-31 20:11:27 +01:00
"https://bitwarden.com/help/create-bitwarden-account/"
2021-12-17 15:57:11 +01:00
);
}
break;
2022-02-24 12:10:07 +01:00
}
case "showToast":
this.showToast(message);
2021-12-17 15:57:11 +01:00
break;
case "setFullWidth":
2018-06-08 23:08:19 +02:00
this.setFullWidth();
2021-12-17 15:57:11 +01:00
break;
case "convertAccountToKeyConnector":
2018-06-08 23:08:19 +02:00
this.router.navigate(["/remove-password"]);
break;
2021-12-17 15:57:11 +01:00
default:
break;
}
2018-06-08 23:08:19 +02:00
});
2021-12-17 15:57:11 +01:00
});
2018-06-08 23:08:19 +02:00
this.router.events.pipe(takeUntil(this.destroy$)).subscribe((event) => {
2018-08-23 14:56:45 +02:00
if (event instanceof NavigationEnd) {
2018-07-18 15:21:23 +02:00
const modals = Array.from(document.querySelectorAll(".modal"));
for (const modal of modals) {
(jq(modal) as any).modal("hide");
2018-06-08 23:08:19 +02:00
}
if (document.querySelector(".swal-modal") != null) {
Swal.close(undefined);
2021-12-17 15:57:11 +01:00
}
}
2021-12-17 15:57:11 +01:00
});
this.policyListService.addPolicies([
new TwoFactorAuthenticationPolicy(),
new MasterPasswordPolicy(),
new ResetPasswordPolicy(),
new PasswordGeneratorPolicy(),
new SingleOrgPolicy(),
new RequireSsoPolicy(),
new PersonalOwnershipPolicy(),
new DisableSendPolicy(),
new SendOptionsPolicy(),
]);
2022-03-09 17:16:53 +01:00
this.setFullWidth();
2021-12-17 15:57:11 +01:00
}
ngOnDestroy() {
this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);
this.destroy$.next();
this.destroy$.complete();
2018-06-08 23:08:19 +02:00
}
private async logOut(expired: boolean) {
await this.eventService.uploadEvents();
const userId = await this.stateService.getUserId();
await Promise.all([
this.eventService.clearEvents(),
2018-06-08 23:08:19 +02:00
this.syncService.setLastSync(new Date(0)),
this.cryptoService.clearKeys(),
this.settingsService.clear(userId),
this.cipherService.clear(userId),
this.folderService.clear(userId),
this.collectionService.clear(userId),
this.policyService.clear(userId),
2018-06-08 23:08:19 +02:00
this.passwordGenerationService.clear(),
this.keyConnectorService.clear(),
2021-12-17 15:57:11 +01:00
]);
2018-06-08 23:08:19 +02:00
this.searchService.clearIndex();
this.authService.logOut(async () => {
if (expired) {
this.platformUtilsService.showToast(
"warning",
this.i18nService.t("loggedOut"),
this.i18nService.t("loginExpired")
2018-06-08 23:08:19 +02:00
);
2021-12-17 15:57:11 +01:00
}
2018-06-08 23:08:19 +02:00
2018-08-13 22:27:17 +02:00
await this.stateService.clean({ userId: userId });
2018-06-08 23:08:19 +02:00
Swal.close();
2021-12-07 20:41:45 +01:00
this.router.navigate(["/"]);
2018-06-08 23:08:19 +02:00
});
}
[Account Switching] [Refactor] Implement new account centric services (#1220) * [chore] updated services.module to use account services * [refactor] sorted services provided by services.module * [chore] removed references to deleted jslib services * [chore] used activeAccount over storageService for account level storage items * [chore] resolved linter warnings * Refactor activeAccountService to stateService * [bug] Remove uneeded calls to state service on logout This was causing console erros on logout. Clearing of data is handled fully in dedicated services, clearing them in state afterwards is essentially a redundant call. * [bug] Add back null locked callback to VaultTimeoutService * Move call to get showUpdateKey * [bug] Ensure HtmlStorageService does not override StateService options and locations * [bug] Adjust theme logic to pull from the new storage locations * [bug] Correct theme not sticking on refresh * [bug] Add enableFullWidth to the account model * [bug] fix theme option empty when light is selected * [bug] init state on application start * [bug] Reinit state when coming back from a lock * [style] Fix lint complaints * [bug] Clean state on logout * [chore] Resolved merge issues * [bug] Correct default for enableGravitars * Bump angular to 12. * Remove angular.json * Bump rxjs * Fix build errors, remove file-loader with asset/resource * Use contenthash * Bump jslib * Bump ngx-toastr * [chore] resolve issues from merge * [chore] resolve issues from merge * [bug] Add missing bracket * Use newer import syntax * [bug] Correct service orge * [style] Fix lint complaints * [chore] update jslib * [review] Address code review * [review] Address code review * [review] Rename providerService to webProviderService Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com> Co-authored-by: Hinton <oscar@oscarhinton.com>
2021-12-14 17:10:26 +01:00
private async recordActivity() {
const now = new Date().getTime();
if (this.lastActivity != null && now - this.lastActivity < 250) {
2018-06-08 23:08:19 +02:00
return;
}
this.lastActivity = now;
[Account Switching] [Refactor] Implement new account centric services (#1220) * [chore] updated services.module to use account services * [refactor] sorted services provided by services.module * [chore] removed references to deleted jslib services * [chore] used activeAccount over storageService for account level storage items * [chore] resolved linter warnings * Refactor activeAccountService to stateService * [bug] Remove uneeded calls to state service on logout This was causing console erros on logout. Clearing of data is handled fully in dedicated services, clearing them in state afterwards is essentially a redundant call. * [bug] Add back null locked callback to VaultTimeoutService * Move call to get showUpdateKey * [bug] Ensure HtmlStorageService does not override StateService options and locations * [bug] Adjust theme logic to pull from the new storage locations * [bug] Correct theme not sticking on refresh * [bug] Add enableFullWidth to the account model * [bug] fix theme option empty when light is selected * [bug] init state on application start * [bug] Reinit state when coming back from a lock * [style] Fix lint complaints * [bug] Clean state on logout * [chore] Resolved merge issues * [bug] Correct default for enableGravitars * Bump angular to 12. * Remove angular.json * Bump rxjs * Fix build errors, remove file-loader with asset/resource * Use contenthash * Bump jslib * Bump ngx-toastr * [chore] resolve issues from merge * [chore] resolve issues from merge * [bug] Add missing bracket * Use newer import syntax * [bug] Correct service orge * [style] Fix lint complaints * [chore] update jslib * [review] Address code review * [review] Address code review * [review] Rename providerService to webProviderService Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com> Co-authored-by: Hinton <oscar@oscarhinton.com>
2021-12-14 17:10:26 +01:00
this.stateService.setLastActive(now);
2018-08-23 04:37:55 +02:00
// Idle states
if (this.isIdle) {
this.isIdle = false;
this.idleStateChanged();
}
if (this.idleTimer != null) {
window.clearTimeout(this.idleTimer);
this.idleTimer = null;
2021-12-17 15:57:11 +01:00
}
2018-08-23 04:37:55 +02:00
this.idleTimer = window.setTimeout(() => {
if (!this.isIdle) {
this.isIdle = true;
this.idleStateChanged();
2021-12-17 15:57:11 +01:00
}
2018-08-23 04:37:55 +02:00
}, IdleTimeout);
2021-12-17 15:57:11 +01:00
}
2018-08-23 04:37:55 +02:00
private showToast(msg: any) {
2021-12-07 20:41:45 +01:00
let message = "";
const options: Partial<IndividualConfig> = {};
if (typeof msg.text === "string") {
message = msg.text;
} else if (msg.text.length === 1) {
message = msg.text[0];
2021-12-17 15:57:11 +01:00
} else {
msg.text.forEach(
2021-12-07 20:41:45 +01:00
(t: string) =>
(message += "<p>" + this.sanitizer.sanitize(SecurityContext.HTML, t) + "</p>")
);
options.enableHtml = true;
2021-12-17 15:57:11 +01:00
}
if (msg.options != null) {
2021-12-07 20:41:45 +01:00
if (msg.options.trustedHtml === true) {
options.enableHtml = true;
2021-12-17 15:57:11 +01:00
}
if (msg.options.timeout != null && msg.options.timeout > 0) {
options.timeOut = msg.options.timeout;
2021-12-17 15:57:11 +01:00
}
}
2021-12-07 20:41:45 +01:00
this.toastrService.show(message, msg.title, options, "toast-" + msg.type);
2021-12-17 15:57:11 +01:00
}
2018-08-23 04:37:55 +02:00
private idleStateChanged() {
if (this.isIdle) {
this.notificationsService.disconnectFromInactivity();
} else {
this.notificationsService.reconnectFromActivity();
2018-06-05 05:10:41 +02:00
}
2021-12-17 15:57:11 +01:00
}
private async setFullWidth() {
[Account Switching] [Refactor] Implement new account centric services (#1220) * [chore] updated services.module to use account services * [refactor] sorted services provided by services.module * [chore] removed references to deleted jslib services * [chore] used activeAccount over storageService for account level storage items * [chore] resolved linter warnings * Refactor activeAccountService to stateService * [bug] Remove uneeded calls to state service on logout This was causing console erros on logout. Clearing of data is handled fully in dedicated services, clearing them in state afterwards is essentially a redundant call. * [bug] Add back null locked callback to VaultTimeoutService * Move call to get showUpdateKey * [bug] Ensure HtmlStorageService does not override StateService options and locations * [bug] Adjust theme logic to pull from the new storage locations * [bug] Correct theme not sticking on refresh * [bug] Add enableFullWidth to the account model * [bug] fix theme option empty when light is selected * [bug] init state on application start * [bug] Reinit state when coming back from a lock * [style] Fix lint complaints * [bug] Clean state on logout * [chore] Resolved merge issues * [bug] Correct default for enableGravitars * Bump angular to 12. * Remove angular.json * Bump rxjs * Fix build errors, remove file-loader with asset/resource * Use contenthash * Bump jslib * Bump ngx-toastr * [chore] resolve issues from merge * [chore] resolve issues from merge * [bug] Add missing bracket * Use newer import syntax * [bug] Correct service orge * [style] Fix lint complaints * [chore] update jslib * [review] Address code review * [review] Address code review * [review] Rename providerService to webProviderService Co-authored-by: Robyn MacCallum <robyntmaccallum@gmail.com> Co-authored-by: Hinton <oscar@oscarhinton.com>
2021-12-14 17:10:26 +01:00
const enableFullWidth = await this.stateService.getEnableFullWidth();
if (enableFullWidth) {
document.body.classList.add("full-width");
} else {
document.body.classList.remove("full-width");
}
2021-12-17 15:57:11 +01:00
}
2018-06-05 05:10:41 +02:00
}