Make auto saved workflow stored per tab
This commit is contained in:
parent
9321198da6
commit
ed2fa105ae
|
@ -5,6 +5,7 @@ class ComfyApi extends EventTarget {
|
|||
super();
|
||||
this.api_host = location.host;
|
||||
this.api_base = location.pathname.split('/').slice(0, -1).join('/');
|
||||
this.initialClientId = sessionStorage.getItem("clientId");
|
||||
}
|
||||
|
||||
apiURL(route) {
|
||||
|
@ -118,7 +119,8 @@ class ComfyApi extends EventTarget {
|
|||
case "status":
|
||||
if (msg.data.sid) {
|
||||
this.clientId = msg.data.sid;
|
||||
window.name = this.clientId;
|
||||
window.name = this.clientId; // use window name so it isnt reused when duplicating tabs
|
||||
sessionStorage.setItem("clientId", this.clientId); // store in session storage so duplicate tab can load correct workflow
|
||||
}
|
||||
this.dispatchEvent(new CustomEvent("status", { detail: msg.data.status }));
|
||||
break;
|
||||
|
|
|
@ -1499,12 +1499,17 @@ export class ComfyApp {
|
|||
// Load previous workflow
|
||||
let restored = false;
|
||||
try {
|
||||
const json = localStorage.getItem("workflow");
|
||||
if (json) {
|
||||
const workflow = JSON.parse(json);
|
||||
await this.loadGraphData(workflow);
|
||||
restored = true;
|
||||
}
|
||||
const loadWorkflow = async (json) => {
|
||||
if (json) {
|
||||
const workflow = JSON.parse(json);
|
||||
await this.loadGraphData(workflow);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
const clientId = api.initialClientId ?? api.clientId;
|
||||
restored =
|
||||
(clientId && (await loadWorkflow(sessionStorage.getItem(`workflow:${clientId}`)))) ||
|
||||
(await loadWorkflow(localStorage.getItem("workflow")));
|
||||
} catch (err) {
|
||||
console.error("Error loading previous workflow", err);
|
||||
}
|
||||
|
@ -1515,7 +1520,13 @@ export class ComfyApp {
|
|||
}
|
||||
|
||||
// Save current workflow automatically
|
||||
setInterval(() => localStorage.setItem("workflow", JSON.stringify(this.graph.serialize())), 1000);
|
||||
setInterval(() => {
|
||||
const workflow = JSON.stringify(this.graph.serialize());
|
||||
localStorage.setItem("workflow", workflow);
|
||||
if (api.clientId) {
|
||||
sessionStorage.setItem(`workflow:${api.clientId}`, workflow);
|
||||
}
|
||||
}, 1000);
|
||||
|
||||
this.#addDrawNodeHandler();
|
||||
this.#addDrawGroupsHandler();
|
||||
|
|
Loading…
Reference in New Issue