diff --git a/wowup-electron/src/app/app.component.ts b/wowup-electron/src/app/app.component.ts index e2ea5aa1..46803526 100644 --- a/wowup-electron/src/app/app.component.ts +++ b/wowup-electron/src/app/app.component.ts @@ -14,6 +14,7 @@ import { DEFAULT_THEME, HORDE_LIGHT_THEME, HORDE_THEME, + ZOOM_FACTOR_KEY, } from "../common/constants"; import { SystemTrayConfig } from "../common/wowup/system-tray-config"; import { TelemetryDialogComponent } from "./components/telemetry-dialog/telemetry-dialog.component"; @@ -27,6 +28,7 @@ import { SessionService } from "./services/session/session.service"; import { getZoomDirection } from "./utils/zoom.utils"; import { Addon } from "./entities/addon"; import { AppConfig } from "../environments/environment"; +import { PreferenceStorageService } from "./services/storage/preference-storage.service"; @Component({ selector: "app-root", @@ -56,11 +58,17 @@ export class AppComponent implements OnInit, AfterViewInit { private _addonService: AddonService, private _iconService: IconService, private _sessionService: SessionService, + private _preferenceStore: PreferenceStorageService, public overlayContainer: OverlayContainer, public wowUpService: WowUpService ) {} ngOnInit(): void { + const zoomFactor = parseFloat(this._preferenceStore.get(ZOOM_FACTOR_KEY) as string); + if (!isNaN(zoomFactor) && isFinite(zoomFactor)) { + this._electronService.setZoomFactor(zoomFactor); + } + this.overlayContainer.getContainerElement().classList.add(this.wowUpService.currentTheme); this.wowUpService.preferenceChange$.pipe(filter((pref) => pref.key === CURRENT_THEME_KEY)).subscribe((pref) => { diff --git a/wowup-electron/src/app/services/electron/electron.service.ts b/wowup-electron/src/app/services/electron/electron.service.ts index 60de7062..6822f056 100644 --- a/wowup-electron/src/app/services/electron/electron.service.ts +++ b/wowup-electron/src/app/services/electron/electron.service.ts @@ -5,6 +5,7 @@ import { APP_UPDATE_CHECK_START, APP_UPDATE_DOWNLOADED, APP_UPDATE_START_DOWNLOAD, + ZOOM_FACTOR_KEY, } from "../../../common/constants"; import * as minimist from "minimist"; // If you import a module but never use any of the imported values other than as TypeScript types, @@ -19,6 +20,7 @@ import { ValueRequest } from "../../../common/models/value-request"; import { ValueResponse } from "../../../common/models/value-response"; import { AppOptions } from "../../../common/wowup/app-options"; import { ZoomDirection, ZOOM_SCALE } from "../../utils/zoom.utils"; +import { PreferenceStorageService } from "../storage/preference-storage.service"; @Injectable({ providedIn: "root", @@ -62,7 +64,7 @@ export class ElectronService { this.remote.app.setLoginItemSettings(settings); } - constructor() { + constructor(private _preferenceStorageService: PreferenceStorageService) { // Conditional imports if (!this.isElectron) { return; @@ -241,6 +243,7 @@ export class ElectronService { const currentWindow = this.remote.getCurrentWindow(); currentWindow.webContents.zoomFactor = zoomFactor; this._zoomFactorChangeSrc.next(zoomFactor); + this._preferenceStorageService.set(ZOOM_FACTOR_KEY, zoomFactor); }; public getZoomFactor(): number { diff --git a/wowup-electron/src/common/constants.ts b/wowup-electron/src/common/constants.ts index 9acac261..97425d0a 100644 --- a/wowup-electron/src/common/constants.ts +++ b/wowup-electron/src/common/constants.ts @@ -47,6 +47,7 @@ export const ADDON_PROVIDERS_KEY = "addon_providers"; export const CURRENT_THEME_KEY = "current_theme"; export const TELEMETRY_ENABLED_KEY = "telemetry_enabled"; export const BLIZZARD_AGENT_PATH_KEY = "blizzard_agent_path"; +export const ZOOM_FACTOR_KEY = "zoom_factor"; // APP UPDATER export const APP_UPDATE_ERROR = "app-update-error";