143 Commits

Author SHA1 Message Date
Jonathan Rainville
852a5beb39
feat_: limit number of members in a community and number of pending requests (#5107)
* feat(community): limit nb of requests to join and members

Needed for https://github.com/status-im/status-desktop/issues/14532

* chore: simplify TestRequestAccessAgain

* chore: add a test for the member limit
2024-05-01 13:27:31 -04:00
Ibrahem Khalil
18cc3a16d5
Return request to join acceptance notifications (#4909) 2024-04-09 21:32:03 +02:00
yqrashawn
aa73a0512c
feat: add contact customization color (#4869) 2024-04-03 22:49:57 +08:00
Mykhailo Prakhov
a1033f466a
feat: add new CommunityMemberState - CommunityMemberBanWithAllMessagesDelete (#4941) 2024-03-19 14:40:23 +01:00
Michal Iskierko
8bf03609fc feat: Add HideIfPermissionsNotMet to CommunityChat struct
Issue #13291
2024-03-18 15:01:29 +01:00
Mikhail Rogachev
5d29c20f94
Feat: Add 'IsDisplayNameDupeOfCommunityMember' endpoint (#4839)
* feat: Add 'TestScanCommunitiesMembersForName' endpoint

* feat: validate display name amoung community members
2024-03-01 15:46:48 +03:00
Michal Iskierko
df930b1d73 feat: New field in TokenCriteria proto
AmountInWei will have a wei-like units.
Amount field becomes deprecated because it kept string with float value.

Comparison (in case of Decimals == 5):
Amount (deprecated) = "1.2"
AmountInWei = "120000"

Issue #11588
2024-02-27 16:25:26 +01:00
Patryk Osmaczko
1f42f2582a Revert "Comment out all logged flaky tests"
This reverts commit 0bd4a06edc0893752378c1a57b35364144e3e169.
2024-02-27 11:00:29 +01:00
Patryk Osmaczko
0a1a66afa7 fix: prevent messenger being started twice
Previously, Messenger was `Start`ed multiple times, which resulted in
the shutdown process not being invoked on previously initialized
Messenger's sub-instances. This led to the failure of MVDS instance
shutdown causing massive error logs due to the attempts to read from a
closed database.
2024-02-27 11:00:29 +01:00
Patryk Osmaczko
5aed0d178f chore: unskip flaky tests 2024-02-27 11:00:29 +01:00
Patryk Osmaczko
eeaff0d3e3 fix: sync&backup channels encryption keys
fixes: status-im/status-desktop#13356
2024-02-26 16:41:30 +01:00
Mykhailo Prakhov
92bc64bb41
feat: kicked/banned member should not have spectated mode after the kick/ban (#4806) 2024-02-26 13:33:07 +01:00
Mykhailo Prakhov
3959948c4c
chore: fix ban/unban flow and delete all messages feature (#4743)
feat: delete all messages for banned member and ban/unban AC notifications
2024-02-22 11:25:13 +01:00
Patryk Osmaczko
30f4edf48d fix: keep flaky tests compilable and easy to find 2024-02-19 21:46:35 +01:00
Patryk Osmaczko
1fca1e1743 Revert "Comment out flaky tests (#4741)"
This reverts commit 582927868dc6597cf513181bce7fc9c8ac5ed1f2.
2024-02-19 21:46:35 +01:00
Roman Volosovskyi
582927868d
Comment out flaky tests (#4741) 2024-02-19 10:10:37 +01:00
Andrea Maria Piana
c49a0fc314 [Fixes: #4687] Change requestsToJoinCommunity to a map
The test was flaky because of re-receiving the message, which resulted
in multiple identical requestsToJoin being added to messengerResponse.

We should in general avoid using arrays in messengerResponse and prefer
maps for exactly this reason.
2024-02-08 11:18:53 +00:00
Andrea Maria Piana
605fe40e32 Fix encryption metadata issues #4613
This commit fixes a few issues with communities encryption:

Key distribution was disconnected from the community description, this created a case where the key would arrive after the community description and that would result in the client thinking that it was kicked.
To overcome this, we added a message that signals the user that is kicked. Also, we distribute the key with the community description so that there's no more issues with timing.
This is a bit expensive for large communities, and it will require some further optimizations.

Key distribution is now also connected to the request to join response, so there are no timing issues.

Fixes an issue with key distribution (race condition) where the community would be modified before being compared, resulting in a comparison of two identical communities, which would result in no key being distributed. This commit only partially address the issue.
2024-02-07 10:25:41 +00:00
Patryk Osmaczko
5162c285a8 refactor: introduce newTestCommunitiesMessenger 2024-01-24 14:24:57 +01:00
Andrea Maria Piana
e65760ca85 Add basic peersyncing
This commit adds basic syncing capabilities with peers if they are both
online.

It updates the work done on MVDS, but I decided to create the code in
status-go instead, since it's very tight to the application (similarly
the code that was the inspiration for mvds, bramble, is all tight
together at the database level).

I reused parts of the protobufs.

The flow is:

1) An OFFER message is sent periodically with a bunch of message-ids and
   group-ids.
2) Anyone can REQUEST some of those messages if not present in their
   database.

3) The peer will then send over those messages.

It's disabled by default, but I am planning to add a way to set up the
flags.
2024-01-23 12:46:17 +00:00
Ibrahem Khalil
436d229856
Add last opened at key for community (#4514) 2024-01-21 12:55:14 +02:00
Roman Volosovskyi
0bd4a06edc Comment out all logged flaky tests 2024-01-18 06:36:12 +00:00
Patryk Osmaczko
2a5dc6dec0 chore: remove boilerplate check of communities.GetByID clients
motivated by:
https://github.com/status-im/status-go/pull/4514#discussion_r1445808116
2024-01-10 18:58:17 +01:00
Ibrahem Khalil
e1b52f9eae
Add joined at key to communities (#4513) 2024-01-09 20:36:47 +02:00
Mykhailo Prakhov
45bd8c16da
fix: do not ignore banned list if EventsData is nil (#4473) 2023-12-19 12:00:29 +01:00
Ibrahem Khalil
90c31afe7c
New way of sharing communities (#4341) 2023-12-15 13:55:32 +02:00
Ibrahem Khalil
be8568e174
Community member joins the community if he sends a request to join an… (#4321) 2023-12-09 14:46:30 +02:00
Siddarth Kumar
e0bbb7e2ec
fix: send chats along with response after joining (#4416)
When an open community was created by Device A and shared with Device B and when Device B would request to join such a community, the general channel would be forever in loading state.

This happened because as part of messenger response the chatId of general channel was not sent and mobile client would not fetch that chat data.

This commit fixes that issue by sending chatId as part of messenger response right after the request to join community succeeds.
2023-12-07 21:32:37 +05:30
Patryk Osmaczko
4086e24365 fix: close messenger's databases in tests 2023-11-28 20:59:25 +01:00
Patryk Osmaczko
de29ec71ae feat: enable messages segmentation
closes: status-im/status-desktop#12188
2023-11-13 17:32:00 +01:00
Patryk Osmaczko
f7042e4b9e refactor: extract layers in StatusMessage
Extracted:
- TransportLayer
- EncryptionLayer
- ApplicationLayer
2023-11-08 21:46:22 +01:00
Andrea Maria Piana
071c431606 [Fixes: #4088] Fix pending notification test
There were 2 issues:

1) We hard delete requests, that means that on retransmission they will
be recreated, the test has been changed to accommodate this behavior
2) We always used time.now when updating timestamp in notification,
   sometimes time is the same so the notification is not updated, we
   changed to use what essentially is a clock value
2023-11-03 14:12:35 +00:00
Igor Sirotin
c27384680a
feat: new configurable endpoint RequestCommunityInfoFromMailserverV2 (#4238)
* StatusUnfurler: use shard from url
2023-11-03 10:30:24 +00:00
Sale Djenic
11a3612290 feat: support signing of a join/edit community request from within the app or keycard 2023-11-03 07:49:01 +01:00
Patryk Osmaczko
e304fe3344 chore: enable community rekey loop 2023-10-27 16:29:26 +02:00
Teodor M. Ionita
4744ee899e Add TestPinMessageInCommunityChat, adjust pin permissions
Also check pin post permission a bit earlier for the sender, with
canPost() in sendPinMessage(), even though there is a later check down
the line in dispatchMessage().

Fixes #4138
2023-10-26 13:22:32 +03:00
Patryk Osmaczko
3452eb72a8 refactor: remove community invitation only access 2023-10-25 17:34:37 +02:00
Patryk Osmaczko
b321f28c9d refactor: update community access enum naming 2023-10-25 17:34:37 +02:00
Shinnok
3805662a18
fix(messenger_communities): block messages and reactions to token gated or spectated communities (#4064)
Which specifies that if a user is not a community member & a
chat member, he can't post, react or pin messages in that chat.

Notes:
- also fix&cleanup associated failing tests.
- refactor Community.CanPost() to reflect the new requirement.
- grant code is not fully implemented and is to be removed later.

Fixes https://github.com/status-im/status-desktop/issues/11915
2023-10-25 10:26:18 -04:00
Andrea Maria Piana
23f71c1125 Fix encryption id && rekey with a single message
This commit changes the format of the encryption id to be based off 3
things:

1) The group id
2) The timestamp
3) The actual key

Previously this was solely based on the timestamp and the group id, but
this might lead to conflicts. Moreover the format of the key was an
uint32 and so it would wrap periodically.

The migration is a bit tricky, so first we cleared the cache of keys,
that's easier than migrating, and second we set the new field hash_id to
the concatenation of group_id / key_id.
This might lead on some duplication in case keys are re-received, but it
should not have an impact on the correctness of the code.

I have added 2 tests covering compatibility between old/new clients, as
this should not be a breaking change.

It also adds a new message to rekey in a single go, instead of having to
send multiple messages
2023-10-24 20:48:54 +01:00
Patryk Osmaczko
345851c396 feat: ensure unique control node across devices
closes: status-im/status-desktop#11962
2023-10-22 21:50:41 +02:00
frank
624996a7e9
only sync decisions/state of AC notifications (#3979) 2023-10-22 17:41:20 +08:00
Jonathan Rainville
736779d94b
fix(communities): make sure to join the community if we are a member (#4118)
Fixes https://github.com/status-im/status-desktop/issues/12368
2023-10-10 14:03:55 -04:00
Patryk Osmaczko
9d374bcadc chore: use lamport timestamp for communities
closes: status-im/status-desktop#11961
2023-10-03 21:45:28 +02:00
Mykhailo Prakhov
db9adb631f
feat: share requests to join and revealed addresses with privileged roles (#3951)
- share requests to join with new privileged roles during reevaluating member role
- share requests to join with new members, joined the community as TOKEN_MASTER, ADMIN
- share requests to join revealed addresses to ADMINS and TOKEN_MASTERS
- refactor common test functionality to make them more predictable
- removed unused CommunityToken protobuf
2023-09-20 10:37:46 +02:00
Mykhailo Prakhov
86d969727f
feat: share CommunityTokens between privileged users (#3931)
feat: sync CommunityTokens between privileged users
feat: restore PrivilegeLevel for synchronized CommunityToken
2023-08-22 19:48:42 +02:00
Andrea Maria Piana
8dd1b66d69 Always use protobufs by reference & generate handlers 2023-08-22 12:08:54 +01:00
frank
daa9ad4e05
added nil checking for communitiesManager.GetByID (#3877) 2023-08-11 19:17:34 +08:00
Igor Sirotin
f0ab8f0be9
chore: Common createOtherDevice for community_messenger_test (#3874) 2023-08-10 21:25:07 +03:00
Igor Sirotin
2dd7968c8a
fix: Extract PairDevices func (#3857) 2023-08-10 16:57:52 +03:00