@selfcommunity/react-ui 0.8.0-alpha.24 → 0.8.0-alpha.25
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.
|
@@ -13,6 +13,9 @@ const react_intl_1 = require("react-intl");
|
|
|
13
13
|
const react_core_1 = require("@selfcommunity/react-core");
|
|
14
14
|
const SocialShare_1 = require("../../../../constants/SocialShare");
|
|
15
15
|
const api_services_1 = require("@selfcommunity/api-services");
|
|
16
|
+
const utils_1 = require("@selfcommunity/utils");
|
|
17
|
+
const Errors_1 = require("../../../../constants/Errors");
|
|
18
|
+
const types_1 = require("@selfcommunity/types");
|
|
16
19
|
const classes = {
|
|
17
20
|
root: `${constants_1.PREFIX}-invite-root`,
|
|
18
21
|
title: `${constants_1.PREFIX}-invite-title`,
|
|
@@ -26,6 +29,7 @@ const Root = (0, styles_1.styled)(Box_1.default, {
|
|
|
26
29
|
name: constants_1.PREFIX,
|
|
27
30
|
slot: 'InviteRoot'
|
|
28
31
|
})(() => ({}));
|
|
32
|
+
const META_ROBOTS_ENABLE_DEFAULT = 'index,follow';
|
|
29
33
|
function Invite(inProps) {
|
|
30
34
|
// PROPS
|
|
31
35
|
const props = (0, system_1.useThemeProps)({
|
|
@@ -33,16 +37,38 @@ function Invite(inProps) {
|
|
|
33
37
|
name: constants_1.PREFIX
|
|
34
38
|
});
|
|
35
39
|
const { className, onCompleteAction = null } = props;
|
|
40
|
+
// STATUS
|
|
41
|
+
const [isMetaRobotsUpdating, setMetaRobotsUpdating] = (0, react_1.useState)(false);
|
|
36
42
|
// CONTEXT
|
|
37
43
|
const scPreferencesContext = (0, react_1.useContext)(react_core_1.SCPreferencesContext);
|
|
44
|
+
const metaRobots = (0, react_1.useMemo)(() => {
|
|
45
|
+
return scPreferencesContext.preferences && react_core_1.SCPreferences.WEBMASTER_META_ROBOTS in scPreferencesContext.preferences
|
|
46
|
+
? scPreferencesContext.preferences[react_core_1.SCPreferences.WEBMASTER_META_ROBOTS].value
|
|
47
|
+
: null;
|
|
48
|
+
}, [scPreferencesContext.preferences]);
|
|
38
49
|
const url = (0, react_1.useMemo)(() => scPreferencesContext.preferences &&
|
|
39
50
|
react_core_1.SCPreferences.CONFIGURATIONS_GROUPS_ENABLED in scPreferencesContext.preferences &&
|
|
40
51
|
scPreferencesContext.preferences[react_core_1.SCPreferences.CONFIGURATIONS_APP_URL].value, [scPreferencesContext.preferences]);
|
|
41
52
|
// HANDLERS
|
|
42
|
-
const handleShare = (shareUrl, shareType) => {
|
|
53
|
+
const handleShare = (shareUrl, shareType) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
if (metaRobots.toLowerCase().replace(/\s+/g, '') !== META_ROBOTS_ENABLE_DEFAULT) {
|
|
55
|
+
yield enableSeo();
|
|
56
|
+
}
|
|
43
57
|
window.open(shareUrl, `${shareType}-share-dialog`, 'width=626,height=436');
|
|
44
58
|
onCompleteAction();
|
|
45
|
-
};
|
|
59
|
+
});
|
|
60
|
+
const enableSeo = () => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
try {
|
|
62
|
+
setMetaRobotsUpdating(true);
|
|
63
|
+
yield api_services_1.PreferenceService.updatePreferences({ [types_1.SCPreferenceName.META_ROBOTS]: 'index, follow' });
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
utils_1.Logger.error(Errors_1.SCOPE_SC_UI, e);
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
setMetaRobotsUpdating(false);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
46
72
|
/**
|
|
47
73
|
* Fetches platform url
|
|
48
74
|
*/
|
|
@@ -67,6 +93,6 @@ function Invite(inProps) {
|
|
|
67
93
|
onCompleteAction();
|
|
68
94
|
fetchPlatform('/marketing/invitation');
|
|
69
95
|
};
|
|
70
|
-
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h4", className: classes.title }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.invite", defaultMessage: "ui.onBoardingWidget.invite" }) })), (0, jsx_runtime_1.jsxs)(Box_1.default, Object.assign({ className: classes.social }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.title", defaultMessage: "ui.onBoardingWidget.step.invite.social.title" }) })), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "subtitle1" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.social.subtitle" }) })), (0, jsx_runtime_1.jsxs)(Box_1.default, Object.assign({ className: classes.iconContainer }, { children: [(0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: () => handleShare(SocialShare_1.FACEBOOK_SHARE + url, 'facebook'), disabled: !url }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ classes: { root: classes.icon } }, { children: "facebook" })) })), (0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: () => handleShare(SocialShare_1.X_SHARE + url, 'x'), disabled: !url }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ classes: { root: classes.icon } }, { children: "twitter" })) })), (0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: () => handleShare(SocialShare_1.LINKEDIN_SHARE + url, 'linkedin'), disabled: !url }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ classes: { root: classes.icon } }, { children: "linkedin" })) }))] }))] })), (0, jsx_runtime_1.jsxs)(Box_1.default, Object.assign({ className: classes.email }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.title", defaultMessage: "ui.onBoardingWidget.step.invite.email.title" }) })), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "subtitle1" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.email.subtitle" }) }))] })), (0, jsx_runtime_1.jsx)(Box_1.default, Object.assign({ component: "span", className: classes.action }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "outlined", size: "small", onClick: handleCompleteAction }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.onBoardingWidget.step.invite.button", id: "ui.onBoardingWidget.step.invite.button" }) })) }))] })));
|
|
96
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h4", className: classes.title }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.invite", defaultMessage: "ui.onBoardingWidget.invite" }) })), (0, jsx_runtime_1.jsxs)(Box_1.default, Object.assign({ className: classes.social }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.title", defaultMessage: "ui.onBoardingWidget.step.invite.social.title" }) })), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "subtitle1" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.social.subtitle" }) })), (0, jsx_runtime_1.jsxs)(Box_1.default, Object.assign({ className: classes.iconContainer }, { children: [(0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: () => handleShare(SocialShare_1.FACEBOOK_SHARE + url, 'facebook'), disabled: !url || isMetaRobotsUpdating }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ classes: { root: classes.icon } }, { children: "facebook" })) })), (0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: () => handleShare(SocialShare_1.X_SHARE + url, 'x'), disabled: !url || isMetaRobotsUpdating }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ classes: { root: classes.icon } }, { children: "twitter" })) })), (0, jsx_runtime_1.jsx)(material_1.IconButton, Object.assign({ onClick: () => handleShare(SocialShare_1.LINKEDIN_SHARE + url, 'linkedin'), disabled: !url || isMetaRobotsUpdating }, { children: (0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ classes: { root: classes.icon } }, { children: "linkedin" })) }))] }))] })), (0, jsx_runtime_1.jsxs)(Box_1.default, Object.assign({ className: classes.email }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.title", defaultMessage: "ui.onBoardingWidget.step.invite.email.title" }) })), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "subtitle1" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.email.subtitle" }) }))] })), (0, jsx_runtime_1.jsx)(Box_1.default, Object.assign({ component: "span", className: classes.action }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "outlined", size: "small", onClick: handleCompleteAction }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { defaultMessage: "ui.onBoardingWidget.step.invite.button", id: "ui.onBoardingWidget.step.invite.button" }) })) }))] })));
|
|
71
97
|
}
|
|
72
98
|
exports.default = Invite;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
1
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useContext, useMemo } from 'react';
|
|
3
|
+
import { useContext, useMemo, useState } from 'react';
|
|
3
4
|
import { styled } from '@mui/material/styles';
|
|
4
5
|
import Box from '@mui/material/Box';
|
|
5
6
|
import { useThemeProps } from '@mui/system';
|
|
@@ -9,7 +10,10 @@ import { Button, Icon, IconButton, Typography } from '@mui/material';
|
|
|
9
10
|
import { FormattedMessage } from 'react-intl';
|
|
10
11
|
import { SCPreferences, SCPreferencesContext } from '@selfcommunity/react-core';
|
|
11
12
|
import { FACEBOOK_SHARE, LINKEDIN_SHARE, X_SHARE } from '../../../../constants/SocialShare';
|
|
12
|
-
import { Endpoints, http } from '@selfcommunity/api-services';
|
|
13
|
+
import { Endpoints, http, PreferenceService } from '@selfcommunity/api-services';
|
|
14
|
+
import { Logger } from '@selfcommunity/utils';
|
|
15
|
+
import { SCOPE_SC_UI } from '../../../../constants/Errors';
|
|
16
|
+
import { SCPreferenceName } from '@selfcommunity/types';
|
|
13
17
|
const classes = {
|
|
14
18
|
root: `${PREFIX}-invite-root`,
|
|
15
19
|
title: `${PREFIX}-invite-title`,
|
|
@@ -23,6 +27,7 @@ const Root = styled(Box, {
|
|
|
23
27
|
name: PREFIX,
|
|
24
28
|
slot: 'InviteRoot'
|
|
25
29
|
})(() => ({}));
|
|
30
|
+
const META_ROBOTS_ENABLE_DEFAULT = 'index,follow';
|
|
26
31
|
export default function Invite(inProps) {
|
|
27
32
|
// PROPS
|
|
28
33
|
const props = useThemeProps({
|
|
@@ -30,16 +35,38 @@ export default function Invite(inProps) {
|
|
|
30
35
|
name: PREFIX
|
|
31
36
|
});
|
|
32
37
|
const { className, onCompleteAction = null } = props;
|
|
38
|
+
// STATUS
|
|
39
|
+
const [isMetaRobotsUpdating, setMetaRobotsUpdating] = useState(false);
|
|
33
40
|
// CONTEXT
|
|
34
41
|
const scPreferencesContext = useContext(SCPreferencesContext);
|
|
42
|
+
const metaRobots = useMemo(() => {
|
|
43
|
+
return scPreferencesContext.preferences && SCPreferences.WEBMASTER_META_ROBOTS in scPreferencesContext.preferences
|
|
44
|
+
? scPreferencesContext.preferences[SCPreferences.WEBMASTER_META_ROBOTS].value
|
|
45
|
+
: null;
|
|
46
|
+
}, [scPreferencesContext.preferences]);
|
|
35
47
|
const url = useMemo(() => scPreferencesContext.preferences &&
|
|
36
48
|
SCPreferences.CONFIGURATIONS_GROUPS_ENABLED in scPreferencesContext.preferences &&
|
|
37
49
|
scPreferencesContext.preferences[SCPreferences.CONFIGURATIONS_APP_URL].value, [scPreferencesContext.preferences]);
|
|
38
50
|
// HANDLERS
|
|
39
|
-
const handleShare = (shareUrl, shareType) => {
|
|
51
|
+
const handleShare = (shareUrl, shareType) => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
if (metaRobots.toLowerCase().replace(/\s+/g, '') !== META_ROBOTS_ENABLE_DEFAULT) {
|
|
53
|
+
yield enableSeo();
|
|
54
|
+
}
|
|
40
55
|
window.open(shareUrl, `${shareType}-share-dialog`, 'width=626,height=436');
|
|
41
56
|
onCompleteAction();
|
|
42
|
-
};
|
|
57
|
+
});
|
|
58
|
+
const enableSeo = () => __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
try {
|
|
60
|
+
setMetaRobotsUpdating(true);
|
|
61
|
+
yield PreferenceService.updatePreferences({ [SCPreferenceName.META_ROBOTS]: 'index, follow' });
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
Logger.error(SCOPE_SC_UI, e);
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
setMetaRobotsUpdating(false);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
43
70
|
/**
|
|
44
71
|
* Fetches platform url
|
|
45
72
|
*/
|
|
@@ -64,5 +91,5 @@ export default function Invite(inProps) {
|
|
|
64
91
|
onCompleteAction();
|
|
65
92
|
fetchPlatform('/marketing/invitation');
|
|
66
93
|
};
|
|
67
|
-
return (_jsxs(Root, Object.assign({ className: classNames(classes.root, className) }, { children: [_jsx(Typography, Object.assign({ variant: "h4", className: classes.title }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.invite", defaultMessage: "ui.onBoardingWidget.invite" }) })), _jsxs(Box, Object.assign({ className: classes.social }, { children: [_jsx(Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.title", defaultMessage: "ui.onBoardingWidget.step.invite.social.title" }) })), _jsx(Typography, Object.assign({ variant: "subtitle1" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.social.subtitle" }) })), _jsxs(Box, Object.assign({ className: classes.iconContainer }, { children: [_jsx(IconButton, Object.assign({ onClick: () => handleShare(FACEBOOK_SHARE + url, 'facebook'), disabled: !url }, { children: _jsx(Icon, Object.assign({ classes: { root: classes.icon } }, { children: "facebook" })) })), _jsx(IconButton, Object.assign({ onClick: () => handleShare(X_SHARE + url, 'x'), disabled: !url }, { children: _jsx(Icon, Object.assign({ classes: { root: classes.icon } }, { children: "twitter" })) })), _jsx(IconButton, Object.assign({ onClick: () => handleShare(LINKEDIN_SHARE + url, 'linkedin'), disabled: !url }, { children: _jsx(Icon, Object.assign({ classes: { root: classes.icon } }, { children: "linkedin" })) }))] }))] })), _jsxs(Box, Object.assign({ className: classes.email }, { children: [_jsx(Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.title", defaultMessage: "ui.onBoardingWidget.step.invite.email.title" }) })), _jsx(Typography, Object.assign({ variant: "subtitle1" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.email.subtitle" }) }))] })), _jsx(Box, Object.assign({ component: "span", className: classes.action }, { children: _jsx(Button, Object.assign({ variant: "outlined", size: "small", onClick: handleCompleteAction }, { children: _jsx(FormattedMessage, { defaultMessage: "ui.onBoardingWidget.step.invite.button", id: "ui.onBoardingWidget.step.invite.button" }) })) }))] })));
|
|
94
|
+
return (_jsxs(Root, Object.assign({ className: classNames(classes.root, className) }, { children: [_jsx(Typography, Object.assign({ variant: "h4", className: classes.title }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.invite", defaultMessage: "ui.onBoardingWidget.invite" }) })), _jsxs(Box, Object.assign({ className: classes.social }, { children: [_jsx(Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.title", defaultMessage: "ui.onBoardingWidget.step.invite.social.title" }) })), _jsx(Typography, Object.assign({ variant: "subtitle1" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.social.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.social.subtitle" }) })), _jsxs(Box, Object.assign({ className: classes.iconContainer }, { children: [_jsx(IconButton, Object.assign({ onClick: () => handleShare(FACEBOOK_SHARE + url, 'facebook'), disabled: !url || isMetaRobotsUpdating }, { children: _jsx(Icon, Object.assign({ classes: { root: classes.icon } }, { children: "facebook" })) })), _jsx(IconButton, Object.assign({ onClick: () => handleShare(X_SHARE + url, 'x'), disabled: !url || isMetaRobotsUpdating }, { children: _jsx(Icon, Object.assign({ classes: { root: classes.icon } }, { children: "twitter" })) })), _jsx(IconButton, Object.assign({ onClick: () => handleShare(LINKEDIN_SHARE + url, 'linkedin'), disabled: !url || isMetaRobotsUpdating }, { children: _jsx(Icon, Object.assign({ classes: { root: classes.icon } }, { children: "linkedin" })) }))] }))] })), _jsxs(Box, Object.assign({ className: classes.email }, { children: [_jsx(Typography, Object.assign({ className: classes.title, variant: "h4" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.title", defaultMessage: "ui.onBoardingWidget.step.invite.email.title" }) })), _jsx(Typography, Object.assign({ variant: "subtitle1" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.invite.email.subtitle", defaultMessage: "ui.onBoardingWidget.step.invite.email.subtitle" }) }))] })), _jsx(Box, Object.assign({ component: "span", className: classes.action }, { children: _jsx(Button, Object.assign({ variant: "outlined", size: "small", onClick: handleCompleteAction }, { children: _jsx(FormattedMessage, { defaultMessage: "ui.onBoardingWidget.step.invite.button", id: "ui.onBoardingWidget.step.invite.button" }) })) }))] })));
|
|
68
95
|
}
|