[pull] main from MetaMask:main#503
Merged
Merged
Conversation
…les (#25688) ## **Description** This PR refactors the Perps codebase to ensure consistent usage of **object parameters** across all service and provider methods. This is a pure code quality improvement with no behavioral changes. ### Changes Summary **1. HyperLiquidClientService.ts** - Extracted repeated inline wallet type to `HyperLiquidWalletParams` interface (was duplicated 3x) - Converted `ensureTransportReady(timeoutMs)` to `ensureTransportReady({ timeoutMs? })` - Converted `fetchHistoricalCandles(symbol, interval, limit, endTime)` to object params **2. EligibilityService.ts** - Converted `checkEligibility(blockedRegions)` to `checkEligibility({ blockedRegions })` **3. HyperLiquidProvider.ts** - Updated `updateMargin()` to use existing `UpdateMarginParams` type from types/index.ts **4. PerpsController.ts** - Updated `fetchHistoricalCandles()` to use object parameters **5. Updated all call sites:** - HyperLiquidSubscriptionService.ts - MarketDataService.ts - CandleStreamChannel.ts - All related test files ### Why This Change The Perps codebase already uses object parameters pattern for ~95% of its methods. This PR addresses the remaining 5% of inconsistencies to: - Ensure a consistent API style across the codebase - Reduce code duplication (wallet type was defined inline 3 times) - Make future API extensions easier (adding optional params to object is non-breaking) - Align with the established patterns in PerpsProvider interface ## **Changelog** CHANGELOG entry: null ## **Related issues** N/A - Code quality refactor ## **Manual testing steps** ```gherkin Feature: Perps functionality works unchanged Scenario: User views candle charts Given user is on a perps trading view When user opens the chart for any asset Then chart should display candle data correctly Scenario: Eligibility check works Given user opens perps feature When geo-location is checked Then eligibility is determined correctly based on blocked regions ``` ## **Screenshots/Recordings** N/A - No visual changes ### **Before** N/A ### **After** N/A ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I've included tests if applicable - [x] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Mostly signature/type refactors with updated tests; primary risk is missed call sites or subtle default-value differences causing runtime argument mismatches. > > **Overview** > Standardizes Perps controller/service/provider APIs to use *object parameters* instead of positional arguments, updating all call sites and tests accordingly. > > Key refactors include: `PerpsController.fetchHistoricalCandles`, `MarketDataService` delegation to provider `clientService.fetchHistoricalCandles`, `EligibilityService.checkEligibility`, and `HyperLiquidClientService.ensureTransportReady`/`fetchHistoricalCandles` (plus extracting a shared `HyperLiquidWalletParams` type). `HyperLiquidProvider.updateMargin` is also switched to the shared `UpdateMarginParams` type. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit e3023f5. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Seeing a bug with NFT import on mobile for a custom network. On extension, the image for this NFT shows up just fine after import. On mobile, the image is blank. Multiple users have reported this. Mobile: <img width="300" height="2400" alt="image" src="https://github.com/user-attachments/assets/ab29a8f7-5c1f-4070-bf79-940f105b8caf" /> Extension: <img width="300" height="492" alt="image" src="https://github.com/user-attachments/assets/ec722a68-67e3-483a-b6a7-6f7eb08709c6" /> Solution: @sahar-fehri spotted that the difference between Extension and Mobile was the IPFS gateway, following that piece of information we identified where to change the ipfs url so that we only had to modify the cleint (mobile) and not core. Furthermore, after fixing that issue, we spotted some kind of flakiness where images were sometimes displayed and other times werent. This was due to the image being null while decoding the IPFS url which triggered expo-image calling `onError` and therefore not loading the image Finally, I also found an existing bug on @MetaMask/confirmations where IPFS images are not resolved <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: nft images not loading for ApexYugalabs + flakiness ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/ASSETS-2610 ## **Manual testing steps** ```gherkin Feature: my feature name Scenario: user [verb for user action] Given [describe expected initial app state] When user [verb for user action] Then [describe expected outcome] ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** https://github.com/user-attachments/assets/a379d20a-0ac2-45e8-89c5-8779517d3891 <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I've included tests if applicable - [ ] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Changes NFT/IPFS image resolution and controller init parameters; while localized, it affects how NFT media URLs are derived and rendered across key user flows. > > **Overview** > Fixes flaky/blank NFT images by **avoiding rendering `expo-image` with an empty URI while an `ipfs://` URL is still resolving**: `RemoteImage` now returns `null` during the initial IPFS resolution state, with a new unit test covering the loading case and updated snapshots where the image subtree is absent until resolved. > > Adds IPFS resolution to confirmations’ `useEVMNfts` transformation: image selection now asynchronously converts `ipfs://` candidates via `getFormattedIpfsUrl` using the app’s configured gateway, falling back to the next URL when resolution returns `''`/`null` or throws (with logging). Tests were updated/added to cover these fallback cases and to de-flake the send amount NFT image assertion by waiting for resolution. > > Initializes `NftController` with an explicit `ipfsGateway: 'dweb.link'` and updates the init test accordingly, and fixes ERC1155 NFT list rendering to show `(0)` when balance is missing. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit a3c533b. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This bug was introduced after RWA tokens were introduced in this [PR](#24740) <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: remove subtitle in token details ## **Related issues** Fixes: #25478 & https://consensyssoftware.atlassian.net/browse/ASSETS-2586 ## **Manual testing steps** ```gherkin Feature: my feature name Scenario: user [verb for user action] Given [describe expected initial app state] When user [verb for user action] Then [describe expected outcome] ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <img width="300" height="929" alt="image" src="https://github.com/user-attachments/assets/f87cd576-ec56-4226-9f8d-5c5174e9870c" /> <img width="300" height="955" alt="image" src="https://github.com/user-attachments/assets/c36f2ec5-e310-44a8-a2a7-5abb1884127d" /> <!-- [screenshots/recordings] --> ### **After** <img width="300" height="948" alt="image" src="https://github.com/user-attachments/assets/3f86daf4-2375-461b-94cf-168693119370" /> <img width="300" height="916" alt="image" src="https://github.com/user-attachments/assets/fa39987f-885d-474e-853f-e4f4149f73e6" /> <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I've included tests if applicable - [ ] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > UI-only formatting change in the asset header plus test/snapshot updates; low risk aside from potential minor layout regressions for edge-case token names. > > **Overview** > Fixes the token details subtitle rendering in `AssetOverview` by **combining the asset name and ticker/symbol into a single text node** (`name (ticker)`), while preserving the special two-line layout when a stock/RWA badge is shown. > > Updates `Price` header unit tests and the `AssetOverview` snapshot to match the new subtitle format, including cases where `ticker` is missing (falls back to `symbol`). > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit a0f9bfe. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
## **Description** Migrate Onboarding component to use useAnalytics hook instead of deprecated useMetrics. ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: null ## **Related issues** Fixes: [MCWP-297](https://consensyssoftware.atlassian.net/browse/MCWP-297) (Batch 1-6) ## **Manual testing steps** ```gherkin Feature: Onboarding analytics tracking Scenario: user creates a new wallet Given app is open and user is on the onboarding screen When user taps "Start exploring now" to create a new wallet Then WALLET_SETUP_STARTED event is tracked (Mixpanel) Scenario: user imports an existing wallet Given app is open and user is on the onboarding screen When user taps "Import using Secret Recovery Phrase" to import a wallet Then WALLET_IMPORT_STARTED event is tracked (Mixpanel) Scenario: user completes OAuth login Given app is open and user starts OAuth login flow When user successfully completes Google or Apple OAuth login Then SOCIAL_LOGIN_COMPLETED event is tracked (Mixpanel) ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I've included tests if applicable - [x] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [MCWP-297]: https://consensyssoftware.atlassian.net/browse/MCWP-297?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Refactor limited to analytics hook wiring and test synchronization; minimal behavioral change risk beyond potential timing/consent regressions in onboarding analytics flows. > > **Overview** > `Onboarding` now uses `useAnalytics` instead of deprecated `useMetrics`, shifting consent/enablement calls to the new analytics hook while keeping existing onboarding/OAuth tracking behavior. > > Tests were updated to mock `useAnalytics` and treat `optIn`/`optOut` as async, adding a `flushPromises` helper and `waitFor` assertions to reduce timing-related flakiness around navigation and analytics calls. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit fefc27e. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Adds tracking of BrowserStack network (API) calls into the performance E2E pipeline. The custom reporter fetches network logs per session and attaches them to each test metric as apiCalls (and apiCallsError when the fetch fails). The aggregation script is updated so these fields are kept in the cleaned and aggregated reports. Removes the unused getDeviceInfoFromProfiling method and fixes the missing comma in the aggregation script after the new apiCalls / apiCallsError properties. <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/MMQA-1361 ## **Manual testing steps** ```gherkin Feature: my feature name Check that after running performance pipeline, the performance summary report includes a section with the api calls ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I've included tests if applicable - [x] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Touches the test infrastructure and BrowserStack/Appium capability set, which can change test stability, runtime, and artifact sizes. Risk is limited to CI/e2e tooling but includes new API calls and additional logged data. > > **Overview** > Adds BrowserStack *network log (HAR)* collection to the performance-reporting pipeline: `AppProfilingDataHandler` now fetches `/networklogs`, `custom-reporter` retrieves and stores per-session entries/errors, and emitted `performance-metrics-*.json` plus the aggregation script now include `apiCalls`/`apiCallsError` fields. > > Updates the patched `appwright` BrowserStack capabilities to enable richer telemetry (network profile/log content capture, app profiling, self-heal, various Appium settings), adds env-driven overrides (`BROWSERSTACK_BUILD_NAME`, `DISABLE_VIDEO_DOWNLOAD`), and adjusts runner behavior (CI retries/workers, locator text-matching behavior/logging) via the Yarn patch. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 44ee531. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This PR adds comprehensive display support for `TransactionType.musdClaim` transactions (Merkl rewards claims) across the app. Previously, these transactions showed generic/empty information. Now users see meaningful details about their mUSD reward claims. **Changes include:** - Transaction details view: Shows "Claimed mUSD" title with proper hero amount, summary, network fee, and received total - Activity list: Shows received icon with correct claimed amount and fiat value - Added musdClaim to appropriate type arrays for proper routing and display - Added localization strings for claim-related labels - Added unit tests for all new musdClaim handling This PR also fixes an issue where two loading toasts appeared during a claim transaction. Now only one is shown. ## **Changelog** CHANGELOG entry: Added detailed transaction display for mUSD reward claims showing claimed amount, network fee, and received total ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/MUSD-228 ## **Manual testing steps** ```gherkin Feature: mUSD Claim Transaction Display Scenario: User views mUSD claim in activity list Given user has completed a Merkl mUSD rewards claim transaction When user opens the Activity tab Then the transaction shows "Claim" label And displays the received icon (not generic contract icon) And shows the correct claimed mUSD amount and fiat value Scenario: User views mUSD claim transaction details Given user has completed a Merkl mUSD rewards claim transaction When user taps on the claim transaction in Activity Then the title shows "Claimed mUSD" And the hero section displays the claimed amount And the summary shows "Claim mUSD" And "Network fee" row displays the gas fee paid And "Received total" row displays the total claimed value ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <img width="389" height="113" alt="Screenshot 2026-01-30 at 17 42 27" src="https://github.com/user-attachments/assets/a69b92e4-668b-4f01-9ef8-4b1ec249b31a" /> <img width="389" height="839" alt="Screenshot 2026-01-30 at 17 42 32" src="https://github.com/user-attachments/assets/48c9a7ea-8864-4f6e-8712-6b404e74440e" /> <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I've included tests if applicable - [x] I've documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I've applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Touches transaction classification, decoding, and multiple UI surfaces (activity list, token details, confirmations), so regressions could hide or mislabel transactions or show incorrect fiat amounts; changes are mostly additive with tests covering key paths. > > **Overview** > Adds first-class support for Merkl mUSD reward claims by emitting transactions as `TransactionType.musdClaim`, detecting them in token activity filters, and decoding claim calldata to display claimed amount and fiat value in the activity list. > > Updates the redesigned Transaction Details flow to handle `musdClaim` (hero amount, summary titles, network fee, received total) and introduces `usePayFiatFormatter` to show **user-currency** fiat for `musdClaim` while keeping other flows USD-default. Also adjusts navigation to the new details screen via a two-step route to avoid duplicate/toast/navigation issues, and adds localization + extensive unit test coverage for the new behavior. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 61436a8. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )