- TokenMaster request shared addresses on restoring from a backup
- Fixes sharing members revealed adresses
- Filter out outdated ApplicationMetadataMessage_COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE messages
Fixed logic to respect specified NFT quantities. Previously, holding one
NFT sufficed, regardless of the required count.
fixes: status-im/status-desktop#15122
* fix_: send request for shared addresses when restoring a community
Needed for https://github.com/status-im/status-desktop/issues/14289
When someone restores a community that they joined, it now sends a message to the control node to get their shared addresses back.
It's lighter that backing up the addresses all the time on waku and should only be needed once.
* fix_: filter communities before to avoid passing `alreadyHandled` parameter to `requestCommunityKeysAndSharedAddresses`
---------
Co-authored-by: Patryk Osmaczko <osmaczkopatryk@gmail.com>
I've renamed TorrentManager to ArchiveManager, ArchiveManager to ArchiveFileManager, TorrentContract to ArchiveService, ArchiveContract to ArchiveFileService. I've also renamed all init functions and struct fields to the appropriate archive-centric naming.
I've removed any mention or dependency of TorrentManager from Manager. There is still more work to do, but Messenger now communicates directly with a TorrentManager rather than asking the communities Manager to handle it. I've ensured that LogStdout() is only called from TorrentManager and removed entirely from Manager, this functionality seems to be some kind of debug tool specifically for torrent related functionality. Next I need to focus on functions within Messenger that call a TorrentManager and see how to isolate these from the main flows, following that I also need fix the tests that are broken. I will also need to refactor torrentClientReady() so that it is a function of TorrentManager, this may allow for pushing more functions into TorrentManager which will lead to better torrent encapsulation.
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
* 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
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
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.
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.
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.