/* eslint-disable @typescript-eslint/member-ordering */ import { Component, inject, signal } from '@angular/core'; import { CommonModule } from '@angular/common'; import { NgIcon, provideIcons } from '@ng-icons/core'; import { lucidePower } from '@ng-icons/lucide'; import { ElectronBridgeService } from '../../../../core/platform/electron/electron-bridge.service'; import { PlatformService } from '../../../../core/platform'; @Component({ selector: 'app-general-settings', standalone: true, imports: [CommonModule, NgIcon], viewProviders: [ provideIcons({ lucidePower }) ], templateUrl: './general-settings.component.html' }) export class GeneralSettingsComponent { private platform = inject(PlatformService); private electronBridge = inject(ElectronBridgeService); readonly isElectron = this.platform.isElectron; autoStart = signal(false); savingAutoStart = signal(false); constructor() { if (this.isElectron) { void this.loadDesktopSettings(); } } async onAutoStartChange(event: Event): Promise { const input = event.target as HTMLInputElement; const enabled = !!input.checked; const api = this.electronBridge.getApi(); if (!this.isElectron || !api) { input.checked = this.autoStart(); return; } this.savingAutoStart.set(true); try { const snapshot = await api.setDesktopSettings({ autoStart: enabled }); this.autoStart.set(snapshot.autoStart); } catch { input.checked = this.autoStart(); } finally { this.savingAutoStart.set(false); } } private async loadDesktopSettings(): Promise { const api = this.electronBridge.getApi(); if (!api) { return; } try { const snapshot = await api.getDesktopSettings(); this.autoStart.set(snapshot.autoStart); } catch {} } }