Skip to content

Commit 9f0bb1a

Browse files
author
jannik brack
committed
reset DemoContextProvider.js
1 parent fa205a8 commit 9f0bb1a

File tree

1 file changed

+80
-1
lines changed

1 file changed

+80
-1
lines changed

src/components/DemoContextProvider.js

Lines changed: 80 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,51 @@ const DemoContextProvider = ({ children }) => {
4242
return null;
4343
};
4444

45+
/**
46+
* enrich storybook mc_meta.json data with thumbnail URL and demo URLs from stories.json
47+
*/
48+
49+
const applyStorybookDataToMcMeta = ({
50+
componentData,
51+
storybookData,
52+
compId,
53+
url,
54+
}) => {
55+
let catalogueDemoExists = false;
56+
for (var storyId in storybookData.stories) {
57+
let _compName = storybookData.stories[storyId].kind.split("/");
58+
if (
59+
typeof _compName[1] !== "undefined" &&
60+
_compName[1] === compId &&
61+
storybookData.stories[storyId].name === "Catalogue Demo"
62+
) {
63+
catalogueDemoExists = true;
64+
}
65+
}
66+
67+
for (storyId in storybookData.stories) {
68+
let _storyData = storybookData.stories[storyId];
69+
let _compName = _storyData.kind.split("/");
70+
if (typeof _compName[1] !== "undefined" && _compName[1] === compId) {
71+
if (
72+
_storyData.name === "Catalogue Demo" ||
73+
(!catalogueDemoExists && _storyData.name === "Example Config")
74+
) {
75+
componentData.url = url;
76+
componentData.demos = [];
77+
componentData.demos.push({
78+
name: "demo",
79+
url: url + "/iframe.html?id=" + _storyData.id + "&viewMode=story",
80+
id: _storyData.id,
81+
});
82+
componentData.thumbnail =
83+
url + "/thumbnails/" + _compName[1] + ".png";
84+
}
85+
}
86+
}
87+
return componentData;
88+
};
89+
4590
useEffect(() => {
4691
localStorage.setItem("cart", JSON.stringify(cartItems));
4792
}, [cartItems]);
@@ -78,6 +123,31 @@ const DemoContextProvider = ({ children }) => {
78123
}))(mcMetaUrls[r])
79124
);
80125
}
126+
for (r = 0, len = storybookUrls.length; r < len; r++) {
127+
promises.push(
128+
((url) =>
129+
fetch(url + "/stories.json")
130+
.then((res) => {
131+
if (!res.ok) {
132+
throw Error(res.statusText);
133+
}
134+
return res.json();
135+
})
136+
.then((data) => {
137+
let tmpData = {};
138+
tmpData[url] = data;
139+
140+
storybookDataRef.current = {
141+
...storybookDataRef.current,
142+
...tmpData,
143+
};
144+
})
145+
.catch((msg) => {
146+
console.log("error");
147+
console.log(msg);
148+
}))(storybookUrls[r])
149+
);
150+
}
81151

82152
Promise.all(promises).then(() => {
83153
let componentData = {};
@@ -87,6 +157,15 @@ const DemoContextProvider = ({ children }) => {
87157
for (var compId in _compObj) {
88158
let _compData = _compObj[compId];
89159
_compData.stories = [];
160+
161+
if (typeof storybookDataRef.current[url] !== "undefined") {
162+
_compData = applyStorybookDataToMcMeta({
163+
componentData: _compData,
164+
storybookData: storybookDataRef.current[url],
165+
compId,
166+
url,
167+
});
168+
}
90169
componentDataRef.current[url][compId] = _compData;
91170
componentData[compId] = _compData;
92171
}
@@ -132,4 +211,4 @@ DemoContextProvider.propTypes = {
132211
children: PropTypes.node.isRequired,
133212
};
134213

135-
export default DemoContextProvider;
214+
export default DemoContextProvider;

0 commit comments

Comments
 (0)