Commit Graph

4375 Commits

Author SHA1 Message Date
Stefan 0cf41a60cb chore(dapp) update SDK interface and the generated code
Updates: #14615
2024-05-30 10:57:42 +02:00
Khushboo Mehta ca031a285c feat(@desktop/wallet): Use SubModelProxyModel in SwapAdaptor.qml
fixes #14926
2024-05-30 10:28:40 +02:00
mdias 2c1806434a
Fix asset value in HoldingsDropdown when adding an asset (#14920)
When creating or editing a community permission, if you add a holding token that has already been added,
the amount value displayed is in basic units (long value) of that token instead of primary units
2024-05-29 13:59:13 -04:00
Anastasiya Semenkevich e15fea7927 chore: add object name for ChatView component 2024-05-29 10:36:52 +03:00
Anastasiya Semenkevich 0fca77b733 chore: rename holders string to match the general in app approach 2024-05-28 19:50:17 +03:00
Lukáš Tinkl f28343e264 fix: Error when editing saved ENS address
- reset the `address` field properly to zero (instead of empty) address

Fixes #14901
2024-05-28 15:31:23 +02:00
Lukáš Tinkl c4f7c9732d fix(AddEditSavedAddressPopup): hide network selector for ENS names
- fix some typos, add some forgotten `qsTr()` calls
- improve SB page with create/edit modes

Fixes #14909
2024-05-28 15:31:23 +02:00
Michal Iskierko 6d310c33cd fix(@desktop/communities): add hidden button to refresh (retrack transaction) community tokens
Issue #14699
2024-05-28 13:52:42 +02:00
Khushboo Mehta 9d8542c95d feat(@desktop/wallet): Add support for Account selection in Swap Modal using already existing AccountsModalHeader.qml
fixes #14749
2024-05-28 10:59:18 +02:00
Khushboo Mehta 81d7ca32b0 feat(@desktop/wallet): Swap modal launch flows
fixes #14628
2024-05-28 10:11:24 +02:00
Lukáš Tinkl 3ea2ba18f2 feat: [UI - Swap] Create swap switch button
- create a custom circle button component for the Swap popup, with the
needed click event and a border area that can be overlaped with the
background as it looks in the design

Fixes #14782
2024-05-28 09:12:07 +02:00
Anton Iakimov d0865e2f44
chore: switch wakuv2 fleet to waku (#14033)
* chore: switch wakuv2 fleet to waku

See status-im/infra-nim-waku#91 for details

Mostly done automatically. Some parts manually.

* chode: drop eth.staging fleet

Signed-off-by: Jakub Sokołowski <jakub@status.im>

---------

Signed-off-by: Jakub Sokołowski <jakub@status.im>
Co-authored-by: Jakub Sokołowski <jakub@status.im>
2024-05-28 08:48:04 +02:00
Lukáš Tinkl 1692651184 fix(Wallet): "All accounts" title casing typo
Fixes #14669
2024-05-27 14:19:34 +02:00
Valentina1133 a11d06f07f
chore: add object name for i dont have other device button (#14921) 2024-05-27 18:19:35 +07:00
Valentina1133 5c5debd0c0
chore: add object names market data fields (#14904) 2024-05-27 13:55:25 +07:00
Andrey Bocharnikov 2958a03c2c fix(airdrop): fix decimals validation
* set decimal for assets on AidropSettingsPanel and HoldingsDropdown test pages
* Disable amount length validation by default
* Input: Align validation error string to the left edge
* Update validation error copy

fixes #11918
2024-05-23 19:40:33 +07:00
Alex Jbanca f944e8359b
fix(BiometricLogin): Move to regular login page when biometric login fails with error (#14860) 2024-05-21 18:42:53 +03:00
Roman Chornii 55edd94401
fix(ProfileDescriptionPanel): Profile settings -> Identity : Addition of validation to bio field (#14772)
- Added validator to the bio component to allow only ascii and emoji characters
This PR fixes #13623
2024-05-21 00:13:55 +03:00
Lukáš Tinkl a6c897929a chore: Remove custom rowData method from NIM's models
- Some NIM's models define additional (not part of the
QAbstractModelItem API) method rowData to allow access to model's data
on UI side
- The same job can be done relying fully on public QAbstractModelItem
API using ModelUtils utility. It gives full transparency if we need
nim's model or other like ListModel replacement in tests/storybook
- propagate `tokensStore` to unbreak the Browser's wallet menu

Fixes #14805
2024-05-20 18:02:20 +02:00
Alex Jbanca 62b7083f4c
fix: Fixing the share addresses popup height when only owner and TM permissions are available (#14865)
* fix: Fixing the share addresses popup height when only owner and TM permissions are available

* Update ui/app/AppLayouts/Communities/panels/SharedAddressesPanel.qml

Co-authored-by: Michał <michalcieslak@status.im>

---------

Co-authored-by: Michał <michalcieslak@status.im>
2024-05-20 18:45:30 +03:00
Stefan 08a1e10f59 feat(dapps) add toast notifications for Wallet Connect paring
Updates: #14754
2024-05-20 17:13:30 +02:00
Richard Ramos 35e4e63b48 feat: shards.staging fleet 2024-05-20 09:33:17 -04:00
Stefan ee72ec7aee feat(dapps) add DAppsService component and ConnectDAppModal
Implement the initial Pairing user workflow and disconnect option for
the first session.

Also

- rename pairing modal accordingly (`PairWCModal.qml`) to make room for the proper
`ConnectDAppModal.qml`
- basic tests for service helpers
- update storybook to reflect the new user workflows

Closes #14607
2024-05-20 15:09:57 +02:00
Stefan 4771f0d77f feat(wallet) customize NetworkFilter for dapps display
Allow to show all selected icons in the network filter
Hide checkboxes in the network filter dropdown

Updates #14607
2024-05-20 15:09:57 +02:00
Stefan 7cd97a0051 chore(dapps) move dApps UX into its own DAppsWorkflow component
Storybook: also automate related workflows for faster iteration

Also extend the inspector utils to handle Loaders and Popups

Updates: #14607
2024-05-20 15:09:57 +02:00
Stefan 78775d3d69 chore(dapps) move wallet connect service code outside popups
Updates: #14607
2024-05-20 15:09:57 +02:00
Valentina1133 03712af3b9
chore: add object names for links preview and add button (#14853) 2024-05-20 17:11:37 +07:00
Michał Cieślak b764446568 feat(StatusLetterIdenticon): simplify names of properties
Closes: #14439
2024-05-17 23:43:42 +02:00
Michał Cieślak a153279e77 feat(StatusLetterIdenticon): make useAcronymForLetterIdenticon true by default 2024-05-17 23:43:42 +02:00
Michał Cieślak b2ab3a455a feat(StatusLetterIdenticon): make useAcronymForLetterIdenticon mode charactersLen unaware 2024-05-17 23:43:42 +02:00
Michał Cieślak d2f73cd88f fix(Communities): Show channel for non-members when read-only, tokenless permission is set
When channel has view-only permission not requiring any holdings, the
channel is not encrypted and should be presented to non-members in
read-only mode.

Closes: #14439
2024-05-17 15:19:06 +02:00
Lukáš Tinkl 93d808d020 fix(CommunityMembershipSetupDialog): wait for the Join Permission response only
- introduce a new boolean property `checkingPermissionToJoinInProgress`
and use it to enable/disable the Join (share addresses) button when
joining a community
- we don't have to wait for both join and channels permissions check to
finish, as the former is much faster
- renamed `joinPermissionsCheckSuccessful` to
`joinPermissionsCheckCompletedWithoutErrors` to avoid confusion

Fixes #14680
2024-05-17 14:26:55 +02:00
Jonathan Rainville bbd1adcabb
Remove importCommunity from QML and Nim code (#14814)
* Remove importCommunity from QML and Nim code

Handling issue 14310. Removed functions associated with the API.

* Updated pr for suggested changes.

* Updated module.nim

---------

Co-authored-by: Eliza <elsorber@gmail.com>
2024-05-16 17:30:32 -04:00
Alex Jbanca f3dc7b9918 feat(ProfileShowcase): Implement custom showcase position when searcher text is filtering items 2024-05-16 16:47:42 +03:00
Valentina1133 e9127f9cd7
Chore/add object name rename keypair item (#14807)
* chore: add object name for rename keypair menu item

* chore: add object name save changes in rename keypair popup
2024-05-16 16:17:33 +07:00
Cuteivist d70f2dcf23
feat(@wallet): Show lightbox when clicking collectible (#14168) 2024-05-15 11:36:56 +02:00
Cuteivist 2565c8a135
fix(wallet): Show community name in tag (#14622) 2024-05-15 11:14:46 +02:00
Lukáš Tinkl 8b8af40979 feat(Settings): remove UI scaling option panel
- as discussed with Design, do not allow the user to select the UI scale
option from Settings as it causes many problems; instead rely on the
OS/Qt HighDPI support to handle the scaling for us
- note however, for advanced users, it's still possible to specify the
UI scale manually by exporting the standard `QT_SCALE_FACTOR` prior to
starting the app
- in the longterm, we will come with our own scaling solution at the QML
level, independent from the OS

Fixes #14137
2024-05-14 17:47:10 +02:00
Khushboo Mehta 30ff5f3a2b fix(@desktop/wallet): New Collectible Details tabs
fixes #13806

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2024-05-14 09:32:45 +02:00
Lukáš Tinkl 2537cdc2f2 fix(CommunityPortal): don't show PermissionsRow for free communities
- hide the permissions row and tokens when the community is free to join
- fix evaluating the `requirementsMet` property which affects the lock
icon state; that role was never part of the model
- add a helper C++ method `isTokenGatedCommunity`
- adjust the SB models, adding different variations of the
permissionsModel for the CommunitiesPortalLayoutPage

Fixes #14671
2024-05-13 16:21:07 +02:00
Lukáš Tinkl 94ca1ff22a fix: ENS keycap display issues
- run the user's display name (ENS name) thru the `Emoji.parse()`
function as that will convert the potentially UTF-16 encoded name
containing emojis into an image

Fixes #12290
2024-05-13 16:20:54 +02:00
Cuteivist 73cee9eebf
bugfix(community): Show popup for infinite supply collectibles (#14410) 2024-05-13 12:59:49 +02:00
Cuteivist 406f12d239
feat(settings): Fixed changing network urls (#14353) 2024-05-13 12:06:05 +02:00
Stefan 1f60410db8 feat(dapps) implement wallet connect URI input
Other changes

- start Wallet Connect SDK using web engine after wallet is ready
- source WC project ID from the constants in nim
- close list when opening the `ConnectDappModal`
- remove the old POC modal instantiation
- rename ConnectDappPopup to Modal for consistency
- move specific dapps related user settings to their place in the component
- add DAppsStore to be used for dapps abstraction

Updates #14556
2024-05-13 10:33:16 +02:00
Godfrain Jacques ac54a70c4e
fix: Permission created before making device a control node is not getting active (#14537)
* chore: bump status-go

* fix: mitigate permissions stuck in pending on control node promotion

This PR fixes #14023

UI does NOT allow promoting to control node is no Owner token is present
2024-05-10 08:57:06 -07:00
Lukáš Tinkl d703d0e87f feat(CreateChannelPopup): inherit the channel color from community color
- if there's a valid community info and the color is non-empty, inherit
it when creating a new channel
- also fix the color picker button height
- adjust the SB page with separate "create" and "edit" options

Fixes #14570
2024-05-09 12:06:43 +02:00
Jonathan Rainville 953fff0e68 feat(community): show a message when the member reevaluation is ongoing
Fixes #14378
2024-05-08 16:44:58 -04:00
Jonathan Rainville 685b83d56d chore: update icons to use the new multicoloured Status logo
Fixes #14531
2024-05-08 10:22:34 -04:00
Khushboo Mehta 03495265d5 feat(@desktop/wallet): Add Swap Feature Flag
fixes #14627
2024-05-08 13:41:17 +02:00
Roman Chornii 05000c5743
fix(TokenUI): Hide explicitly ManageTokensCommunityTag in community settings page according to collectibles cells sizing (#14500) 2024-05-08 14:24:27 +03:00
Godfrain Jacques ceee230244
fix: Token Master permission missing token name (#14609) 2024-05-07 06:58:15 -07:00
Khushboo Mehta 8d8268db2f feat(@desktop/wallet): Make images match their aspect ratio but still have min width and height in collectible details
Also make images zoom to cropped when visible in the collectibles list view

fixes #14203
2024-05-06 16:56:48 +02:00
Lukáš Tinkl caa97737c7 fix(ui-test): fix sporadic failures to load CreateChannelPopupPage
thus also fixing the failing `tests/ui` in CI
2024-05-03 17:01:39 +02:00
Lukáš Tinkl ac9a240e25 fix(StatusLoadingIndicator): make StatusLoadingIndicator use Animator
TLDR: the `StatusLoadingIndicator` will be able to continue the
(rotating) animation eventhough the app might be stuck as
`RotationAnimator` runs on the render thread

- make `StatusIcon` use internally `ColorImage` component which makes it
possible to recolor `Image` on the fly w/o the need to use
`QtGraphicalEffects` module and a separate color layer
- which in turn enables us to use `StatusIcon` with the
`RotationAnimator`
- one minor drawback though, we can no longer use the versioned
properties like `mipmap` with `StatusIcon`; not a big deal as we use
this with SVGs only

Fixes #10014
2024-05-03 17:01:39 +02:00
Andrey Bocharnikov 688238fdd3 Fix(Profile): Fix saving of profile identity changes (#14464)
Problem:
There were no difference between the fact that the avatar is not changed and the avatar is deleted. The same for bio and displayName

On NIM, this state was simply rewritten
Solution
(The problem was discovered due to the fact that if the picture does not change, then Nim receives a base64 encoded source - instead of the path to the new Avatar. Which Status go could not parse as a file.)

On the QML side, if we see that there have been changes, we add changes to changesMap Json, if there are no changes, then do not add. (This is the way to implement Option).

On the NIM Side - convert to saveData

On the Module side - distinguish Nil from an empty string

fixes #14464
2024-05-03 10:43:29 -04:00
Valentina1133 ae856e76f0
Add object names for confirm tags button and enable create community button to master (#14574)
* chore: add object name for confirm community tags button

* chore: add object name for enabling of creation of community button
2024-05-03 09:54:33 +02:00
Lukáš Tinkl 22a9ca72b3 fix(StatusCard): fix some visual glitches
- correct propagation of hover events, fixes card flicker
- improve the ugly thick border
- token icons are now correctly rounded
- fix text descent lines are cut of ("y" and "p" truncated at the
bottom) due to excessive clipping, set correct max line count
- fix tag outline not being visible in dark mode
- add/update the corresponding SB page, with more controls to play
around with the different params

Fixes #14555
2024-05-02 20:25:13 +02:00
Roman Chornii d191a2d9ec
fix(UX Improvement): Clicking on the community logo when in the admin panel should take back to the community. Fixes(#14271) (#14544) 2024-05-02 20:24:56 +03:00
Lukáš Tinkl 63c3b756a5 fix(ChangePasswordView): Clear and cancel button is not blue
- use the proper `StatusFlatButton` as it was meant in the Figma design

Fixes #13763
2024-05-02 17:26:09 +02:00
Jonathan Rainville 1ff424aea1 chore: disable history archive for new user and add advanced setting
Fixes #14534
2024-05-02 10:45:52 -04:00
Jonathan Rainville bfb506540f chore: hide create community button behind advanced setting
Fixes #14530

(includes a revert of the previous hide that wasn't exactly what we wanted)
2024-05-02 10:45:52 -04:00
Stefan 2972531766 chore(global) add the dapps button under a feature flag
Also add basic feature flag support that work with QML and nim

Closes #14553
2024-05-02 12:26:58 +02:00
Stefan 8d6d9c3d7c chore(dapps) update foundation for DApps work
Remove unused and de-scoped elements

Updates #14317
2024-05-02 09:47:30 +02:00
Stefan 913041d5d9 chore(dapps) foundation for dapps page in storybook
Updates #14317
2024-05-02 09:47:30 +02:00
Sale Djenic dd104960ba feat(walletconnect): initial code organization
Closes #14395
2024-05-02 09:47:30 +02:00
Mikhail Rogachev 0146db8da8
fix: Fix content height for SharedAddressesPanel (#14562) 2024-05-01 18:03:20 +02:00
Lukáš Tinkl d0658feb26 feat: disable language/translations selection
- make it conditionally available for testing via
Settings/Advanced/Enable translations
- display a tooltip and infobox explaining the current and future
situation
- upon app start, force the language to "en" if the translations are not
enabled; and suggest app restart when they get disabled

Fixes #14527
2024-04-30 13:25:01 +02:00
Alex Jbanca 85066fccc8 fix: Hide members count from community cards when the community is encrypted and the community info is not available 2024-04-30 14:03:38 +03:00
Lukáš Tinkl ccc1539178 fix(Community): community invitation is missing intro and logo
- fix a binding loop warning for `implicitHeight`
- fix word wrap for long texts with no word breaks

Fixes #14536
2024-04-29 18:23:33 +02:00
Lukáš Tinkl 792e8d74a8 fix: Inclusion of Watched addresses in Balances: Wording change
- "Include in total balance" -> "Include in balances and activity"

Fixes #14517
2024-04-29 10:49:24 +02:00
Lukáš Tinkl 58e5dbff27 fix(Token Management): update wording for Save/Apply buttons
- "Save for later" -> "Save"
- "Apply to my Wallet" -> "Save and apply"

Fixes #14519
2024-04-29 10:48:12 +02:00
Lukáš Tinkl 0c8231a6b6 fix: can't join an encrypted community
- fix the corner case and allow the user to join a community without an
explicitely stated "Member" permission
- enable/disable the Share/Join/Save buttons when the permission to join
check is ongoing, or when the permission check failed
- display tooltips over the disabled buttons explaining why it's disabled
- always display the eligibility button floating on top of the
(scrollable) contents

Fixes #14473
Fixes #14299
2024-04-26 10:50:26 +02:00
Igor Sirotin 59cb770ddb
Switch to new login/create/restore status-go endpoints (#14139)
* fix: new login endpoints - iteration 1

* feat: use CreateAccountAndLogin endpoint

* fix keycard import

* better comment

* wip: screens reordering

* cleanup

* force minimum of 30 seconds fetching backup

* keycard flows fixes

* typo fix

* remove ganache argument

* fix: wallet issues

* update status-go
2024-04-24 18:31:22 +02:00
Valentina1133 5f980a1a8f
Chore/add object name advanced settings, token preview boxes and sign transaction buttons (#14488)
* chore: added object name for manage community on testnet

* chore: added object names for buttons in sign transactions popup

* chore: added object names for preview boxes
2024-04-19 20:07:01 +07:00
Lukáš Tinkl 6260519e66 fix(CommunitySettingsView): hide control node functionality for admins and token masters
- hide the footer when the user is an admin or token master, unless
there is a pending ownership request (`isPendingOwnershipRequest`)
- similarly, hide the sharding section in `CommunityInfoEditor`
- do not cover the shard button with the `SettingsDirtyToastMessage`
- some SB page cleanups and additions
2024-04-18 22:22:40 +02:00
Lukáš Tinkl 559f94a706 fix(OverviewSettingsChart): fix displaying month names
- gotta use `standaloneMonthName` if the date doesn't contain anything
else (like day or year)
2024-04-18 22:22:40 +02:00
Lukáš Tinkl 7ad4a917af fix(FinaliseOwnershipPopup): fix declining ownership transfer
- the `ownershipDeclined` method was being called on an unexisting store
and the signala params were not being passed around
- some related SB page additions/cleanups
2024-04-18 22:22:40 +02:00
Andrey Bocharnikov b5dbac2e74
fix(Profile flow): ID verification cannot be removed (#14308)
fix(UserListPanel): hide the verification icon for yourself

fixes #13619

* split function for reseting trust status and verification+trust status

* rename function to removeTrustVerificationStatus
2024-04-18 20:09:27 +04:00
Lukáš Tinkl 5b242c6dd8 fix: do not display the thousands separator when editing
- teach `userInputLocale` about `Locale.OmitGroupSeparator` option which
discards the said thousands separator
- some more fixes to other inputs to do the same, and align what the
validators do
- StatusAmountInput: discard illegal characters, and reuse the same
locale for the validator
- StatusAmountInputPage: make it possible to select a different locale

Fixes #14165
2024-04-17 14:04:03 +02:00
Alex Jbanca a045ca36fe feat(ProfileShowcase): Sort and filter collectibles based on token management settings 2024-04-17 13:40:42 +03:00
Godfrain Jacques eccc9b3bd7
fix(category) Implement collapsed categories (#14135)
This PR implements the nim part for enabling having collapsed categories
that persist into the database
This fixes #13944
2024-04-15 11:34:44 -07:00
Lukáš Tinkl ea40a6b11f feat(SharedAddresses): display the eligibility bubble in edit mode too
- previously, we'd display the bubble only when joining the community
- now we display it also when editing the shared addresses, with a
slightly different wording (eg. "You're an admin" -> "You'll be a
member"), hinting the user about the future change
- remove the usage of `ModuleWarning` as we don't want its delay or
transitions here, replace it with a regular red `Rectangle` + text

Fixes #13397
2024-04-15 20:24:34 +02:00
Stefan 228622359d fix: warning while switching between accounts
The is image flag and source was not in sync due to sequential change
of source and isImage. This was causing the following warning:
`Warning: qrc:/StatusQ/Components/StatusRoundedImage.qml:27:5: QML StatusImage: Cannot open: qrc:/StatusQ/Components/help
2024-04-15 09:16:34 +02:00
Cuteivist 7cb59576a1
fix(wallet): Update amount to send decimal handling (#14399) 2024-04-15 07:28:29 +02:00
Ivan Belyakov 3843b53cc0 feat(wallet): toggling `include/exclude from total balance` menu action
filters out assets/collectibles/activities entries.
Fixed direction of transfers for `All accounts` selection on activity
tab.

Closes #14162 #14216
2024-04-12 15:18:19 +02:00
Ivan Belyakov 6ba0cdfafa feat(wallet): removed allAddresses flag as redundant 2024-04-12 15:18:19 +02:00
Stefan b9271005cd fix(wallet): update wallet assets and collectibles order on user action
Add a specific state to the saveSettings action to update the model
by reloading the data.

The previous implementation was using the same save address which
doesn't update. Either in the past there was a side effect that made it
work or it was never working.

Closes #14365
2024-04-12 11:30:15 +02:00
Michał Cieślak 180932b799 chore(SharedAddressesAccountSelector): Remove workaround related to issue #14244
Additionally flow is simplified slightly by setting `type` role in
ConcatModel
2024-04-12 11:05:08 +02:00
Lukáš Tinkl 6171a2d900 fix(NetworkFilter): position the popup along the right edge
spotted by Ben
2024-04-11 21:48:16 +02:00
Lukáš Tinkl 9024a4c324 fix(RightTabView): fix filter button vertical alignment
spotted by Ben
2024-04-11 21:48:16 +02:00
Lukáš Tinkl 5d064368cf chore(ui): visually align different combo box instances
- extract common background and indicator subcomponents into
StatusQ.Components.private, and reuse it

Fixes #14121
2024-04-11 21:48:16 +02:00
Lukáš Tinkl e363dd1109 fix(SortOrderComboBox): do not display icons or bold(er) font in delegates
- cleanup indentation (older QtC versions don't like the nullish
coalescing operator `??`)
- fixup SB pages
2024-04-11 21:48:16 +02:00
Lukáš Tinkl 14138d5ff5 fix(NetworkFilter): display correct cursor
- since we override the `control.background` from `StatusComboBox`, need
to specify the `cursorShape` again
2024-04-11 21:48:16 +02:00
Lukáš Tinkl fb2d1ad0f0 fix(NetworkFilter): fixup allSelected/noneSelected
- there's no `len` property in `SFPM`; fixes correctly displaying "All
networks" when all are selected
2024-04-11 21:48:16 +02:00
Anthony Laibe da7f419f57 fix: repeat tx open the send modal
fixes #14357
2024-04-10 10:31:58 +02:00
Cuteivist 277dda7533
feat(wallet): Disable send for soulbound collectibles (#14327) 2024-04-09 16:16:03 +02:00
Lukáš Tinkl b84c1f20df fix[Shared Addresses] Can't edit shared address while the join request is pending
- disallow changing the Shared addresses while our request to join
community is still pending

Fixes #14292
2024-04-09 13:11:39 +02:00
Lukáš Tinkl 50c2d33f64 chore(CommunityColumnView): fix typo 2024-04-09 13:11:39 +02:00
Sale Djenic d4fa715c7e fix(wallet): changes in account order in settings are not applied in wallet
Fixed an issue with dropping a draggable item outside the bounds of the DropArea.

Fixes #13836
2024-04-09 11:27:15 +02:00
Stefan 473e2e273f feat(wallet) connect assets ordering with saving to DB backend
Also refactor the existing code based on the latest understanding.

Closes #13312
2024-04-09 09:34:52 +02:00