Conversation
…lement handleSaveArticle, update tests
jinidev
reviewed
Apr 9, 2026
…integrate-create-activity-post-api-for-save-for-later-click-happy-flow
jinidev
reviewed
Apr 10, 2026
| <button | ||
| css={styles.buttonWrapper} | ||
| type="button" | ||
| onClick={() => handleSaveAction(isSaved ? 'remove' : 'save')} |
Contributor
There was a problem hiding this comment.
Minor: Could we assign these strings (remove / save ) to an imported constant so they are maintained in a single location?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves JIRA: https://bbc.atlassian.net/browse/WS-2208
Summary
When a signed-in user clicks the "Save for later" button on an article page, a POST request is now sent to the UAS (User Activity Service) Create Activity endpoint to save the article as a favourite.
On a successful response, the button text updates to "Remove from saved".
This is the happy-path only implementation - no error handling, retry logic, or fallback UI is included.
Code changes
handleSaveArticleinuseUASButtonhook — sends POST to UAS on click, updates saved state on success, guards against duplicate requests.onClickonSaveArticleButton; addedtitleprop threaded fromheadlineinArticlePage.createFavouritesPayloadinuasUtility.tsto build the UAS POST body.FAVOURITES_CONFIGobject; madebuildGlobalIdgeneric with optionalresourceDomain/resourceTypeparams.setIsSavedfromuseUASFetchSaveStatusfor post-save state updates.Testing
yarn jest index.test.tsx index.test.tsx index.test.tsx index.test.ts --runInBand --no-coverage— all 27 tests should pass.yarn devand navigate to an article page for thehindiservice (the service enabled in theuasPersonalizationtoggle).ckns_atkncookie is present).X-API-Key) and body payload (activityType: "favourites", resourceDomain: "articles", resourceType: "article", action: "favourited", metaDatacontainingservice, articleId, title).uasPersonalizationtoggle is off.Useful Links