Hyprpanel config no longer resets if there is a parsing error. (#640)
This commit is contained in:
@@ -4,6 +4,7 @@ import { ensureDirectory } from './session';
|
|||||||
import Variable from 'astal/variable';
|
import Variable from 'astal/variable';
|
||||||
import { monitorFile, readFile, writeFile } from 'astal/file';
|
import { monitorFile, readFile, writeFile } from 'astal/file';
|
||||||
import GLib from 'gi://GLib?version=2.0';
|
import GLib from 'gi://GLib?version=2.0';
|
||||||
|
import { errorHandler } from './utils';
|
||||||
|
|
||||||
type OptProps = {
|
type OptProps = {
|
||||||
persistent?: boolean;
|
persistent?: boolean;
|
||||||
@@ -88,8 +89,8 @@ export class Opt<T = unknown> extends Variable<T> {
|
|||||||
if (rawData && rawData.trim() !== '') {
|
if (rawData && rawData.trim() !== '') {
|
||||||
try {
|
try {
|
||||||
cacheData = JSON.parse(rawData) as Record<string, unknown>;
|
cacheData = JSON.parse(rawData) as Record<string, unknown>;
|
||||||
} catch {
|
} catch (error) {
|
||||||
// do nuffin
|
errorHandler(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,19 +179,23 @@ export function opt<T>(initial: T, props?: OptProps): Opt<T> {
|
|||||||
* @returns An array of all found `Opt` instances.
|
* @returns An array of all found `Opt` instances.
|
||||||
*/
|
*/
|
||||||
function getOptions(object: Record<string, unknown>, path = '', arr: Opt[] = []): Opt[] {
|
function getOptions(object: Record<string, unknown>, path = '', arr: Opt[] = []): Opt[] {
|
||||||
for (const key in object) {
|
try {
|
||||||
const value = object[key];
|
for (const key in object) {
|
||||||
const id = path ? `${path}.${key}` : key;
|
const value = object[key];
|
||||||
|
const id = path ? `${path}.${key}` : key;
|
||||||
|
|
||||||
if (value instanceof Variable) {
|
if (value instanceof Variable) {
|
||||||
const optValue = value as Opt;
|
const optValue = value as Opt;
|
||||||
optValue.id = id;
|
optValue.id = id;
|
||||||
arr.push(optValue);
|
arr.push(optValue);
|
||||||
} else if (typeof value === 'object' && value !== null) {
|
} else if (typeof value === 'object' && value !== null) {
|
||||||
getOptions(value as Record<string, unknown>, id, arr);
|
getOptions(value as Record<string, unknown>, id, arr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
return arr;
|
||||||
|
} catch (error) {
|
||||||
|
errorHandler(error);
|
||||||
}
|
}
|
||||||
return arr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -10,7 +10,9 @@ declare global {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function ensureDirectory(path: string): void {
|
export function ensureDirectory(path: string): void {
|
||||||
if (!GLib.file_test(path, GLib.FileTest.EXISTS)) Gio.File.new_for_path(path).make_directory_with_parents(null);
|
if (!GLib.file_test(path, GLib.FileTest.EXISTS)) {
|
||||||
|
Gio.File.new_for_path(path).make_directory_with_parents(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ensureFile(path: string): void {
|
export function ensureFile(path: string): void {
|
||||||
|
|||||||
Reference in New Issue
Block a user