Commit Graph

180 Commits

Author SHA1 Message Date
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
Pascal Precht cc1a89efef fix(JoinCommunityView): update amIMember state when kicked and joined
Also add handlers to JoinCommunityView for requesting and cancelling
requests. These will be extended in follow up commits to included
authentication modals
2023-03-21 12:16:53 +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
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
Pascal Precht 48c322cbe4 refactor(ChatLayout): expose emoji and sticker popup properties and signals
Prior to this change `ChatLayout` exposed `chatView` which let other
components access it, its properties and signals.

This is problematic as we need to be able to swap out the `ChatView`
with the `JoinCommunityView` for token gated communities, in which case
there won't be an instance of `chatView`.

This commit ensures that we rely purely on inputs and outputs of the
component, without exposing the component instance itself.
2023-03-07 18:16:42 +01: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
Lukáš Tinkl eafee302d8 fix: pasting a user's profile link in the ad-hoc chat search
... doesn't work in the community section

Extract the `Chat.RootStore` as a toplevel/shared property and pass it
down to ChatLayouts, instead of cross referencing it between different
components. This was also problematic since the ChatLayouts now live
inside a Loader, so it's more appropriate to refer to the
`Chat.RootStore` directly, instead of
`personalChatLayoutLoader.item.rootStore`, since the
`personalChatLayoutLoader.item` might not be visible (due to it being
inside a Loader and a StackLayout) or it might even be a different
component (`loadingStateComponent` or `errorStateComponent`).

This also caused similar problems for other components, such as
ActivityCenterPopup or StatusStickersPopup.

Fixes #9513
2023-02-10 11:23:26 +01: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
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
Michal Iskierko a46206e4fd fix(@desktop/chat): Hide create chat panel when some other menu items are selected
Fix #7675
2022-11-25 14:17:23 +01:00
Michał Cieślak b34b9fb347 fix(Popups): clipping area fixed in various popups
Closes: #7601
2022-09-29 10:39:07 -04:00
Alexandra Betouni 2bd685943f feat(chat): Removing dynamic scoping from chat section
Closes #4244
2022-07-15 17:00:36 +03:00
Sale Djenic 22d5f2d126 fix(@desktop/chat): intermittent with community invites
Fixes: #6170
2022-06-21 10:56:46 -04:00
Boris Melnik 260f10a83e feat(CommunityOverview): Add Community Overview banners
Closes: #5978
2022-06-14 14:31:39 -04:00
Patryk Osmaczko 2850ee75ee desktop(community-settings): add overview and members settings
this is first iteration for: #4938
2022-03-29 15:02:26 -04:00
Sale Djenic 94e1511644 fix(@desktop/chat): cannot create a group chat by hitting `Confirm`
Fixes #5094
2022-03-23 10:14:56 -04:00
Stefan Dunca 5a4dde1d5c feat(chat): members availability and settings change
Don't show members in public chat
Show members in communities by default
Enable Gif Widget by default and remove settings entry
Enable Online users by default and remove settings entry

fixes #4906
2022-03-17 15:48:42 -04:00
Patryk Osmaczko e130953634 feat(@desktop): use emoji hash and identicon ring
Closes: #4782
2022-03-16 18:34:57 +01:00
Alexandra Betouni 8cab96fd24 feat(desktop/chat): Updated create new chat/group flow
As per new designs

Closes #4781
2022-03-11 14:31:51 -05:00
Richard Ramos 3c7779305b feat: move stickers business logic to status-go 2022-03-09 12:16:42 -04:00
Jonathan Rainville be9d2f94e2 feat: enable emojis as channel icons
Fixes #4809
2022-03-08 15:15:25 -05:00
Stefan D 3549273307 Keep secondary sidebar at a fixed width. 2022-03-02 22:58:47 +01:00
Jonathan Rainville 18374a16d4 fix(user-list): use the same userlist for community and chats 2022-02-23 16:15:41 -05:00
Sale Djenic c855de98b6 fix(@dekstop/chat): higher cpu usage after opening gif selector
Fixes #4829
2022-02-23 15:43:21 -05:00
Boris Melnik ea5b5716e5 refactoring(groups): Refactor groups popups
Closes: #4719 #4615
2022-02-17 21:04:29 +03:00
Boris Melnik 1cd83b4d17 refactor(groups): Move groups to new architecture
Closes: #4223
2022-02-01 11:49:52 +01:00
Alexandra Betouni a0b40590ab fix:activity center view is empty
Updated all available message properties
from the new backend

Closes #4408
2022-02-01 11:49:47 +01:00
Jonathan Rainville 6f8f9b6f76 fix(community): fix qml errors when creating a community
Fixes #4440
2022-02-01 11:49:47 +01:00
Jonathan Rainville d073dd215a fix(chat): fix copy and download image
Fixes #4494
2022-02-01 11:49:47 +01:00
Jonathan Rainville 9fc9f698d9 refactor(community): hook invite user and fix community context menu 2022-02-01 11:48:43 +01:00
Sale Djenic e220599612 refactor(@desktop/general): necessary changes applied due to refactored `Contacts` sub-section of the `Settings` section 2022-02-01 11:47:46 +01:00
Sale Djenic da6fe00528 refactor(@desktop/settings-contacts): contacts section updated 2022-02-01 11:47:46 +01:00
Alexandra Betouni 0eb40287fa refactor: removed dynamic scoping from shared module
Properties and functions moved to Global:
- toastMessage
- openProfilePopup()
- getProfileImage()
- popupOpened

Closes #4248
2022-02-01 11:46:39 +01:00
Sale Djenic 807039ad61 refactor(@desktop/chat-community): `ChatContextMenuView` component updated
- admin flag exposed to qml for chat/channel
- `CreateChannelPopup` updated
- `createPopup` function added to the `Global` singleton
- `PinnedMessagesPopup` component moved to `AppMain` and shared
among components beneath
2022-02-01 11:46:24 +01:00
Sale Djenic b6b6d6b6c7 refactor(@desktop/chat-messages): `MessageContextMenuView` component updated 2022-02-01 11:45:50 +01:00
Sale Djenic e5a414a927 refactor(@desktop/chat-communities): qml part handles messages from refactored backend
- `chatType` added to `Constants` to group chat type related values
- `messageContentType` added to `Constants` to group message content type related
values
- `MessageStore` maintained per message list now
- added new `ChatContentView` component used to display chat/channel content
- components updated to display messages from the new backend
- `StatusChatToolBar` appropriately updated
- mute/unmute feature added to chat/channel list as well as to `StatusChatToolBar`
2022-02-01 11:41:22 +01:00
Jonathan Rainville a9c968b984 refactor(chat): refactor 1-1 chat to new architecture
Fixes #4225
2022-02-01 11:39:08 +01:00
Sale Djenic f138fecdd2 refactor(online-users): adding online users for chat/channel 2022-02-01 11:38:07 +01:00
Sale Djenic afe6d34735 refactor: issues after rebase onto `master` fixed 2022-02-01 11:38:04 +01:00
Sale Djenic 80fcb95245 refactor(chat-section): new chat/community model applied on the qml side
Changes done on the backend side related to the new chat/channel/categories model
are applied here. Necessary changes done on the `statusq` may be seen in PR-486.

Parts of the code which are not refactored yet are commented out.

Displayed chats/categories/channels since now are using refactored backend.
2022-02-01 11:37:32 +01:00
Sale Djenic 45d93649b6 refactor(chat-section): new chat/community model applied on the qml side
Changes done on the backend side related to the new chat/channel/categories model
are applied here. Necessary changes done on the `statusq` may be seen in PR-486.

Parts of the code which are not refactored yet are commented out.

Displayed chats/categories/channels since now are using refactored backend.
2022-02-01 11:37:15 +01:00
Jonathan Rainville 22595f5032 refactor(chat): move stickers to the new architecture
Fixes #4060
2022-02-01 11:36:59 +01:00
Jonathan Rainville 3f12796b45 Revert "refactor(chat): move stickers to the new architecture"
This reverts commit 47aa079e0d.
2022-02-01 11:36:59 +01:00
Jonathan Rainville 792397987c refactor(chat): move stickers to the new architecture
Fixes #4060
2022-02-01 11:36:44 +01:00
Jonathan Rainville e8eefd8f87 refactor: move all old usages of contacts to the new code 2022-02-01 11:35:24 +01:00
Jonathan Rainville cb7865bd9e refactor: move contact requests to new architecture
Fixes #4061

Most of the contact request code was already moved, but it wasn't hooked to the QML yet and also there were missing events and some code to improve.
2022-02-01 11:35:24 +01:00
Sale Djenic 3f50ab26b8 refactor(general): qml cleaning
- Selecting `currentIndex` based on the children placed in the `StackLayout`
component with id `appView` is sorted out since we were referring to the wrong
indexes there in case of walletv2, node and community sections.
- Places which call `Utils.getAppSectionIndex` are updated since we don't have
that method any more.
- Some parts which are not refactored yet are commented.
2022-02-01 11:33:06 +01:00
Sale Djenic ed09f82305 refactor(app-search): app search moved to a new component on the qml side 2022-02-01 11:32:46 +01:00
Sale Djenic d67278b23e refactor(app-search): app search module added 2022-02-01 11:32:42 +01:00
Sale Djenic 0fa88be513 refactor(@desktop/general): qml `ChatLayout` component added for the `Chat` section and for each community 2022-02-01 11:32:32 +01:00
Sale Djenic 9e567b8fdc refactor(@desktop/general): qml updated according to the new `userProfile` instance 2022-02-01 11:27:25 +01:00
Pascal Precht 18518607c7 fix: fix access to root store property for user online status
There seems to have been a confusion in how the store is named.
2021-12-15 11:01:29 +01:00
Alexandra Betouni b4b28d2f98 feat(desktop/contacts) Improvements in contacts
Contacts updates currently in base_bc

Closes #4100
2021-12-01 20:51:06 +02:00
Sale Djenic 484748314f fix(general): online/offline selector updated
Fixes: #4049
2021-11-24 13:15:15 +01:00
Alexandra Betouni c0450f0580 refactoring (desktop/chat) Message component
Moved Message component & dependencies  to shared
for usage import shared.views.chat 1.0 and accordingly
import shared.controls/panels.chat 1.0

Closes #3927
2021-11-24 13:15:15 +01:00
Sale Djenic cc5ccbc951 refactor(@desktop/general): qml updated according to the new `userProfile` instance 2021-11-24 13:15:15 +01:00
Alexandra Betouni aa5d6e0ce3 Fix setting user as offline doesn’t show user offline in the client 2021-11-05 11:02:45 -04:00
Sale Djenic cdecd82e3f rebase issue fixed 2021-11-05 11:02:45 -04:00
Sale Djenic 05cf431339 fixed issues after rebase 2021-11-05 11:02:45 -04:00
Sale Djenic 3f6bb66536 refactor(@desktop/general): `globalSettings` moved to Nim 2021-11-05 11:02:45 -04:00
Sale Djenic f0b2ed6cca refactor(@desktop/general): `appSettings` moved to Nim 2021-11-05 11:02:45 -04:00
Sale Djenic 4f3ca4eb78 login process refactored 2021-11-05 11:02:45 -04:00
Sale Djenic 9f4eeffdea A base structure for new architecture added
Initial structure for MainModule containing ChatSectionModule and
CommunitySectionModule is added, as well as initial structure for
StartupModule containing OnboardingModule and LoginModule.

Order of execution is updated and adapted to the current app state.
Main module gets loaded once a user is successfully logged in.
2021-11-05 11:02:45 -04:00
Alexandra Betouni 426c116bac refactor(desktop) Made shared a QML module
Use it as import shared 1.0, import shared.controls 1.0
etc instead of import "../../../shared"

Closes #3934
2021-10-27 18:05:45 -04:00
Alexandra Betouni 056f84c301 refactor(desktop/chat) Cleaning up popups 2021-10-26 16:22:49 -04:00
Alexandra Betouni 23811dc7e4 refactor(desktop/chat) Cleaning up views 2021-10-26 16:20:31 -04:00
Alexandra Betouni 22429689e3 refactor(desktop/chat) Cleaning up panels 2021-10-26 16:16:37 -04:00
Alexandra Betouni 9cc361c40a refactor(desktop/chat) Moving chat to new architecture
Closes #3710
2021-10-20 15:29:38 -04:00
Pascal Precht ed73651db8 refactor: move `SplitViewHandle` and `StatusTabButton` to ui/shared/panels|controls respectively 2021-10-14 12:51:27 -04:00
Pascal Precht ae31f7e1cb refactor: move `ConfirmationDialog` to ui/shared/popups 2021-10-14 12:51:27 -04:00
Alexandra Betouni 4ee21ada05 feat(desktop) Added image function in Style
Introduced Style.svg() Style.png() Style.emoji() and
Style.icon() in Style.qml. Those should be used to
set the source in Images instead of using relative
paths. Usage:
Image {
   source: Style.svg("check)
   ....

Also moved all Singletons inside a new "utils"
folder and made it a QML module, to use
import utils 1.0 instead of relative paths

Closes #3678
2021-09-28 15:28:00 -04:00
Alexandra Betouni 470144db6a feat(desktop/members) Improvements in members list
* The userlist toggle made persistent between restarts
* Members is enabled by default for communities
* Public channels changed title to "last seen"
  instead of "Members"

Closes #3502
2021-09-16 09:46:40 -04:00
Pascal Precht 33d800fcda refactor(ConfirmationDialog): change dialog to `StatusModal` 2021-09-15 13:31:18 -04:00
Pascal Precht 84a9b873f7 fix(@desktop/chat): force focus on search input when popup is opened
Closes #3392
2021-09-08 16:24:51 -04:00
Khushboo Mehta 9dd35904ea fix(@desktop/chat) Right click on community member list should show member information
fixes #3162
2021-09-02 14:55:20 -04:00
Sale Djenic 4916b8f552 fix(@desktop/chat): no identicon/profile picture shown and wrong timestamp format in search results
Icons added for messages senders in the search result, also community and chat
icons are colorized now.

Fixes: #3259
2021-08-31 14:23:59 -04:00
Sale Djenic 1b6ae41c63 feature(@desktop/chat): popup search added on the left side
As requested by design popup search added for the left side, click on a search
field (above channels list).

Refers to the changes requested by the issue-2934

Fixes: #2934
2021-08-19 16:26:59 -04:00
khushboo-dev-cpp 82718a0e93 fix(@desktop/chat): Right click message actions dont work
Fix the bug introduced by removing MessageContextMenu from Chat column. Added missing logic for edit message via MessageContextMenu

fixes #3223
2021-08-19 10:45:47 -04:00
Khushboo Mehta b80ac8070f fix(@desktop/chat): pin button is blurred
Updated from PopupMenu to StatusPopMenu. Removed buttons not in design.
Also added left and right button functionalXity on memeber list

fixes #2956, #3162
2021-08-11 14:33:21 +02:00
Richard Ramos d1b46c0226 feat: selector for online or invisible state
Fixes #3126
2021-08-06 13:30:05 -04:00
Alexandra Betouni 0a01e84b1c [#2813] Updating chat layout
Switched to StatusAppThreePanelLayout as per new
design for members list

Closes #2813
2021-07-26 14:05:08 -04:00
Alexandra Betouni 03db6a4985 [#2707] Added "My Profile" button in new chat popup
My profile link was not shown when starting 1x1 chat
having someone in contacts as it is currently the case in
mobile app

Closes #2707
2021-07-23 14:19:33 -04:00
Pascal Precht 8d48ebf864 refactor(ChatLayout): use StatusQ layout component to lay out view
These changes don't cause a visual change, but just make use of the
two panel layout component providedby StatusQ.

Closes #2688
2021-06-30 15:08:26 +02:00
Iuri Matias 599bf731fb refactor: extract 'channels' to its own file 2021-06-18 12:12:01 -04:00
Richard Ramos efae828087 fix: code review 2021-06-10 19:33:22 -04:00
Jonathan Rainville c1f6afd799 fixes 2021-05-26 12:12:05 -04:00
Pascal Precht 63bc6f0e53 chore: remove unnecessary splitview props 2021-04-15 10:12:50 +02:00
Pascal Precht 18acef7fd3 fix(ui): visually remove splitview handle 2021-04-14 17:00:37 +02:00
Jonathan Rainville a337b293da feat: show community context menu on Community button 2021-03-30 15:53:32 -04:00
Pascal Precht e1a4a47636 fix(Chat): disable HoverHandler when profile popup or context menu are open
Alright, this is an interesting one:

As described in #1829, when the profile popup is opened within the chat view,
users are still able to click *through* the popup on message, which then puts them in
an active state.

I've done a bunch of debugging as described [here](https://github.com/status-im/status-desktop/issues/1829#issuecomment-804748148) and after doing some
further debugging, I found out that `isMessageActive` isn't really the culprit here.

What causes this effect is the `HoverHandler` that's attached to the `CompactMessage` item.
`HoverHandler` is a standard QML type that emits `hoverChanged` signals so one can do things like
applying hover effects on elements, which is exactly what we do:

```
HoverHandler {
  onHoverChanged: {
    root.isHovered = hovered  // `root` being the message item
  }
}
```

I assume we went with this handler because putting a `MouseArea` in there instead, which fills
the entire message component pretty much eliminates all existing mouse handlers attached to
other child components, such as the profile image or the username of the message, which also
open a message context menu.

It turns out that, having a `HoverHandler` as described above, actually activates it when the
user clicks with the left mouse button as well (not just on hover). That's what causes the "click-through"
effect. This can be verified by setting `acceptedButtons` to `Qt.RightButton`, basically telling
the handler that only right clicks will activate it.

I then tried using `Qt.NoButtons` instead so that no button clicks and only hovers will activate
the handler, but that didn't seem to have any effect at all. It still defaults to `Qt.LeftButton`.

So the last resort was to disable the `HoverHandler` altogether, whenever either the profile popup,
or the message context menu (for emojis etc) is open.

Unfortunately, we don't have access to the profile popup in the compact message component, because it's
detached from the component tree. Therefore, I've introduced a new property `profilePopupOpened` on
the chat layout, which we can read from instead.

Fixes #1829
2021-03-23 10:32:31 -04:00
Richard Ramos 4f4a3f1c30 feat: see stickers details when clicking on a sticker 2021-03-16 15:39:52 -04:00
Jonathan Rainville b38d1df591 refactor: move communities functions to communities view in chat 2021-03-03 16:45:23 -05:00
Richard Ramos 6207c8af53 fix: appSettings were being overwritten due to defaultAppSettings periodically executing sync() 2021-02-18 16:40:21 -05:00
Jonathan Rainville 7dc3bf7e87 fix: fix group info popup warning and don't load popup immediately 2021-02-18 16:38:10 -05:00
Pascal Precht 7102596b3f fix(Timeline): make reactions works
This commit makes reactions in the status timeline work.
There are two things prior to this commit that are broken:

1. The logic that opens the reaction context menu always expects
   and instance of `chatsView` because it tries to calculate a users
   nickname. Such an instance isn't always available in that context, so
   the nickname logic has been moved to `appMain` for now, removing that
   dependency and therefore making it work in both, the chat view as well
   as the status view.
2. While 1) makes the context menu work, it turns out that adding and
   removing reactions inside the status timeline is still not working.
   The reason for that is, that the reactions component maintains its own
   `messageList`, which isn't aware of the fact that reactions for messages
   coming from chats of `ChatType.Profile`, need to go into a dedicated
   message list for `ChatType.Timeline`.

In other words, reactions are sent and removed from message in messagelists
that don't actually exist.

This commit fixes both of these things by ensuring the message lists
maintained by reactions are timeline aware. Also ensuring updates are
done correctly.
2021-01-14 15:33:46 -05:00
Jonathan Rainville 3f63ded1b2 fix: make profile popup look like the design 2021-01-13 13:14:06 -05:00
Jonathan Rainville 4aeeee6d9c feat: hide community stuff by default and add a setting to show it 2021-01-11 13:57:35 -05:00
Jonathan Rainville 7ddb93266b fix: chatLayout getting squished on first login 2021-01-11 13:57:35 -05:00
Jonathan Rainville 29a9ca4ef5 refactor: use getNickname function for nicknames fetches 2021-01-11 13:57:35 -05:00
Jonathan Rainville 2d3a870f60 wip community invitatations and more 2021-01-11 13:57:35 -05:00