* 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.
44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
import Gio from 'gi://Gio';
|
|
import { bash, Notify } from 'lib/utils';
|
|
import icons from 'lib/icons';
|
|
import { filterConfigForThemeOnly, loadJsonFile, saveConfigToFile } from 'widget/settings/shared/FileChooser';
|
|
|
|
export const hexColorPattern = /^#([0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$/;
|
|
|
|
globalThis.useTheme = (filePath: string): void => {
|
|
const importedConfig = loadJsonFile(filePath);
|
|
|
|
if (!importedConfig) {
|
|
return;
|
|
}
|
|
|
|
Notify({
|
|
summary: `Importing Theme`,
|
|
body: `Importing: ${filePath}`,
|
|
iconName: icons.ui.info,
|
|
timeout: 7000,
|
|
});
|
|
|
|
const tmpConfigFile = Gio.File.new_for_path(`${TMP}/config.json`);
|
|
const optionsConfigFile = Gio.File.new_for_path(OPTIONS);
|
|
|
|
const [tmpSuccess, tmpContent] = tmpConfigFile.load_contents(null);
|
|
const [optionsSuccess, optionsContent] = optionsConfigFile.load_contents(null);
|
|
|
|
if (!tmpSuccess || !optionsSuccess) {
|
|
console.error('Failed to read existing configuration files.');
|
|
return;
|
|
}
|
|
|
|
let tmpConfig = JSON.parse(new TextDecoder('utf-8').decode(tmpContent));
|
|
let optionsConfig = JSON.parse(new TextDecoder('utf-8').decode(optionsContent));
|
|
|
|
const filteredConfig = filterConfigForThemeOnly(importedConfig);
|
|
tmpConfig = { ...tmpConfig, ...filteredConfig };
|
|
optionsConfig = { ...optionsConfig, ...filteredConfig };
|
|
|
|
saveConfigToFile(tmpConfig, `${TMP}/config.json`);
|
|
saveConfigToFile(optionsConfig, OPTIONS);
|
|
bash('pkill ags && ags');
|
|
};
|