Commit Graph

426 Commits

Author SHA1 Message Date
Jonathan Rainville 16a9843b17 feat(community)_: add version to image url to let clients update
Fixes https://github.com/status-im/status-desktop/issues/16688

Since we use the local image server to show the community image, the URL never changes when we update the image, since it's served using a query string containing the community ID. eg: `https://Localhost:46739/communityDescriptionImages?communityID=0x03c5ece7da362d31199fb02d632f85fdf853af57d89c3204b4d1e90c6ec13bb23c&name=thumbnail`
Because of that, the clients cannot know if the image was updated, so they had to force update the image every time, which was inefficient.

We discovered this issue when I refactored the community client code in Desktop so that we only update the changed properties of a community instead of reseting the whole thing.

The solution I came up with in the PR is to add a `version` to the URL when we detect that the image changed. This let's the clients detect when the image was updated without having to do any extra logic.
2024-11-26 16:31:10 -05:00
Jonathan Rainville d197857034 refactor(server_media)_: pass a func to get the images instead of using the cache
The community cache that the image server was using was not intended to be used for that. It can be invalidated at any moment. Also, it did not contain changes made by admins (admin events).
Using this new approach, we pass functions from the community manager to the media server so that it can have access to the correct community description.
2024-11-26 14:18:26 -05:00
Sale Djenic e354844044 chore(wallet)_: transactions/types.go moved to services/wallet/wallettypes 2024-11-22 13:32:49 +01:00
Jonathan Rainville 72f7ed7ced
fix(community)_: fix missing mediaserver when cloning a community (#6026)
This caused communities being passed to the client via `handleCommunitiesSubscription` to not have images and they would "flash" in the client because it would disappear for a second then come back when another signal updated it back.
2024-11-21 14:12:22 -05:00
frank b59f1d3849
fix_: chats and message history loading after login takes too much time (#5932)
* fix_: chats and message history loading after login takes too much time

* chore_: split to small functions to writing unit test easily

* test_: add test

* chore_: improve OldestMessageWhisperTimestampByChatIDs function

- Use 'any' type instead of 'interface{}' for args slice
- Add error check after rows iteration

* chore_: optimize OldestMessageWhisperTimestampByChatIDs query

This commit simplifies and optimizes the SQL query in the OldestMessageWhisperTimestampByChatIDs function. The changes include:

1. Removing the subquery and ROW_NUMBER() function
2. Using MIN() and GROUP BY instead of the previous approach
3. Directly selecting the required columns in a single query

These changes should improve the performance of the function, especially for large datasets, while maintaining the same functionality.
2024-10-18 10:25:34 +08:00
Patryk Osmaczko 9294ffc12b fix(communities)_: prevent unsigned `CommunityDescription` persistence
fixes: status-im/status-mobile#21303
2024-10-11 18:59:58 +02:00
Patryk Osmaczko 9ba44651c7 chore(communities)_: mv `unmarshalCommunityDescriptionMessage` to
manager
2024-10-11 18:59:58 +02:00
Patryk Osmaczko 084a6e3c5c chore(communities)_: rename `validateAndGetEventsMessageCommunityDescription` 2024-10-11 18:59:58 +02:00
Patryk Osmaczko 4cef3baf85 fix(communities)_: ensure community ID is populated with description
Ensure that communities created prior to the introduction of tokenized
ownership propagate community ID through the description.

fixes: status-im/status-desktop#16226
2024-10-09 08:49:36 +02:00
Igor Sirotin c1dd9397f7
refactor_: remove generated files from source control (#5878)
* fix_: gitignore generated files

* chore_: delete generated files

* fix_: update go generate instructions

* feat(Makefile)_: clean-generated-files target

* feat(Makefile)_: `generate` target

* fix(Makefile)_: dependent generate target

* ci_: run generate, update docker file deps

* fix(Makefile)_: remove `clean-generated-files` target

* fix(Makefile)_: simpler GO_GENERATE_CMD arg

* fix_: temp workspace GO_GENERATE_FAST_DIR
2024-10-03 20:59:44 +01:00
Jonathan Rainville 1460589a0b
fix(manager)_: make sure to re-add revealed accounts in the response (#5867)
We remove the shared accounts to send normal admins to not leak the addresses, however, that was a destructive action that also removed them from the `requestToJoin` param, which is reused later in the code, so it created an unwanted side effect. The side effect is now erased.
2024-10-01 10:35:56 -04:00
frank 38308d48f2
feat_: log on panic (#5849)
* feat_: log error and stacktrace when panic in goroutine

* test_: add test TestSafeGo

* chore_: rename logAndCall to call

* chore_: rename SafeGo to Go

* chore_: make lint-fix

* chore_: use t.Cleanup

* chore_: Revert "chore_: use t.Cleanup"

This reverts commit 4eb420d179cc0e208e84c13cb941e6b3d1ed9819.

* chore_: Revert "chore_: make lint-fix"

This reverts commit fcc995f157e671a4229b47419c3a0e4004b5fdab.

* chore_: Revert "chore_: rename SafeGo to Go"

This reverts commit a6d73d6df583f313032d79aac62f66328039cb55.

* chore_: Revert "chore_: rename logAndCall to call"

This reverts commit 8fbe993bedb9fbba67349a44f151e2dd5e3bc4cc.

* chore_: Revert "test_: add test TestSafeGo"

This reverts commit a1fa91839f3960398980c6bf456e6462ec944819.

* chore_: Revert "feat_: log error and stacktrace when panic in goroutine"

This reverts commit f612dd828fa2ce410d0e806fe773ecbe3e86a68a.

* feat_: log error and stacktrace when panic in goroutine

* chore_: make lint-fix

* chore_: rename logAndCall to call

* chore_: renaming LogOnPanic

* chore_: update rest goroutine function calls

* chore_: make lint-fix
2024-09-27 06:37:32 +08:00
kaichao 1b53d04ccf
feat_: accept community join request with mvds (#5787)
* feat_: accept community join request with mvds

* chore_: no sender when use mvds in comm join response

* fix_: only use mvds for tokenized communities

* chore_: add comment for this.
2024-09-05 18:53:09 +08:00
Mykhailo Prakhov 58a9557c58
fix: reject handling requests to join without revealed accounts (#5549)
* fix(requestToJoin)_: request to join must have revealed addresses with signature

* fix(tests)_: fix tests

* chore(tests)_: increase tests timeout
2024-08-07 17:57:02 +02:00
Mykhailo Prakhov 54555b47de fix(logs)_: remove community private key logging in publishCommunityPrivilegedMemberSyncMessage 2024-07-19 16:50:40 +02:00
Vitaly Vlasov 3ef445dbcf fix_: share all future addresses storage 2024-07-18 12:08:40 +03:00
Patryk Osmaczko 9403475572 chore(communities)_: request missing channels' encryption keys in a loop
closes: status-im/status-desktop#14683
2024-07-16 16:44:50 +02:00
Jonathan Rainville 621b31a279
fix(community)_: fix pure readonly channels not respecting the right roles (#5513)
Fixes https://github.com/status-im/status-desktop/issues/15547
2024-07-15 13:53:20 -04:00
Prem Chaitanya Prathi 9a703162c4
refactor: only use shards (#5474)
* refactor_: use shards by default

* fix_: metadata lightclient check

* chore_: update go-waku
2024-07-15 20:55:12 +05:30
Andrey Bocharnikov 02b822802c chore(community)_: serialise community jsons with image URLs
Fix status-im/status-desktop#15340
2024-07-11 18:55:24 +07:00
Mykhailo Prakhov 7ec5b18642 fix(CommunitySharedAddresses)_:
- TokenMaster request shared addresses on restoring from a backup
- Fixes sharing members revealed adresses
- Filter out outdated ApplicationMetadataMessage_COMMUNITY_PRIVILEGED_USER_SYNC_MESSAGE messages
2024-07-09 18:19:40 +02:00
Mykhailo Prakhov 243ff6799d fix(reevaluateMembers)_: changing privileged permissions (TM -> admin, admin -> TM) 2024-07-09 18:19:40 +02:00
Mykhailo Prakhov 6333e2a053 fix(CommunityMember)_: update LastUpdateClock 2024-07-09 18:19:40 +02:00
Michal Iskierko 3145ab05ff feat(community tokens)_: Upgrade ERC721 contract to enable batch transfers
Add version field to proto and database.

Issue #4947
2024-07-08 11:30:51 +02:00
Mykhailo Prakhov fc401bc8a7
fix(communities)_: kick AC notification after control node device change (#5472)
fix(communities)_: kick AC notification after control node device change
2024-07-05 10:38:12 +02:00
Patryk Osmaczko cb20c4c64a feat(communities)_: introduce bloom filter members list
iterates: status-im/status-desktop#15064
2024-07-04 17:54:29 +02:00
Ivan Belyakov 3983114ae5 test(wallet)_: add unit tests for balance fetcher
replace types with interfaces where necessary to allow mocking
implement fake eth scanner and erc20 contracts
2024-07-04 09:29:49 +02:00
Patryk Osmaczko 89e7e7f24b refactor(communities)_: expand `channelEncrypted` usage 2024-06-27 20:15:42 +02:00
Andrea Maria Piana 2bc2099d55 chore(performance)!: Remove member list in non-encrypted channels
This commit removes the list of members from non token gated channels.
Unfortunately is a breaking change. I could make it non-breaking, but
we would lose any performance benefit.

For clients, the pseudo code for checking the member list of a channel
is:

```
members := channel.TokenGated ? channel.Members : community.Members
```
2024-06-27 10:44:49 +01:00
Jonathan Rainville d942ad1a1f
fix(manager)_: make sure createCommunityPermission schedules the reeval (#5404)
Fixes https://github.com/status-im/status-desktop/issues/15175

The problem was that we used StartMembersReevaluaitonLoop in createCommunityPermission, in case the loop was never started. Indeed it worked if it was the first ever permission, because the loop would then start and members would be re-evaluated.

However, if the loop was already started, in the case where there were previous permissions, the call would just early exit, because it was already started.

The solution here is to use `ScheduleMembersReevaluaiton` like other permission functions use. To make sure a first permission still works, we call startLoop in schedule if the task doesn't exist.
2024-06-25 14:46:29 -04:00
frank e0673ad1ff
feat(community)_: Move images from community data to MediaServer (#5336)
* feat(community)_: Move images from community data to MediaServer

* test_: fix lint issue

* test_: add more test statements

* feat_: deprecate old API

* test_: addressed review feedback from Icaro

* fix_: addressed review feedback from Jonathan

* chore_:wrap image url in an object
2024-06-24 17:37:44 +08:00
Patryk Osmaczko 0995802428 fix(communities)_: ensure community sync doesn't override joined state
potentially fixes: status-im/status-desktop#15009
2024-06-20 15:37:20 +02:00
Patryk Osmaczko 88c671fcf0 fix(communities)_: correct >1 NFT token requirement evaluation
Fixed logic to respect specified NFT quantities. Previously, holding one
NFT sufficed, regardless of the required count.

fixes: status-im/status-desktop#15122
2024-06-20 15:23:38 +02:00
Godfrain Jacques 892fcffce4
chore(communities)_: make member use wallet tokens during permission checking (#5268)
fixes #14913
2024-06-11 14:00:04 -07:00
Patryk Osmaczko 27934a4e1f chore(communities)_: reject outdated community descriptions
Prevent the inclusion of CommunityDescription with an outdated clock in
MessengerResponse to avoid false-positives in tests and reduce redundant
data exchange between status-go and clients.
2024-06-11 08:49:07 +02:00
Patryk Osmaczko ec9e29ef92 chore(communities)_: reevaluate permissions with pre-fetched owners
That's an optimisation. Instead of fetching collectibles owners for each
member, it is fetched once, before members iteration.

It should significantly reduce amount of queries to providers.

closes: status-im/status-desktop#14914
2024-06-07 23:46:20 +02:00
Mikhail Rogachev b0213e6a41
feat_: delete or update permission when deleting a channel (#5297)
* feat_: delete or update channel permissions when deleting a channel

* chore_: review fixes

* chore_: review fixes (second iteration, squash it!)
2024-06-07 18:30:01 +02:00
Samuel Hawksby-Robinson 1be465d23c chore(no-torrent)_: Refactored NewArchiveManager to use config pattern 2024-06-07 13:44:12 +01:00
Samuel Hawksby-Robinson 65fc455e4f chore(no-torrent)_: Fixed failing tests 2024-06-07 13:44:12 +01:00
Samuel Hawksby-Robinson e87d63693d chore(no-torrent)_: Renamed torrent files to archive 2024-06-07 13:44:12 +01:00
Samuel Hawksby-Robinson 896d9c0e24 chore(no-torrent)_: Renamed archive files to archive_file 2024-06-07 13:44:12 +01:00
Samuel Hawksby-Robinson 3d68013332 chore(no-torrent)_: Renamed Torrent to Archive
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.
2024-06-07 13:44:12 +01:00
Samuel Hawksby-Robinson c711811761 chore(no-torrent)_: Renamed **ManagerMobile to **ManagerNop 2024-06-07 13:44:12 +01:00
Samuel Hawksby-Robinson ac3bcbdef0 chore(no-torrent)_: Explicitly cast ManagerSuite.torrentManager
Instead of using the TorrentContract interface I've set the field to expicitly declare as *TorrentManager. This removes all the random type casting used in the tests. I also removed all the usages of buildTorrentConfig() as we build the test suite with the torrent config now.
2024-06-07 13:44:12 +01:00
Samuel Hawksby-Robinson a9c7db6f25 chore(no-torrent)_: Replaced entirely LogStdout with default logger 2024-06-07 13:44:12 +01:00
Samuel Hawksby-Robinson 210c8bd8c6 chore(no-torrent)_: Gave proper attribution and full context 2024-06-07 13:44:12 +01:00
Samuel Hawksby-Robinson 6b5b738662 chore(no-torrent)_: Fixed torrent tests 2024-06-07 13:44:12 +01:00
Samuel Hawksby-Robinson 66cd084084 chore(no-torrent)_: Copy and pasted Andrea's work
https://github.com/status-im/status-go/pull/5295
2024-06-07 13:44:12 +01:00
Samuel Hawksby-Robinson 88343eed50 chore(no-torrent)_: Added pre 1.17 build commands 2024-06-07 13:44:12 +01:00
Samuel Hawksby-Robinson 92c431f9cc chore(no-torrent)_: Added more complex build conditions to exclude OSes 2024-06-07 13:44:12 +01:00