Should I merge it now? No.
No.
GitHub still has it as a draft, with a clean merge state and zero check runs. The description says tests were skipped. I would not put that on a hotfix branch today.
The code change is the right shape for this bug. I would merge a later revision after the three closeModal subscriptions below are gone or real, and after one signed-in pass of Send Tip plus a mobile livestream checkout.
What the tokens fix
ng-bootstrap 20 creates the modal component with options.injector as the parent injector. A token provided there is visible to inject() while field initializers run. input(default) then keeps that value, because these modals are not opened with a template binding.
The old code did modalRef.componentInstance.isModalView = true after open(). That replaces the signal function with a boolean. The next isModalView() throws is not a function. Same failure for loggedInUserData, userType, showMessageArea, priorTipCloseResult, and the livestream preview inputs.
Send Tip now reads SEND_TIP_MODAL_DATA. Checkout and preview modals each have their own token. Routed pages inject with optional: true and fall back to the old defaults, so a normal page visit stays unchanged.
data on the tip dialog is still a decorator @Input(). Minimum tip and monetization can keep assigning componentInstance.data. currencyConversionData is a plain field. Reels still opens the same dialog through the Material bottom sheet and MAT_BOTTOM_SHEET_DATA.
The fundraiser store picker binds modalHeader and apiEndPoint in the template and types the viewChild. Those two are signal inputs, so writing them on the component instance was the same class of bug. Livestream and messages still assign disabledOptionsByTab, which is a decorator @Input().
Three opens still throw
After open() returns, the active livestream screen subscribes to componentInstance.closeModal for order payment, customer information, and shipping options. Those three classes have no closeModal output. The subscription throws before the click handler finishes.
That line is already on the base commit 5449fe850e. It was easy to miss because the signal assignment threw first, on a later change detection. This pull request removes that throw, so execution now reaches closeModal.subscribe. The modal node is already in the document. The handler still errors, and nothing is listening for dismiss.
| Opener | Component | closeModal |
|---|---|---|
| Order payment | OrderPaymentComponent | Missing. Subscribe at line 851. |
| Merchandise customer info | CustomerInformationComponent | Missing. Subscribe at line 952. |
| Shipping options | ShippingOptionsComponent | Missing. Subscribe at line 987. |
| Customize experience, ticket preview, ticket customer info, portfolio, share details | Those five components | output() is declared. Subscribe is valid. |
The other componentInstance writes in that block are decorator inputs: product ids, userProfile, queryParamData, redirect, paymentType, creatorId, contentSk. Those assignments do not replace a signal.
Send Tip callers
Seven NgbModal.open(SendtipdialogComponent) sites now pass the token. I compared each payload with the assignments it replaced.
| Caller | Token fields |
|---|---|
| Home, forum, forum post, search | data, loggedInUserData |
| Post detail, profile | Those, plus userType and priorTipCloseResult |
| Livestream chat | Those, plus userType and showMessageArea: false |
Profile's LocalCommonEnums is an import alias of CommonEnums, so guest vs logged still matches the dialog's comparison. Passing priorTipCloseResult ?? null matches the old input default when the reopen payload is absent.
Chat tips and the three livestream post-payment opens pass POST_PAYMENT_MODAL_DATA. Chat sets isModalView only. Livestream also sets isActiveLiveStreaming. That matches the old assignments.
What I did not run
- I read the pull request diff at
a073ce250cffand the ng-bootstrap 20 modal stack innode_modules. The custom injector is the parent of the component injector. - I did not run
ngc, the unit tests, a browser session, or a white-label build. The pull request has no status checks. - A dirty local
environment.tsis not in the pull request.
Before a yes, drop or implement those three closeModal subscriptions, mark the pull request ready, and click through Send Tip on home, a livestream chat tip with the message box hidden, and a phone-width merchandise checkout.