diff --git a/packages/article-comments/__tests__/web/__snapshots__/shared.web.test.js.snap b/packages/article-comments/__tests__/web/__snapshots__/shared.web.test.js.snap
index 58480d3a39d..c08e792843d 100644
--- a/packages/article-comments/__tests__/web/__snapshots__/shared.web.test.js.snap
+++ b/packages/article-comments/__tests__/web/__snapshots__/shared.web.test.js.snap
@@ -7,6 +7,44 @@ exports[`Render comments label, when comments are loaded 1`] = `
margin-right: auto;
}
+.c2 {
+ color: #696969;
+ font-family: Roboto-Regular,Roboto-Regular-fallback,sans-serif;
+ font-size: 12px;
+ margin: 0;
+ padding-bottom: 30px;
+ padding-top: 5px;
+ text-align: center;
+}
+
+.c1 {
+ color: #333333;
+ font-family: TimesModern-Bold,TimesModern-Bold-fallback,serif;
+ font-size: 27px;
+ margin: 0;
+ padding-bottom: 5px;
+ padding-top: 30px;
+ text-align: center;
+}
+
+.c3 {
+ border: 0px solid black;
+ box-sizing: border-box;
+ color: rgb(0,0,0);
+ display: inline;
+ font-size: 14px;
+ font-family: sans-serif;
+ margin: 0px;
+ padding: 0px;
+ white-space: pre-wrap;
+ overflow-wrap: break-word;
+ -webkit-text-decoration: underline;
+ text-decoration: underline;
+ color: #006699;
+ font-family: Roboto-Regular,Roboto-Regular-fallback,sans-serif;
+ font-size: 12px;
+}
+
@media (min-width:768px) {
.c0 {
width: 80.8%;
@@ -21,24 +59,110 @@ exports[`Render comments label, when comments are loaded 1`] = `
`;
-exports[`User States No user state 1`] = ``;
+exports[`User States No user state 1`] = `
+
+ .c0 {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.c2 {
+ color: #696969;
+ font-family: Roboto-Regular,Roboto-Regular-fallback,sans-serif;
+ font-size: 12px;
+ margin: 0;
+ padding-bottom: 30px;
+ padding-top: 5px;
+ text-align: center;
+}
+
+.c1 {
+ color: #333333;
+ font-family: TimesModern-Bold,TimesModern-Bold-fallback,serif;
+ font-size: 27px;
+ margin: 0;
+ padding-bottom: 5px;
+ padding-top: 30px;
+ text-align: center;
+}
+
+.c3 {
+ border: 0px solid black;
+ box-sizing: border-box;
+ color: rgb(0,0,0);
+ display: inline;
+ font-size: 14px;
+ font-family: sans-serif;
+ margin: 0px;
+ padding: 0px;
+ white-space: pre-wrap;
+ overflow-wrap: break-word;
+ -webkit-text-decoration: underline;
+ text-decoration: underline;
+ color: #006699;
+ font-family: Roboto-Regular,Roboto-Regular-fallback,sans-serif;
+ font-size: 12px;
+}
+
+@media (min-width:768px) {
+ .c0 {
+ width: 80.8%;
+ }
+}
+
+@media (min-width:1024px) {
+ .c0 {
+ width: 56.2%;
+ }
+}
+
+
+
+ Comments for this article have been turned off
+
+
+ Comments are subject to our community guidelines, which can be viewed
+
+ here
+
+ .
+
+
+
+`;
exports[`User States RA Users 1`] = `
@@ -308,6 +432,44 @@ exports[`single comment 1`] = `
margin-right: auto;
}
+.c2 {
+ color: #696969;
+ font-family: Roboto-Regular,Roboto-Regular-fallback,sans-serif;
+ font-size: 12px;
+ margin: 0;
+ padding-bottom: 30px;
+ padding-top: 5px;
+ text-align: center;
+}
+
+.c1 {
+ color: #333333;
+ font-family: TimesModern-Bold,TimesModern-Bold-fallback,serif;
+ font-size: 27px;
+ margin: 0;
+ padding-bottom: 5px;
+ padding-top: 30px;
+ text-align: center;
+}
+
+.c3 {
+ border: 0px solid black;
+ box-sizing: border-box;
+ color: rgb(0,0,0);
+ display: inline;
+ font-size: 14px;
+ font-family: sans-serif;
+ margin: 0px;
+ padding: 0px;
+ white-space: pre-wrap;
+ overflow-wrap: break-word;
+ -webkit-text-decoration: underline;
+ text-decoration: underline;
+ color: #006699;
+ font-family: Roboto-Regular,Roboto-Regular-fallback,sans-serif;
+ font-size: 12px;
+}
+
@media (min-width:768px) {
.c0 {
width: 80.8%;
@@ -322,38 +484,30 @@ exports[`single comment 1`] = `
`;
-exports[`window listeners added all listeners added 1`] = `
-Array [
- "spot-im-current-user-typing-start",
- "spot-im-current-user-sent-message",
- "spot-im-notification-drop-down-link",
- "spot-im-user-up-vote-click",
- "spot-im-sort-by-select",
- "spot-im-user-clicked-reply",
- "spot-im-clicked-settings",
- "spot-im-user-notifications-click",
- "spot-im-open-user-profile",
- "spot-im-share-type",
- "spot-im-renew-sso",
-]
-`;
+exports[`window listeners added all listeners added 1`] = `Array []`;
exports[`zero comments 1`] = `
@@ -362,6 +516,44 @@ exports[`zero comments 1`] = `
margin-right: auto;
}
+.c2 {
+ color: #696969;
+ font-family: Roboto-Regular,Roboto-Regular-fallback,sans-serif;
+ font-size: 12px;
+ margin: 0;
+ padding-bottom: 30px;
+ padding-top: 5px;
+ text-align: center;
+}
+
+.c1 {
+ color: #333333;
+ font-family: TimesModern-Bold,TimesModern-Bold-fallback,serif;
+ font-size: 27px;
+ margin: 0;
+ padding-bottom: 5px;
+ padding-top: 30px;
+ text-align: center;
+}
+
+.c3 {
+ border: 0px solid black;
+ box-sizing: border-box;
+ color: rgb(0,0,0);
+ display: inline;
+ font-size: 14px;
+ font-family: sans-serif;
+ margin: 0px;
+ padding: 0px;
+ white-space: pre-wrap;
+ overflow-wrap: break-word;
+ -webkit-text-decoration: underline;
+ text-decoration: underline;
+ color: #006699;
+ font-family: Roboto-Regular,Roboto-Regular-fallback,sans-serif;
+ font-size: 12px;
+}
+
@media (min-width:768px) {
.c0 {
width: 80.8%;
@@ -376,19 +568,25 @@ exports[`zero comments 1`] = `
`;
diff --git a/packages/article-comments/__tests__/web/shared.web.test.js b/packages/article-comments/__tests__/web/shared.web.test.js
index ef719bdac3c..d88ce8615fb 100644
--- a/packages/article-comments/__tests__/web/shared.web.test.js
+++ b/packages/article-comments/__tests__/web/shared.web.test.js
@@ -55,6 +55,8 @@ describe("comments-login", () => {
describe("User States", () => {
it("enabled comments", () => {
+ document.cookie = "auth-decisions=eyJmcC0xMTExIjp0cnVlfQ.";
+ UserState.mockStates = [UserState.showArticleComments];
const { asFragment, baseElement } = renderComments({
count: 123,
enabled: true
@@ -68,6 +70,9 @@ describe("User States", () => {
});
it("uses com host when received", () => {
+ document.cookie = "auth-decisions=eyJmcC0xMTExIjp0cnVlfQ.";
+ UserState.mockStates = [UserState.showArticleComments];
+
const { asFragment, baseElement } = renderComments({
count: 123,
enabled: true,
@@ -84,8 +89,12 @@ describe("User States", () => {
});
it("RA Users", () => {
- UserState.mockStates = [UserState.showJoinTheConversationDialog];
-
+ UserState.mockStates = [
+ UserState.showJoinTheConversationDialog,
+ UserState.showArticleComments
+ ];
+ document.cookie =
+ "auth-decisions=eyJmcC0xMTExIjp0cnVlLCJhbGciOiJIUfzI1NiJc9";
const { asFragment, getAllByText } = renderComments({
count: 123,
enabled: true
diff --git a/packages/article-comments/src/article-comments.js b/packages/article-comments/src/article-comments.js
index bf16f347057..8fa83b4e36b 100644
--- a/packages/article-comments/src/article-comments.js
+++ b/packages/article-comments/src/article-comments.js
@@ -6,62 +6,79 @@ import UserState from "@times-components/user-state";
import Comments from "./comments";
import DisabledComments from "./disabled-comments";
import JoinTheConversationDialog from "./join-the-conversation-dialog";
-import UserEntitlementState from "./user-entitlement-state";
const ArticleComments = ({
articleId,
isEnabled,
isReadOnly,
commentingConfig,
- isCommentEnabled,
storefrontConfig,
- domainSpecificUrl,
- isEntitlementFeatureEnabled
+ domainSpecificUrl
}) => {
- const [userEntitlementData, setUserEntitlementData] = useState(undefined);
+ const [hasCommentingEntitlement, setHasCommentingEntitlement] = useState(
+ false
+ );
+
+ useEffect(() => {
+ const convertBase64JSONCookie = cookieValue => {
+ try {
+ return cookieValue
+ ? JSON.parse(Buffer.from(cookieValue, "base64").toString())
+ : undefined;
+ } catch (e) {
+ return undefined;
+ }
+ };
- useEffect(
- () => {
- const fetchUserEntitlements = async () => {
- const response = await fetch("/api/get-user-entitlements");
- const data = await response.json();
- setUserEntitlementData(data);
- };
+ const fetchClientSideCookie = () => {
+ const cookies = document.cookie.split("; ");
+ const authDecisionCookie = cookies.find(row =>
+ row.startsWith("auth-decisions=")
+ );
+ const cookieValue = authDecisionCookie
+ ? authDecisionCookie.split("=")[1]
+ : null;
- if (typeof window !== "undefined" && isEntitlementFeatureEnabled) {
- fetchUserEntitlements();
+ if (cookieValue) {
+ try {
+ const jsonValue = convertBase64JSONCookie(cookieValue);
+ const entitlements = jsonValue ? jsonValue["fp-1111"] : false;
+ setHasCommentingEntitlement(entitlements);
+ } catch (error) {
+ setHasCommentingEntitlement(false);
+ }
+ } else {
+ setHasCommentingEntitlement(false);
}
- },
- [isEntitlementFeatureEnabled]
- );
+ };
+
+ fetchClientSideCookie();
+ }, []);
+
+ let content;
+ if (!isEnabled) {
+ content = ;
+ } else if (hasCommentingEntitlement) {
+ content = (
+
+ );
+ } else {
+ content = ;
+ }
- return isEnabled && isCommentEnabled ? (
- <>
-
-
-
- {!isEntitlementFeatureEnabled ? (
-
-
-
- ) : (
-
-
-
- )}
- >
- ) : (
-
+ return (
+ }
+ serverRender={false}
+ >
+ {content}
+
);
};
@@ -73,14 +90,11 @@ ArticleComments.propTypes = {
account: PropTypes.string.isRequired
}).isRequired,
storefrontConfig: PropTypes.string.isRequired,
- isCommentEnabled: PropTypes.bool,
- domainSpecificUrl: PropTypes.string.isRequired,
- isEntitlementFeatureEnabled: PropTypes.bool.isRequired
+ domainSpecificUrl: PropTypes.string.isRequired
};
ArticleComments.defaultProps = {
- isReadOnly: false,
- isCommentEnabled: true
+ isReadOnly: false
};
export default ArticleComments;
diff --git a/packages/article-in-depth/__tests__/web/__snapshots__/semantic.web.test.js.snap b/packages/article-in-depth/__tests__/web/__snapshots__/semantic.web.test.js.snap
index f1818a65e2b..ffe71158c63 100644
--- a/packages/article-in-depth/__tests__/web/__snapshots__/semantic.web.test.js.snap
+++ b/packages/article-in-depth/__tests__/web/__snapshots__/semantic.web.test.js.snap
@@ -488,6 +488,14 @@ exports[`1. a full article 1`] = `
PROMOTED CONTENT
+ Join the conversation
+ Commenting is only available to unlimited access subscribers. Upgrade your subscription to have your say.
+
+ View offers
+
diff --git a/packages/article-magazine-comment/__tests__/web/__snapshots__/semantic.web.test.js.snap b/packages/article-magazine-comment/__tests__/web/__snapshots__/semantic.web.test.js.snap
index 0aeb8886dc8..aa36ab04200 100644
--- a/packages/article-magazine-comment/__tests__/web/__snapshots__/semantic.web.test.js.snap
+++ b/packages/article-magazine-comment/__tests__/web/__snapshots__/semantic.web.test.js.snap
@@ -493,6 +493,14 @@ exports[`1. a full article 1`] = `
PROMOTED CONTENT
+ Join the conversation
+ Commenting is only available to unlimited access subscribers. Upgrade your subscription to have your say.
+
+ View offers
+
diff --git a/packages/article-magazine-standard/__tests__/web/__snapshots__/semantic.web.test.js.snap b/packages/article-magazine-standard/__tests__/web/__snapshots__/semantic.web.test.js.snap
index dbb713b676d..a32ab7e9575 100644
--- a/packages/article-magazine-standard/__tests__/web/__snapshots__/semantic.web.test.js.snap
+++ b/packages/article-magazine-standard/__tests__/web/__snapshots__/semantic.web.test.js.snap
@@ -493,6 +493,14 @@ exports[`1. a full article 1`] = `
PROMOTED CONTENT
+ Join the conversation
+ Commenting is only available to unlimited access subscribers. Upgrade your subscription to have your say.
+
+ View offers
+
diff --git a/packages/article-main-comment/__tests__/web/__snapshots__/semantic.web.test.js.snap b/packages/article-main-comment/__tests__/web/__snapshots__/semantic.web.test.js.snap
index 1e03f7da2af..9f78700cd46 100644
--- a/packages/article-main-comment/__tests__/web/__snapshots__/semantic.web.test.js.snap
+++ b/packages/article-main-comment/__tests__/web/__snapshots__/semantic.web.test.js.snap
@@ -482,6 +482,14 @@ exports[`1. a full article 1`] = `
PROMOTED CONTENT
+ Join the conversation
+ Commenting is only available to unlimited access subscribers. Upgrade your subscription to have your say.
+
+ View offers
+
diff --git a/packages/article-main-standard/__tests__/web/__snapshots__/semantic.web.test.js.snap b/packages/article-main-standard/__tests__/web/__snapshots__/semantic.web.test.js.snap
index 8f3b1c1e0aa..4218467136b 100644
--- a/packages/article-main-standard/__tests__/web/__snapshots__/semantic.web.test.js.snap
+++ b/packages/article-main-standard/__tests__/web/__snapshots__/semantic.web.test.js.snap
@@ -354,6 +354,14 @@ exports[`1. a full article with an image as the lead asset 1`] = `
PROMOTED CONTENT
+ Join the conversation
+ Commenting is only available to unlimited access subscribers. Upgrade your subscription to have your say.
+
+ View offers
+
diff --git a/packages/card/__tests__/web/__snapshots__/card-loading-style.test.js.snap b/packages/card/__tests__/web/__snapshots__/card-loading-style.test.js.snap
index ab3873894e2..b6343fd534d 100644
--- a/packages/card/__tests__/web/__snapshots__/card-loading-style.test.js.snap
+++ b/packages/card/__tests__/web/__snapshots__/card-loading-style.test.js.snap
@@ -80,7 +80,7 @@ exports[`1. card loading state 1`] = `
"$$typeof": Symbol(react.forward_ref),
"attrs": Array [],
"componentStyle": ComponentStyle {
- "componentId": "Animations__FadeIn-w31u4-0",
+ "componentId": "Animations__FadeIn-je5757-0",
"isStatic": false,
"lastClassName": "c0",
"rules": Array [
@@ -115,10 +115,10 @@ exports[`1. card loading state 1`] = `
},
"displayName": "Animations__FadeIn",
"foldedComponentIds": Array [
- "TsTcView-sc-154dp5w-0",
+ "TsTcView-o5ytee-0",
],
"render": [Function],
- "styledComponentId": "Animations__FadeIn-w31u4-0",
+ "styledComponentId": "Animations__FadeIn-je5757-0",
"target": "div",
"toString": [Function],
"warnTooManyClasses": [Function],
@@ -402,7 +402,7 @@ exports[`2. card with reversed loading state 1`] = `
"$$typeof": Symbol(react.forward_ref),
"attrs": Array [],
"componentStyle": ComponentStyle {
- "componentId": "Animations__FadeIn-w31u4-0",
+ "componentId": "Animations__FadeIn-je5757-0",
"isStatic": false,
"lastClassName": "c0",
"rules": Array [
@@ -437,10 +437,10 @@ exports[`2. card with reversed loading state 1`] = `
},
"displayName": "Animations__FadeIn",
"foldedComponentIds": Array [
- "TsTcView-sc-154dp5w-0",
+ "TsTcView-o5ytee-0",
],
"render": [Function],
- "styledComponentId": "Animations__FadeIn-w31u4-0",
+ "styledComponentId": "Animations__FadeIn-je5757-0",
"target": "div",
"toString": [Function],
"warnTooManyClasses": [Function],
diff --git a/packages/card/__tests__/web/__snapshots__/card.web.test.js.snap b/packages/card/__tests__/web/__snapshots__/card.web.test.js.snap
index 8d40791e3a4..0d69d7c7505 100644
--- a/packages/card/__tests__/web/__snapshots__/card.web.test.js.snap
+++ b/packages/card/__tests__/web/__snapshots__/card.web.test.js.snap
@@ -850,9 +850,9 @@ exports[`7. card with a loading state 1`] = `
"$$typeof": Symbol(react.forward_ref),
"attrs": Array [],
"componentStyle": ComponentStyle {
- "componentId": "Animations__FadeIn-w31u4-0",
+ "componentId": "Animations__FadeIn-je5757-0",
"isStatic": false,
- "lastClassName": "ejSuos",
+ "lastClassName": "dazpaJ",
"rules": Array [
"border:0px solid black;box-sizing:border-box;display:flex;flex-direction:column;margin:",
[Function],
@@ -885,10 +885,10 @@ exports[`7. card with a loading state 1`] = `
},
"displayName": "Animations__FadeIn",
"foldedComponentIds": Array [
- "TsTcView-sc-154dp5w-0",
+ "TsTcView-o5ytee-0",
],
"render": [Function],
- "styledComponentId": "Animations__FadeIn-w31u4-0",
+ "styledComponentId": "Animations__FadeIn-je5757-0",
"target": "div",
"toString": [Function],
"warnTooManyClasses": [Function],
@@ -1055,9 +1055,9 @@ exports[`8. card with a loading state and no image 1`] = `
"$$typeof": Symbol(react.forward_ref),
"attrs": Array [],
"componentStyle": ComponentStyle {
- "componentId": "Animations__FadeIn-w31u4-0",
+ "componentId": "Animations__FadeIn-je5757-0",
"isStatic": false,
- "lastClassName": "ejSuos",
+ "lastClassName": "dazpaJ",
"rules": Array [
"border:0px solid black;box-sizing:border-box;display:flex;flex-direction:column;margin:",
[Function],
@@ -1090,10 +1090,10 @@ exports[`8. card with a loading state and no image 1`] = `
},
"displayName": "Animations__FadeIn",
"foldedComponentIds": Array [
- "TsTcView-sc-154dp5w-0",
+ "TsTcView-o5ytee-0",
],
"render": [Function],
- "styledComponentId": "Animations__FadeIn-w31u4-0",
+ "styledComponentId": "Animations__FadeIn-je5757-0",
"target": "div",
"toString": [Function],
"warnTooManyClasses": [Function],
@@ -1219,9 +1219,9 @@ exports[`9. card with reversed loading state 1`] = `
"$$typeof": Symbol(react.forward_ref),
"attrs": Array [],
"componentStyle": ComponentStyle {
- "componentId": "Animations__FadeIn-w31u4-0",
+ "componentId": "Animations__FadeIn-je5757-0",
"isStatic": false,
- "lastClassName": "ejSuos",
+ "lastClassName": "dazpaJ",
"rules": Array [
"border:0px solid black;box-sizing:border-box;display:flex;flex-direction:column;margin:",
[Function],
@@ -1254,10 +1254,10 @@ exports[`9. card with reversed loading state 1`] = `
},
"displayName": "Animations__FadeIn",
"foldedComponentIds": Array [
- "TsTcView-sc-154dp5w-0",
+ "TsTcView-o5ytee-0",
],
"render": [Function],
- "styledComponentId": "Animations__FadeIn-w31u4-0",
+ "styledComponentId": "Animations__FadeIn-je5757-0",
"target": "div",
"toString": [Function],
"warnTooManyClasses": [Function],
@@ -1424,9 +1424,9 @@ exports[`10. card with reversed loading state with no image 1`] = `
"$$typeof": Symbol(react.forward_ref),
"attrs": Array [],
"componentStyle": ComponentStyle {
- "componentId": "Animations__FadeIn-w31u4-0",
+ "componentId": "Animations__FadeIn-je5757-0",
"isStatic": false,
- "lastClassName": "ejSuos",
+ "lastClassName": "dazpaJ",
"rules": Array [
"border:0px solid black;box-sizing:border-box;display:flex;flex-direction:column;margin:",
[Function],
@@ -1459,10 +1459,10 @@ exports[`10. card with reversed loading state with no image 1`] = `
},
"displayName": "Animations__FadeIn",
"foldedComponentIds": Array [
- "TsTcView-sc-154dp5w-0",
+ "TsTcView-o5ytee-0",
],
"render": [Function],
- "styledComponentId": "Animations__FadeIn-w31u4-0",
+ "styledComponentId": "Animations__FadeIn-je5757-0",
"target": "div",
"toString": [Function],
"warnTooManyClasses": [Function],
diff --git a/packages/context/__tests__/web/__snapshots__/theme.test.js.snap b/packages/context/__tests__/web/__snapshots__/theme.test.js.snap
index 66caa06b5fa..90680550f44 100644
--- a/packages/context/__tests__/web/__snapshots__/theme.test.js.snap
+++ b/packages/context/__tests__/web/__snapshots__/theme.test.js.snap
@@ -2,7 +2,7 @@
exports[`ContextProviderWithDefaults adds defaults to the provided context 1`] = `"{\\"theme\\":{\\"scale\\":\\"large\\",\\"sectionColour\\":\\"#FFFFFF\\"},\\"user\\":{\\"isLoggedIn\\":false}}"`;
-exports[`article context with default values 1`] = `"{\\"theme\\":{\\"scale\\":\\"medium\\"},\\"user\\":{\\"isLoggedIn\\":false,\\"isMetered\\":false,\\"isShared\\":false,\\"registrationType\\":\\"\\"}}"`;
+exports[`article context with default values 1`] = `"{\\"theme\\":{\\"scale\\":\\"medium\\"},\\"user\\":{\\"isLoggedIn\\":false,\\"isMetered\\":false,\\"isShared\\":false,\\"registrationType\\":\\"\\",\\"hasAccess\\":false}}"`;
exports[`article context with inline values 1`] = `"{\\"theme\\":{\\"scale\\":\\"large\\",\\"sectionColour\\":\\"#FFFFFF\\"},\\"user\\":{\\"isLoggedIn\\":false}}"`;
diff --git a/packages/context/src/defaults/index.js b/packages/context/src/defaults/index.js
index 3e4602b0d36..432e1797bb2 100644
--- a/packages/context/src/defaults/index.js
+++ b/packages/context/src/defaults/index.js
@@ -13,6 +13,7 @@ export default {
isLoggedIn: false,
isMetered: false,
isShared: false,
- registrationType: ""
+ registrationType: "",
+ hasAccess: false
}
};
diff --git a/packages/user-state/src/matchers.js b/packages/user-state/src/matchers.js
index 46eedadafc8..77e8a9b7d03 100644
--- a/packages/user-state/src/matchers.js
+++ b/packages/user-state/src/matchers.js
@@ -42,3 +42,5 @@ export const showCommentingModule = userState =>
export const showJoinTheConversationDialog = userState =>
hasAccessLoggedInMeteredUser(userState);
+
+export const showArticleComments = userState => userState.hasAccess;
diff --git a/packages/user-state/src/user-state.js b/packages/user-state/src/user-state.js
index 5fc8532fe11..b6e7d2dd194 100644
--- a/packages/user-state/src/user-state.js
+++ b/packages/user-state/src/user-state.js
@@ -20,7 +20,8 @@ import {
showLiveUpdateButton,
showTokenisedEmailShare,
showCommentingModule,
- showJoinTheConversationDialog
+ showJoinTheConversationDialog,
+ showArticleComments
} from "./matchers";
function UserState({
@@ -46,6 +47,7 @@ UserState.showLiveUpdateButton = showLiveUpdateButton;
UserState.showTokenisedEmailShare = showTokenisedEmailShare;
UserState.showCommentingModule = showCommentingModule;
UserState.showJoinTheConversationDialog = showJoinTheConversationDialog;
+UserState.showArticleComments = showArticleComments;
UserState.propTypes = {
state: PropTypes.func.isRequired,