@camunda/camunda-composite-components 0.2.16-rc.2 → 0.2.16-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,7 +11,7 @@ import { useC3HelpCenter } from "./c3-help-center-provider";
11
11
  export const C3HelpCenter = ({ autoStartSurvey, origin, flags, onRequestClose, mixpanelTrack, onRequestOpen, theme, onPersonaChange, activeTab, }) => {
12
12
  const { isHelpCenterOpen: isOpen, setIsHelpCenterOpen } = useC3HelpCenter();
13
13
  const { userToken, decodedToken, activeOrganizationId, handleTheme, decodedAudience, } = useC3UserConfiguration() || {};
14
- const { theme: themeConfig, isEnabled, activeOrg, clusters } = useC3Profile();
14
+ const { theme: themeConfig, isEnabled, activeOrg, clusters, reloadClusters, } = useC3Profile();
15
15
  const themeHandlingEnabled = isEnabled && !!handleTheme && !!themeConfig;
16
16
  const themeRef = useRef();
17
17
  const [resolvedTheme, setResolvedTheme] = useState(defaultTheme);
@@ -20,6 +20,7 @@ export const C3HelpCenter = ({ autoStartSurvey, origin, flags, onRequestClose, m
20
20
  const [helpCenterConfig, setHelpCenterConfig] = useState(defaultHelpCenterConfig);
21
21
  const [email, setEmail] = useState("");
22
22
  const [showSurvey, setShowSurvey] = useState(autoStartSurvey);
23
+ const shouldShowSurvey = showSurvey || !persona?.wasShown;
23
24
  useEffect(() => {
24
25
  const updateResolvedTheme = ({ matches }) => {
25
26
  if (themeRef.current === "system") {
@@ -40,6 +41,12 @@ export const C3HelpCenter = ({ autoStartSurvey, origin, flags, onRequestClose, m
40
41
  themeRef.current = newTheme;
41
42
  setResolvedTheme(resolveTheme(newTheme || "light"));
42
43
  }, [theme, themeConfig, isOpen]);
44
+ const fetchConfig = async () => {
45
+ if (!userToken || !decodedAudience)
46
+ return;
47
+ const onboardConfig = await getConfig(userToken, decodedAudience);
48
+ setHelpCenterConfig(onboardConfig || defaultHelpCenterConfig);
49
+ };
43
50
  const fetchData = async () => {
44
51
  if (!userToken || !decodedToken || !decodedAudience)
45
52
  return;
@@ -57,21 +64,28 @@ export const C3HelpCenter = ({ autoStartSurvey, origin, flags, onRequestClose, m
57
64
  setEmail(meta.email);
58
65
  if (userId)
59
66
  setUserId(userId);
60
- if (autoStartSurvey && !(persona?.wasShown ?? false)) {
67
+ if (shouldShowSurvey) {
61
68
  setShowSurvey(true);
62
69
  setIsHelpCenterOpen(true);
63
70
  onRequestOpen?.();
64
71
  }
65
- const onboardConfig = await getConfig(userToken, decodedAudience);
66
- setHelpCenterConfig(onboardConfig || defaultHelpCenterConfig);
72
+ await fetchConfig();
67
73
  };
68
74
  React.useEffect(() => {
69
75
  fetchData();
70
76
  }, [JSON.stringify(decodedToken), decodedAudience]);
77
+ useEffect(() => {
78
+ if (!userToken || !decodedAudience)
79
+ return;
80
+ fetchConfig();
81
+ reloadClusters();
82
+ }, [persona?.nextStep]);
71
83
  React.useEffect(() => {
72
84
  const tabs = helpCenterConfig.tabs;
73
85
  const firstTab = tabs[0].id;
74
86
  if (isOpen) {
87
+ if (shouldShowSurvey)
88
+ setShowSurvey(true);
75
89
  mixpanelTrack?.(`helpcenter:open`, {
76
90
  to: activeTab ?? firstTab,
77
91
  from: origin,
@@ -150,5 +164,5 @@ export const C3HelpCenter = ({ autoStartSurvey, origin, flags, onRequestClose, m
150
164
  onRequestClose?.();
151
165
  };
152
166
  return (React.createElement(Layer, null,
153
- React.createElement(ComposedModal, { open: isOpen, size: "lg", onClose: closeFn, className: "help-center", "aria-label": "HelpCenter" }, showSurvey || !persona || !persona.wasShown ? (React.createElement(C3OnboardingSurvey, { personaCallback: personaCallback, persona: persona, mixpanelTrack: mixpanelTrack, onRequestClose: closeFn, onRequestSkip: onRequestSkipSurvey, theme: resolvedTheme, origin: origin, modal: true })) : (React.createElement(HelpCenter, { configuration: helpCenterConfig, persona: persona, audience: decodedAudience || "", organization: activeOrg, clusters: clusters || [], flags: flags, onRequestResumeSurvey: onRequestResumeSurvey, onRequestRetakeSurvey: onRequestRetakeSurvey, onRequestClose: closeFn, mixpanelTrack: mixpanelTrack, email: email, theme: resolvedTheme, origin: origin, initialTab: activeTab })))));
167
+ React.createElement(ComposedModal, { open: isOpen, size: "lg", onClose: closeFn, className: "help-center", "aria-label": "HelpCenter" }, shouldShowSurvey ? (React.createElement(C3OnboardingSurvey, { personaCallback: personaCallback, persona: persona, mixpanelTrack: mixpanelTrack, onRequestClose: closeFn, onRequestSkip: onRequestSkipSurvey, theme: resolvedTheme, origin: origin, modal: true })) : (React.createElement(HelpCenter, { configuration: helpCenterConfig, persona: persona, audience: decodedAudience || "", organization: activeOrg, clusters: clusters || [], flags: flags, onRequestResumeSurvey: onRequestResumeSurvey, onRequestRetakeSurvey: onRequestRetakeSurvey, onRequestClose: closeFn, mixpanelTrack: mixpanelTrack, email: email, theme: resolvedTheme, origin: origin, initialTab: activeTab })))));
154
168
  };
@@ -53,7 +53,14 @@ export const HelpCenter = ({ configuration, organization, persona, email, audien
53
53
  setTabTiles(tiles);
54
54
  setIsLoadingTiles(false);
55
55
  })();
56
- }, [token, persona, audience, organization, clusters, tabs]);
56
+ }, [
57
+ token,
58
+ JSON.stringify(persona),
59
+ audience,
60
+ JSON.stringify(organization),
61
+ JSON.stringify(clusters),
62
+ JSON.stringify(tabs),
63
+ ]);
57
64
  useEffect(() => {
58
65
  setActiveTab(initialTab ?? firstTab);
59
66
  }, [initialTab]);
@@ -34,7 +34,7 @@ export const C3OnboardingSurvey = (props) => {
34
34
  setOnboardConfig(config);
35
35
  setIsLoadingConfig(false);
36
36
  })();
37
- }, [JSON.stringify(decodedToken), decodedAudience, persona?.nextStep]);
37
+ }, [JSON.stringify(decodedToken), decodedAudience]);
38
38
  React.useEffect(() => {
39
39
  setPersona(props.persona);
40
40
  }, [props.persona]);
@@ -9,6 +9,7 @@ export type C3ProfileContextValue = {
9
9
  orgs: Organization[] | null;
10
10
  activeOrg: Organization | null;
11
11
  clusters: Cluster[] | null;
12
+ reloadClusters: () => void;
12
13
  resolvedTheme: ResolvedTheme;
13
14
  onThemeChange: (newTheme: Theme) => void;
14
15
  };
@@ -9,6 +9,7 @@ export const C3ProfileContext = createContext({
9
9
  orgs: null,
10
10
  activeOrg: null,
11
11
  clusters: null,
12
+ reloadClusters: () => undefined,
12
13
  resolvedTheme: defaultTheme,
13
14
  onThemeChange: () => undefined,
14
15
  });
@@ -20,6 +21,13 @@ export const C3ProfileProvider = ({ children }) => {
20
21
  const [orgs, setOrgs] = useState(null);
21
22
  const [activeOrg, setActiveOrg] = useState(null);
22
23
  const [clusters, setClusters] = useState(null);
24
+ const loadClusters = () => {
25
+ if (!config.userToken || !decodedAudience || !config.activeOrganizationId)
26
+ return;
27
+ getClusters(decodedAudience, config.userToken, config.activeOrganizationId).then((res) => {
28
+ setClusters(res);
29
+ });
30
+ };
23
31
  useEffect(() => {
24
32
  if (!decodedToken || !decodedAudience || !config.activeOrganizationId) {
25
33
  return;
@@ -28,9 +36,7 @@ export const C3ProfileProvider = ({ children }) => {
28
36
  setOrgs(res);
29
37
  setActiveOrg(res?.find((org) => org.uuid === config.activeOrganizationId) || null);
30
38
  });
31
- getClusters(decodedAudience, config.userToken, config.activeOrganizationId).then((res) => {
32
- setClusters(res);
33
- });
39
+ loadClusters();
34
40
  }, [config?.activeOrganizationId, decodedToken, decodedAudience]);
35
41
  useEffect(() => {
36
42
  const updateSystemTheme = ({ matches }) => {
@@ -71,6 +77,7 @@ export const C3ProfileProvider = ({ children }) => {
71
77
  orgs,
72
78
  activeOrg,
73
79
  clusters,
80
+ reloadClusters: loadClusters,
74
81
  onThemeChange,
75
82
  } },
76
83
  React.createElement(CarbonThemeProvider, null, children))) : (children);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camunda/camunda-composite-components",
3
- "version": "0.2.16-rc.2",
3
+ "version": "0.2.16-rc.4",
4
4
  "scripts": {
5
5
  "clean": "rimraf lib/",
6
6
  "build": "yarn clean && tsc",