Iterates #16043
* fix(admin): improve admin panel loading by putting sections in loaders
* fix(admin): speed up members tab by using nim model and real search
* fix(admin): speed up airdrop panel
* fix(admin): mint panel and airdrop panel interactions and previous btn
* fix(admin): speed up overview page
* fix(admin): speed up permissions page
refactor ProfileContextMenu to make it a functional component
refactor ProfileContextMenu to make it a functional component
refactor ProfileContextMenu to make it a functional component
This refactor ProfileContextMenu to make it a functional component by:
refactored out direct calls to backend, and passing backend data structures and moved this logic to the callers, also refactored common calls between the callers
common types of context menus have been extracted to their sub components which removes a lot of logic too and makes the behaviour very clear
user verification workflow (which was already disabled) has been removed
refactor: use signals and call singletons on the parent instead
remove unused code for now from profile context menu
refactor profile context menu into two components; add property to storybook
extract blocked profile context menu and self profile context menu
use profileType instead of individual bools
refactor to pass trustStatus as an argument
make contact type a parameter
remove unnecessary method from RegularProfileContextMenu
add ensVerified property to ProfileContextMenu components
add onlineStatus property to ProfileContextMenu components
move ProfileContextMenu storybook controls to the right sidebar
move contactDetails logic up from the view
add local nickname property to ProfileContextMenu components
fix issue with missing signal; fix logs in storybook
use constant for profileType instead of string
refactor common code into a single method
refactor getProfileContext
remove references to contactDetails which are not longer needed
remove unnecessary comments
fix bridged constant
refactor into a single ProfileContextMenu component
refactor into a single ProfileContextMenu component
refactor into a single ProfileContextMenu component
simplify imports
remove unused store field
move methods from utils to contacts store
remove onClosed signal
remove unused param
rename ProfileContextMenu variables
simplify signals in ProfileContextMenu
remove ;
refactor: do early return
simplify ifs
move ProfileContextMenu to its own storybook page
fix wrong params
fix profile context menu separator
add missing signals to profile context menu on the members tab panel
- restore backwards compatibility; a lot of the actions in the component
relies on the old StatusListItem's `title` property to work correctly
- fixes the missing image and name in the profile context menu, among
others
Fixes#16367
* refactor(community_tokens): only fetch holders when going to the page
Fixes#16307
Instead of fetching community token holders each time members change, we fetch when the page for the token is opened.
It shows a small loading text then the resulting holders.
If the list is already available (fetched previously, we show it directly).
There is still the timer to refresh the list if you stay on the page.
* add loading property to storybook
- simpler, standard property based API
- much lighter than deriving from the heavy StatusListItem
- should reduce RAM usage significantly, esp. with large communities
Iterates #11059
Fixes#15507
Makes sure to enable the network where the owner token was minted before minting or airdroping a token.
This makes sure that the account selector shows the right balance and there is no ETH error before doing the transation
Updating the SendModal to receive an accountAddress to preselect the account instead of the account item model
to squash: Fix account selection. by address
* fix(wallet): Renamed KeyPair to key pair throughout the entire app
replaced the keypair occurances with key pair in the entire qml ui files
fixes: #13612
---------
Co-authored-by: belalshehab <belal@status.im>
Co-authored-by: Valentina Novgorodtceva <valentina@status.im>
* 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>
- 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
* 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
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
- 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#14473Fixes#14299
* 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
- 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
- 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
* fix(permissions): fix hang when all channel perm check return
Fixes#14234
The problem was that we updated **all** the models from **all** the channels of a community each time the channel requirement checks returned.
The fix is to first of all, make sure we don't call that check too often. It sometimes got called twice in a row by accident.
The other better fix is to check if anything actually changed before updating. This solves the issue almost entirely. Since the permissions almost never change, the updates now take only a second.
* fix(permisisons): never run permission checks for privileged users
Also fixes#14234 but for admins, TMs and Owners.
Admins+ were still getting the hang, because the permission checks always returned something different than the models, because the models knew that admins have access to everything, but the permission check was running as if it were a normal user (I think, un-tested).
Anyway, the solution is more simple, we never need to run the permission checks on admins+, because they always have access to everything!
* fix(Communities): prevent channels model from emitting unnecessary signals
Closes: #14274
* chore(Communities): improve channels metadata lookup performance
ChannelsSelectionModel is removed, replaced with plain LeftJoinModel.
Transformations of left-side model are done in a single place, not in
every delegate making the join.
* only call update functions when there is something to update + move permission model creation when needed
---------
Co-authored-by: Michał Cieślak <michalcieslak@status.im>
- don't use the expensive `ExpressionFoo` in SFPM, just use
`AnyOf/AllOf` combinations where possible
- in HoldingsSelectionModel, don't call the `getTokenByKey` twice to
construct the `text`, once is enough
- lastly, rewrite the JS helper `PermissionsHelpers.getTokenByKey` to
C++; this method gets called recursively way too often from many places
In the longterm, we should provide a specific C++ transformation model
for SharedAddressesPermissionsPanel to follow the UI requirements more
closely; that way we'd be able to fix the issues here for good
Fixes#14276
- implement sorting of the wallet accounts by the number of tokens (aka tags) and
then by alphabet
- due to the delegate complexity here and usage of nested models, keep
track of the tags count separately and outside of the model
- this will be improved later on as part of the complete sort/order
design described in https://github.com/status-im/status-desktop/issues/14192Fixes#14101
- implement the eligibility check in C++, returning the highest possible
role the user would be allowed to join under
- enable/disable the "Share" button based on the above permissions check
- remove all the locally placed components, access teh popup only via
Global/Popups
- calculate the `accessType` internally based on the permissions present
- update the eligibility as the async check for permissions is finished
- fix the permissions panel background color
- partially revert the share/finish/cancel buttons behavior; it must be
one button due to StatusStackModal limitations
- fix some other minor UI issues or differences to current Figma designs
- adjust SB, add the possibility to play around with different
permission models
Fixes#14100
* fix(JoinCommunity): Add missing state ONLY private permissions and NOT MET
- Modified `becomeMemberModel` in store to provide all member permissions.
- Modified permissions model filter to only discard permissions that are private and NOT met.
- Updated `storybook/PermissionsModel` with new only private permissions and added new model option in corresponding pages.
Closes#14104
* fix(JoinCommunity): Text position when all channels hidden
Updated text position when `allChannelsAreHiddenBecauseNotPermitted` in community join process