fix(project-editor): route importBootstrap through updateBootstrap for undo+draft persistence
importBootstrap() replaced state.bootstrap directly, bypassing the same updateBootstrap() pipeline every other edit goes through - so an import never got a draftStorage.save() (lost on refresh before an explicit Save) and never became an undo-able history step (Undo silently skipped over it). Verified live via window.ng.getComponent(): exported the current bootstrap, mutated branding.brandName, imported it back - draftStorage's localStorage key changed and contained the new value; clicking Undo correctly reverted brandName to the pre-import value. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -292,10 +292,18 @@ export class ProjectEditorFacade {
|
||||
return current ? this.ioService.exportBootstrap(current) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Replaces the whole draft with an imported bootstrap. Routed through
|
||||
* updateBootstrap() (not a direct state.update) so an import gets the same
|
||||
* undo-history entry and draftStorage persistence as any other edit -
|
||||
* otherwise the import "worked" on screen but silently wasn't saved to the
|
||||
* localStorage draft, and Undo couldn't step back through it.
|
||||
*/
|
||||
importBootstrap(raw: string): void {
|
||||
try {
|
||||
const imported = this.normalize(this.ioService.importBootstrap(raw));
|
||||
this.state.update(current => ({ ...current, bootstrap: imported, importError: null }));
|
||||
this.state.update(current => ({ ...current, importError: null }));
|
||||
this.updateBootstrap(() => imported);
|
||||
} catch {
|
||||
this.state.update(current => ({ ...current, importError: 'builder.importError' }));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user