Commit Graph

712 Commits

Author SHA1 Message Date
Noelia 42a5236b10 feat(SelfDestructPopup): Updated self destruct tokens lists management
- Updated expected model roles (removed `selfDestruct` and `selfDestructAmount`)
- Self destruct tokens list management is now done inside `SelfDestructPopup).
- Store receives a js array with {walletAddress, amount} roles.
2023-05-05 14:05:31 -04:00
Michal Iskierko 2087616b82 feat(@desktop/communities): Adding token owners model
- replace qml owners model with Nim one
- get token owners from wallet service
- keeping owners cache in community_tokens/service and refresh every 10 minutes

Issue #10254
2023-05-05 14:05:31 -04:00
mprakhov 60bd0d2a6c feat(@desktop/communities): Automaticaly encrypt closed communitites 2023-05-05 19:04:29 +02:00
Alex Jbanca a674ec57a8 fix(blockChat): Disable chat input when minimal conditions are not met 2023-05-05 19:44:39 +03:00
Jonathan Rainville 0e5c566dcd fix(newChat): fix sending messages in new ad hoc chat with new store
Fixes #10523

The problem was that the CreateChatView now uses an isolated Chat RootStore, since we can't be sure if the personal chat section will be loaded yet.

To fix that, I created a new store that is only for storing the properties needed for that new chat. That way we are sure that it is created and shared to necessary components.
2023-05-05 09:36:14 -04:00
Anastasiya S 81a79327b6 test(tst_communityPermissions): implement permissions screen validation 2023-05-05 15:48:56 +03:00
Boris Melnik 6464366c7d fix(CommunitySettingsView): Fix community settings after removing old legacy popup ref 2023-05-05 15:30:45 +03:00
Boris Melnik 7e4419d239 chore(CommunitySettings): Remove old legacy community popup
Fixes: #9913
2023-05-04 12:14:39 -04:00
Igor Sirotin bb6e87deec
fix(ImportCommunityPopup): Support community link (#10557) 2023-05-04 18:37:44 +03:00
Michal Iskierko a73ea4604e fix(@desktop/communities): Fix double toast message
Fix #10486
2023-05-04 10:28:43 +02:00
Lukáš Tinkl b07ba7fb2d fix: personal chat item wrong width
- do not hardcode width of child elements (impossible to propagate
setting the width from the toplevel/parent component)
- made both the community and non-community chat item look the same and
according to the Figma designs (including margins, scrollbar positions,
spacing etc)
- cleaned up some hardcoded values and dead code

Fixes #10469
2023-05-03 16:39:33 +02:00
MishkaRogachev 7b31929f85 feat(Chat): Accept/Reject CR buttons for 1-to-1 chat 2023-05-02 13:56:36 -04:00
MishkaRogachev 0fc84852f3 feat(chat): Update chat ui for the blocked contact
Close #9935
2023-05-02 13:56:36 -04:00
Boris Melnik df88984b45 feat(image-album): Display album of images in replies
Fixes: #9957
2023-05-02 11:24:48 +03:00
Lukáš Tinkl e1c9f2f93f perf(AppMain): wrap CommunitiesPortalLayout in a Loader
- CommunitiesPortalLayout was the last piece still unconditionally loaded
on startup -> fixed
- extract the `communitiesStore` into AppMain to be able to reuse it from
other components
- move the import/create community dialogs to `Popups` (reusability)
- cleanup and remove some dead code, fix warnings

Iterates #6204
2023-04-28 21:35:29 +02:00
Alexandra Betouni 5615a534ea (settings): removed community permissions,tokens,airdrop and discord options
Also:
test(suite_communities): Fixed community related tests

- A new intermediate popup is now displayed when user clicks on `Create New Community` button from `Community Portal`.
- Reformulated `tst_communityPermissions` since now it is a default option without the need of activating it from experimental feature's section.

Closes #10115
2023-04-28 16:52:41 +03:00
Lukáš Tinkl 28374eb836 fix(ChatColumnView): unbreak 1-1 chats
the StatusChatInput (among other things) was disabled due to wrong
`activeChatType` being passed down to `ChatContentView` which does all
sorts of checks whether we are allowed to chat with that contact

The `root.activeChatType` no longer reflects the chat that we are going
to activate (probably due to the extensive use of `Loader`s)

(plus remove some dead code)

Fixes: #10463
2023-04-27 20:44:41 +02:00
Noelia 8ca70ea018 feat(Community Permissions): Update ENS icon in permission pills
Closes #10341
2023-04-27 16:10:20 +02:00
Igor Sirotin 6fe82ef133
fix: Fix and rework "start chat" text field input (#10450) 2023-04-27 17:03:49 +03:00
Lukáš Tinkl 9aebf588a1 fix: reduce Image cache
for everything that's not a user interface element, esp. for static/big
images or chat/message elements which get served from locally anyway from
status-go

Iterates #10339
2023-04-27 13:56:39 +02:00
Jonathan Rainville db6af0554a fix(chat-model): use setData to set the chat model
Fixes #10384

The problem was that doing the sort inside the insertRows messed up the model.
I removed it and it fixed the issues. However, it created an other issue with ordering.

The problem this time is that when populating the model at the start, we do not get the chats in order, so calculating the right position to insert a chat is difficult.

Instead, I use a setData function to just put all the chats in the items list, sort it and call it done, using the resetModel function.

I also did some clean ups.
2023-04-24 11:06:17 -04:00
Jonathan Rainville 435b08501b refactor(ChatContentView): only get contact details when 1-1 chat 2023-04-24 09:31:00 -04:00
Patryk Osmaczko c867e8f98c fix(chat): wrap `contextMenu` and `chatInput` into Loader
Please note that this solution serves as a temporary workaround and
comes with variety of limitations, particulary concerning the chat
input state. For instance, the reply area is not retained when switching
between chats.
Ideally the root cause, which is the high memory consumption of both
`StatusChatInput` and `MessageContextMenuView`, should be fixed. Once
this issue is addressed, the current workaround can be reverted.

fixes: #10378
2023-04-21 11:38:36 +02:00
Lukáš Tinkl 038ab08765 fix: do not display ENS name when not ENS verified
- expose "isEnsVerified" as model role
- fix returning "ensName" when the user is not ensVerified
- react to nickname updates correctly
- fix sorting in the user/member list view
2023-04-21 00:24:32 +02:00
Stefan 691de11211 fix(Wallet) network selection and unify network implementations
Major changes:

- Don't allow empty network selection. End up using the nim model
  directly instead because of individual row changes issues
  encountered with nim models
- Made the clone model a generic implementation to be used in other
places where we need to clone a model: ReceiveModal,
AddEditSavedAddressPopup
- Use cloned model as alternative to NetworksExtraStoreProxy in
  ReceiveModal
- Added tristate support to our generic checkbox control
- UX improvements as per design
- Fix save address tests naming and zero address issue
- Various fixes

Notes:
- Failed to make NetworkSelectPopup follow ground-truth: show partially
  checked as user intention until the network is selected in the
  source model. Got stuck on nim models not being stable models and
  report wrong entry change when reset. Tried sorting and only updating
  changes without reset but it didn't work.
- Moved grouped property SingleSelectionInfo to its own file from
  an inline component after finding out that it fails to load on Linux
  with error "Cannot assign to property of unknown type: "*".".
  It works on MacOS as expected

Closes: #10119
2023-04-20 19:34:24 +02:00
Noelia 73b2ec2903 feat(Mint/Airdrop Collectible): Implement Airdrop footer option
It enables navigation from mint token page to airdrop page selecting a specific collectible to be airdropped.

It is now used `symbol` property as the identifier for a collectible but will be needed to update it to `key` once this key property is build in backend by hash(chainId + contractAddress).

Closes #10047
2023-04-20 11:57:29 +02:00
Alexandra Betouni f507e33cba feat(StatusChatList): adding drag n drop functionality
Closes #3364
2023-04-19 12:26:15 -04:00
Patryk Osmaczko 7f3a66b68d fix(chat): correct `isAdded` behavior
`isAdded` for specific chat was always reflecting the active chat
property, effectively causing the chat inputs of these chats to be
disabled and, as a consequence, making the input vanish.

fixes: https://github.com/status-im/status-desktop/pull/10343#issuecomment-1512825761
2023-04-19 11:13:01 +02:00
Patryk Osmaczko 36063f33f1 fix(chat): use proper section details data
It prevents `StatusChatInput::enabled` property to be changed when
switching sections, as a consequence the text is persisted.

fixes: #10286
2023-04-19 11:13:01 +02:00
Patryk Osmaczko ec7bd963e9 fix(chat): use loader for `ChatMessagesView` instead `ChatContentView`
fixes: #10285
2023-04-19 11:13:01 +02:00
Lukáš Tinkl e506bbfd6b fix(StatusStickerPackClickPopup): fix crash
the button to (un)install would be either greyed out or result in a crash:
- we were passing the popup a wrong store (w/o networkConnectionStore)
- the condition to `greyedOut` was inverted
2023-04-18 13:45:38 +02:00
Patryk Osmaczko e2697ae5aa feat(chat): implement jump to mention
closes: #9069
2023-04-17 18:53:42 +02:00
Michal Iskierko 7055a77a96 fix(@desktop/communities): Displaying toast messages when minting
Fix #9849
2023-04-17 15:11:35 +02:00
Noelia d5e5ba2796 fix(Mint/Airdrop tokens): Darkmode images
Updated images without background.

Closes #10299
2023-04-17 11:56:25 +02:00
Patryk Osmaczko 89efb1cd71 fix(chat): better integrate new messages marker with loading state
- new messages marker is reevaluated only if chat has unviewed messages
- loading state is reevaluated only when chat is made active, this fixes
  case described here:
https://github.com/status-im/status-desktop/pull/10151#discussion_r1158702638

fixes: #10275
2023-04-14 19:38:45 +02:00
Michał Cieślak c38e0701d5 fix(Settings): Spacing updated according to the design 2023-04-13 10:50:40 +02:00
Dario Gabriel Lipicar ed6ea5d90c feat(@desktop/wallet): add support for more NFTs media types
Fixes #9836
2023-04-11 12:40:38 -03:00
Noelia 99a9f2ace0 feat(MintToken): Self destruct flow integration
- Enabled self destruct option.
- Added self destruct flow.
- Created needed methods in CommunityTokensStore.

Closes #10051
2023-04-11 16:19:30 +02:00
Alex Jbanca fb86d8745c fix(MintTokensPanel): Update input fields validation
Closing: https://github.com/status-im/status-desktop/issues/9850
Password: 7 characters max, ascii printable characters
Name and description: ascii characters
2023-04-11 11:18:41 +03:00
Patryk Osmaczko 65415ef34b fix(chat): load as much messages as view requires
fixes: #10221
2023-04-07 16:26:26 +02:00
Patryk Osmaczko 3e3c9e7bdf fix(chat): use `scrollTo` mechanism for `firstUnseenMessage`
- it ensures enough messages are loaded when `firstUnseenMessage` is not
  within the range of initially loaded messages

fixes: #10197
2023-04-07 16:26:26 +02:00
Boris Melnik cbdc3e61b5 fix(images): Display image placeholder when image from album not loaded
Fixes: #9990
2023-04-07 15:42:12 +03:00
Alex Jbanca 23f493f251 fix(MembershipRequests): Remove MembershipRequestsPopup and set-up the navigation to CommunityMembersSettingsPanel
Part of https://github.com/status-im/status-desktop/issues/9912
2023-04-07 11:21:34 +03:00
Alex Jbanca 5ec4360d8c fix(ChatMessagesView): Fixing scroll to message
Closing: https://github.com/status-im/status-desktop/issues/10131
2023-04-07 06:23:15 +03:00
Alex Jbanca 79ea3e7d66 fix(CommunityMembersSettings): Add member context menu + fix user click action
Part of https://github.com/status-im/status-desktop/issues/9912
2023-04-07 06:21:13 +03:00
Patryk Osmaczko 9419c9acaf fix(chat): mark messages as read only if all messages have been viewed
fixes: #10150
2023-04-05 10:40:08 -04:00
Alexandra Betouni 840b9986dc fix(MembersListSelectro): tag item should be removed only when x is clicked
Closes #8259
2023-04-05 15:30:04 +03:00
Michal Iskierko 4ceeb905dc fix(@desktop/communities): Compute deployment fees in async way.
Improve showing errors when estimating fees.

Fix #10035
2023-04-05 12:42:02 +02:00
Michał Cieślak 8dafdfceb8 feat(CommunityPermissions): Switch to enable/disable 'Who holds' section
Closes: #8498
2023-04-05 11:46:20 +02:00
Lukáš Tinkl cde9f810e6 fix(CreateCategoryPopup): move the delete button into footer
Adjust according to Figma design
- the asset size should be 40x40
- fix the listview's horizontal alignment
- fix the confirmation dialog(s!) title

Fixes #9887
2023-04-04 11:30:18 +02:00
Alex Jbanca 5dc60f5782 fix(JoinCommunityView): Change Reveal Address button icon based on auth type 2023-04-01 08:33:06 +03:00
Noelia 3db1ce70d1 fix(MintToken): Fixed `deployState` property binding
Created `instantiator` object as a mediator to establish appropriate binding between property model and `CommunityCollectibleView`

Closes #10013
2023-03-29 15:37:02 +02:00
mprakhov b580f0a810 feat:(@desktop/channels): loading state when switching channels/chats 2023-03-28 13:12:58 -04:00
MishkaRogachev 8eba843a5e fix(Chat): Fix pin popup and actions for communities and group chats 2023-03-28 11:05:07 -04:00
MishkaRogachev 4d4ec22ba6 feat(Chat): Disable unpin action for PinnedMessagesPopup 2023-03-28 11:05:07 -04:00
MishkaRogachev 1f54d96f5f feat(Chat): Disable chat actions for non-contacts 2023-03-28 11:05:07 -04:00
MishkaRogachev ad4838e4f8 feat(Chat): Disable sending messages for non contacts
Close #9899
2023-03-28 11:05:07 -04:00
Alex Jbanca 75571c9f22 fix(StatusItemsSelector): Allow icons to be provided by the model
Fixing https://github.com/status-im/status-desktop/issues/9766
The main change is that the model will now provide the image type, on top of the image source. The image type can be either icon or image. Icons will be coloured with the same colour as the text.
2023-03-28 12:46:20 +03:00
Alex Jbanca 17834ecbc1 fix(MintTokens): Use localised amount for total supply
Fixing: https://github.com/status-im/status-desktop/issues/9763
Changes:
1. Use int to pass around the supply amount from one component to another
2. Transform the supply amount to localised string when it is displayed to the user.
2023-03-28 12:17:02 +03:00
Michal Iskierko c8aefe4e66 feat(@desktop/communities): Airdrop community tokens
Issue #9783
2023-03-27 19:43:10 +02:00
Jonathan Rainville caebc9b93f fix(community-members): fix pending request buttons + updates
Fixes #9973

The buttons didn't work because we weren't using the right model + the section model didn't expose the PendingMemberRequestsModel.
I also fixed the service to update the community correctly and send the event. It should feel snappy-er to approve someone now.
2023-03-27 11:17:34 -04:00
Michal Iskierko d759bda81d fix(@desktop/communities): Computing fees in ETH and USD for Sign Transaction dialog
Issue #10007
2023-03-27 16:25:49 +02:00
Alex Jbanca 2142a6bf9c fix(ActivitiCenterTolltip): Position tooltip arrow in the middle of the button 2023-03-27 14:19:43 +03:00
Jonathan Rainville 9d0e14b680 refactor(chats): separate calls to getChats for each section
Fixes #9858
2023-03-24 13:05:19 -04:00
Noelia b3af519476 feat(HoldingsDropdown): Enable navigation to mint tokens settings section
It enables navigation from holdings dropdown to mint tokens settings view.
2023-03-24 14:22:56 +01:00
Noelia 575ee6a226 feat(HoldingsDropdown): Added no data information message
- Added default no data information message for assets and collectibles.
- Added specific no data information message for airdrop functionality.
- Hidden searcher when there is no data available.

Part of #9938
2023-03-24 14:22:56 +01:00
Noelia a6e29ebc03 feat(Airdrop): Show only collectibles in holdings dropdown
Hide Assets tab in HoldingsDropdown until we can airdrop also assets.

Closes #9938
2023-03-24 14:22:56 +01:00
Boris Melnik 30b4d9eb5c fix(chat): Sent images with text correctly
Fixes: #9564 #6374
2023-03-24 14:33:17 +03:00
Noelia 6c3d5c3ab5 fix(MintTokens): Remote Self Desctruct property fix
Remote self destruct property was not rendered properly when minted item was selected.
2023-03-24 12:08:00 +01:00
Noelia 051fc625a2 feat(MintCollectibles): Add sign transaction dialog in minting creation flow
It integrates sign mint transaction dialog in mint collectibles flow.
Mocked fee data, it still needs backend integration.

Closes #9802
2023-03-24 12:08:00 +01:00
Michal Iskierko ec6d35a6bd fix(@desktop/communities): Fix transferable and self destruct token parameters
Fix #10000
2023-03-23 18:30:18 +01:00
mprakhov 21d2c00b40 feat(@desktop/chats): Keep only last 5 chats/channels in the memory 2023-03-23 17:41:24 +01:00
Boris Melnik c8ef6bcd9c fix(MembersSelectorView): Change paste event to parsing text for lookup contacts
Fixes: #9881
2023-03-23 19:16:22 +03:00
Pascal Precht 5e965bcbb7 refactor: make accepting member requests to join async
This is necessary because with community token permissions, when owners
manually accept a request, we a) don't want to block the UI when the
users funds are check on chain and b) in case of insufficient funds,
we'll react with a modal that tells the owner that the user can't be
accepted.

All of that is done in this commit.
2023-03-23 14:11:04 +01:00
Noelia 66c32395fd feat(MintToken): Disabled token holders panel until backend ready
Disabled token holders panel until backend ready - Milestone 12
2023-03-23 08:24:45 +01:00
Noelia f691c85127 feat(MintToken) Add select wallet account option
- Added accounts selector in `Create new token` page.
- Added account name box in `Preview` page.
- Updated `storybook` with new account data.
- Updated `deployCollectible` method call account address property.

Closes #9842
2023-03-23 08:24:45 +01:00
Noelia 87f42e6074 fix(MintToken): Preview dark mode boxes color
Fixed dark mode boxes color in collectibles preview.
2023-03-23 08:24:45 +01:00
Jonathan Rainville fee9b31a88 chore(Community): remove unused popups 2023-03-22 15:13:19 -04:00
Michał Cieślak d219d32b72 feat(CommunityPermissions): Limit of 5 permissions for "Become member" permission type
Closes: #9536
2023-03-22 14:57:58 +01:00
Michał Cieślak 083bea0954 fix(CommunityNewPermissionView): proper color of icons in "Is allowed to" section
Closes: #9280
2023-03-22 14:57:58 +01:00
mprakhov 8d955265dc fix(@desktop/sections): do not unload chat and communities sections during the switching between the sections 2023-03-21 16:44:40 +01:00
Michał Cieślak bef14365aa chore(StatusItemSelector): Use StatusFlowSelector as a base component
Closes: #9851
2023-03-21 11:59:12 +01:00
Noelia b8b6f36bd9 feat(Airdrop): Added welcome page and basic view to create airdrop
- Added basic navigation.
- Added welcome page.
- Added temporal basic create airdrop page.

Closes #9796
2023-03-17 13:12:08 +01:00
Noelia 3feddd892b fix(MintToken): Fix network property
enabledNetwork property now point to the corresponding data
2023-03-17 13:12:08 +01:00
Lukáš Tinkl 1998a6556a feat(Profile): New Social Links workflow
TLDR;
- all links visible in settings/popup
- persistent order of items
- drag'n'drop to reorder
- editing/deleting in a new popup
- several links of the same type

Needs changes in nimqml (to expose QAIM::begin/endMoveRows), in
DOtherSide (to expose those to NIM), in status-go (to preserve the links
order and fully save them to DB)

Fixes #9777
2023-03-16 16:08:23 +01:00
mprakhov 494ab84fe1 fix(@desktop/chats): Always show message header in the private group chats after sestem message 2023-03-16 14:46:18 +01:00
Boris Melnik c7e99365a1 fix(contacts): Block unlimited counts of request contacts from create chat view
Fixes: #9485
2023-03-16 16:12:06 +03:00
Michal Iskierko 1c53d1e9b9 fix(@desktop/communities): Chain details (name, icon) are taken from model.
Introduce TokenItem struct.
TokenModel keeps TokenItems.
TokenItem keeps CommunityTokenDto and chain details.
Chain details are taken from networks service.

Fix #9867
2023-03-16 11:46:39 +01:00
Noelia e8b1dad80f feat(MintTokens): Added list of collectibles view
Added list of collectibles view.

Closes #8736
2023-03-14 16:06:27 +01:00
Noelia 79a1a60c70 refactor(MintingToken): Navigations refactor
- It has been added a `StackView` in main mint tokens panel to easily switch back / forward between views.

- It has been created a SQ component `StackViewStatesManager` that allows a managing together a stackview and states.

- Updated `HoldingsDropdown` to use new stack states component
2023-03-14 16:06:27 +01:00
Noelia c7f18978de chore(MintingToken): Refactor access to stores in minting components
- Refactored minting components store access, since some panels were accessing stores directly. Now `CommunitySettingsView` is the single place where stores are accessed.
- Renamed store `CommunitesStore` to `CommunityTokensStore` for handling minting / airdrop actions / request models.
- `NetworkFilter` refactored to prevent direct access to store inside the component.

Closes #9663
2023-03-14 16:06:27 +01:00
Alexandra Betouni db7256fd1a fix(StatusChatInput): fixed input loses focus when switching chats
Closes #9542
2023-03-10 20:07:59 +02:00
Pascal Precht 25b0641cc2 feat: introduce first JoinCommunityView for token-gated communities
This does a few things:

- It integrates with the latest `CommunityTokensMetadata` to access
  community specific ERC721 token
- It changes `ChatLayout` such that it conditionally loads either
  `ChatView` or `JoinCommunityView`. `JoinCommunityView` has been
  specifically designed for token-gated communities

Here's what works (in terms of token permissions):

1. If a community has token permissions and the the current users is not
   a member of that community, we show `JoinCommunityView` instead of
   `ChatView`
2. Any community token permissions of type "Become member" are listed in
   the `JoinCommunityView`
3. There are different types of token critera a permission can have:
   ERC20 token, ERC721 token, or ENS (which is also ERC721 but we have
   a type for that nonetheless)

   Only ERC20 token balances are checked for the known wallet accounts.
   This happens every time the known token list has been updated (every
   10 min atm).

   We still need to add balance checks for any ERC721 tokens and ENS.
4. If token permissions are created, updated or deleted by the community
   owner, the `JoinCommunityView` will update in real-time.

You'll also notice that the `Reveal my address and request access`
button will be enabled if any of the token permissions are fulfilled
(only ERC20 at the time being). Clicking that button will not yet send
a request.

This will be done in the next step as part of https://github.com/status-im/status-desktop/issues/9761
2023-03-09 16:35:06 +01:00
Michal Iskierko 8f3a965a49 fix(@desktop/communities): Rename minting module
Issue #9817
2023-03-09 16:34:55 +01:00
Michał Cieślak ab523ee19f fix(CommunityPermissions): Temporary solution for assets icons
Closes: #9613
2023-03-09 14:16:36 +01:00
Lukáš Tinkl 3fd196323e chore: silence warnings 2023-03-08 18:45:27 +01:00
Michał Cieślak 0e92b69bc5 chore(CommunityPermissions): fixed warnings introduced during integration with backend 2023-03-08 12:02:55 +01:00
Michał Cieślak d813cc12b8 chore(CommunityPermissions): refactor access to stores in CP components
So far CP components (views, panels) were accessing stores directly.
Now `CommunitySettingsView` is a single place where stores are accessed.
Other components no longer depend on stores.

Moreover:
- dedicated store `PermissionsStore` created for handling permissions
  in a single, separated place
- storybook pages fixed

Closes: #9784
2023-03-08 12:02:55 +01:00
Noelia 02cf07044d feat(MintToken): Created Preview collectible page
- Added navigation between pages.
- Added main layout and properties (some backend integration still pending).
- Added holders model with mocked data.
- Added mint tokens footer component.

Closes #8734 and #8737
2023-03-07 13:24:45 +01:00
Michal Iskierko 5722f67964 fix(@desktop/communities): Handling community token image
Handle image correctly and show in testing UI.
Improve fees for deployment.
Handle CommunityTokenMetadata in community structure.
2023-03-07 10:04:12 +01:00
Michał Cieślak a2a1da801c chore(CommunityPermissions): Use key role name for referencing channels 2023-03-06 17:36:36 +01:00
Michał Cieślak 480c249ee0 chore(CommunityPermissions): Refactor channels handling
Community permissions model refers to channels by id instead of
taking/serving all details. UI fetches necessary metadata form
appropriate channels model.

Closes: #9588
2023-03-06 17:36:36 +01:00
Pascal Precht e4b8814bfa feat(Communities): allow for creating community permissions
This commit is the first of implementing community permissions.
**It is not implementing the complete feature**, rather does it
introduce the first pieces, such that we can get code reviewed and
merged before it grows too big.

To review these features, please make sure to

1. Enable wallet (Settings -> Advanced -> Wallet toggle)
2. Enable community permissions (Settings -> Advanced -> Community
   Permissions toggle)

You'll have to restart the app after doing so.

The commit introduces the following:

**UI, API calls and view models to CRUD community permissions**

After creating a community, the user can go to the community
settings and create new token permissions. The user can also update
and delete existing permissions.

**Asset and collectible view models**

To create community token permissions, users have to select
the token criteria. This commit introduces the `assetsModel` for ERC20
tokens and `collectiblesModel` for `ERC721` tokens.

The latter only supports custom minted community tokens at this point.

**This commit requires:** https://github.com/status-im/status-go/pull/3207
2023-03-03 10:22:32 +01:00
Jonathan Rainville 5352ba8c6f refactor(chat-model): simplify chat model and put category as an Item
Fixes #9494
2023-02-28 11:58:40 -05:00
Noelia db3be56d42 feat(MintTokens): Create new collectible screen
Created new form screen for minting collectibles.

Closes #8733
2023-02-28 14:17:47 +01:00
Michal Iskierko 147288b47b feat(@desktop/community): Saving community tokens in database
Model with community tokens was moved to section_item - every section has its own model.
Every deployed smart contract is saved to database with "In Progress" state.
The app listenes to deployed transaction and updates contract state in database to "Failed" or "Deployed".
Corresponding model is updated.

Issue #9233
2023-02-27 11:01:35 +01:00
Alexandra Betouni 7c87bc8987 fix(scrollview instances): fixed dropdown&popup height
Fixes InDropdown & OutgoingContactVerificationRequestPopup
2023-02-23 20:52:29 +02:00
Michał Cieślak e352dcfc11 chore(CommunityPermission): Use typed properties for CommunitiesStore
Additionally, pass assets/collectibles models to HoldingsDropdown
directly instead of store to reduce dependency.
2023-02-23 11:51:30 +01:00
Michał Cieślak 34676d0ec7 fix(CommunityPermissions): clean warnings by preventing assigning when some roles doesn't exist
Closes: #9608
2023-02-22 14:43:40 +01:00
Michał Cieślak 1e7e2084a7 fix(CommunityNewPermissionView): Use only key/amount to compare holdings when tracking duplicates 2023-02-22 14:43:40 +01:00
Lukáš Tinkl 79645b53ce fix: truncation of channel description and pinned message text
The chat title/subtitle no longer bleed into the action buttons

- handle long texts in chat description, elide them and show the whole
text in a tooltip
- minor UI fixes in ChatHeaderContentView and StatusToolBar
- adjust Sandbox' Controls page

Fixes #9583
2023-02-21 16:53:06 +02:00
Michał Cieślak 03e1636cff feat(StatusQ): Add cpp model utils to allow handling ListModel and generic QAbstractItemModel uniformly
Closes: #9562
2023-02-20 22:25:56 +01:00
Michał Cieślak c23f4e173e fix(CommunityPermissions): Typos corrected 2023-02-20 18:40:59 +01:00
Michał Cieślak f6ac937dfd fix(CommunityPermissions): Warning regarding color assignment fixed 2023-02-20 18:40:59 +01:00
Michał Cieślak d025f17e2a feat(CommunityPermissions): Check if form filled completely when
updating

Closes: #9388
2023-02-20 18:40:59 +01:00
Michał Cieślak a97c8a720e feat(CommunityPermissions): Implement duplication checking
Moreover:
- adapt flow to the design
- introduce ModelChangeTracker utility component

Closes: #9048
2023-02-20 18:40:59 +01:00
Michał Cieślak c78eaef2b6 chore(CommunityPermissions): Permissions model and backend API simplified, separation of concerns improved 2023-02-20 18:40:59 +01:00
Michał Cieślak 9757002c7d chore(CommunityPermissions): Permissions model & backend API simplified, dirty state handling simplified
Additionally, permission types metadata excluded to PermissionTypes
singleton component, PermissionsDropdown simplified by using inline
components.
2023-02-20 18:40:59 +01:00
Michał Cieślak 7388bbfef3 chore(CommunityPermissionsView): component api unified and simplified 2023-02-20 18:40:59 +01:00
Michał Cieślak 0af9c27910 chore(CommunityNewPermissionView): simplified by introducing ModelsComparator component for tracking dirty state
Closes: #8830
2023-02-20 18:40:59 +01:00
Michał Cieślak 9f884605cb chore(CommunityNewPermissionView): Operations on models excluded to ModelUtils singleton 2023-02-20 18:40:59 +01:00
Michał Cieślak fb19385438 chore(CommunityNewPermissionView): refactor to improve separation of concerns, create/save actions moved up 2023-02-20 18:40:59 +01:00
Michał Cieślak 3a3d1657f0 chore(CommunityNewPermissionView): exclude subcomponent HidePermissionPanel 2023-02-20 18:40:59 +01:00
Michał Cieślak 9a0c682ca4 chore(CommunityNewPermissionView): Simplify dirty values handling, extend Storybook page 2023-02-20 18:40:59 +01:00
Michał Cieślak 411c2a0aab chore(CommunityNewPermissionView): refactor save/reset changes handlers 2023-02-20 18:40:59 +01:00
Noelia c1e3050d06 feat(MintingTokens): Created welcome view
- Created minting tokens welcome view.
- Added basic navigations.

Closes #8732
2023-02-20 12:06:22 +01:00
Noelia 17fc999ca0 feat(CommunitySettings): Created base welcome settings view
- Component parametrised and renamed to `CommunityWelcomeSettingsView`. It will be the base class for some of the community settings functionalities.
- Updated `CommunityPermissionsSettingsPanel` to use the new welcome screen class.
2023-02-20 12:06:22 +01:00
MishkaRogachev b70e1f0fb4 feat(ActivityCenter): Add indication for visited/unvisited AC state
Close #347
2023-02-17 16:13:43 +04:00
Lukáš Tinkl 31be818e0e fix: Pinning messages - tweaks to UI and interactions
... to help align with original design intent

- dropped date breaks before msg groups
- show full date/timestamp in the msg header
- floating "Unpin" button on mouse hover
- no padding/spacing between messages
- some smaller code cleanups and dead code removals

Fixes #9396
2023-02-17 11:22:21 +01:00
Noelia fe5abb60da feat(TokensPermissionsPoupup): Created new popup
- Created new dialog.
- Created storybook page for that.
- Model properties renames.

Closes #9433
2023-02-17 11:13:51 +02:00
Alex Jbanca f9f860a215 fix(LinksMessageView): Refactor LinksMessageView to remove business logic from qml
LinksMessageView component will receive the urls from nim as string and it will only forward the string to getLinkPreviewData slot implemented in nim together with some settings (supported img extensions and unfurling preferences)
On nim side the urls will be parsed and validated using the settings received from qml.
Images are now validated before sending them to the UI using the HEAD request.
2023-02-14 08:55:24 +02:00
Michal Iskierko b6f5c558a9 feat(@desktop:communities): Minting functionality with dummy data
Add Community Tokens testing UI with minting button, enabled by a Advanced Settings toggle.
Add minting module,view and needed models.
Add community_tokens service to call collectibles smart contract functions.

Issue #8921
2023-02-13 13:42:29 +01:00
Noelia 2c809a56e6 feat(JoinCommunity): Integrated join community popup into the new view `JoinCommunityView`
- Integrated join community popup into the new view `JoinCommunityView`.
- Added support in storybook related page.

Closes #9268
2023-02-10 18:03:05 +02:00
Noelia 8e45d6c50e feat(JoinCommunity): Created `JoinCommunityView` page
Created new view to be used when a community needs permissions to join:
- Left panel blur layout created.
- Header panel blur layout created.
- Central panel blur layout created.
- Join permission overlay panel integrated.

Closes #9267
2023-02-10 10:45:38 +02:00
Noelia 842c90a31e feat(Community): Create `CommunityColumnHeaderPanel` component
- `CommunityColumnHeaderPanel` created.
- Added corresponding `storybook` page.
- Modified `CommunityColumnView` to use new component `CommunityColumnHeaderPanel` instead.
2023-02-10 10:45:38 +02:00
Lukáš Tinkl f5d6c538c2 chore: consolidate & refactor popup handling
- all remaining global popup components moved into a separate Popups
entity
- removed some static objects from the Global singleton (appMain,
pinnedMessagesPopup, communityProfilePopup, sounds); rationale:
singletons should not contain any state
- fixed support for popups in storybook
- fixed some warnings (most of them broke the popups in one way or the other)
2023-02-09 15:01:57 +01:00
mprakhov 36dc3e4c53 fix(@desktop/chats): Scroll chat to the bottom or last unread msg when chat is first time opening 2023-02-09 13:54:08 +02:00
Jonathan Rainville f8ecd9dbce refactor(chat): make getChats async to speed up start time
Fixes #9340
2023-02-08 16:18:44 -05:00
Michał Cieślak dc3bcd7da1 feat(Community Permissions): Integrate In section with permission creation/editing
Closes: #8855
2023-02-02 16:36:46 +01:00
Alex Jbanca 81a4d70932 chore(Qt5.15): Fix qml warnings after qt 5.15 migration
Fixing QML Connections warnings due to deprecated onFoo handlers. Now we're using function onFoo(params).
Fixing QML compilation error due to js filename format.
Fixing cyclic dependencies between qml components.
2023-01-31 20:39:19 +02:00
Jonathan Rainville baea10cacf refactor(chat-model): flatten chat model to only have chat items
Fixes #5286
2023-01-30 15:36:48 -05:00
Michał Cieślak 63a0f51305 chore(CommunityPermissions): Adjust behavior of 'Hide permission' switch depending on selected permission
Closes: #9050
2023-01-26 13:03:26 +01:00
Michał Cieślak 5c3b9881c5 chore(CommunityPermissions): Setting icon/default values for 'In' section depending on chosen permission 2023-01-26 13:03:26 +01:00
Michał Cieślak e2dadeb15e chore(CommunityPermissions): Disable granting admin permission for non-owners 2023-01-26 13:03:26 +01:00
Michał Cieślak 9ac0c159fe feat(CommunityPermissions): prevent adding tokens and ens names that are already chosen
Closes: #8817
2023-01-26 01:20:28 +01:00
Noelia a3313b563f feat(Community Permission): Add conflicts warning panel
It adds conflicts warning in `New permission` page. Mocked data.

Closes #8738
2023-01-25 17:05:27 +01:00
Jonathan Rainville fdc0dce782 chore: remove public chat functionnalities
Fixes #8504

Removes the ability to create public chats, see public chats and even leaves previously active public chats
2023-01-25 10:05:55 -05:00
Noelia 3136ffb54d feat(Community Permissions): Update `Who holds` tokens dropdown design and flow according to the new design
- Updated initial dropdown view for assets and collectibles to directly show the list of corresponding elements.
- Updated assets and collectibles panel when an item is selected, according to new design.
- Updated collectibles logic when amount is 1.
- Added collectibles group item as part of the selectable's options.
- Updated `storybook` according to new changes.
- Created reusable `TokenItem` component.
- Updated `CommunityPermissionsHelpers`.

Closes #9043
2023-01-24 14:16:38 +01:00
Noelia e08fdcb78c feat(Community Permissions): Hide `Who holds - Add` button when there are 5 items already added
Added logic to hidden  'Add' button when the number of items 5 is reached.

Closes #9195
2023-01-24 08:45:34 +01:00
Michał Cieślak d980c177a4 chore(CommunityPermissions): ENS tab simplified according to updated design
Closes: #8818
2023-01-20 14:00:02 +01:00
Michał Cieślak a6dc4e9011 fix(CommunityPermissions): ens icon fixed, locale fixed in AmountInput 2023-01-20 14:00:02 +01:00
Igor Sirotin 8736dd8a94 fix: Community importing notification fixes and improvements 2023-01-20 13:15:50 +03:00
Alex Jbanca 54e91e0ba7 perf(chatScroll): Reduce loadMoreMessagesIfScrollBelowThreshold to 100. 2023-01-19 19:24:18 +02:00
Alex Jbanca e44427ceed perf(chatScroll): Prepare more data for scroll 2023-01-19 19:24:18 +02:00
Alex Jbanca bf1d59c0ad perf(chatScroll): Avoid calling the backend on delegate creation/binding
Provide the needed data from the nim model directly to the delegate. This way whenever a delegate needs to display the data it doesn't need to reach the backend.

perf(chatScroll): Fix comments on Avoid calling the backend on delegate creation/binding

perf(chatScroll): Avoid calling the backend on delegate creation/binding  - add TODO comment on senderColorHash default

perf(chatScroll): merge quotedMessageAuthor details

perf(chatScroll): Fix nim tests

perf(chatScroll): Fix merge error - messages_model.nim
2023-01-19 19:24:18 +02:00
Michał Cieślak 162fe76273 chore(CommunityPermissions): don't PermissionQualificationPanel for MVP 2023-01-19 13:38:47 +01:00
Michał Cieślak 769a41ea9c feat(CommunityPermissions): UI support to show the % of members fulfilling permission
Closes: #9044
2023-01-19 13:38:47 +01:00
Igor Sirotin 7f67c885c8 fix(ContactsColumnView): Open add/remove group member on context menu 2023-01-19 12:35:03 +03:00
Patryk Osmaczko ae55e78faf feat(chat): ignore not loaded messages
closes: #8838
2023-01-17 18:58:53 +01:00
Jonathan Rainville f8c4682885 chore(contact-request): remove old contact request button and popup
Fixes #9072

I made clicking on the OS notification open the AC instead of the old popup
2023-01-13 16:16:14 -05:00
Noelia ea0db55361 fix(Community Permissions): Update `tokens` names to `assets`
- Updated enumerators that were defining `tokens` instead of `assets`.
- Updated property names and labels.
- Updated signals and components names.
- Updated storybook.

Fixes #8816
2023-01-13 14:51:31 +01:00
Noelia 5676fb96ef fix(Community Permissions): Update `Who holds` add new item with always AND action
- Logic related to operators removed.
- Dropdown `and/or` removed.
- Updated `PermissionItem` to display only the tag and not the operator.
- Updated `storybook` according to new changes.

Fixes #8500
2023-01-13 10:51:10 +01:00
Jonathan Rainville af0c9767d1 feat(context-menu): add Copy message action in message context menu
Adds the action to copy the right-clicked message's text.

It copies the unparsed text (no html).
For that, I had to add it in the MessageItem and expose it in the model.

I also fixed the copy MessageId action that didn't show + didn't work even if it would have shown.

Plus some small cleanups.
2023-01-12 16:15:17 -05:00
Jonathan Rainville c3945f33c0 feat(replies): add deleted to QuotedMessage to change msg displayed
Adds `deleted` to the QuotedMessage object so that on the frontend, we can show "Delete message" only when we know the message was deleted.
Otherwise, when we don't know the quoted message, we show "Unknown message [...]"
2023-01-12 15:18:03 -05:00
Jonathan Rainville 91c2e6d257 feat: use QuotedMessage object for replies to better show the replies
Fixes #7754
ok
2023-01-12 15:18:03 -05:00
Alexandra Betouni 055fec9109 fix(Community): banners where overlapping
Closes #8947
2023-01-11 16:46:51 +02:00
mprakhov 3de073edb8 fix(@desktop/community): empty tag string creation 2023-01-11 15:41:57 +02:00
mprakhov 3994f8b2fb fix(@desktop/chat): show message which was sent during group chat creation 2023-01-10 23:53:46 +02:00
Jonathan Rainville 5e8f3e6565 fix(CreateChatView): enable mentioning people selected in create chat
Fixes #8749

I couldn't fully test it because it needs #8991 to be fixed to see if the message is sent correctly
2023-01-10 13:58:37 -05:00
Lukáš Tinkl 9e396f7344 chore: refactor/improve/optimize StatusMessage & friends
- drop dead code
- reduce number of direct bindings
- use Loaders whenever possible

Fixes #8744
2023-01-10 10:55:53 +01:00
mprakhov 0cc64774af fix(desktop/chat) show the badge during receiving the mention in inactive section 2023-01-09 20:00:51 +02:00
Boris Melnik 9b8a86a3cb feat(communities): Add ban state for spectated community
Fixes: #8761
2023-01-09 10:30:54 -05:00
mprakhov 0675d6a7d9 fix(@desktop/chat): message box buttons do not work in group chat creation screen 2023-01-09 12:51:35 +02:00
Lukáš Tinkl b086d432d1 fix: Chat Input isn't focused after editing a message
Fixes #8966
2023-01-06 14:35:07 +01:00
Lukáš Tinkl 6fc1d0951b fix: Cannot open the link in the channel's description
Hook up the signal to open a hyper link

Fixes #8939
2023-01-04 18:54:14 +01:00
Jonathan Rainville 235c0d3042 test(community): add a test where the admin can delete a user's message
Fixes #6891
2023-01-04 11:12:47 -05:00
Jonathan Rainville 29450d34a7 feat(admin): enable admins to delete messages from other users
Fixes #8869
2023-01-04 11:12:47 -05:00
Alexandra Betouni ba811acc27 fix(improvements): remove console warnings pt1
Closes #7959
2023-01-04 17:28:59 +02:00
mprakhov 8b3319a1f3 fix(@desktop/communities): empty chat view during adding/removing active channel to the category 2022-12-22 20:02:09 +02:00
Pascal Precht f3eb29bfea feat(chat): allow for editing last user message using arrow-up key 2022-12-22 17:31:32 +01:00
Michał Cieślak fe7884cd29 feat(CommunityPermissions): InDropdown integration
Closes: #6041
2022-12-21 21:48:51 +01:00
Noelia 265b0b5a8f fix(CommunityPermissions/NewPermissionsView): Holdings tags icon size/position didn't fit the design
- Updated `StatusItemSelector` API to allow other asset sizes and leftPadding.
- Applied different asset size in holdings tags in `NewPermissionView` to fit the design.
2022-12-21 18:42:16 +01:00
Pascal Precht 865ed32deb feat: introduce ability to @everyone
Closes #8479

This needs: status-im/status-go#3026
2022-12-21 10:19:48 +01:00
Noelia a9d25697dd feat(CommunitySettings): Implement UI for`edit`, `duplicate` and `remove` actions in community permissions page
feat(CommunitySettings): Implement UI for`edit`, `duplicate` and `remove` actions in community permissions page

- Enabled `duplicate` action (mocked).
- Enabled `delete` action (mocked) and added / updated navigations in case all permissions are removed.
- Added delete confirmation popup.
- Enabled `edit` action (mocked) where changes are detected and the `dirty changes toast` appears properly.

Closes #8581
2022-12-19 15:25:16 +01:00
Patryk Osmaczko 87674064d0 feat(chat/messages): implement new messages marker
closes: #8572
iterates: #7488
2022-12-16 19:12:12 +01:00
Michał Cieślak 7234e49fee chore(Storybook): Add HoldingsDropdown page 2022-12-16 00:52:09 +01:00
Boris Melnik f35468963c fix(warnings): Rid off warnings
Fixes: #8293
2022-12-15 19:31:18 +03:00
Noelia 8a749846df fix(CommunityPermissions): Change `Flickable` to `StatusScrollView`
Modified `Flickable` in `CommunityNewPermissionView`, CommunityWelcomePermissionsView` and CommunityPermissionView` to `StatusScrollView`

Fixes #8584
2022-12-14 16:38:59 +01:00
Boris Melnik 123b8e320a fix(warnings): Fix chat, community settings warnings
Fixes: #8293
2022-12-13 17:46:30 +03:00
Jonathan Rainville 194e3048bc fix(messages): fix Resend btn not working and add Sending visual state
Fixes #7643

This adds the backend to resend. It then hooks the button to it.
This also adds a visual state for when we are sending. This gives a good indication that a message was sent.
2022-12-12 11:56:21 -05:00
Noelia 5d318d0304 fix(CommunitySettings): Previous page navigations are broken in community settings sections
Added property `previousPageName` into `SettingsPageLayout`.
Added needed slots in `CommunitySettingsView` to get `previousPageName` property changes and display the correct string.
Renamed `updateState` method to `navigateBack` to have a better accurate name.

Fixes #8455
2022-12-12 12:54:15 +01:00
Noelia 1cbb3e2ad3 feat(CommunityPermissions): Created `CommunityPermissionsView` layout
- Created `CommunityPermissionsView` and integrated into the flow.
- Created `PermissionItem` component.
- Added `holdingsListModel`, `permissionsObjectModel` and `channelsListModel` flows with mocked data.
- Added `isPrivate` permission property.
- Added button header in `SettingsPageLayout`
- Added signals/methods for edit/duplicate/remove permissions
- Created new file `OperatorsUtils.qml` specific for `Operators`
2022-12-10 14:02:02 +01:00
Pascal Precht b510b33730 feat(communities): allow community import via public key
Status allows for importing communities via their private keys.

There's a requested feature that users should be able to import a community via
its public key as well.

This will behave differently as private keys won't give users ownership
of the communities. When importing via a (compressed) public key, Status
will try to fetch information about the community from the network. If it
finds such information, it'll load it into the app and create
a communitiy view from which users can then request access.

If it can't find a community or community information in the network,
the user will get a dedicated error message.

This commit also refactors the `ImportCommunityPopup` such that it uses
`StatusDialog` and updates the copy accordingly since importing via
public key is now possible as well.

Closes #8339
2022-12-07 14:18:08 +01:00
Patryk Osmaczko 9601ab2668 fix(chat/messages): make initial messages load without scroll
fixes: #8602
2022-12-07 00:23:25 +01:00
mprakhov d60a4b0c97 fix(@desktop/chat): open 121 chat by pasting chat key of existing mutual contact 2022-12-06 15:01:09 +02:00
mprakhov 32d1d927ef fix(@desktop/chat): Hide 'no results found' when entering the chat key in start chat 2022-12-06 12:39:02 +02:00
Igor Sirotin e3bfdc0f09 fix(StatusPopupMenu): Refactoring 2022-12-02 10:30:50 +03:00
Lukáš Tinkl 9559789030 chore: reduce the number of (verification) RPC calls
- when calling `Utils.getColorHashAsJson()` we don't actually need to
issue ID verification requests at all and there might be situations when
we know beforehand that we don't need the ENS verification either
- change these helper functions' syntax and do early returns in that case
- in MessageContextMenuView, the "contact details" were duplicated, so
remove one
- remove dead code, fix some warnings
2022-12-01 16:50:23 +01:00
Jonathan Rainville b65211ac94 feat(Settings): Enable Community Archive by default and remove toggle
Closes: #6098
Original commit by @borismelnik
2022-11-30 14:41:48 -05:00
Pascal Precht 3af77c9c96 fix(chat): rename 'Chat' -> 'Messages' headline
Closes #8483
2022-11-30 14:33:20 +01:00