Skip to content

Commit b133a9c

Browse files
committed
fix(core): show success message when a subscribed user resubscribes
1 parent 7c626a7 commit b133a9c

File tree

4 files changed

+18
-10
lines changed

4 files changed

+18
-10
lines changed

.changeset/upset-bushes-hang.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@bigcommerce/catalyst-core": minor
3+
---
4+
5+
Show success message when a subscribed is already subscribed to newsletter.

core/components/subscribe/_actions/subscribe.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,22 @@ export const subscribe = async (
5757

5858
const errors = response.data.newsletter.subscribe.errors;
5959

60-
if (!errors.length) {
61-
return { lastResult: submission.reply({ resetForm: true }), successMessage: t('success') };
60+
// If there are no errors or the error is that the email already exists, we want to reset the form and show the success message
61+
if (
62+
!errors.length ||
63+
errors.some(({ __typename }) => __typename === 'CreateSubscriberAlreadyExistsError')
64+
) {
65+
return {
66+
lastResult: submission.reply(),
67+
successMessage: t('subscribedToNewsletter'),
68+
};
6269
}
6370

6471
if (errors.length > 0) {
6572
return {
6673
lastResult: submission.reply({
6774
formErrors: errors.map(({ __typename }) => {
6875
switch (__typename) {
69-
case 'CreateSubscriberAlreadyExistsError':
70-
return t('Errors.subcriberAlreadyExists');
71-
7276
case 'CreateSubscriberEmailInvalidError':
7377
return t('Errors.invalidEmail');
7478

core/messages/en.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -504,9 +504,8 @@
504504
"title": "Sign up for our newsletter",
505505
"placeholder": "Enter your email",
506506
"description": "Stay up to date with the latest news and offers from our store.",
507-
"success": "You have been subscribed to our newsletter.",
507+
"subscribedToNewsletter": "You have been subscribed to our newsletter.",
508508
"Errors": {
509-
"subcriberAlreadyExists": "You are already subscribed to our newsletter.",
510509
"invalidEmail": "Please enter a valid email address.",
511510
"somethingWentWrong": "Something went wrong. Please try again later."
512511
}

core/tests/ui/e2e/subscribe.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ test(
2424
await submitButton.click();
2525
await page.waitForLoadState('networkidle');
2626

27-
await expect(page.getByText(t('success'))).toBeVisible();
27+
await expect(page.getByText(t('subscribedToNewsletter'))).toBeVisible();
2828

2929
subscribe.trackSubscription(email);
3030
},
@@ -50,14 +50,14 @@ test('Shows error when user tries to subscribe again with the same email', async
5050
await submitButton.click();
5151
await page.waitForLoadState('networkidle');
5252

53-
await expect(page.getByText(t('success'))).toBeVisible();
53+
await expect(page.getByText(t('subscribedToNewsletter'))).toBeVisible();
5454

5555
// Try to subscribe again with the same email
5656
await emailInput.fill(email);
5757
await submitButton.click();
5858
await page.waitForLoadState('networkidle');
5959

60-
await expect(page.getByText(t('Errors.subcriberAlreadyExists'))).toBeVisible();
60+
await expect(page.getByText(t('subscribedToNewsletter'))).toBeVisible();
6161

6262
// Track that we attempted to subscribe this email
6363
subscribe.trackSubscription(email);

0 commit comments

Comments
 (0)