- add common ForgeWebUI runtime, site loader, and SQF WebUI bridge base declarations - migrate org and store web UIs to src-driven bundles and new bridge/bootstrap flow - update addon configs/prep hooks and document the shared CT_WEBBROWSER framework
82 lines
2.3 KiB
JavaScript
82 lines
2.3 KiB
JavaScript
(function () {
|
|
const StorefrontApp = (window.StorefrontApp = window.StorefrontApp || {});
|
|
const store = StorefrontApp.store;
|
|
const bridge = window.ForgeWebUI.createBridge({
|
|
closeEvent: "store::close",
|
|
globalName: "StoreUIBridge",
|
|
readyEvent: "store::ready",
|
|
});
|
|
|
|
function requestClose() {
|
|
return bridge.close({});
|
|
}
|
|
|
|
function requestCheckout(payload) {
|
|
return bridge.send("store::checkout::request", payload);
|
|
}
|
|
|
|
function requestCategory(payload) {
|
|
return bridge.send("store::category::request", payload);
|
|
}
|
|
|
|
function notifyReady() {
|
|
return bridge.ready({ loaded: true });
|
|
}
|
|
|
|
bridge.on("store::hydrate", (payloadData) => {
|
|
StorefrontApp.data.applyHydratePayload(payloadData);
|
|
store.hydrateFromPayload(payloadData);
|
|
});
|
|
|
|
bridge.on("store::config::hydrate", (payloadData) => {
|
|
StorefrontApp.data.applyHydratePayload(payloadData);
|
|
store.hydrateStoreConfig(payloadData);
|
|
});
|
|
|
|
bridge.on("store::checkout::success", (payloadData) => {
|
|
store.setIsCheckingOut(false);
|
|
store.setCartItems([]);
|
|
store.setCartOpen(false);
|
|
if (StorefrontApp.actions) {
|
|
StorefrontApp.actions.showNotice(
|
|
"success",
|
|
payloadData.message || "Checkout completed.",
|
|
);
|
|
}
|
|
});
|
|
|
|
bridge.on("store::category::hydrate", (payloadData) => {
|
|
store.hydrateCategoryItems(payloadData);
|
|
});
|
|
|
|
bridge.on("store::category::failure", (payloadData) => {
|
|
store.finishCategoryRequest(payloadData.category || "");
|
|
if (StorefrontApp.actions) {
|
|
StorefrontApp.actions.showNotice(
|
|
"error",
|
|
payloadData.message || "Category request failed.",
|
|
);
|
|
}
|
|
});
|
|
|
|
bridge.on("store::checkout::failure", (payloadData) => {
|
|
store.setIsCheckingOut(false);
|
|
if (StorefrontApp.actions) {
|
|
StorefrontApp.actions.showNotice(
|
|
"error",
|
|
payloadData.message || "Checkout failed.",
|
|
);
|
|
}
|
|
});
|
|
|
|
StorefrontApp.bridge = {
|
|
close: bridge.close,
|
|
requestClose,
|
|
requestCheckout,
|
|
requestCategory,
|
|
notifyReady,
|
|
receive: bridge.receive,
|
|
sendEvent: bridge.send,
|
|
};
|
|
})();
|