Commit Graph

366 Commits

Author SHA1 Message Date
Michal Iskierko b38a9f5878 fix_: Publish token actions to privileged members
Send information to owners and token masters about operations: burn, airdrop, remote destruct.
Add CommunityTokenActionSignal to signalize client side.

Fix #13371
2024-06-03 12:19:19 +02:00
Mykhailo Prakhov 2053bd323b
fix(community)_: handle outdated request to join and request to join response when we have been joined (#5271) 2024-05-31 19:16:45 +02:00
Jonathan Rainville 64d2860571
chore_: remove Light permission checks that are no longer needed (#5267) 2024-05-31 10:22:08 -04:00
Michal Iskierko ad9032d036 feat_: recovery retracking pending transsactions
Add ReTrackOwnerTokenDeploymentTransaction function which will runs community tokens transactions listening.
Add deployment transaction hash to community_tokens table.

Issue #14699
2024-05-28 13:06:24 +02:00
Godfrain Jacques 07de481b69
fix_: fix deleted communities query (#5232)
Removes the community_id IS NULL condition when fetching deleted
communities and cleanup. This fixes #5222
2024-05-27 10:09:15 -07:00
Igor Sirotin 19875ed9b5
fix: archive decryption fail (#5076)
* fix_: delay archive import if decryption failed

* chore_: minor cleanup

* chore_: test archive import of encrypted channel

* test(TestImportDecryptedArchiveMessages)_: first iteration

* feat_: GetHashRatchetMessagesCountForGroup

* chore_: log community description and shard info message ids

* test(TestImportDecryptedArchiveMessages)_: cleanup

* fix_: rebase issues

* chore_: remove temporal test

* test(TestImportDecryptedArchiveMessages)_: cleanup

* chore_: lint fix

* fix(TestImportDecryptedArchiveMessages)_: ForceMembersReevaluation
2024-05-27 13:49:09 +01:00
Jonathan Rainville cc505d3018
chore_: up re-evaluation interval to 8 hours to avoid Alchemy limit (#5228) (#5230) 2024-05-24 16:21:56 -04:00
Andrey Bocharnikov 49b6ef4aaf
fix(communities)_: Receiving mention notifications (@everyone) from spectated communities (#5180)
fix(communities)_: Receiving mention notifications (@everyone) from spectated communities #14798

Fix condition to check if user has joined community isCommunityJoinedBeforeClock

Fixes #14798
2024-05-24 00:13:48 +04:00
Mykhailo Prakhov d80db940d7
chore_: 'CheckAllChannelsPermissions' fn optimization (#5196) 2024-05-23 19:06:50 +02:00
Patryk Osmaczko cec5985066 chore(communities)_: separate changes application in `reevaluateMembers`
This avoids locking of the community until the end of reevaluation.

There is no special handling for community changes while reevaluation is
ongoing. If members are added or removed, the function will behave
correctly. If permissions are changed, they will be accommodated in the
next reevaluation.

fixes: status-im/status-desktop#14775
2024-05-23 09:52:38 +02:00
Godfrain Jacques 133ad0946b
fix_: persist left communities even for restored account (#5174)
This PR fixes #7858 by making sure left persisted communities are
restored during the backup restore flow
2024-05-21 14:01:14 -07:00
Jonathan Rainville af66f517f5
fix_: fill missing community tokens in controlled communities (#5154) (#5188)
Needed for https://github.com/status-im/status-desktop/issues/14679

On app start, fills controlled communities with missing deployed community tokens if there are.
2024-05-21 12:00:32 -04:00
Michal Iskierko 6f1b82966a feat_: light, no-network versions of permission checking functions
Light functions are based on the fact that permissions are met if the user is on community/channel member list.
If the user is not on the list, permissions will not be met and the client is responsible to use regular permissions-check functions.
For all permissions-check functions, corresponding light versions are added: CheckAllChannelsPermissionsLight,
CheckChannelPermissionsLight, CheckPermissionToJoinLight.

Issue #14220
2024-05-20 14:17:40 +02:00
Mykhailo Prakhov 77541725aa
chore(community)_: reevaluateMembers optimization (#5169)
* chore(community)_: reevaluateMembers optinizations
2024-05-17 18:15:39 +02:00
osmaczko 948e09af03
fix(communities)_: ensure `ScheduleMembersReevaluation` is non-blocking (#5176) 2024-05-17 15:06:33 +02:00
Michal Iskierko 574450289c feat_: Move community tokens transaction listening to status-go
Use EventWatcher to catch wallet events.
Handling all community tokens wallet events in communitytokens service (database and messenger operations).
Adding new signal to nim: CommunityTokenTransactionSignal, which is emitted everytime when the event is received.

Issue #4351
2024-05-16 16:18:15 +02:00
Patryk Osmaczko 0db114f544 fix(communities)_: ensure read-only channels are not encrypted
fixes: status-im/status-desktop#14748
2024-05-16 11:21:55 +02:00
Jonathan Rainville 5ca1cb0a0f
fix(messenger)_: make sure chats have an unread count of 0 for channels you can't view (#5062)
Fixes https://github.com/status-im/status-desktop/issues/14421

The problem is that you can receive messages to  a channel, then later, before marking them as read, a permission is added to them, so you no longer have access.
Then, you can't even mark it as read if it's hidden.
Here, I fix it by setting the unread count on Init at 0 if the user doesn't have view access to it. And I make sure we update the counts when we are removed from a channel
2024-05-15 15:57:12 -04:00
Jonathan Rainville 8f50b578d1
refactor(chat)_: remove concept of ChannelGroup and remove api functions (#4997)
For status-im/status-desktop#12595
2024-05-13 15:06:21 -04:00
frank eb6ebade8e fix_:failed test relate to old status community 2024-05-13 21:17:25 +08:00
Godfrain Jacques 627e23ffa5
fix_: mitigate permission stuck in pending state (#5070)
This PR mitigates permission stuck in pending state upon making device a
control node. It fixes [#14023](status-im/status-desktop#14023)
2024-05-10 08:56:40 -07:00
Igor Sirotin 349ea8ad6e
feat_: force members reevaluation (#5139)
* chore_: enable adding community manager options from messenger config

* chore_: make `reevaluateMembers` private method

* fix(MessengerCommunitiesTokenPermissionsSuite)_: proper waiting

* feat_: `ForceMembersReevaluation` method

* test_: increate some test timeouts
2024-05-09 22:59:51 +03:00
Andrey Bocharnikov 6b5315b1fd fix(communities)_: delay starting torrent client until connection is established
Fixes # 14510
2024-05-09 11:00:53 +07:00
Jonathan Rainville 5f4aab3121
feat(community)_: send signals about member reevaluation in progress (#5120)
Needed for https://github.com/status-im/status-desktop/issues/14378
2024-05-08 15:55:30 -04:00
Jonathan Rainville db0cc10a73
fix(permisisons)_: private permisisons shouldn't affect the check (#5116)
Fixes https://github.com/status-im/status-desktop/issues/14608
2024-05-08 14:45:58 -04:00
Igor Sirotin 3e4367a7cf
fix_: community members reevaluation fixes (#5117)
* fix_: prevent publishing older community description

* fix_: schedule member reevaluation instead of reevaluating in parallel

* fix_: lock community on members reevaluation

* fix(TestJoinCommunityAsAdminWithMemberAndAdminPermission)_: setup waitOnCommunitiesEvent in advance

* fix(TestEditSharedAddresses)_: remove redundant community description retrieval
2024-05-08 16:32:46 +01:00
Igor Sirotin 1c43b7a29b
chore_: better community json log (#5118) 2024-05-08 15:49:41 +01:00
Jonathan Rainville 9c2c638aaf
fix(communities)_: fix curated comm fetch not starting for unknown comm (#5110) (#5111) 2024-05-03 13:17:11 -04:00
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
Ajay Sivan 0ef4fb8cc7
chore_: log revealed addresses on join/edit (#5073) 2024-04-24 18:54:25 -07:00
Ajay Sivan faf823f62f
fix_: filter private permissions & add Id keys in check_permissions_response (#5059) 2024-04-19 09:23:54 -07:00
Siddarth Kumar d6c4682479
chore_: bump go to 1.20 (#5027)
This commit attempts to upgrade go version to 1.20.12
This commit also removes the following items from lint checks :
* `goconst`
* `structcheck`
* `deadcode`
* `golint`
* `varcheck`

Mobile PR for QA purposes -> https://github.com/status-im/status-mobile/pull/19564
2024-04-18 18:48:02 +02:00
Patryk Osmaczko bd91f5ab49 fix_: keep community locks map unreleased when Manager stops
`ReevaluateMembers` is run as a separate goroutine and sometimes it is
executed after `Manager` has been stopped. It tries to use the lock and
in consequence, it panics. Ensuring the map is still there prevents that.

^Happened in test: `TestCreateTokenPermission`.
2024-04-17 17:31:38 +02:00
Patryk Osmaczko 9d309886f7 fix_: mitigate race conditions on community
mitigates: status-im/status-desktop#14432
2024-04-17 17:31:38 +02:00
Mikhail Rogachev 6da423fc71
feat: Add an expiration and periodical publishing for community grants (#5024)
* feat_: add periodical publishing for community grants
feat_: Validate grant when receiving it
feat_: add expiration for grants
feat_: add test for grants expiration
fix_: move grants test to profile showcase, fix a few bugs
* feat_: use one group mesage to update grants
* chore_: review fixes
2024-04-17 16:53:51 +02:00
Jonathan Rainville 6c82a6c2be fix(manager): make both perms satisfied if viewAndPost is satisfied
Fixes https://github.com/status-im/status-desktop/issues/14209
2024-04-04 14:34:59 -04:00
yqrashawn aa73a0512c
feat: add contact customization color (#4869) 2024-04-03 22:49:57 +08:00
Mykhailo Prakhov 3c76fdc626
fix: crash in dbRecordBundleToCommunity if event was signed not by a control node (#5009) 2024-04-03 14:51:28 +02:00
Igor Sirotin 3bd00cb416
chore: log incorrect amountInWeis (#5005) 2024-04-02 14:54:24 +01:00
Patryk Osmaczko 5b7910ae5a fix: validate community events read from database
Despite the expectation that only validated events are stored in the
database, instances have been identified where invalid events are saved.
This can lead to unexpected behavior or crashes.

This commit adds validation for community events read from the database
to prevent such cases.

**NOTE**: this fix does not address the root cause, which involves
invalid events being saved to the database. The exact scenario leading
to this issue has yet to be identified.

mitigates: status-im/status-desktop#14106
2024-03-27 14:31:03 +01:00
Igor Sirotin 1a2880b365
Fix/community tags indices (#4992)
* fix: strict order of community tags

* make tags containers private

* fix RandomCommunityTags implementation
2024-03-26 20:02:12 +00:00
Patryk Osmaczko 7f44d4d12a refactor: remove unused `COMMUNITY_EVENTS_MESSAGE_REJECTED` 2024-03-25 13:18:20 +01:00
Mykhailo Prakhov b931a75bd8
fix: crash on control node side dutring handling edited shared address from the member who left the community (#4967) 2024-03-22 15:25:37 +01:00
Patryk Osmaczko 0aed93ff04 fix: encrypt community's Categories and ActiveMembersCount
fixes: #4943
fixes: #4944
2024-03-20 18:41:07 -04:00
Andrea Maria Piana 894eb5758e Add canView to chat & fix admin role 2024-03-20 16:48:07 -04:00
Mykhailo Prakhov a1033f466a
feat: add new CommunityMemberState - CommunityMemberBanWithAllMessagesDelete (#4941) 2024-03-19 14:40:23 +01:00
Patryk Osmaczko 17c5ab414b fix: ensure `CommunityDescription` reprocessing on decryption failure
Previously, `CommunityDescription` instances failing partial decryption
were not reprocessed due to duplicate message check. This commit fixes
the issue by bypassing the check for such descriptions, allowing their
reprocessing upon receiving missing encryption key.

fixes: status-im/status-desktop#13647
2024-03-18 22:24:24 +01:00
Michal Iskierko 8bf03609fc feat: Add HideIfPermissionsNotMet to CommunityChat struct
Issue #13291
2024-03-18 15:01:29 +01:00
Andrea Maria Piana 67dfff2324 Add index to hash ratchet & cache processed description 2024-03-13 11:35:11 +00:00
Jonathan Rainville 6f119b9c53 fix(community): fix member role not being updated 2024-03-12 11:04:45 -04:00