Repository navigation
Collection Settings in React: Subscription page (BL-16734) - #8487
andrew-polk wants to merge 1 commit into
Conversation
|
[Claude Opus 5.5 during preflight] Consulted Devin on 2026-10-20 18:09 UTC up to commit 350184b. It raised two bugs and one item to investigate, plus one informational note (two identical subscription lookups per keystroke; not acted on):
|
|
[Claude Opus 5.5 during preflight] Consulted Devin on 2026-10-23 19:01 UTC up to commit 470272e. Since the last consultation it raised two new bugs, both fixed in 470272e and now marked resolved by Devin: the test's stand-in pane used a named function, and the old Subscription tab didn't drop a late reply. Its other items repeat earlier findings already answered on their threads; one informational note (two identical lookups per keystroke) is not acted on. |
470272e to
bf70216
Compare
bf70216 to
0b3558f
Compare
|
[Claude Opus 5.5] Consulted Devin on 2026-10-23 up to commit 846e278. One new finding (old dialog's badge "throws"): not an issue, replied and resolved on its thread. Its other bugs and its worker-crash flag repeat threads already resolved; one informational note (two lookups per keystroke) not mirrored. |
andrew-polk
left a comment
There was a problem hiding this comment.
@andrew-polk reviewed 26 files and all commit messages, and resolved 6 discussions.
Reviewable status: 0 of 26 files reviewed, all discussions resolved.
The page, laid out like the card's mockup, shares the code box and status line with the WinForms tab, which becomes a self-contained LegacySubscriptionSettings that the cutover deletes whole. The dialog keeps the code being typed and posts it with the other values; Apply hands it to ApplySubscriptionAndBookshelf before the xmatter check. A typed code is described by a stateless settings/subscription?code=, so Cancel leaves nothing behind. Subscription badges and gated menu items open the dialog in the browser; a badge on the dialog's own pages switches page through Config-R's ConfigrPaneHandle, keeping edits. E2E tests: Notion Test Case 849. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
846e278 to
2026ea4
Compare
|
[Medium impact] The PR appears safe to merge.
|
Problem
The new (React) Collection Settings dialog had only a placeholder for its Subscription page, so a subscription code could still be entered only in the old WinForms dialog. Every subscription badge and gated menu item ("this needs a subscription, click to get one") also still opened the old dialog.
Fix
LegacySubscriptionSettingsthat the cutover deletes whole.values.subscription.code; C# hands it to the existingApplySubscriptionAndBookshelfrules (Pro refused in a Team Collection, the BL-15056 expired-bookshelf cases), now before the xmatter check because the branding can choose the pack. A changed code turns OK into Restart. An unchanged code keeps the collection's own subscription object, which matters for a book downloaded for editing.GET settings/subscription?code=…(with no code it describes the collection's subscription), so the code never reaches C# until OK. The old dialog's tab uses the same lookup, and still keeps its typed code in C# for its own OK.common/showSettingsDialog), which launches it. Until the cutover, a badge on one of the old WinForms dialog's own tabs does nothing. A badge on one of the new dialog's own pages switches the open dialog to the Subscription page through Config-R's page handle (ConfigrPaneHandle.selectTopLevelPage, from Collection Settings: Help button for the page showing (BL-17032) #8489), keeping edits made so far.Screenshots
A collection with no subscription: an empty code and the community-subscription invitation.
The Test code typed in: its tier, expiry and branding summary, and OK has become Restart.
Risk Evaluation
Shared paths:
CollectionSettingsUpdater.Applynow applies a posted subscription on every save, before the xmatter check (an unchanged code is a no-op).openBloomSubscriptionSettingsis the one route every subscription badge in Bloom takes; it now opens the React dialog in the browser instead of asking C#.SubscriptionControls,SubscriptionStatusanduseSubscriptionInfoare shared with the old dialog's tab and the Collections tab's status line; the code box now carries its own styles instead of the old tab's stylesheet. The rest is new and reached only by the new page.Ecosystem Impact
No change to book files, published output, or the
.bloomCollectionformat (the code is stored as before). No new strings: the page reuses the old tab's localized text; its label staystranslate="no"like its sibling pages while the dialog is alpha-only. No dependency changes in this PR; it relies on@sillsdev/config-r1.0.0-alpha.30, which #8489 (below it in the stack) brings in.E2E Coverage
src/BloomE2E/tests/collection-settings-subscription.spec.ts(new, Notion Test Case 849), in a collection without a subscription:.bloomCollection, and the reopened collection is on the Enterprise tier.Not covered: the invalid-branding startup path (nothing sets
CollectionSettings.InvalidBrandingtoday, so it cannot fire), and the Pro-in-a-Team-Collection refusal (unit-tested inCollectionSettingsUpdaterTests; the suite has no Pro code).Notion Test Suite
Preflight report: https://bloombooks.github.io/dev-process-artifacts/deciders/bloomdesktop-bl-16734-subscription-settings.html
Ref: https://issues.bloomlibrary.org/youtrack/issue/BL-16734
🤖 Generated with Claude Code
Devin review
This change is