brave-core
brave-core copied to clipboard
Update Brave News to use the new `channels` field from the API (when available)
Resolves
Production sources: https://brave-today-cdn.brave.com/sources.json
Staging sources: https://brave-today-cdn.bravesoftware.com/sources.en_US.json
This PR is in the somewhat awkward position of adding new functionality from a new, future version of the sources API. The PR adds the ability to parse the channel
field if it exists, and when it does not, falls back to the existing behavior.
This PR does the following:
- Migrate from using
publisher.isEnabled
to using theTop Sources
channel to decide which sources are available by default (on Desktop) if (and only if) there arechannels
available. - Adds a new switch
--brave-news-region
to override the current region - Adds a
ChannelsController
for fetchingChannels
and managing channel subscriptions - Updates
BuildFeed
to take Channel subscriptions into account. - Subscribes all users to
Top Sources
channel by default (this has no effect if the server doesn't return channels).
Running the PR
To use the new channels before the API change lands in prod, you need to add the following two flags to point at the staging sources.json
.
npm run start -- --brave-today-host=brave-today-cdn.bravesoftware.com --brave-news-region=en_US
Submitter Checklist:
- [ ] I confirm that no security/privacy review is needed, or that I have requested one
- [ ] There is a ticket for my issue
- [ ] Used Github auto-closing keywords in the PR description above
- [ ] Wrote a good PR/commit description
- [ ] Squashed any review feedback or "fixup" commits before merge, so that history is a record of what happened in the repo, not your PR
- [ ] Added appropriate labels (
QA/Yes
orQA/No
;release-notes/include
orrelease-notes/exclude
;OS/...
) to the associated issue - [ ] Checked the PR locally:
npm run test -- brave_browser_tests
,npm run test -- brave_unit_tests
,npm run lint
,npm run gn_check
,npm run tslint
- [ ] Ran
git rebase master
(if needed)
Reviewer Checklist:
- [ ] A security review is not needed, or a link to one is included in the PR description
- [ ] New files have MPL-2.0 license header
- [ ] Adequate test coverage exists to prevent regressions
- [ ] Major classes, functions and non-trivial code blocks are well-commented
- [ ] Changes in component dependencies are properly reflected in
gn
- [ ] Code follows the style guide
- [ ] Test plan is specified in PR before merging
After-merge Checklist:
- [ ] The associated issue milestone is set to the smallest version that the changes has landed on
- [ ] All relevant documentation has been updated, for instance:
- [ ] https://github.com/brave/brave-browser/wiki/Deviations-from-Chromium-(features-we-disable-or-remove)
- [ ] https://github.com/brave/brave-browser/wiki/Proxy-redirected-URLs
- [ ] https://github.com/brave/brave-browser/wiki/Fingerprinting-Protections
- [ ] https://github.com/brave/brave-browser/wiki/Brave%E2%80%99s-Use-of-Referral-Codes
- [ ] https://github.com/brave/brave-browser/wiki/Custom-Headers
- [ ] https://github.com/brave/brave-browser/wiki/Web-Compatibility-Exceptions-in-Brave
- [ ] https://github.com/brave/brave-browser/wiki/QA-Guide
- [ ] https://github.com/brave/brave-browser/wiki/P3A
Test Plan:
Run Brave as per normal. There should be no changes to your currently active Brave News sources.