config: 0ms bug on save corrected
This commit is contained in:
parent
63d680404f
commit
0d57edcade
1 changed files with 25 additions and 3 deletions
|
|
@ -30,8 +30,12 @@ Singleton {
|
||||||
// Public save function - call this to persist config changes
|
// Public save function - call this to persist config changes
|
||||||
function save(): void {
|
function save(): void {
|
||||||
saveTimer.restart();
|
saveTimer.restart();
|
||||||
|
recentlySaved = true;
|
||||||
|
recentSaveCooldown.restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
property bool recentlySaved: false
|
||||||
|
|
||||||
ElapsedTimer {
|
ElapsedTimer {
|
||||||
id: timer
|
id: timer
|
||||||
}
|
}
|
||||||
|
|
@ -41,6 +45,7 @@ Singleton {
|
||||||
|
|
||||||
interval: 500
|
interval: 500
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
|
timer.restart();
|
||||||
try {
|
try {
|
||||||
// Parse current config to preserve structure and comments if possible
|
// Parse current config to preserve structure and comments if possible
|
||||||
let config = {};
|
let config = {};
|
||||||
|
|
@ -62,6 +67,15 @@ Singleton {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
id: recentSaveCooldown
|
||||||
|
|
||||||
|
interval: 2000
|
||||||
|
onTriggered: {
|
||||||
|
recentlySaved = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Helper function to serialize the config object
|
// Helper function to serialize the config object
|
||||||
function serializeConfig(): var {
|
function serializeConfig(): var {
|
||||||
return {
|
return {
|
||||||
|
|
@ -409,16 +423,24 @@ Singleton {
|
||||||
watchChanges: true
|
watchChanges: true
|
||||||
onFileChanged: {
|
onFileChanged: {
|
||||||
// Prevent reload loop - don't reload if we just saved
|
// Prevent reload loop - don't reload if we just saved
|
||||||
if (!saveTimer.running) {
|
if (!recentlySaved) {
|
||||||
timer.restart();
|
timer.restart();
|
||||||
reload();
|
reload();
|
||||||
|
} else {
|
||||||
|
// Self-initiated save - reload without toast
|
||||||
|
reload();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onLoaded: {
|
onLoaded: {
|
||||||
try {
|
try {
|
||||||
JSON.parse(text());
|
JSON.parse(text());
|
||||||
if (adapter.utilities.toasts.configLoaded)
|
const elapsed = timer.elapsedMs();
|
||||||
Toaster.toast(qsTr("Config loaded"), qsTr("Config loaded in %1ms").arg(timer.elapsedMs()), "rule_settings");
|
// Only show toast for external changes (not our own saves) and when elapsed time is meaningful
|
||||||
|
if (adapter.utilities.toasts.configLoaded && !recentlySaved && elapsed > 0) {
|
||||||
|
Toaster.toast(qsTr("Config loaded"), qsTr("Config loaded in %1ms").arg(elapsed), "rule_settings");
|
||||||
|
} else if (adapter.utilities.toasts.configLoaded && recentlySaved && elapsed > 0) {
|
||||||
|
Toaster.toast(qsTr("Config saved"), qsTr("Config reloaded in %1ms").arg(elapsed), "rule_settings");
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Toaster.toast(qsTr("Failed to load config"), e.message, "settings_alert", Toast.Error);
|
Toaster.toast(qsTr("Failed to load config"), e.message, "settings_alert", Toast.Error);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue