@newskit-render/core 0.0.0-ae9ce1f41 → 0.0.0-alpha.18e8fdadc
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 +1174 -0
- package/Dockerfile.withNewRelic +1 -2
- package/components/header/banner-messages.ts +6 -0
- package/cypress/e2e/account/banners.cy.js +13 -0
- package/cypress/e2e/account/holiday-stops.cy.js +4 -4
- package/cypress/e2e/account/newsletters-page.cy.js +28 -27
- package/cypress/e2e/account/personal-details.cy.js +3 -0
- package/cypress/e2e/account/subscription-and-billing.cy.js +10 -36
- package/cypress/support/commands.js +0 -5
- package/cypress/support/users.js +6 -2
- package/helpers/getProviderPropsUtil.ts +5 -2
- package/next.config.js +55 -57
- package/package.json +13 -13
- package/pages/account/{family → bonus-accounts}/index.tsx +2 -5
- package/pages/account/cancel/index.tsx +14 -0
- package/pages/account/edit/[field].tsx +15 -2
- package/pages/account/index.tsx +1 -1
- package/pages/account/subscription-and-billing/index.tsx +14 -4
- package/pages/account/user-hub/index.tsx +1 -1
- package/pages/api/account/track-event/index.ts +16 -0
- package/public/assets/cancellation/another-source.png +0 -0
- package/public/assets/cancellation/cancellation-hero.png +0 -0
- package/public/assets/cancellation/content.png +0 -0
- package/public/assets/cancellation/delivery-problems.png +0 -0
- package/public/assets/cancellation/issues.png +0 -0
- package/public/assets/cancellation/money.png +0 -0
- package/public/assets/cancellation/placeholder.png +0 -0
- package/public/assets/cancellation/thank-you.png +0 -0
- package/public/assets/cancellation/time.png +0 -0
- package/public/assets/sun-placeholder.png +0 -0
- package/cypress/support/blaizeJwtValues.js +0 -3
package/Dockerfile.withNewRelic
CHANGED
|
@@ -4,7 +4,6 @@ WORKDIR /app
|
|
|
4
4
|
|
|
5
5
|
ENV NEXT_TELEMETRY_DISABLED 1
|
|
6
6
|
|
|
7
|
-
RUN npm install @newrelic/next
|
|
8
7
|
COPY .next/standalone ./standalone
|
|
9
8
|
COPY public ./standalone/public
|
|
10
9
|
COPY .next/static ./standalone/.next/static
|
|
@@ -12,4 +11,4 @@ COPY .next/static ./standalone/.next/static
|
|
|
12
11
|
EXPOSE 3000
|
|
13
12
|
ENV PORT 3000
|
|
14
13
|
|
|
15
|
-
CMD ["node", "
|
|
14
|
+
CMD ["node", "./standalone/server.js"]
|
|
@@ -25,6 +25,8 @@ export const pastDueBanner = {
|
|
|
25
25
|
title: 'Your subscription will end soon.',
|
|
26
26
|
phoneNumber: 'XXXX-XXX-XXXX',
|
|
27
27
|
text: 'You have cancelled your subscription and will lose access to all benefits on ##DATE##. To re-activate your subscription call ##PHONE_NUMBER##.',
|
|
28
|
+
alternativeText:
|
|
29
|
+
'You have cancelled your subscription and will lose access to all benefits. To re-activate your subscription call ##PHONE_NUMBER##.',
|
|
28
30
|
},
|
|
29
31
|
toBeCancelledWithRefund: {
|
|
30
32
|
title: 'Your subscription will end soon.',
|
|
@@ -32,6 +34,10 @@ export const pastDueBanner = {
|
|
|
32
34
|
text: 'We have successfully cancelled your subscription and will be processing your refund shortly. If you have any question please call ##PHONE_NUMBER##.',
|
|
33
35
|
dismissDays: 7,
|
|
34
36
|
},
|
|
37
|
+
paymentFailure: {
|
|
38
|
+
title: 'We haven’t been able to take payment',
|
|
39
|
+
text: 'Your latest payment has failed. Please update your payment details as soon as possible to keep your membership.',
|
|
40
|
+
},
|
|
35
41
|
treshold: {
|
|
36
42
|
firstNotice: 26,
|
|
37
43
|
secondNotice: 30,
|
|
@@ -84,6 +84,19 @@ describe('Banners', () => {
|
|
|
84
84
|
cy.get('[data-testid="banner-close-button"]').should('be.visible')
|
|
85
85
|
})
|
|
86
86
|
|
|
87
|
+
it('Should show cancelled notice with alternative text if the serviceCancellationDate is not updated yet', () => {
|
|
88
|
+
cy.GetTnlAcsSession('tnl')
|
|
89
|
+
cy.mockConsent()
|
|
90
|
+
cy.visitAndOverrideNextData(
|
|
91
|
+
'/account',
|
|
92
|
+
'props.pageProps.user.subscriptions[0].status',
|
|
93
|
+
'Cancellation Requested'
|
|
94
|
+
)
|
|
95
|
+
cy.contains(
|
|
96
|
+
'You have cancelled your subscription and will lose access to all benefits. To re-activate your subscription call XXXX-XXX-XXXX.'
|
|
97
|
+
)
|
|
98
|
+
})
|
|
99
|
+
|
|
87
100
|
it('Should show expired subscription view with terminated notice', () => {
|
|
88
101
|
cy.GetAcsSession('expiredSub')
|
|
89
102
|
cy.mockConsent()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getTestDates } from '../../fixtures/testDates'
|
|
2
2
|
|
|
3
|
-
describe('Book a Holiday Stop', () => {
|
|
3
|
+
describe.skip('Book a Holiday Stop', () => {
|
|
4
4
|
beforeEach(() => {
|
|
5
5
|
cy.GetTnlAcsSession('tnl')
|
|
6
6
|
cy.mockConsentAndVisit('/account/holiday-stop')
|
|
@@ -13,7 +13,7 @@ describe('Book a Holiday Stop', () => {
|
|
|
13
13
|
})
|
|
14
14
|
})
|
|
15
15
|
|
|
16
|
-
describe('Add a Holiday Stop', () => {
|
|
16
|
+
describe.skip('Add a Holiday Stop', () => {
|
|
17
17
|
beforeEach(() => {
|
|
18
18
|
cy.GetTnlAcsSession('tnl')
|
|
19
19
|
cy.mockConsentAndVisit('/account/add/holiday-stop')
|
|
@@ -52,7 +52,7 @@ describe('Add a Holiday Stop', () => {
|
|
|
52
52
|
})
|
|
53
53
|
})
|
|
54
54
|
|
|
55
|
-
describe('Upcoming Holiday Stops - edit button', () => {
|
|
55
|
+
describe.skip('Upcoming Holiday Stops - edit button', () => {
|
|
56
56
|
beforeEach(() => {
|
|
57
57
|
cy.GetTnlAcsSession('tnl')
|
|
58
58
|
cy.mockConsentAndVisit('/account/holiday-stop')
|
|
@@ -86,7 +86,7 @@ describe('Upcoming Holiday Stops - edit button', () => {
|
|
|
86
86
|
})
|
|
87
87
|
})
|
|
88
88
|
|
|
89
|
-
describe('Cancel Holiday Stop', () => {
|
|
89
|
+
describe.skip('Cancel Holiday Stop', () => {
|
|
90
90
|
beforeEach(() => {
|
|
91
91
|
cy.GetTnlAcsSession('tnl')
|
|
92
92
|
cy.mockConsentAndVisit('/account/holiday-stop')
|
|
@@ -1,51 +1,52 @@
|
|
|
1
|
-
import {
|
|
2
|
-
registration_blaize_jwt,
|
|
3
|
-
subscription_blaize_jwt,
|
|
4
|
-
} from '../../support/blaizeJwtValues'
|
|
5
|
-
|
|
6
1
|
describe('Newsletters page', () => {
|
|
7
2
|
beforeEach(() => {
|
|
8
3
|
cy.GetTnlAcsSession()
|
|
9
4
|
cy.mockConsent()
|
|
10
5
|
})
|
|
11
6
|
|
|
12
|
-
it('Should display all the newsletters on the newsletters page when user
|
|
13
|
-
cy.
|
|
7
|
+
it('Should display all the newsletters on the newsletters page when user has a subscription', () => {
|
|
8
|
+
cy.mockConsentAndVisit('/account/newsletters')
|
|
14
9
|
cy.contains('Newsletters')
|
|
15
10
|
cy.contains(
|
|
16
11
|
'Exclusive content and a curated selection of our top stories straight to your inbox.'
|
|
17
12
|
)
|
|
18
|
-
cy.get('[data-testid="newsletters-grid"] > div').should(
|
|
13
|
+
cy.get('[data-testid="newsletters-grid"] > div > div').should(
|
|
14
|
+
'have.length.greaterThan',
|
|
15
|
+
1
|
|
16
|
+
)
|
|
19
17
|
})
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
it('Should only display selected newsletters on the newsletters page when user is registered', () => {
|
|
20
|
+
cy.GetTnlAcsSession('tnlNoSubscription')
|
|
21
|
+
cy.mockConsentAndVisit('/account/newsletters')
|
|
22
|
+
cy.contains('Newsletters')
|
|
23
|
+
cy.contains(
|
|
24
|
+
'Exclusive content and a curated selection of our top stories straight to your inbox.'
|
|
25
|
+
)
|
|
26
|
+
cy.get('[data-testid="newsletters-grid"] > div > div').should(
|
|
27
|
+
'have.length.greaterThan',
|
|
28
|
+
1
|
|
29
|
+
)
|
|
30
|
+
})
|
|
30
31
|
|
|
31
32
|
it('Should display all required newsletter text in the first grid card', () => {
|
|
32
|
-
cy.
|
|
33
|
-
cy.get('[data-testid="newsletters-grid"]').then(($parentDiv) => {
|
|
33
|
+
cy.mockConsentAndVisit('/account/newsletters')
|
|
34
|
+
cy.get('[data-testid="newsletters-grid-featured"]').then(($parentDiv) => {
|
|
34
35
|
const firstNewsletter = $parentDiv.find('div:first-child')
|
|
35
36
|
|
|
36
|
-
cy.wrap(firstNewsletter).contains('
|
|
37
|
+
cy.wrap(firstNewsletter).contains('Daily Briefing').should('be.visible')
|
|
37
38
|
cy.wrap(firstNewsletter).contains('Daily').should('be.visible')
|
|
38
39
|
cy.wrap(firstNewsletter)
|
|
39
40
|
.contains(
|
|
40
|
-
|
|
41
|
+
'Our flagship newsletter with our top stories and exclusive analysis every morning.'
|
|
41
42
|
)
|
|
42
43
|
.should('be.visible')
|
|
43
44
|
})
|
|
44
45
|
})
|
|
45
46
|
|
|
46
47
|
it('Should successfully subscribe to a newsletter', () => {
|
|
47
|
-
cy.
|
|
48
|
-
cy.get('[data-testid="newsletters-grid"]').then(($parentDiv) => {
|
|
48
|
+
cy.mockConsentAndVisit('/account/newsletters')
|
|
49
|
+
cy.get('[data-testid="newsletters-grid-featured"]').then(($parentDiv) => {
|
|
49
50
|
cy.intercept('POST', '/api/account/mutate', { statusCode: 200, ok: true })
|
|
50
51
|
|
|
51
52
|
const firstNewsletter = $parentDiv.find('div:first-child')
|
|
@@ -58,14 +59,14 @@ describe('Newsletters page', () => {
|
|
|
58
59
|
|
|
59
60
|
cy.contains(
|
|
60
61
|
'[data-testid="toast-container"]',
|
|
61
|
-
'Thank you, you are now signed up to the
|
|
62
|
+
'Thank you, you are now signed up to the Daily Briefing newsletter'
|
|
62
63
|
)
|
|
63
64
|
})
|
|
64
65
|
})
|
|
65
66
|
|
|
66
67
|
it('Should show the error toast on server error', () => {
|
|
67
|
-
cy.
|
|
68
|
-
cy.get('[data-testid="newsletters-grid"]').then(($parentDiv) => {
|
|
68
|
+
cy.mockConsentAndVisit('/account/newsletters')
|
|
69
|
+
cy.get('[data-testid="newsletters-grid-featured"]').then(($parentDiv) => {
|
|
69
70
|
cy.intercept('POST', '/api/account/mutate', {
|
|
70
71
|
statusCode: 500,
|
|
71
72
|
ok: false,
|
|
@@ -81,7 +82,7 @@ describe('Newsletters page', () => {
|
|
|
81
82
|
|
|
82
83
|
cy.contains(
|
|
83
84
|
'[data-testid="toast-container"]',
|
|
84
|
-
'Sorry we were unable to sign you up to the
|
|
85
|
+
'Sorry we were unable to sign you up to the Daily Briefing newsletter, please try again'
|
|
85
86
|
)
|
|
86
87
|
})
|
|
87
88
|
})
|
|
@@ -406,9 +406,12 @@ describe('Personal detail edit pages', () => {
|
|
|
406
406
|
)
|
|
407
407
|
|
|
408
408
|
// Change email back to the previous email
|
|
409
|
+
cy.intercept('POST', '/api/account/mutate').as('updateEmail')
|
|
410
|
+
|
|
409
411
|
cy.get('[name="email"]').clear()
|
|
410
412
|
cy.get('[name="email"]').type(currentEmail)
|
|
411
413
|
cy.get('[data-testid="primary-button"]').click()
|
|
414
|
+
cy.wait('@updateEmail')
|
|
412
415
|
})
|
|
413
416
|
})
|
|
414
417
|
|
|
@@ -138,15 +138,14 @@ describe('Subscription and billing details for Digital user', () => {
|
|
|
138
138
|
cy.contains('expiry date 02/27')
|
|
139
139
|
})
|
|
140
140
|
|
|
141
|
-
//
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
cy.
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
.contains('View')
|
|
141
|
+
// Section no longer displayed when Invoice history is empty due to graphql change
|
|
142
|
+
// Invoices are no longer fetched if older than 1 year
|
|
143
|
+
// This test would periodically fail as it depends on changing user data
|
|
144
|
+
it('Should not display empty Invoice history section', () => {
|
|
145
|
+
cy.get('[data-testid="ContentListIntroduction"]').should(
|
|
146
|
+
'not.contain',
|
|
147
|
+
'Invoice history'
|
|
148
|
+
)
|
|
150
149
|
})
|
|
151
150
|
|
|
152
151
|
it('Should NOT display Your deliveries section', () => {
|
|
@@ -219,7 +218,7 @@ describe('Subscription and billing details for Print user', () => {
|
|
|
219
218
|
cy.contains('On my doorstep')
|
|
220
219
|
cy.contains('Holiday Stops')
|
|
221
220
|
cy.contains(
|
|
222
|
-
'You can pause your print delivery at any time by adding a Holiday Stop to your account. Holiday Stops need to be booked
|
|
221
|
+
'You can pause your print delivery at any time by adding a Holiday Stop to your account. Holiday Stops need to be booked by 2pm (UK time), two days before your delivery pause begins.'
|
|
223
222
|
)
|
|
224
223
|
|
|
225
224
|
cy.contains(
|
|
@@ -227,17 +226,6 @@ describe('Subscription and billing details for Print user', () => {
|
|
|
227
226
|
)
|
|
228
227
|
})
|
|
229
228
|
|
|
230
|
-
// Skipped due to graphql changes. To be fixed with TMR-1959
|
|
231
|
-
it.skip('Should display Invoice history section', () => {
|
|
232
|
-
cy.contains('[data-testid="ContentListIntroduction"]', 'Invoice history')
|
|
233
|
-
cy.contains('Print pack')
|
|
234
|
-
cy.contains('24 Apr 2023')
|
|
235
|
-
cy.contains('Paid')
|
|
236
|
-
cy.get('a[data-testid="download-button"]')
|
|
237
|
-
.should('have.attr', 'href', '#')
|
|
238
|
-
.contains('View')
|
|
239
|
-
})
|
|
240
|
-
|
|
241
229
|
it('Should display Your deliveries section for users with vouchers', () => {
|
|
242
230
|
cy.GetTnlAcsSession('printVouchers')
|
|
243
231
|
cy.mockConsentAndVisit('/account/subscription-and-billing')
|
|
@@ -245,11 +233,9 @@ describe('Subscription and billing details for Print user', () => {
|
|
|
245
233
|
cy.contains('[data-testid="ContentListIntroduction"]', 'Your deliveries')
|
|
246
234
|
cy.contains('Address')
|
|
247
235
|
cy.contains('2 Tuke House, Cromwell Road, York, YO1 6DJ, North Yorkshire')
|
|
248
|
-
cy.contains('Delivery instructions')
|
|
249
|
-
cy.contains('On my doorstep')
|
|
250
236
|
cy.contains('Holiday Stops')
|
|
251
237
|
cy.contains(
|
|
252
|
-
'You can pause your print delivery at any time by adding a Holiday Stop to your account. Holiday Stops need to be booked
|
|
238
|
+
'You can pause your print delivery at any time by adding a Holiday Stop to your account. Holiday Stops need to be booked by 2pm (UK time), two days before your delivery pause begins.'
|
|
253
239
|
)
|
|
254
240
|
cy.contains('Your vouchers')
|
|
255
241
|
cy.contains(
|
|
@@ -279,18 +265,6 @@ describe('Subscription and billing details for Digi-Print user', () => {
|
|
|
279
265
|
cy.contains('Digi-Print')
|
|
280
266
|
//...rest is same as Print user
|
|
281
267
|
})
|
|
282
|
-
|
|
283
|
-
// This test is going to fail on 13.11.2024 due to graphql changes.
|
|
284
|
-
// To be fixed with TMR-1959
|
|
285
|
-
it('Should display Invoice history section', () => {
|
|
286
|
-
cy.contains('[data-testid="ContentListIntroduction"]', 'Invoice history')
|
|
287
|
-
cy.contains('Digi-Print pack')
|
|
288
|
-
cy.contains('12 Nov 2023')
|
|
289
|
-
cy.contains('Paid')
|
|
290
|
-
cy.get('a[data-testid="download-button"]')
|
|
291
|
-
.should('have.attr', 'href', '#')
|
|
292
|
-
.contains('View')
|
|
293
|
-
})
|
|
294
268
|
})
|
|
295
269
|
|
|
296
270
|
describe('Subscription and billing details for Paypal user', () => {
|
|
@@ -31,11 +31,6 @@ Cypress.Commands.add('mockConsent', () => {
|
|
|
31
31
|
setConsentLocalStorage()
|
|
32
32
|
})
|
|
33
33
|
|
|
34
|
-
Cypress.Commands.add('mockBlaizeJwtAndVisit', (jwtValue, url) => {
|
|
35
|
-
cy.setCookie('blaize_jwt', jwtValue)
|
|
36
|
-
cy.visit(url)
|
|
37
|
-
})
|
|
38
|
-
|
|
39
34
|
Cypress.Commands.add('GetAcsSession', (user = 'default') => {
|
|
40
35
|
const { username, password } = userMap[user]
|
|
41
36
|
|
package/cypress/support/users.js
CHANGED
|
@@ -54,5 +54,9 @@ export const userMap = {
|
|
|
54
54
|
username: 'digi-print-card-15-11-22@yopmail.com',
|
|
55
55
|
password: 'Password123Testing123$',
|
|
56
56
|
},
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
tnlNoSubscription: {
|
|
58
|
+
//registered user with no subscription, tests the number of newsletters displayed
|
|
59
|
+
username: 'tm-test+staging-registered-user@news.co.uk',
|
|
60
|
+
password: 'Growth123',
|
|
61
|
+
},
|
|
62
|
+
}
|
|
@@ -6,8 +6,11 @@ import { publisher } from '../config'
|
|
|
6
6
|
|
|
7
7
|
export const getProviderPropsUtil = (context, options?) => {
|
|
8
8
|
if (process.env.NODE_ENV === 'development' && publisher === 'TIMES') {
|
|
9
|
-
return getProviderPropsTimes(
|
|
10
|
-
|
|
9
|
+
return getProviderPropsTimes({
|
|
10
|
+
context,
|
|
11
|
+
options: {
|
|
12
|
+
...options,
|
|
13
|
+
},
|
|
11
14
|
})
|
|
12
15
|
}
|
|
13
16
|
|
package/next.config.js
CHANGED
|
@@ -29,67 +29,65 @@ module.exports = (phase) => {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const path = require('path')
|
|
32
|
-
const withTM = require('next-transpile-modules')([
|
|
33
|
-
'@newskit-render/auth',
|
|
34
|
-
'@newskit-render/my-account',
|
|
35
|
-
'@newskit-render/validation',
|
|
36
|
-
])
|
|
37
32
|
const withBundleAnalyzer = require('@next/bundle-analyzer')({
|
|
38
33
|
enabled: process.env.ANALYZE === 'true',
|
|
39
34
|
})
|
|
40
35
|
|
|
41
|
-
return withBundleAnalyzer(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
36
|
+
return withBundleAnalyzer({
|
|
37
|
+
transpilePackages: [
|
|
38
|
+
'@newskit-render/auth',
|
|
39
|
+
'@newskit-render/my-account',
|
|
40
|
+
'@newskit-render/validation',
|
|
41
|
+
],
|
|
42
|
+
webpack: (config, options) => {
|
|
43
|
+
if (options.isServer) {
|
|
44
|
+
config.externals = ['react', ...config.externals]
|
|
45
|
+
}
|
|
47
46
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
47
|
+
config.resolve.alias.newskit = path.resolve(
|
|
48
|
+
__dirname,
|
|
49
|
+
'.',
|
|
50
|
+
'node_modules',
|
|
51
|
+
'newskit'
|
|
52
|
+
)
|
|
53
|
+
config.resolve.alias.react = path.resolve(
|
|
54
|
+
__dirname,
|
|
55
|
+
'.',
|
|
56
|
+
'node_modules',
|
|
57
|
+
'react'
|
|
58
|
+
)
|
|
60
59
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
)
|
|
60
|
+
return config
|
|
61
|
+
},
|
|
62
|
+
images,
|
|
63
|
+
output: 'standalone',
|
|
64
|
+
async rewrites() {
|
|
65
|
+
return [
|
|
66
|
+
{
|
|
67
|
+
source: '/sitemap.xml',
|
|
68
|
+
destination: '/api/sitemap',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
source: '/pages-sitemap.xml',
|
|
72
|
+
destination: '/api/pages-sitemap',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
source: '/competitions-sitemap.xml',
|
|
76
|
+
destination: '/api/competitions-sitemap',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
source: '/news-sitemap.xml',
|
|
80
|
+
destination: '/api/news-sitemap',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
source: '/feed',
|
|
84
|
+
destination: '/api/feed',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
source: '/robots.txt',
|
|
88
|
+
destination: '/api/robots',
|
|
89
|
+
},
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
})
|
|
95
93
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@newskit-render/core",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-alpha.18e8fdadc",
|
|
4
4
|
"description": "Newskit Render - Core package",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -42,21 +42,21 @@
|
|
|
42
42
|
"@emotion/styled": "11.9.3",
|
|
43
43
|
"@newrelic/next": "0.5.2",
|
|
44
44
|
"@newrelic/winston-enricher": "4.0.1",
|
|
45
|
-
"@newskit-render/api": "^
|
|
46
|
-
"@newskit-render/auth": "^
|
|
47
|
-
"@newskit-render/checkout": "^
|
|
48
|
-
"@newskit-render/feature-flags": "^
|
|
49
|
-
"@newskit-render/feed": "^
|
|
50
|
-
"@newskit-render/my-account": "^
|
|
51
|
-
"@newskit-render/shared-components": "^
|
|
52
|
-
"@newskit-render/standalone-components": "^
|
|
53
|
-
"@newskit-render/validation": "^
|
|
45
|
+
"@newskit-render/api": "^0.0.0-alpha.18e8fdadc",
|
|
46
|
+
"@newskit-render/auth": "^0.0.0-alpha.18e8fdadc",
|
|
47
|
+
"@newskit-render/checkout": "^0.0.0-alpha.18e8fdadc",
|
|
48
|
+
"@newskit-render/feature-flags": "^0.0.0-alpha.18e8fdadc",
|
|
49
|
+
"@newskit-render/feed": "^0.0.0-alpha.18e8fdadc",
|
|
50
|
+
"@newskit-render/my-account": "^0.0.0-alpha.18e8fdadc",
|
|
51
|
+
"@newskit-render/shared-components": "^0.0.0-alpha.18e8fdadc",
|
|
52
|
+
"@newskit-render/standalone-components": "^0.0.0-alpha.18e8fdadc",
|
|
53
|
+
"@newskit-render/validation": "^0.0.0-alpha.18e8fdadc",
|
|
54
54
|
"cross-fetch": "3.1.5",
|
|
55
55
|
"graphql": "16.6.0",
|
|
56
56
|
"lodash.get": "4.4.2",
|
|
57
57
|
"newrelic": "10.6.1",
|
|
58
58
|
"newskit": "7.7.0",
|
|
59
|
-
"next": "13.
|
|
59
|
+
"next": "13.5.10",
|
|
60
60
|
"react": "18.2.0",
|
|
61
61
|
"react-dom": "18.2.0",
|
|
62
62
|
"react-helmet": "6.1.0",
|
|
@@ -100,7 +100,6 @@
|
|
|
100
100
|
"jest-junit": "15.0.0",
|
|
101
101
|
"jest-watch-typeahead": "2.2.1",
|
|
102
102
|
"lint-staged": "13.1.0",
|
|
103
|
-
"next-transpile-modules": "10.0.0",
|
|
104
103
|
"prettier": "2.8.3",
|
|
105
104
|
"prettier-eslint": "15.0.1",
|
|
106
105
|
"prettier-eslint-cli": "7.1.0",
|
|
@@ -123,5 +122,6 @@
|
|
|
123
122
|
"@types/react-dom": "18.0.10",
|
|
124
123
|
"@types/pino-std-serializers": "2.4.1",
|
|
125
124
|
"@types/pino-pretty": "4.7.5"
|
|
126
|
-
}
|
|
125
|
+
},
|
|
126
|
+
"gitHead": "b30268bc77d15844b19cb165c1705974543cc38e"
|
|
127
127
|
}
|
|
@@ -9,18 +9,15 @@ const AccountFamily = (props) => <Family {...props} />
|
|
|
9
9
|
export default AccountFamily
|
|
10
10
|
|
|
11
11
|
export const getServerSideProps = async (context) => {
|
|
12
|
-
replaceConsoleAndSetTransactionName('Account:
|
|
12
|
+
replaceConsoleAndSetTransactionName('Account: Bonus Accounts')
|
|
13
13
|
/* start cra-effected */
|
|
14
14
|
const featureFlags = await getAllFeatureFlags()
|
|
15
15
|
|
|
16
|
-
const provider = featureFlags?.enable_invite_family_v2_query
|
|
17
|
-
? 'GroupAccountsV2'
|
|
18
|
-
: 'GroupAccounts'
|
|
19
16
|
/* end cra-effected */
|
|
20
17
|
return getProviderPropsUtil(
|
|
21
18
|
{
|
|
22
19
|
...context,
|
|
23
|
-
provider,
|
|
20
|
+
provider: 'GroupAccountsV2',
|
|
24
21
|
},
|
|
25
22
|
{ featureFlags } /* cra-effected */
|
|
26
23
|
)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { CancellationStepper } from '@newskit-render/my-account'
|
|
3
|
+
import { replaceConsoleAndSetTransactionName } from '../../../helpers/logger'
|
|
4
|
+
import { getProviderPropsUtil } from '../../../helpers/getProviderPropsUtil'
|
|
5
|
+
|
|
6
|
+
const AccountCancellation = (props) => <CancellationStepper {...props} />
|
|
7
|
+
|
|
8
|
+
export default AccountCancellation
|
|
9
|
+
|
|
10
|
+
export const getServerSideProps = async (context) => {
|
|
11
|
+
replaceConsoleAndSetTransactionName('Account: Cancellation')
|
|
12
|
+
|
|
13
|
+
return getProviderPropsUtil({ ...context, provider: 'Cancellation' })
|
|
14
|
+
}
|
|
@@ -3,15 +3,19 @@ import { replaceConsoleAndSetTransactionName } from '../../../helpers/logger'
|
|
|
3
3
|
import {
|
|
4
4
|
EditField,
|
|
5
5
|
editComponentMap,
|
|
6
|
+
broadcastingOnlyEditComponentMap,
|
|
6
7
|
DynamicPage,
|
|
7
8
|
} from '@newskit-render/my-account'
|
|
8
9
|
import { getAllFeatureFlags } from '@newskit-render/feature-flags' /* cra-effected */
|
|
9
10
|
import validation from '../../../validation'
|
|
10
11
|
import { getProviderPropsUtil } from '../../../helpers/getProviderPropsUtil'
|
|
12
|
+
import { publisher } from '../../../config'
|
|
13
|
+
import { Publisher } from '@newskit-render/api'
|
|
11
14
|
|
|
12
15
|
const AccountEditField = (props) => (
|
|
13
16
|
<DynamicPage
|
|
14
17
|
objectMap={editComponentMap}
|
|
18
|
+
isPageRestricted={props.isPageRestricted}
|
|
15
19
|
pageName={props.data.type}
|
|
16
20
|
Component={EditField}
|
|
17
21
|
componentProps={props}
|
|
@@ -27,9 +31,15 @@ export const getServerSideProps = async (context) => {
|
|
|
27
31
|
} = context
|
|
28
32
|
const doesEditPageExist = Object.keys(editComponentMap).includes(field)
|
|
29
33
|
|
|
34
|
+
const isBroadcasting = publisher === Publisher.BROADCASTING
|
|
35
|
+
const broadcastingOnlyPages = Object.keys(broadcastingOnlyEditComponentMap)
|
|
36
|
+
|
|
37
|
+
const isPageRestricted =
|
|
38
|
+
!isBroadcasting && broadcastingOnlyPages.includes(field)
|
|
39
|
+
|
|
30
40
|
replaceConsoleAndSetTransactionName(`Account: edit ${field}`)
|
|
31
41
|
|
|
32
|
-
if (!doesEditPageExist) {
|
|
42
|
+
if (!doesEditPageExist || isPageRestricted) {
|
|
33
43
|
context.res.statusCode = 404
|
|
34
44
|
// Logging the error for being captured by New Relic
|
|
35
45
|
console.error(`An error ${context.res.statusCode} occurred on server`)
|
|
@@ -40,6 +50,9 @@ export const getServerSideProps = async (context) => {
|
|
|
40
50
|
|
|
41
51
|
return getProviderPropsUtil(
|
|
42
52
|
{ ...context, provider: 'EditField' },
|
|
43
|
-
{
|
|
53
|
+
{
|
|
54
|
+
featureFlags,
|
|
55
|
+
isPageRestricted,
|
|
56
|
+
} /* cra-effected */
|
|
44
57
|
)
|
|
45
58
|
}
|
package/pages/account/index.tsx
CHANGED
|
@@ -2,8 +2,8 @@ import React from 'react'
|
|
|
2
2
|
import { PersonalDetails } from '@newskit-render/my-account'
|
|
3
3
|
import { getAllFeatureFlags } from '@newskit-render/feature-flags' /* cra-effected */
|
|
4
4
|
import { AccountDropdown } from '../../components/AccountDropdown' /* cra-disabled */
|
|
5
|
-
import { replaceConsoleAndSetTransactionName } from '../../helpers/logger'
|
|
6
5
|
import { getProviderPropsUtil } from '../../helpers/getProviderPropsUtil'
|
|
6
|
+
import { replaceConsoleAndSetTransactionName } from '../../helpers/logger'
|
|
7
7
|
|
|
8
8
|
const AccountPersonalDetails = (props) => {
|
|
9
9
|
return (
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
SubscriptionAndBilling,
|
|
4
|
+
subscriptionAndBillingContextSun,
|
|
5
|
+
subscriptionAndBillingContext,
|
|
6
|
+
} from '@newskit-render/my-account'
|
|
3
7
|
import { getAllFeatureFlags } from '@newskit-render/feature-flags' /* cra-effected */
|
|
8
|
+
import { Publisher } from '@newskit-render/api'
|
|
4
9
|
import { replaceConsoleAndSetTransactionName } from '../../../helpers/logger'
|
|
5
10
|
import { getProviderPropsUtil } from '../../../helpers/getProviderPropsUtil'
|
|
6
11
|
|
|
7
|
-
const AccountSubscriptionAndBilling = (props) =>
|
|
8
|
-
|
|
9
|
-
|
|
12
|
+
const AccountSubscriptionAndBilling = (props) => {
|
|
13
|
+
const context =
|
|
14
|
+
props.env.PUBLISHER === Publisher.SUN_UK
|
|
15
|
+
? subscriptionAndBillingContextSun
|
|
16
|
+
: subscriptionAndBillingContext
|
|
17
|
+
|
|
18
|
+
return <SubscriptionAndBilling {...props} context={context} />
|
|
19
|
+
}
|
|
10
20
|
|
|
11
21
|
export default AccountSubscriptionAndBilling
|
|
12
22
|
|
|
@@ -14,7 +14,7 @@ export const getServerSideProps = async (context) => {
|
|
|
14
14
|
const featureFlags = await getAllFeatureFlags()
|
|
15
15
|
/* end cra-effected */
|
|
16
16
|
return getProviderPropsUtil(
|
|
17
|
-
{ ...context, provider: '
|
|
17
|
+
{ ...context, provider: 'UserHub' },
|
|
18
18
|
{ featureFlags } /* cra-effected */
|
|
19
19
|
)
|
|
20
20
|
}
|