* Implemented strict linting standards and prettier formatting config. * More linter fixes and type updates. * More linter updates and type fixes * Remove noisy comments * Linter and type updates * Linter, formatting and type updates. * Linter updates * Type updates * Type updates * fixed all linter errors * Fixed all linting, formatting and type issues. * Resolve merge conflicts.
62 lines
1.5 KiB
TypeScript
62 lines
1.5 KiB
TypeScript
import { Action } from 'lib/types/power';
|
|
import options from 'options';
|
|
const { sleep, reboot, logout, shutdown } = options.menus.dashboard.powermenu;
|
|
|
|
class PowerMenu extends Service {
|
|
static {
|
|
Service.register(
|
|
this,
|
|
{},
|
|
{
|
|
title: ['string'],
|
|
cmd: ['string'],
|
|
},
|
|
);
|
|
}
|
|
|
|
#title = '';
|
|
#cmd = '';
|
|
|
|
get title(): string {
|
|
return this.#title;
|
|
}
|
|
|
|
action(action: Action): void {
|
|
[this.#cmd, this.#title] = {
|
|
sleep: [sleep.value, 'Sleep'],
|
|
reboot: [reboot.value, 'Reboot'],
|
|
logout: [logout.value, 'Log Out'],
|
|
shutdown: [shutdown.value, 'Shutdown'],
|
|
}[action];
|
|
|
|
this.notify('cmd');
|
|
this.notify('title');
|
|
this.emit('changed');
|
|
App.closeWindow('powermenu');
|
|
App.openWindow('verification');
|
|
}
|
|
|
|
customAction(action: Action, cmnd: string): void {
|
|
[this.#cmd, this.#title] = [cmnd, action];
|
|
|
|
this.notify('cmd');
|
|
this.notify('title');
|
|
this.emit('changed');
|
|
App.closeWindow('powermenu');
|
|
App.openWindow('verification');
|
|
}
|
|
|
|
shutdown = (): void => {
|
|
this.action('shutdown');
|
|
};
|
|
|
|
exec = (): void => {
|
|
App.closeWindow('verification');
|
|
Utils.execAsync(this.#cmd);
|
|
};
|
|
}
|
|
|
|
const powermenu = new PowerMenu();
|
|
Object.assign(globalThis, { powermenu });
|
|
export default powermenu;
|