3991 Commits

Author SHA1 Message Date
Stefan
5b6f7226bb feat(wallet) extract json blobs and add custom migration support
Extended the migration process with a generic way of applying custom
migration code on top of the SQL files. The implementation provides
a safer way to run GO code along with the SQL migrations and possibility
of rolling back the changes in case of failure to keep the database
consistent.
This custom GO migration is needed to extract the status from
the JSON blob receipt and store it in transfers table.

Other changes:
- Add NULL DB value tracking to JSONBlob helper
- Index status column on transfers table
- Remove unnecessary panic calls
- Move log_parser to wallet's common package and use to extract token
  identity from the logs

Notes:
- there is already an index on transfers table, sqlite creates one for
  each unique constraint therefore add only status to a new index
- the planned refactoring and improvements to the database have been
  postponed due to time constraints. Got the time to migrate the data
  though, extracting it can be done later for a more efficient
  implementation

Update status-desktop #10746
2023-06-08 13:54:40 +02:00
frank
9e0a12cb32
fix: Mention is not resolved if username or nickname of one is a substring of another (#3571)
* fix mobile issue #16099

* bump version
v0.156.1
2023-06-08 14:47:38 +08:00
Patryk Osmaczko
46768e624a feat: add and populate IdentityImage::LocalURL
part of: status-im/status-desktop#10886
2023-06-07 22:32:50 +02:00
Dario Gabriel Lipicar
d73c886d3b fix(wallet) limit nft description length
Fixes #10923
2023-06-07 15:11:29 -03:00
Vitaliy Vlasov
4006cb78b3
Update to FilterV2 (#3392)
* Update to FilterV2

* Use a separate goroutine for each filter subscription

* Add multiple filter sub test

* Fix test (add Stop() call)
2023-06-07 12:02:19 +03:00
Ivan Belyakov
d74d930b70 feat(wallet): enable sequential transfers fetching by default.
"EventNewTransfers' event is sent on each block processed, otherwise
it could take minutes or longer before first 'EventNewTransfers'
is sent.
2023-06-07 08:45:45 +02:00
Alex Jbanca
e8c4b7647f
chore(upgradeSQLCipher): Upgrading SQLCipher to version 5.4.5 (#3559)
* chore(upgradeSQLCipher): Upgrading SQLCipher to version 5.4.5

Changes:
### github.com/mutecomm/go-sqlcipher
1. The improved crypto argorighms from go-sqlcipher v3 are merged in v4
	Tags:
	v4.4.2-status.1 - merge `burn_stack` improvement
	v4.4.2-status.2 - merge `SHA1` improvement
	v4.4.2-status.4- merge 'AES' improvement
2. Fixed `go-sqlcipher` to support v3 database in compatibility mode (`sqlcipher` already supports this) (Tag: v4.4.2-status.3)
3. Upgrade `sqlcipher` to v5.4.5 (Tag: v4.5.4-status.1)

### github.com/status-im/migrate/v4
1. Upgrade `go-sqlcipher` version in `github.com/status-im/migrate/v4`

### status-go
1. Upgrade `go-sqlcipher` and `migrate` modules in status-go
2. Configure the DB connections to open the DB in v3 compatibility mode

* chore(upgradeSQLCipher): Use sqlcipher v3 configuration to encrypt a plain text database

* chore(upgradeSQLCipher): Scanning NULL BLOB value should return nil

Fixing failing tests: TestSyncDeviceSuite/TestPairingSyncDeviceClientAsReceiver;  TestSyncDeviceSuite/TestPairingSyncDeviceClientAsSender

Considering the following configuration:
1. Table with BLOB column has 1 NULL value
2. Query the value
3. Rows.Scan(&dest sql.NullString)

Expected: dest.Valid == false; dest.String == nil
Actual: dest.Valid == true; dest.String == ""

* chore: Bump go-sqlcipher version to include NULL BLOB fix
2023-06-07 08:58:01 +03:00
Michal Iskierko
fb4b93e8be feat(EstimateMintTo): Add EstimateMintTo to collectibles API
Issue #10536
2023-06-06 17:09:09 +02:00
Sale Djenic
874a0656db fix: profile social links, fix older clock error 2023-06-06 17:05:55 +02:00
Omar Basem
1d4fa29f8e
feat: add images count to reply (#3574)
* feat: add images count to reply
0.155.1
2023-06-06 15:52:07 +04:00
Stefan
bf29188b2d fix(wallet) add index on transfers(blk_number, loaded)
Improve performance of queries for
- transfer.GetTransfersInRange
- transfer.GetTransfersByAddress
- transfer.GetTransfersByAddressAndBlock
- transfer.GetTransfers
- transfer.GetPreloadedTransactions

For 16952 entries worst case scenario tested with `sqlcipher`:
- Before: Run Time: real 0.897 user 0.728139 sys 0.166714
- After:  Run Time: real 0.001 user 0.000437 sys 0.000189

A single composite index (with the default one) might work better though
2023-06-06 12:09:38 +02:00
Sale Djenic
a11cbb2f30 fix: profile social links, position column addded 2023-06-06 09:59:12 +02:00
Sale Djenic
cff7d2f693 fix: profile social links updated 2023-06-06 09:59:12 +02:00
Patryk Osmaczko
15d2b4fe80 feat: add configurable throttling mechanism for importing msgs
part of: status-im/status-desktop#10815
2023-06-06 08:49:02 +02:00
Dario Gabriel Lipicar
449314a4dc feat(Wallet) detect uniswapV3 swap events
Part of #10251
2023-06-05 12:08:18 -03:00
Dario Gabriel Lipicar
2fc79fb9b5 feat(Wallet) detect uniswapV2 swap events
Part of #10251
2023-06-05 12:08:18 -03:00
Dario Gabriel Lipicar
7557f0c799 feat(Wallet): add function to get erc20 token by contract address
Part of #10251
2023-06-05 12:08:18 -03:00
Dario Gabriel Lipicar
d2462b01ce feat(Wallet): add UniswapV2 and UniswapV3 contracts
Part of #10251
2023-06-05 12:08:18 -03:00
Dario Gabriel Lipicar
da8e8716b2 fix(wallet): Fix block hash for detected blocks with ETH transfers
Part of #10251
2023-06-05 12:08:18 -03:00
Pascal Precht
ffc1006953 Add permission checks for ENS token permissions
Also add tests for creating and editing token permissions
as well as a test for checking ENS ownership.
2023-06-05 13:10:48 +02:00
Icaro Motta
92b5d831fe
Support unfurling more websites (#3530)
Add support for unfurling a wider range of websites. Most code changes are
related to the implementation of a new Unfurler, an OEmbedUnfurler, which is
necessary to get metadata for Reddit URLs using oEmbed, since Reddit does not
support OpenGraph meta tags. The new unfurler will also be useful for other
websites, like Twitter. Also the user agent was changed, and now more websites
consider status-go reasonably human.

Related to issue https://github.com/status-im/status-mobile/issues/15918

Example hostnames that are now unfurleable: reddit.com, open.spotify.com,
music.youtube.com

Other improvements:

- Better error handling, especially because I wasn't wrapping errors correctly.
  I also removed the unnecessary custom error UnfurlErr.
- I made tests truly deterministic by parameterizing the http.Client instance
  and by customizing its Transport field (except for some failing conditions
  where it's even good to hit the real servers).
v0.154.5
2023-06-05 07:46:17 -03:00
Sale Djenic
c6192bd26c fix: issues caused by wrong pairing.proto fixed 2023-06-05 09:29:34 +02:00
Ivan Belyakov
ad1b8b6d43 fix(wallet): added remove event for accounts. Stop loading
transfers for removed account

Updates #10246
2023-06-05 08:22:08 +02:00
Anthony Laibe
f82818ff93 feat: expose account created at 2023-06-04 20:00:35 +02:00
Khushboo-dev-cpp
8b91e3aaaf
chore: Add ColorId for Wallet accounts that can be shared with mobile (#3521) 2023-06-02 17:06:51 +02:00
Samuel Hawksby-Robinson
e620633eb7 Handle deferred stop error v0.154.4 2023-06-02 15:55:48 +01:00
Samuel Hawksby-Robinson
5cf2038d32 Added API endpoint 2023-06-02 15:55:48 +01:00
Samuel Hawksby-Robinson
ce52aad877 Added waitForPortSet func to ensure server is running 2023-06-02 15:55:48 +01:00
Samuel Hawksby-Robinson
9a2e9fbc3c Added preflight outbound check to local pairing 2023-06-02 15:55:48 +01:00
Boris Melnik
5935339c19
feat(categories): Add muted type to category muting shortcut (#3534) 2023-06-02 14:25:32 +03:00
c1509637a5
ci: bump tests timeout to 30 minutes
The test running time can be a bit unpredictable due to server load,
which can result in tests that finish in 5 minutes, or over 20.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-06-02 12:38:43 +02:00
Jonathan Rainville
3f00869e1f
fix(contacts): add contact to ban and unban responses (#3558) 2023-06-01 13:26:12 -04:00
Boris Melnik
af1327f95d
fix(mute): Fix time calculation and skip empty response sending (#3557) 2023-06-01 17:17:42 +03:00
IvanBelyakoff
7adfbb5467
feat(wallet): SequentialFetchStrategy improvements: (#3551)
- reverted a change that stopped looking for ERC20 transfers if no nonce
  and balance change found within a block range for ETH
- implemented sending EventRecentHistoryReady event at a proper time
- moved EventFetchingRecentHistory event to Strategy type as it does not make
sense to send this event in loop
- moved iterating through blocks logic to inside of `loadTransfers` command, which
now accepts a block range.
- reuse `uniqueHeaders` function in commands.go
- clean up

Updates #10246
2023-06-01 16:09:50 +03:00
frank
5d62a9eef4
Fix/mobile issue 16043 (#3560)
* update color hash/id on login

* bump version

* fix test

* fix conflict with LoginAccount
v0.154.2
2023-06-01 20:57:05 +08:00
Andrea Maria Piana
7fd9fefdef Add LoginAccount endpoint
This commit adds LoginAccount endpoint.
This makes it consistent with CreateAccount and RestoreAccount as they
use similar config.

The notable difference with the previous endpoint is the API, which is
the same as CreateAccount/RestoreAccount, and the fact that it will
override your networks configuration.

Storing them in the config is now not needed anymore, as that's always
driven from the backend, and we won't allow custom networks in the new
wallet.
2023-06-01 10:05:11 +01:00
Siddarth Kumar
d37b605796
adjust padding for QR Images (#3510) v0.154.1 2023-06-01 13:41:01 +05:30
Igor Sirotin
a7df4ed388
Local Pairing update for StopNode (#3536) v0.154.0 2023-06-01 08:33:57 +03:00
Alex Jbanca
790efc16aa fix(databaseLocks): Fixing database lock errors on transactions
The default transaction lock is `deferred`. This means that the transaction will automatically become read or write transaction based on the first DB operation. In case the first operation is `SELECT` the transaction becomes read transaction, otherwise write transaction. When a read transaction tries to write the DB sqlite will promote the transaction to a write transaction if there is no other transaction that holds a lock. When the promotion fails `database is locked` error is returned. The error is returned immediately and does not use the busy handler.
In our case almost all read transaction would fail with `database is locked` error.

This fix is changing the default transaction lock to `IMMEDIATE`. It translates to `BEGIN IMMEDIATE` instead of `BEGIN`. In this mode, the transaction will be created as a write transaction no matter what DB operation will run as part of the transaction. The write transaction will try to obtain the DB lock immediately when `BEGIN IMMEDIATE` is called and the busy handler is used when the DB is locked by other transaction.

Fixing: https://github.com/status-im/status-desktop/issues/10838
2023-05-31 08:46:26 +02:00
Andrea Maria Piana
46399d1905
Use provided datadir 2023-05-30 23:09:36 +02:00
Jonathan Rainville
b701005f3b
fix(pins): prepare content of pin messages so stickers work (#3523) 2023-05-30 15:05:38 -04:00
Richard Ramos
b1a6607dbb chore: upgrade libp2p 2023-05-30 10:49:52 -04:00
Richard Ramos
3e4fe1e12f refactor: move circuit relay code to go-waku 2023-05-30 10:49:52 -04:00
Jonathan Rainville
b68853c53e
fix(messenger_handler): fix group chat not being set as active (#3545)
Fixes an issue where if a group chat was first received from a non-contact, and later received from a contact, it still wouldn't save it as active.

That's because we checked if we were **newly** added instead of just if we were added. That meant that in the case I described above, the chat would then never have the chance to be set active.
2023-05-30 09:49:46 -04:00
Jonathan Rainville
a6285cc827
Fix chats reseting when a Sync signal comes for communities (#3539)
* fix(community): stop re-joining comm when receiving a sync community msg

Fixes an issue with chats being reset. Since joining a community resaves the chats with the synced default value, it resets the sate of the chats, losing the unread messages, the muted state and more.
The solution is to block the re-joining of the community. In the case of the sync, we catch that error and just continue on.

* fix(import): fix HandleImport not saving the chat

Doesn't change much, but it could have caused issues in the future, so since we might have modified the chat, we make sure to save them
Also adds a test

* fix tests
2023-05-29 13:57:05 -04:00
589cc965e3
ci: add timeouts to all Jenkinsfiles
This is especially important for tests.

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2023-05-29 12:40:08 +02:00
Anthony Laibe
645cd5d03b feat: return only enabled networks from the reader 2023-05-29 08:37:08 +02:00
Roman Volosovskyi
aded83fc6e
Fix panic on receiving nil message at handleSyncKeypair v0.152.3 2023-05-26 18:43:44 +02:00
IvanBelyakoff
963f9e3dbd
fix(wallet): replace POKT rpc urls with archival ones (#3533) 2023-05-26 14:32:59 +03:00
IvanBelyakoff
2dc6700e38
chore(wallet): fix annoying error on missing argument while logging (#3532)
error on token fetch from store
2023-05-26 11:41:33 +03:00