Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update release branch 2.30.x #20903

Merged
merged 33 commits into from
Jul 30, 2024
Merged

Conversation

ilmotta
Copy link
Contributor

@ilmotta ilmotta commented Jul 27, 2024

Summary

Update the release branch https://github.com/status-im/status-mobile/tree/release/2.30.x with ALL changes in status-mobile develop since revision a1784c5.

status: ready

@ilmotta ilmotta self-assigned this Jul 27, 2024
@ilmotta ilmotta marked this pull request as draft July 27, 2024 10:42
@status-im-auto
Copy link
Member

status-im-auto commented Jul 27, 2024

Jenkins Builds

Click to see older builds (16)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 32e9eab #1 2024-07-27 10:49:49 ~6 min tests 📄log
✔️ 32e9eab #1 2024-07-27 10:53:49 ~10 min android-e2e 🤖apk 📲
✔️ 32e9eab #1 2024-07-27 10:54:13 ~11 min android 🤖apk 📲
✔️ 32e9eab #1 2024-07-27 10:54:44 ~11 min ios 📱ipa 📲
✔️ 32e9eab #2 2024-07-28 23:24:46 ~4 min tests 📄log
✔️ 32e9eab #2 2024-07-28 23:28:29 ~8 min android-e2e 🤖apk 📲
✔️ 32e9eab #2 2024-07-28 23:28:55 ~9 min ios 📱ipa 📲
✔️ 32e9eab #2 2024-07-28 23:28:58 ~9 min android 🤖apk 📲
✔️ c156225 #3 2024-07-28 23:55:02 ~6 min tests 📄log
✔️ c156225 #3 2024-07-28 23:55:58 ~7 min android-e2e 🤖apk 📲
✔️ c156225 #3 2024-07-28 23:58:29 ~9 min android 🤖apk 📲
✔️ c156225 #3 2024-07-28 23:58:49 ~9 min ios 📱ipa 📲
✔️ f3b0726 #4 2024-07-29 17:52:11 ~5 min tests 📄log
✔️ f3b0726 #4 2024-07-29 17:54:40 ~7 min android 🤖apk 📲
✔️ f3b0726 #4 2024-07-29 17:54:58 ~8 min android-e2e 🤖apk 📲
✔️ f3b0726 #4 2024-07-29 17:56:49 ~9 min ios 📱ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 218087c #5 2024-07-29 18:30:30 ~5 min tests 📄log
✔️ 218087c #5 2024-07-29 18:33:59 ~9 min android-e2e 🤖apk 📲
✔️ 218087c #5 2024-07-29 18:34:25 ~9 min ios 📱ipa 📲
✔️ 218087c #5 2024-07-29 18:35:15 ~10 min android 🤖apk 📲
✔️ 46c1507 #6 2024-07-30 14:13:37 ~4 min tests 📄log
✔️ 46c1507 #6 2024-07-30 14:17:29 ~8 min android-e2e 🤖apk 📲
✔️ 46c1507 #6 2024-07-30 14:17:53 ~9 min android 🤖apk 📲
✔️ 46c1507 #6 2024-07-30 14:18:05 ~9 min ios 📱ipa 📲

@ilmotta ilmotta changed the base branch from develop to release/2.30.x July 28, 2024 23:19
smohamedjavid and others added 23 commits July 28, 2024 20:45
This commit:

- prevents the user from saving their wallet address as the saved address
- fixes button not capturing taps when the keyboard is open in saved address flows

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
Equality checks in tests using = give a bad experience by default on test
failures containing nested data structures. We use the cljs.test directive
match? from matcher-combinators library to help compare nested structures. The
problem with match? is that its default matcher for maps (embeds) can be too
permissive, and this causes surprises.

Here we upgrade matcher-combinators to latest, where a new matcher called
nested-equals is available. This matcher won't allow extra keys in maps. This
matcher eliminates the need for manually adding nested equals matchers as we
have to do currently.

- Upgrades matcher-combinators from 3.8.8 to 3.9.1 (latest as of 2024-07-19)

What changes?

When asserting in tests, we now have the option to use match-strict? or match?.
Both directives are available by integrating with cljs.test. The code
implementing the new match-strict? directive was 100% copied from the library
matcher-combinators because we need to wrap the expected value ourselves with
matcher-combinators.matchers/nested-equals. It's ugly code, but it's how we can
integrate with cljs.test/assert-expr.
* feat: only initialize wc if internet online

* feat: no internet toast for session establishment

* feat: no internet banner on session requests

* feat: reloading walletconnect on connection change

* fix: re-initialize only when previously failed to

* fix: removed legacy net-info ns

* ref: renamed :network-status to :network/status

* ref: moved network subs to own "category"

* fix: device network fx args

* fix: tests & showing persisted dapps when offline

* fix: addressed review comments

* fix: rebase issues

* fix: linting

* fix: usage of web3-wallet (#20864)

* fix: moved networks to contextx and renaming

* ref: moved building supported namespaces into fx
* fix: header align and max width for summary-tag

* fix: standard-title show ellipse when text is long

* fix: summary-tag long name overflowing
* WalletConnect show expired toast

* Fixes

* Fix

* Post-rebase fix
…0836)

* Reject wallet-connect request by dragging the modal down (#20763)

* Fix
This commit adds the beta info box with links to chain explorers to the activity tab in the wallet.

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
…#20875)

This commit removes two toggles from legacy advanced settings

- "Testnet mode" - duplicate toggle as the user can switch to testnet from wallet settings
- "Enable Goerli as test network" - Goerli is depreciated and wallet services use Sepolia testnet as default. 

Signed-off-by: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com>
…account cards (#20854)

* Create a linear-gradient wrapper to avoid crashes and notify color errors

* Fix references to the flamingo color

* Add customization color fallback
We do a few things to reduce the initial load and make the app more responsive
after login. The scenario we are covering is a user who joined communities with
a large number of members and/or which contain token-gated channels with many
members.

- Related to #20283
- Related to #20285

- Optimize how we convert a community from JS to CLJS. Community members and
  chat members are no longer transformed to CLJS, they are kept as JS. Read more
  details below.
- Delay processing lower-priority events by creating a third login phase. The
  goal is to not put on the same queue we process communities less important
  events, like fetching the count of unread notifications. Around 15 events
  could be delayed without causing trouble (and this further prevent a big chain
  of more events to be dispatched right after login).
- Tried to use re-frame's flush-dom metadata, but removed due to uncertainty,
  check out the discussion:
  #20729 (comment)
  Use re-frame’s support for the flush-dom metadata whenever a signal arrives.
  According to the official documentation, this should tell re-frame to only
  process the event after the UI has been updated. It’s hard to say if this
  makes any difference, but the theory is sound.
- Reduce the amount of data returned to the subscription that renders a list of
  communities. We were returning too much, like all members, chats, token
  permissions, etc.

Other things I fixed or improved along the way:

- Because members are now stored as JS, I took the opportunity to fix how
  members are sorted when they are listed.
- Removed a few unused subs.
- Configured oops to not throw during development (in production the behavior is
  to never throw). This means oops is now safe to be used instead of interop
  that can mysteriously fail in advanced compilation.
- Show compressed key instead of public key in member list for the account
  currently logged in.

Technical details

The number one reason affecting the freeze after login was coming from
converting thousands of members inside communities and also because we were
doing it in an inefficient way using clojure.walk/stringify-keys. We shouldn't
also transform that much data on the client as the parent issue created by
flexsurfer correctly recommends. Ever since PR
#20414 was merged, status-go
doesn't return members in open channels, which greatly helps, for example, to
load the Status community. The problem still exists for communities with
token-gated channels with many members.

The current code in develop does something quite inefficient: it fetches the
communities, then transforms them recursively with js->clj and keywordizes keys,
then transforms again all the potentially thousands of member IDs back to
strings. This PR changes this. We now shallowly convert a community and ignore
members because they can grow too fast. From artificial benchmarks simulating
many members in token-gated channels, or communities with thousands of members,
the improvement is noticeable.

You will only really notice improvements if you have spectated or joined a
community with 1000+ members and/or a community with many token-gated channels,
each containing perhaps hundreds of members.

What's the ideal solution?

We should consider removing community members and channel members from the
community entity returned by status-go entirely. The members should be a
separate resource and paginated so that the client doesn't need to worry
about the number of members, for the most part.
status-im/status-go@2bbdb35...2bbdb35

* add v2 method

* rename v2 to get-suggested-route

* remove timestamp check on success

* handle async signal for suggestion

* fix stop get suggested routes

* address feedback

* rename get-suggest-route

* prefer lazy seq

* fix formatting

* update suggested routes success

* refactor get-in calls in start-get-suggested-routes

* move transformations to data store

* clean suggested routes immediately

* fix lint

* pass precision as ar

* change test name

* fix big number division error (issues 1,2)

* only trigger router fetch when there address (to/from)

* check response data for error response when routes received via signal

* update status-go

* fix: test failure

* update status go

* handle error message for generic errors
…requests gracefully (#20799)

* 🥅 Filter connected dapps based on testnet mode

- Fixes #20794

* 🥅 Remove map, just filter

* 💿 Rebase

* ❌ Remove greedy fetch

* 🙅‍♀️ Properly reject proposals and requests

* 🎗️ Remove newline and move `set`

- `set` was applied at the wrong place here

* ✏️ Address review comments

* 👀 Read proposal to reject from state

* ◀️ Bring back network filtering

* 🧹 Cleanup

* ✏️ Move comment around

* 🎣 Use filter operable accounts helper

* ➕ Add back events deleted during rebase

* 🧰 Fix Issue 2, Testnet sessions not visible

* 🖊️ Fix lint

* 🔗 Make testnet filtering more explicit

* 🥢 Use union instead of two subsets call

* ✏️ Fix lint

* 🔇 Undo changes that creeped in an unrelated ns
In this commit:
- we set `ANDROID_ABI_SPLIT` to `true`
- we set `ANDROID_ABI_INCLUDE` to `arm64-v8a` for debug & PR android builds
- release builds would still contain `armeabi-v7a;arm64-v8a` and there is no change for E2E android builds
- we point to relevant changes in `status-jenkins-lib` which also introduces a size check for this `apk`.
The agreed threshold is 100 MB.
@ilmotta ilmotta force-pushed the ilmotta/update-release-branch-2.30 branch from 32e9eab to c156225 Compare July 28, 2024 23:48
Parveshdhull and others added 5 commits July 29, 2024 14:45
status-im/status-go@2bbdb35...9755b3d
Co-authored-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
Co-authored-by: Jamie Caprani <jamiecaprani@gmail.com>
* feat: removed wallet connect feature flag

* fix: show pending requests when logging out and in

* fix: don't show requests across (test/main)nets

* format: added env newlines

* fix: network state reset on network type change

* fix: reject typed-data if wrong chain-id

* chore: added logs for future debugging
@ilmotta ilmotta force-pushed the ilmotta/update-release-branch-2.30 branch 2 times, most recently from f3b0726 to 218087c Compare July 29, 2024 18:24
@ilmotta ilmotta requested a review from a team July 29, 2024 18:27
@ilmotta ilmotta changed the title [WIP] Update release branch 2.30.x Update release branch 2.30.x Jul 29, 2024
@ilmotta ilmotta marked this pull request as ready for review July 29, 2024 18:32
@ilmotta ilmotta mentioned this pull request Jul 29, 2024
Copy link
Member

@jakubgs jakubgs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ain't nobody got time to read all this shit.

@status-im-auto
Copy link
Member

92% of end-end tests have passed

Total executed tests: 51
Failed tests: 3
Expected to fail tests: 1
Passed tests: 47
IDs of failed tests: 702775,704613,702777 
IDs of expected to fail tests: 727232 

Failed tests (3)

Click to expand
  • Rerun failed tests

  • Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777

    Device 2: Tap on found: Button
    Device 2: Find `Button` by `xpath`: `//*[@text="Continue" or @text="CONTINUE"]`

    activity_center/test_activity_center.py:222: in test_add_contact_field_validation
        sync_code = self.profile_2.get_sync_code()
    ../views/profile_view.py:547: in get_sync_code
        self.continue_button.click()
    ../views/base_element.py:90: in click
        element = self.find_element()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 2: Button by xpath: `//*[@text="Continue" or @text="CONTINUE"]` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    Class TestDeepLinksOneDevice:

    1. test_links_deep_links, id: 702775

    Device 1: Waiting 35s for dapp to load
    Device 1: Find Text by accessibility id: community-title

    critical/test_deep_and_universal_links.py:112: in test_links_deep_links
        if self.community_view.community_title.text != text:
    ../views/base_element.py:419: in text
        text = self.find_element().text
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: Text by accessibility id: `community-title` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    2. test_links_open_universal_links_from_chat, id: 704613

    Device 1: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'https://status.app/c/ixyACjgKDVNOVCBjb21tdW5pdHkSHHJlcXVpcmUgMTAgU05UIEdvZXJsaSB0byB1c2UYASIHI2VhYjcwMAM=#zQ3shUeGnhM33QW4g9JfYfeLFAH9ZwbDboNYn5exCR7S3ii1y')]
    Device 1: Find Text by accessibility id: community-title

    critical/test_deep_and_universal_links.py:64: in test_links_open_universal_links_from_chat
        if self.community_view.community_title.text != text:
    ../views/base_element.py:419: in text
        text = self.find_element().text
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 1: Text by accessibility id: `community-title` is not found on the screen; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#no-such-element-exception
    



    Device sessions

    Expected to fail tests (1)

    Click to expand

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_watch_only_account, id: 727232

    Device 1: Find EditBox by accessibility id: add-address-to-watch
    Device 1: Type 0x8d2413447ff297d30bdc475f6d5cb00254685aae to EditBox

    critical/test_wallet.py:249: in test_wallet_add_remove_watch_only_account
        self.wallet_view.add_watch_only_account(address=address_to_watch, account_name=new_account_name)
    ../views/wallet_view.py:163: in add_watch_only_account
        self.account_has_activity_label.wait_for_visibility_of_element()
    ../views/base_element.py:147: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 1: Text by accessibility id:`account-has-activity` is not found on the screen after wait_for_visibility_of_element 
    

    [[Missing networks in account address, https://github.com//issues/20166]]

    Device sessions

    Passed tests (47)

    Click to expand

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_leave, id: 702845
    Device sessions

    2. test_community_mentions_push_notification, id: 702786
    Device sessions

    3. test_community_markdown_support, id: 702809
    Device sessions

    4. test_community_hashtag_links_to_community_channels, id: 702948
    Device sessions

    5. test_community_join_when_node_owner_offline, id: 703629
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783
    Device sessions

    3. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_admin_notification_accept_swipe, id: 702958
    Device sessions

    2. test_activity_center_mentions, id: 702957
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_edit_message, id: 702855
    Device sessions

    2. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    3. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    4. test_1_1_chat_pin_messages, id: 702731
    Device sessions

    5. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    6. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    7. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782
    Device sessions

    8. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    2. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_reactions, id: 703202
    Device sessions

    2. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    3. test_group_chat_offline_pn, id: 702808
    Device sessions

    4. test_group_chat_pin_messages, id: 702732
    Device sessions

    5. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    6. test_group_chat_mute_chat, id: 703495
    Device sessions

    Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230
    2. test_wallet_send_eth, id: 727229

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231
    Device sessions

    Class TestActivityMultipleDevicePR:

    1. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    Device sessions

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_emoji_send_copy_paste_reply, id: 702840
    Device sessions

    2. test_community_contact_block_unblock_offline, id: 702894
    Device sessions

    3. test_community_mark_all_messages_as_read, id: 703086
    Device sessions

    4. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    5. test_community_unread_messages_badge, id: 702841
    Device sessions

    6. test_community_message_delete, id: 702839
    Device sessions

    7. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    8. test_community_edit_delete_message_when_offline, id: 704615
    Device sessions

    9. test_community_one_image_send_reply, id: 702859
    Device sessions

    10. test_community_message_edit, id: 702843
    Device sessions

    11. test_community_several_images_send_reply, id: 703194
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    2. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    3. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133
    Device sessions

    4. test_community_undo_delete_message, id: 702869
    Device sessions

    5. test_community_mute_community_and_channel, id: 703382
    Device sessions

    6. test_community_discovery, id: 703503
    Device sessions

    @churik
    Copy link
    Member

    churik commented Jul 30, 2024

    @ilmotta thank you! we're ready to update the branch and start testing

    @churik
    Copy link
    Member

    churik commented Jul 30, 2024

    @ilmotta
    #20902 this one too!

    @ilmotta
    Copy link
    Contributor Author

    ilmotta commented Jul 30, 2024

    @churik, it would be good to cherry pick at least this PR about fallback pairing status-im/status-go#5627. The pipeline is already running on the status-go side, if it passes should take 50min more.

    #20902 this one too!

    Will update 👍🏼

    @churik
    Copy link
    Member

    churik commented Jul 30, 2024

    @ilmotta we didn't check it on the client side. are you sure that it is working?

    @ilmotta
    Copy link
    Contributor Author

    ilmotta commented Jul 30, 2024

    @ilmotta we didn't check it on the client side. are you sure that it is working?

    No @churik, we are not sure and I was thinking we would test in this PR before merging it. But let's test it separately and then update the release branch again with a separate PR. Safer.

    @qfrank
    Copy link
    Contributor

    qfrank commented Jul 30, 2024

    @ilmotta we didn't check it on the client side. are you sure that it is working?

    No @churik, we are not sure and I was thinking we would test in this PR before merging it. But let's test it separately and then update the release branch again with a separate PR. Safer.

    I have tested and it works, but it's safer if you can help test it separately 🙂

    mmilad75 and others added 3 commits July 30, 2024 11:07
    * fix(wallet): fix bridge transactions
    
    Signed-off-by: Brian Sztamfater <brian@status.im>
    
    * add support for approve transactions
    
    Signed-off-by: Brian Sztamfater <brian@status.im>
    
    ---------
    
    Signed-off-by: Brian Sztamfater <brian@status.im>
    @ilmotta ilmotta force-pushed the ilmotta/update-release-branch-2.30 branch from 218087c to 46c1507 Compare July 30, 2024 14:08
    @ilmotta ilmotta merged commit 0f15c01 into release/2.30.x Jul 30, 2024
    5 checks passed
    @ilmotta ilmotta deleted the ilmotta/update-release-branch-2.30 branch July 30, 2024 14:28
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    No open projects
    Archived in project
    Development

    Successfully merging this pull request may close these issues.