Skip to content

Commit 1e56deb

Browse files
committed
feat: populate global state with preloaded models from page data
1 parent 1039ec8 commit 1e56deb

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

resources/assets/editor/plugin.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { CraftileEditorPlugin, PluginContext } from '@craftile/editor';
33
import { UpdatesEvent } from '@craftile/types';
44
import { debounce } from 'perfect-debounce';
55

6-
import { useState } from './state';
6+
import { useState, populatePreloadedModels } from './state';
77
import { persistUpdates } from './api';
88
import { ThemeEditorConfig } from './types';
99

@@ -285,6 +285,10 @@ export default function (editorConfig: ThemeEditorConfig): CraftileEditorPlugin
285285
if (state.theme && pageData.settings) {
286286
state.theme.settings = pageData.settings;
287287
}
288+
289+
if (pageData.preloadedModels) {
290+
populatePreloadedModels(pageData.preloadedModels);
291+
}
288292
});
289293
});
290294

resources/assets/editor/state.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,30 @@ export function useState() {
135135
getCmsPages,
136136
};
137137
}
138+
139+
/**
140+
* Populate global state with preloaded models from pageData.
141+
*/
142+
export function populatePreloadedModels(preloadedModels: {
143+
categories?: Category[];
144+
products?: Product[];
145+
cms_pages?: CmsPage[];
146+
}): void {
147+
if (preloadedModels.categories) {
148+
preloadedModels.categories.forEach((category) => {
149+
state!.categories.set(category.id, category);
150+
});
151+
}
152+
153+
if (preloadedModels.products) {
154+
preloadedModels.products.forEach((product) => {
155+
state!.products.set(product.id, product);
156+
});
157+
}
158+
159+
if (preloadedModels.cms_pages) {
160+
preloadedModels.cms_pages.forEach((page) => {
161+
state!.cmsPages.set(page.id, page);
162+
});
163+
}
164+
}

src/Middlewares/InjectThemeEditorScript.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ protected function buildPreviewScripts(array $pageData): string
3939
'sources' => encrypt($this->themeEditor->jsonViews()),
4040
],
4141
'settings' => $settingsBag->toArray(),
42+
'preloadedModels' => $this->themeEditor->preloadedModels(),
4243
],
4344
])->render();
4445
}

0 commit comments

Comments
 (0)