@times-components/user-state 0.4.2 → 0.4.3
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.
- package/CHANGELOG.md +11 -0
- package/README.md +0 -11
- package/dist/matchers.js +39 -28
- package/dist/mock-user-state.js +1 -1
- package/dist/user-state.js +7 -9
- package/package.json +5 -5
- package/rnw.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [0.4.3](https://github.com/newsuk/times-components/compare/@times-components/user-state@0.4.2...@times-components/user-state@0.4.3) (2022-10-18)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **TDP-2612:** UserState refactor ([#3167](https://github.com/newsuk/times-components/issues/3167)) ([acb908b](https://github.com/newsuk/times-components/commit/acb908ba9827284f9d91b02c1246f4578716c559))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [0.4.2](https://github.com/newsuk/times-components/compare/@times-components/user-state@0.4.1...@times-components/user-state@0.4.2) (2022-10-14)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @times-components/user-state
|
package/README.md
CHANGED
|
@@ -37,17 +37,6 @@ The `state` property is simply a matcher function that gets passed the current u
|
|
|
37
37
|
state and returns true/false to decide whether to return the children or
|
|
38
38
|
the fallback.
|
|
39
39
|
|
|
40
|
-
`UserState` also provides a number of preset matchers which you can use.
|
|
41
|
-
|
|
42
|
-
- `loggedIn`: Is the user logged in at all (subscriber, RA, RA Expired)
|
|
43
|
-
- `meteredExpired`: Is the user RA Expired
|
|
44
|
-
- `metered`: Is the user RA or RA Expired
|
|
45
|
-
- `shared`: Is the user viewing with a shareToken
|
|
46
|
-
- `nonExpiredUser`: Is the user logged in with access (subscriber, RA)
|
|
47
|
-
- `fullArticle`: Does the user have access to the full article (subscriber, RA, share token)
|
|
48
|
-
- `subscriber`: Is the user a subscriber
|
|
49
|
-
- `loggedInOrShared`: Is the user logged in or on a share token (subscriber, RA, RA Expired, share token)
|
|
50
|
-
|
|
51
40
|
```js
|
|
52
41
|
// In the test file
|
|
53
42
|
import { mockUserState } from "@times-components/user-state";
|
package/dist/matchers.js
CHANGED
|
@@ -3,58 +3,69 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.showJoinTheConversationDialog = exports.showCommentingModule = exports.showTokenisedEmailShare = exports.showArticleSaveButton = exports.showTopicTags = exports.showArticleExtras = exports.showSaveAndShareBar = void 0;
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
/* User states */
|
|
9
|
+
var isMeteredUser = function isMeteredUser(userState) {
|
|
10
|
+
return userState.isMetered || userState.isLightPackUser;
|
|
10
11
|
};
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
var isLightPackExpired = function isLightPackExpired(userState) {
|
|
14
|
+
return userState.isLightPackUser && userState.viewsRemaining === 0;
|
|
15
|
+
};
|
|
13
16
|
|
|
14
|
-
var
|
|
15
|
-
return userState.
|
|
17
|
+
var isMeteredExpiredUser = function isMeteredExpiredUser(userState) {
|
|
18
|
+
return userState.isMeteredExpired || isLightPackExpired(userState);
|
|
16
19
|
};
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
var isLoggedInWithAccess = function isLoggedInWithAccess(userState) {
|
|
22
|
+
return userState.isLoggedIn && !isMeteredExpiredUser(userState);
|
|
23
|
+
};
|
|
19
24
|
|
|
20
|
-
var
|
|
21
|
-
return isLoggedIn
|
|
25
|
+
var isSubscriber = function isSubscriber(userState) {
|
|
26
|
+
return userState.isLoggedIn && !isMeteredUser(userState);
|
|
22
27
|
};
|
|
28
|
+
/* Entitlements */
|
|
23
29
|
|
|
24
|
-
exports.isMeteredExpired = isMeteredExpired;
|
|
25
30
|
|
|
26
|
-
var
|
|
27
|
-
return userState.isShared;
|
|
31
|
+
var showSaveAndShareBar = function showSaveAndShareBar(userState) {
|
|
32
|
+
return userState.isLoggedIn || userState.isShared;
|
|
28
33
|
};
|
|
29
34
|
|
|
30
|
-
exports.
|
|
35
|
+
exports.showSaveAndShareBar = showSaveAndShareBar;
|
|
31
36
|
|
|
32
|
-
var
|
|
33
|
-
return
|
|
37
|
+
var showArticleExtras = function showArticleExtras(userState) {
|
|
38
|
+
return isLoggedInWithAccess(userState) || userState.isShared;
|
|
34
39
|
};
|
|
35
40
|
|
|
36
|
-
exports.
|
|
41
|
+
exports.showArticleExtras = showArticleExtras;
|
|
37
42
|
|
|
38
|
-
var
|
|
39
|
-
return
|
|
43
|
+
var showTopicTags = function showTopicTags(userState) {
|
|
44
|
+
return userState.isLoggedIn || userState.isShared;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
exports.showTopicTags = showTopicTags;
|
|
48
|
+
|
|
49
|
+
var showArticleSaveButton = function showArticleSaveButton(userState) {
|
|
50
|
+
return userState.isLoggedIn;
|
|
40
51
|
};
|
|
41
52
|
|
|
42
|
-
exports.
|
|
53
|
+
exports.showArticleSaveButton = showArticleSaveButton;
|
|
43
54
|
|
|
44
|
-
var
|
|
45
|
-
return
|
|
55
|
+
var showTokenisedEmailShare = function showTokenisedEmailShare(userState) {
|
|
56
|
+
return isSubscriber(userState);
|
|
46
57
|
};
|
|
47
58
|
|
|
48
|
-
exports.
|
|
59
|
+
exports.showTokenisedEmailShare = showTokenisedEmailShare;
|
|
49
60
|
|
|
50
|
-
var
|
|
51
|
-
return
|
|
61
|
+
var showCommentingModule = function showCommentingModule(userState) {
|
|
62
|
+
return isSubscriber(userState);
|
|
52
63
|
};
|
|
53
64
|
|
|
54
|
-
exports.
|
|
65
|
+
exports.showCommentingModule = showCommentingModule;
|
|
55
66
|
|
|
56
|
-
var
|
|
57
|
-
return
|
|
67
|
+
var showJoinTheConversationDialog = function showJoinTheConversationDialog(userState) {
|
|
68
|
+
return userState.isLoggedIn && isMeteredUser(userState);
|
|
58
69
|
};
|
|
59
70
|
|
|
60
|
-
exports.
|
|
71
|
+
exports.showJoinTheConversationDialog = showJoinTheConversationDialog;
|
package/dist/mock-user-state.js
CHANGED
|
@@ -27,7 +27,7 @@ function mockUserState() {
|
|
|
27
27
|
}, MockUserState);
|
|
28
28
|
|
|
29
29
|
MockUserState.mockReset = function () {
|
|
30
|
-
MockUserState.mockStates = [RealUserState.
|
|
30
|
+
MockUserState.mockStates = [RealUserState.showSaveAndShareBar, RealUserState.showArticleExtras, RealUserState.showArticleSaveButton, RealUserState.showCommentingModule];
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
MockUserState.mockReset();
|
package/dist/user-state.js
CHANGED
|
@@ -63,15 +63,13 @@ function UserState(_ref) {
|
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
UserState.
|
|
67
|
-
UserState.
|
|
68
|
-
UserState.
|
|
69
|
-
UserState.
|
|
70
|
-
UserState.
|
|
71
|
-
UserState.
|
|
72
|
-
UserState.
|
|
73
|
-
UserState.loggedInOrShared = _matchers.isLoggedInOrShared;
|
|
74
|
-
UserState.hasAccess = _matchers.hasAccess;
|
|
66
|
+
UserState.showSaveAndShareBar = _matchers.showSaveAndShareBar;
|
|
67
|
+
UserState.showArticleExtras = _matchers.showArticleExtras;
|
|
68
|
+
UserState.showTopicTags = _matchers.showTopicTags;
|
|
69
|
+
UserState.showArticleSaveButton = _matchers.showArticleSaveButton;
|
|
70
|
+
UserState.showTokenisedEmailShare = _matchers.showTokenisedEmailShare;
|
|
71
|
+
UserState.showCommentingModule = _matchers.showCommentingModule;
|
|
72
|
+
UserState.showJoinTheConversationDialog = _matchers.showJoinTheConversationDialog;
|
|
75
73
|
UserState.propTypes = {
|
|
76
74
|
state: _propTypes["default"].func.isRequired,
|
|
77
75
|
children: _propTypes["default"].node,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@times-components/user-state",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"description": "Selectively render react components based on current user state",
|
|
5
5
|
"main": "dist/user-state",
|
|
6
6
|
"dev": "src/user-state",
|
|
@@ -32,15 +32,15 @@
|
|
|
32
32
|
"homepage": "https://github.com/newsuk/times-components#readme",
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@storybook/addon-knobs": "5.3.18",
|
|
35
|
-
"@times-components/context": "1.10.
|
|
36
|
-
"@times-components/utils": "6.15.
|
|
35
|
+
"@times-components/context": "1.10.2",
|
|
36
|
+
"@times-components/utils": "6.15.2",
|
|
37
37
|
"prop-types": "15.7.2"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@babel/core": "7.4.4",
|
|
41
41
|
"@times-components/eslint-config-thetimes": "0.8.18",
|
|
42
42
|
"@times-components/jest-configurator-web": "0.8.0",
|
|
43
|
-
"@times-components/jest-serializer": "3.4.
|
|
43
|
+
"@times-components/jest-serializer": "3.4.2",
|
|
44
44
|
"@times-components/webpack-configurator": "2.1.0",
|
|
45
45
|
"babel-jest": "24.8.0",
|
|
46
46
|
"babel-loader": "8.0.5",
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"publishConfig": {
|
|
64
64
|
"access": "public"
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "0d8c91264a62f72c627c89b0953e66f4128c20ed"
|
|
67
67
|
}
|
package/rnw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
module.exports=function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=7)}([function(e,r){e.exports=require("react")},function(e,r){e.exports=require("@storybook/addon-knobs/react")},function(e,r){e.exports=require("prop-types")},function(e,r){e.exports=require("@times-components/context/rnw")},function(e,r){e.exports=require("@times-components/utils/rnw")},function(e,r){function t(e){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=5},function(e,r){e.exports=require("@times-components/user-state/rnw")},function(e,r,t){"use strict";t.r(r);var n=t(0),o=t.n(n),
|
|
1
|
+
module.exports=function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=7)}([function(e,r){e.exports=require("react")},function(e,r){e.exports=require("@storybook/addon-knobs/react")},function(e,r){e.exports=require("prop-types")},function(e,r){e.exports=require("@times-components/context/rnw")},function(e,r){e.exports=require("@times-components/utils/rnw")},function(e,r){function t(e){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=5},function(e,r){e.exports=require("@times-components/user-state/rnw")},function(e,r,t){"use strict";t.r(r);var n=t(0),o=t.n(n),i=(t(2),t(3)),u=t.n(i),c=t(4);function s(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function a(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?s(Object(t),!0).forEach((function(r){f(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):s(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function f(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var l=function(e){var r=e.children,t=e.serverRender,n=void 0===t||t;return o.a.createElement(u.a.Consumer,null,(function(e){var t=e.user;return o.a.createElement(c.ServerClientRender,{client:function(){var e=window.nuk,n=(void 0===e?{}:e).user||{};return r({user:a(a({},t),n)})},server:n?function(){return r({user:t})}:null})}))},d=function(e){return e.isMetered||e.isLightPackUser},b=function(e){return e.isLoggedIn&&!d(e)};var p,g=function(){jest.mock("@times-components/user-state",(function(){var e=t(5).requireActual("@times-components/user-state").default;function r(e){var t=e.state,n=e.children,o=void 0===n?null:n,i=e.fallback,u=void 0===i?null:i;return r.mockStates.find((function(e){return e===t}))?o:u}return Object.keys(e).reduce((function(r,t){return r[t]=e[t],r}),r),r.mockReset=function(){r.mockStates=[e.showSaveAndShareBar,e.showArticleExtras,e.showArticleSaveButton,e.showCommentingModule]},r.mockReset(),r}));var e=t(6);return beforeEach((function(){e.mockReset()})),e},v="Registered Access",O="Registered Access (Expired)",m={SUBSCRIBER:"Subscriber",RA:v,RA_EXPIRED:O,GUEST:"Guest"},y=t(1);function w(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function S(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?w(Object(t),!0).forEach((function(r){h(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):w(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function h(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var j=(h(p={},"Subscriber",["isLoggedIn"]),h(p,v,["isLoggedIn","isMetered"]),h(p,O,["isLoggedIn","isMetered","isMeteredExpired"]),h(p,"Guest",[]),p),P=["Subscriber",v,O,"Guest"];var k=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Subscriber";window.nuk=window.nuk||{},Object.defineProperty(window.nuk,"user",{enumerable:!0,configurable:!0,get:function(){var r=Object(y.select)("Current User State",P,e,"User State"),t=Object(y.boolean)("Is Shared",!1,"User State"),n=j[r].reduce((function(e,r){return S(S({},e),{},h({},r,!0))}),{});return S({isLoggedIn:!1,isMetered:!1,isMeteredExpired:!1,isShared:t},n)}})};function E(e){var r=e.state,t=e.children,n=e.fallback,i=e.serverRender;return o.a.createElement(l,{serverRender:i},(function(e){var o=e.user;return r(o)?t:n}))}t.d(r,"mockUserState",(function(){return g})),t.d(r,"USER_STATES",(function(){return m})),t.d(r,"addUserStateKnobs",(function(){return k})),E.showSaveAndShareBar=function(e){return e.isLoggedIn||e.isShared},E.showArticleExtras=function(e){return function(e){return e.isLoggedIn&&!function(e){return e.isMeteredExpired||function(e){return e.isLightPackUser&&0===e.viewsRemaining}(e)}(e)}(e)||e.isShared},E.showTopicTags=function(e){return e.isLoggedIn||e.isShared},E.showArticleSaveButton=function(e){return e.isLoggedIn},E.showTokenisedEmailShare=function(e){return b(e)},E.showCommentingModule=function(e){return b(e)},E.showJoinTheConversationDialog=function(e){return e.isLoggedIn&&d(e)},E.defaultProps={children:null,serverRender:!0,fallback:null};r.default=E}]);
|