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

#[16978] Select collectible to send #18404

Merged
merged 9 commits into from
Jan 12, 2024
Merged

Conversation

ulisesmac
Copy link
Contributor

fixes #16978

Summary

This PR shows the list of the collectibles to send and implements filtering capabilities:

figma link

Testing notes

You will need an account owning some collectibles, otherwise you will see an empty screen component.

Steps to test

  • Open Status
  • Navigate to wallet tab
  • Pick an account owning collectibles -> Send
  • Pick an account to send in My accounts
  • Select Collectibles tab

Now the existing collectibles are shown, or the empty-state component if there are no collectibles.
Also you are able to filter by the collectible name or collectible's collection name.

status: ready

Comment on lines +15 to +23
(let [collectible-list (rf/sub [:wallet/current-viewing-account-collectibles])]
[rn/view {:style {:flex 1}}
(case selected-tab
:assets [assets/view]
:collectibles [collectibles/view
{:collectibles collectible-list
:on-collectible-press (fn [id]
(rf/dispatch [:wallet/get-collectible-details id])
(rf/dispatch [:navigate-to :wallet-collectible]))}]
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I had to return to the approach of passing props to collectibles/view instead of just subscribing inside.

The reason is this is a general component, and make it able to handle the following by itself:

  • All collectibles display (in wallet home)
  • Collectibles only for the current account (when an account is picked)
  • Collectibles being filtered (in the send asset screen)
    Was hard, so I prefered to parameterize it.

Not as clean as before, but not too bad, and it's more reusable now.

Copy link
Contributor

Choose a reason for hiding this comment

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

you could also just make the generic component and then make the various connected components that have the subs inside and handle the data connection etc. Looks good either way 👍

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah, I think currently is ok, maybe for a later refactoring, we can consider it :)

Comment on lines +62 to +73
:on-collectible-press (fn [collectible-id]
(js/alert (str "Collectible to send: \n"
collectible-id
"\nNavigation not implemented yet")))}]))
Copy link
Contributor Author

@ulisesmac ulisesmac Jan 5, 2024

Choose a reason for hiding this comment

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

Temp callback, I'll solve it in the following PR, which is show the details of the collectible to send.

This callback is triggered when the user press a collectible to send

@status-im-auto
Copy link
Member

status-im-auto commented Jan 5, 2024

Jenkins Builds

Click to see older builds (22)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 66699d8 #2 2024-01-05 02:24:03 ~5 min tests 📄log
✔️ 66699d8 #2 2024-01-05 02:24:35 ~5 min ios 📱ipa 📲
✔️ 66699d8 #2 2024-01-05 02:27:37 ~8 min android-e2e 🤖apk 📲
✔️ 66699d8 #2 2024-01-05 02:27:47 ~9 min android 🤖apk 📲
✔️ ef8ec03 #3 2024-01-05 19:45:03 ~5 min ios 📱ipa 📲
✔️ ef8ec03 #3 2024-01-05 19:45:49 ~6 min tests 📄log
✔️ cff9f2b #4 2024-01-05 19:51:14 ~5 min ios 📱ipa 📲
✔️ cff9f2b #4 2024-01-05 19:51:26 ~5 min tests 📄log
✔️ cff9f2b #4 2024-01-05 19:52:27 ~6 min android 🤖apk 📲
✔️ cff9f2b #4 2024-01-05 19:53:50 ~8 min android-e2e 🤖apk 📲
✔️ 829f26c #5 2024-01-09 01:22:37 ~5 min ios 📱ipa 📲
✔️ 829f26c #5 2024-01-09 01:23:11 ~6 min tests 📄log
✔️ 829f26c #5 2024-01-09 01:25:24 ~8 min android-e2e 🤖apk 📲
✔️ 829f26c #5 2024-01-09 01:25:32 ~8 min android 🤖apk 📲
✔️ 52b5e99 #6 2024-01-11 03:55:28 ~5 min tests 📄log
✔️ 52b5e99 #6 2024-01-11 03:55:44 ~5 min ios 📱ipa 📲
✔️ 52b5e99 #6 2024-01-11 03:57:54 ~7 min android 🤖apk 📲
✔️ 52b5e99 #6 2024-01-11 03:57:54 ~7 min android-e2e 🤖apk 📲
9f59f1b #7 2024-01-12 00:28:10 ~1 min tests 📄log
✔️ 9f59f1b #7 2024-01-12 00:34:13 ~7 min android 🤖apk 📲
✔️ 9f59f1b #7 2024-01-12 00:34:20 ~7 min android-e2e 🤖apk 📲
✔️ 9f59f1b #7 2024-01-12 00:36:55 ~10 min ios 📱ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
0ca7668 #8 2024-01-12 16:46:37 ~1 min tests 📄log
✔️ 0ca7668 #8 2024-01-12 16:51:07 ~6 min ios 📱ipa 📲
✔️ 0ca7668 #8 2024-01-12 16:52:47 ~7 min android 🤖apk 📲
✔️ 0ca7668 #8 2024-01-12 16:52:47 ~7 min android-e2e 🤖apk 📲
0ca7668 #9 2024-01-12 16:53:18 ~1 min tests 📄log
✔️ 5d8c349 #9 2024-01-12 17:03:00 ~5 min ios 📱ipa 📲
✔️ 5d8c349 #10 2024-01-12 17:03:26 ~6 min tests 📄log
✔️ 5d8c349 #9 2024-01-12 17:05:49 ~8 min android-e2e 🤖apk 📲
✔️ 5d8c349 #9 2024-01-12 17:06:00 ~8 min android 🤖apk 📲

Comment on lines +70 to +83
show-search-input? (or (= selected-tab :tab/assets)
(and (= selected-tab :tab/collectibles)
(seq unfiltered-collectibles)))]
[:<>
(when show-search-input?
[search-input search-text on-change-text])
Copy link
Contributor Author

Choose a reason for hiding this comment

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

The search input is not always shown in the collectibles view, it's shown only when there are collectibles.
On the other hand, the assets tab is always showing the search input.

Comment on lines -14 to +23
:wallet/collectibles-per-account
:<- [:wallet]
(fn [wallet [_ address]]
(as-> wallet $
(get-in $ [:accounts address :collectibles])
(map (fn [{:keys [collectible-data] :as collectible}]
(assoc collectible :preview-url (preview-url collectible-data)))
$))))
:wallet/current-viewing-account-collectibles
:<- [:wallet/current-viewing-account]
(fn [current-account]
(-> current-account :collectibles add-collectibles-preview-url)))
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Removed the :wallet/collectibles-per-account sub and replaced it by :wallet/current-viewing-account-collectibles.

The reason is we weren't using the previous sub for specific accounts, it was always for the current account.
This one is simpler and makes our code cleaner.

Copy link
Member

@smohamedjavid smohamedjavid left a comment

Choose a reason for hiding this comment

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

LGTM 👍 Nice work @ulisesmac 🚀

Comment on lines 13 to 14
(and filtered? (empty? collectibles))
[rn/view]
Copy link
Member

Choose a reason for hiding this comment

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

I believe this is intended to show text when no results match the user query.
We can add a note to it 👍

Copy link
Contributor

@J-Son89 J-Son89 Jan 5, 2024

Choose a reason for hiding this comment

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

imo we can let the code do this :)

(let [no-results-match-query? (and filtered? (empty? collectibles))]
 (cond
    no-results-match-query?
    [rn/view]
...

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done, thanks! :)

src/status_im/contexts/wallet/common/utils.cljs Outdated Show resolved Hide resolved
(let [collectibles (rf/sub [:wallet/current-viewing-account-collectibles-filtered search-text])]
[collectibles-tab/view
{:collectibles collectibles
:filtered? true
Copy link
Member

Choose a reason for hiding this comment

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

I believe we need to pass true to the filtered? prop only when there is an active search.

Copy link
Contributor

Choose a reason for hiding this comment

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

if this goes beyond the prs scope let's track this for a separate issue to add filtering for search etc 👍
The sooner we have a happy path for sending a collectible the better :)

Copy link
Contributor Author

@ulisesmac ulisesmac Jan 5, 2024

Choose a reason for hiding this comment

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

I believe we need to pass true to the filtered? prop only when there is an active search.

@smohamedjavid exactly! it was a bug, I fixed it, thanks for noticing it, fixed!

:permissions [empty-tab/view
{:title (i18n/label :t/no-permissions)
:description (i18n/label :t/no-collectibles-description)
:placeholder? true}]
Copy link
Contributor

Choose a reason for hiding this comment

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

I wonder do we have the illustration for this ready? if so can we track an issue to add this 🙏

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I've just asked designers, and they updated the designs, it seems it's stil a temporal solution, but it's easy to add, so will add it!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Now it has been added

Copy link
Member

@briansztamfater briansztamfater left a comment

Choose a reason for hiding this comment

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

Question, does this support collectibles from testnets?

Anyways, LGTM! 🚀

@ulisesmac ulisesmac force-pushed the 16978-select-collectible branch from 66699d8 to ef8ec03 Compare January 5, 2024 19:39
@ulisesmac
Copy link
Contributor Author

Question, does this support collectibles from testnets?

Anyways, LGTM! 🚀

@briansztamfater

well, I'm not sure yet, this is a change that is using the collectibles previously queried, so it supports testnet ones if our collectible listing (in home) supports them.

I'd need to add some testing collectibles to test the sending, so I'll know 😆

@ulisesmac ulisesmac force-pushed the 16978-select-collectible branch from ef8ec03 to cff9f2b Compare January 5, 2024 19:45
{:title (i18n/label :t/nothing-found)
:description (i18n/label :t/try-to-search-something-else)
:image (resources/get-themed-image :no-collectibles theme)}]]

Copy link
Contributor

Choose a reason for hiding this comment

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

empty NL?

[empty-tab/view
{:title (i18n/label :t/no-collectibles)
:description (i18n/label :t/no-collectibles-description)
:image (resources/get-themed-image :no-collectibles theme)}]

Copy link
Contributor

Choose a reason for hiding this comment

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

here also NL

Copy link
Contributor Author

Choose a reason for hiding this comment

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

These new lines are helpful when using a cond that has its "then" clausules beind the conditions. It's a common pattern in Clojure code

@status-im-auto
Copy link
Member

69% of end-end tests have passed

Total executed tests: 48
Failed tests: 12
Expected to fail tests: 3
Passed tests: 33
IDs of failed tests: 703194,702859,703133,702957,702840,702948,702936,702947,702838,702844,702843,702958 
IDs of expected to fail tests: 703503,702808,703629 

Failed tests (12)

Click to expand
  • Rerun failed tests

  • Class TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194

    Device 2: Click until `ChatMessageInput` by `accessibility id`: `chat-message-input` will be presented
    Device 2: Looking for a message by text: gallery

    critical/chats/test_public_chat_browsing.py:425: in test_community_several_images_send_reply
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Gallery message was not received
    



    Device sessions

    2. test_community_one_image_send_reply, id: 702859

    Device 2: Looking for a message by text: description
    Device 2: Looking for a message by text: description

    critical/chats/test_public_chat_browsing.py:436: in test_community_one_image_send_reply
        self.channel_2.chat_element_by_text(image_description).wait_for_visibility_of_element(10)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: ChatElementByText by xpath:`//*[starts-with(@text,'description')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    3. test_community_emoji_send_copy_paste_reply, id: 702840

    Device 2: Quoting '📣' message
    Device 2: Find BaseElement by xpath: //*[@content-desc=':chat-floating-screen']//*[starts-with(@text,'📣')]

    critical/chats/test_public_chat_browsing.py:517: in test_community_emoji_send_copy_paste_reply
        self.channel_2.quote_message(emoji_unicode)
    ../views/chat_view.py:1069: in quote_message
        self.chat_view_element_starts_with_text(message).long_press_until_element_is_shown(self.reply_message_button)
    ../views/base_element.py:318: in long_press_until_element_is_shown
        element = self.find_element()
    ../views/base_element.py:79: in find_element
        raise NoSuchElementException(
     Device 2: BaseElement by xpath: `//*[@content-desc=':chat-floating-screen']//*[starts-with(@text,'📣')]` 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

    4. test_community_message_send_check_timestamps_sender_username, id: 702838

    Device 2: Verifying that 'new message' is under today
    Device 2: Looking for a message by text: new message

    critical/chats/test_public_chat_browsing.py:336: in test_community_message_send_check_timestamps_sender_username
        self.channel_2.verify_message_is_under_today_text(new_message, self.errors, 60)
    ../views/chat_view.py:1001: in verify_message_is_under_today_text
        message_element.wait_for_visibility_of_element(timeout)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: ChatElementByText by xpath:`//*[starts-with(@text,'new message')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    5. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844

    Device 2: Wait for text element EmojisNumber to be equal to 1
    Device 2: Find EmojisNumber by xpath: //*[starts-with(@text,'https://m.youtube.com/watch?v=Je7yErjEVt4')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']/../..//*[@content-desc='emoji-reaction-4']/android.widget.TextView

    critical/chats/test_public_chat_browsing.py:607: in test_community_links_with_previews_github_youtube_twitter_gif_send_enable
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Link message reaction is not shown for the sender
    



    Device sessions

    6. test_community_message_edit, id: 702843

    Device 2: Looking for a message by text: Message AFTER edit 2 (Edited)
    Device 2: Find ChatElementByText by xpath: //*[starts-with(@text,'Message AFTER edit 2 (Edited)')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']

    critical/chats/test_public_chat_browsing.py:350: in test_community_message_edit
        self.channel_2.set_reaction(message_text_after_edit)
    ../views/chat_view.py:1081: in set_reaction
        self.chat_element_by_text(message).long_press_until_element_is_shown(element)
    ../views/base_element.py:318: in long_press_until_element_is_shown
        element = self.find_element()
    ../views/chat_view.py:134: in find_element
        self.wait_for_visibility_of_element(20)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: ChatElementByText by xpath:`//*[starts-with(@text,'Message AFTER edit 2 (Edited)')]/ancestor::android.view.ViewGroup[@content-desc='chat-item']` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133

    Device 1: Find Button by accessibility id: show-profiles
    Device 1: Tap on found: Button

    critical/chats/test_public_chat_browsing.py:273: in test_restore_multiaccount_with_waku_backup_remove_switch
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     zQ3...dWXh5 was not restored as a contact from waku backup!
    E    zQ3...Vacac was not restored as a contact from waku backup!
    E    admin_open was not restored from waku-backup!!
    E    member_open was not restored from waku-backup!!
    E    admin_closed was not restored from waku-backup!!
    E    member_closed was not restored from waku-backup!!
    



    Device sessions

    Class TestActivityMultipleDevicePR:

    1. test_navigation_jump_to, id: 702936

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'https://status.app/c/')]
    Device 2: Wait for element Button for max 120s and click when it is available

    Test setup failed: activity_center/test_activity_center.py:270: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947

    Test setup failed: activity_center/test_activity_center.py:270: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'https://status.app/c/')]
    Device 2: Wait for element Button for max 120s and click when it is available

    Test setup failed: activity_center/test_activity_center.py:409: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    2. test_activity_center_admin_notification_accept_swipe, id: 702958

    Test setup failed: activity_center/test_activity_center.py:409: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_hashtag_links_to_community_channels, id: 702948

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'#cats')]
    Device 2: Looking for a message by text: it is just a message text

    critical/chats/test_public_chat_browsing.py:1088: in test_community_hashtag_links_to_community_channels
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Not all channels are shown in community before joining: ['dogs']
    



    Device sessions

    Expected to fail tests (3)

    Click to expand

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_join_when_node_owner_offline, id: 703629

    Device 2: Tap on found: Button
    Device 2: Looking for community: 'open community'

    critical/chats/test_public_chat_browsing.py:1175: in test_community_join_when_node_owner_offline
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     open community is not listed inside Pending communities tab
    E    Joined status is not displayed
    E    open community is not listed inside Joined communities tab 
    

    [[Can't join a community if admin goes offline, https://github.com//issues/17678]]

    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_offline_pn, id: 702808

    Device 3: Looking for a message by text: message from old member
    Device 3: Looking for a message by text: message from new member

    critical/chats/test_group_chat.py:324: in test_group_chat_offline_pn
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Messages PN was not fetched from offline 
    

    [[Data delivery issue]]

    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_discovery, id: 703503

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Curated communities not loading, https://github.com//issues/17852]]

    Passed tests (33)

    Click to expand

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_mark_all_messages_as_read, id: 703086
    Device sessions

    2. test_community_contact_block_unblock_offline, id: 702894
    Device sessions

    3. test_community_edit_delete_message_when_offline, id: 704615
    Device sessions

    4. test_community_message_delete, id: 702839
    Device sessions

    5. test_community_unread_messages_badge, id: 702841
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    2. test_community_undo_delete_message, id: 702869
    Device sessions

    3. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    4. test_community_mute_community_and_channel, id: 703382
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782
    Device sessions

    2. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    3. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    4. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    5. test_1_1_chat_edit_message, id: 702855
    Device sessions

    6. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    7. test_1_1_chat_pin_messages, id: 702731
    Device sessions

    8. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    Class TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613
    Device sessions

    2. test_links_deep_links, id: 702775
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783
    Device sessions

    3. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732
    Device sessions

    2. test_group_chat_mute_chat, id: 703495
    Device sessions

    3. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    4. test_group_chat_reactions, id: 703202
    Device sessions

    5. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777
    Device sessions

    2. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    3. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809
    Device sessions

    2. test_community_mentions_push_notification, id: 702786
    Device sessions

    3. test_community_leave, id: 702845
    Device sessions

    @VolodLytvynenko
    Copy link
    Contributor

    ISSUE 2: Some collectibles are not fully visible

    Actual result:

    Collectibles are not visible. The empty space is shown instead

    collectibles.mp4

    Expected result:

    Collectibles are visible

    Logs:

    android_logcat4.txt

    Devices:

    Android studio: Pixel XL API 33
    Real device: Samsung Galaxy A04s, Android 12

    @VolodLytvynenko
    Copy link
    Contributor

    Question 2:

    Should collectibles be displayed following the same principle as tokens? Currently, tokens are shown based on the testnet mode setting:

    • If testnet mode is disabled, mainnet, optimism, and arbitrum tokens are shown.
    • If testnet mode is enabled, testnet tokens are shown.

    This is independent of whether the network is changed or not.

    However, for collectibles to be displayed, the 'mainnet' network needs to be selected and even if testnet mode is enabled, the mainnet collectibles are still shown instead of collectibles placed on testnet?

    @ulisesmac
    Copy link
    Contributor Author

    ISSUE 1: Incomplete list of collectibles in Status App

    Description:

    It appears that there might be different resources from which collectibles are fetched. Some collectibles are fetched by default, while others may need to be imported. If this is the case, then the question is which resources collectibles should be able to be fetched by default in the Status app. Currently, only 5 Mainnet collectibles are visible in the Status app, whereas when using Metamask, 13 are shown.

    About this, now I've confirmed these collectibles are being removed when received in the app, the reason is they don't have collectible-data image fields, instead, they have :collection-data, IDK what to do here, maybe we should ask designers. Let's open an issue, here is the structure of these collectibles:

    {:data-type        1,
     :id               {:contract-id {:chain-id 1,
                                      :address  "0x..."},
                        :token-id    "12345"},
     :collectible-data {:name                 "", ;; <- empty field
                        :image-url            "", ;; <- empty field
                        :animation-url        "", ;; <- empty field
                        :animation-media-type "", ;; <- empty field
                        :background-color     ""} ;; <- empty field
    
    ;; Instead, collection-data is provided, but we are not looking at it right now:
     :collection-data  {:name      " Name of the collection",
                        :slug      "",
                        :image-url "https://some-url-to-the-image"},
     :ownership        [{:address "0x...",
                         :balance "1"}]}

    @ulisesmac
    Copy link
    Contributor Author

    ISSUE 2: Some collectibles are not fully visible

    Actual result:

    Collectibles are not visible. The empty space is shown instead
    collectibles.mp4

    Expected result:

    Collectibles are visible

    Thansk for testing this!

    This problem is happening also while we are in the home screen, so it's not very related to this PR. I checked the reason and it's about unsupported image formats mixed with links not having an extension, React Native just doesn't render them.
    e.g.
    some of our links are:
    https://something/eth-mainnet/abc

    and sometimes we need:
    https://something/eth-mainnet/abc.jpg or
    https://something/eth-mainnet/abc.png

    We should open an issue to properly render all possible formats

    @ulisesmac
    Copy link
    Contributor Author

    Question 2:

    Should collectibles be displayed following the same principle as tokens? Currently, tokens are shown based on the testnet mode setting:

    * If testnet mode is disabled, mainnet, optimism, and arbitrum tokens are shown.
    
    * If testnet mode is enabled, testnet tokens are shown.
    

    This is independent of whether the network is changed or not.

    However, for collectibles to be displayed, the 'mainnet' network needs to be selected and even if testnet mode is enabled, the mainnet collectibles are still shown instead of collectibles placed on testnet?

    Yeah, I think collectibles should be shown in the same way, by looking at the code, we are only requesting the collectibles for the current network.

    @ulisesmac
    Copy link
    Contributor Author

    Hi @VolodLytvynenko

    Thank you so much for your review! I appreaciate your help a lot.

    I think these issues are important to solve, but they are out of the scope of this PR. These issues are happening all over the wallet, not only in the page that is listing the ones to transfer.

    So I'd suggest to open separate issues for them, I'll be happy to address them since I'm already familiar with this part of the code 😄 and in the meantime, we could focus on the screen to pick a collectible to send.

    wdyt?

    @VolodLytvynenko
    Copy link
    Contributor

    Hi @VolodLytvynenko

    Thank you so much for your review! I appreaciate your help a lot.

    I think these issues are important to solve, but they are out of the scope of this PR. These issues are happening all over the wallet, not only in the page that is listing the ones to transfer.

    So I'd suggest to open separate issues for them, I'll be happy to address them since I'm already familiar with this part of the code 😄 and in the meantime, we could focus on the screen to pick a collectible to send.

    wdyt?

    Yes. Agree with you. I rerun e2e one more time and let you know. Thank you

    @status-im-auto
    Copy link
    Member

    60% of end-end tests have passed

    Total executed tests: 48
    Failed tests: 16
    Expected to fail tests: 3
    Passed tests: 29
    
    IDs of failed tests: 702782,703194,702859,702840,703086,702948,702894,704615,702936,702786,702839,702947,702838,702844,702843,702841 
    
    IDs of expected to fail tests: 703503,702808,703629 
    

    Failed tests (16)

    Click to expand
  • Rerun failed tests

  • Class TestActivityMultipleDevicePR:

    1. test_navigation_jump_to, id: 702936

    Device 2: Find `Text` by `xpath`: `//android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'https://status.app/c/')]`
    Device 2: Wait for element `Button` for max 120s and click when it is available

    Test setup failed: activity_center/test_activity_center.py:270: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947

    Test setup failed: activity_center/test_activity_center.py:270: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Class TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194

    Test setup failed: critical/chats/test_public_chat_browsing.py:322: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    2. test_community_one_image_send_reply, id: 702859

    Test setup failed: critical/chats/test_public_chat_browsing.py:322: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    3. test_community_emoji_send_copy_paste_reply, id: 702840

    Test setup failed: critical/chats/test_public_chat_browsing.py:322: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    4. test_community_mark_all_messages_as_read, id: 703086

    Test setup failed: critical/chats/test_public_chat_browsing.py:322: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    5. test_community_contact_block_unblock_offline, id: 702894

    Test setup failed: critical/chats/test_public_chat_browsing.py:322: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element 
    

    [[Message can be missed after unblock: https://github.com//issues/16873]]

    6. test_community_edit_delete_message_when_offline, id: 704615

    Test setup failed: critical/chats/test_public_chat_browsing.py:322: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    7. test_community_message_delete, id: 702839

    Test setup failed: critical/chats/test_public_chat_browsing.py:322: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    8. test_community_message_send_check_timestamps_sender_username, id: 702838

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'https://status.app/c/')]
    Device 2: Wait for element Button for max 120s and click when it is available

    Test setup failed: critical/chats/test_public_chat_browsing.py:322: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Device sessions

    9. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844

    Test setup failed: critical/chats/test_public_chat_browsing.py:322: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    10. test_community_message_edit, id: 702843

    Test setup failed: critical/chats/test_public_chat_browsing.py:322: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    11. test_community_unread_messages_badge, id: 702841

    Test setup failed: critical/chats/test_public_chat_browsing.py:322: in prepare_devices
        self.community_2.join_community()
    ../views/chat_view.py:435: in join_community
        self.join_button.wait_and_click(120)
    ../views/base_element.py:96: in wait_and_click
        self.wait_for_visibility_of_element(sec)
    ../views/base_element.py:139: in wait_for_visibility_of_element
        raise TimeoutException(
     Device 2: Button by accessibility id:`show-request-to-join-screen-button` is not found on the screen after wait_for_visibility_of_element
    



    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_emoji_send_reply_and_open_link, id: 702782

    Device 2: Find OpenInStatusButton by xpath: //*[@text="Open in Status"]
    Device 2: Tap on found: OpenInStatusButton

    critical/chats/test_1_1_public_chats.py:175: in test_1_1_chat_emoji_send_reply_and_open_link
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Message with emoji was not sent or received in 1-1 chat
    



    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_hashtag_links_to_community_channels, id: 702948

    Device 2: Find Text by xpath: //android.view.ViewGroup[@content-desc='chat-item']//android.widget.TextView[contains(@text,'#cats')]
    Device 2: Looking for a message by text: it is just a message text

    critical/chats/test_public_chat_browsing.py:1091: in test_community_hashtag_links_to_community_channels
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Not all channels are shown in community before joining: ['dogs']
    



    Device sessions

    2. test_community_mentions_push_notification, id: 702786

    Device 2: Getting PN by 'user_2'
    Device 2: Looking for a message by text: user_2

    critical/chats/test_public_chat_browsing.py:928: in test_community_mentions_push_notification
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Push notification with the mention was not received by admin
    E    Edited message is not shown correctly for the (receiver) admin
    



    Device sessions

    Expected to fail tests (3)

    Click to expand

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_offline_pn, id: 702808

    Device 3: Looking for a message by text: message from old member
    Device 3: Looking for a message by text: message from new member

    critical/chats/test_group_chat.py:324: in test_group_chat_offline_pn
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     Messages PN was not fetched from offline 
    

    [[Data delivery issue]]

    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_community_discovery, id: 703503

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Curated communities not loading, https://github.com//issues/17852]]

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_join_when_node_owner_offline, id: 703629

    Device 2: Tap on found: Button
    Device 2: Looking for community: 'open community'

    critical/chats/test_public_chat_browsing.py:1178: in test_community_join_when_node_owner_offline
        self.errors.verify_no_errors()
    base_test_case.py:191: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     open community is not listed inside Pending communities tab
    E    Joined status is not displayed
    E    open community is not listed inside Joined communities tab 
    

    [[Can't join a community if admin goes offline, https://github.com//issues/17678]]

    Device sessions

    Passed tests (29)

    Click to expand

    Class TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613
    Device sessions

    2. test_links_deep_links, id: 702775
    Device sessions

    Class TestGroupChatMultipleDeviceMergedNewUI:

    1. test_group_chat_pin_messages, id: 702732
    Device sessions

    2. test_group_chat_mute_chat, id: 703495
    Device sessions

    3. test_group_chat_send_image_save_and_share, id: 703297
    Device sessions

    4. test_group_chat_reactions, id: 703202
    Device sessions

    5. test_group_chat_join_send_text_messages_push, id: 702807
    Device sessions

    Class TestActivityMultipleDevicePRTwo:

    1. test_activity_center_mentions, id: 702957
    Device sessions

    2. test_activity_center_admin_notification_accept_swipe, id: 702958
    Device sessions

    Class TestCommunityMultipleDeviceMergedTwo:

    1. test_community_markdown_support, id: 702809
    Device sessions

    2. test_community_leave, id: 702845
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUiTwo:

    1. test_1_1_chat_delete_via_long_press_relogin, id: 702784
    Device sessions

    2. test_1_1_chat_is_shown_message_sent_delivered_from_offline, id: 702783
    Device sessions

    3. test_1_1_chat_mute_chat, id: 703496
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_text_message_delete_push_disappear, id: 702733
    Device sessions

    2. test_1_1_chat_push_emoji, id: 702813
    Device sessions

    3. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    4. test_1_1_chat_edit_message, id: 702855
    Device sessions

    5. test_1_1_chat_send_image_save_and_share, id: 703391
    Device sessions

    6. test_1_1_chat_pin_messages, id: 702731
    Device sessions

    7. test_1_1_chat_message_reaction, id: 702730
    Device sessions

    Class TestActivityCenterContactRequestMultipleDevicePR:

    1. test_add_contact_field_validation, id: 702777
    Device sessions

    2. test_activity_center_contact_request_accept_swipe_mark_all_as_read, id: 702851
    Device sessions

    3. test_activity_center_contact_request_decline, id: 702850
    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_switch, id: 703133
    Device sessions

    2. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    3. test_community_undo_delete_message, id: 702869
    Device sessions

    4. test_community_navigate_to_channel_when_relaunch, id: 702846
    Device sessions

    5. test_community_mute_community_and_channel, id: 703382
    Device sessions

    @VolodLytvynenko
    Copy link
    Contributor

    @ulisesmac Thank you for PR. No issues from my side. Other issues are not related to this PR and I will report them separately. PR ready to be merged

    Additionally,
    - Replace the sub `:wallet/collectibles-per-account` by `:wallet/current-viewing-account-collectibles` since
      it was only used for the current viewing account and simplified the code.
    - Refactor the select-asset view.
    @ulisesmac ulisesmac force-pushed the 16978-select-collectible branch from 0ca7668 to 5d8c349 Compare January 12, 2024 16:56
    @ulisesmac ulisesmac merged commit e3ab270 into develop Jan 12, 2024
    6 checks passed
    @ulisesmac ulisesmac deleted the 16978-select-collectible branch January 12, 2024 17:14
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    Archived in project
    Archived in project
    Development

    Successfully merging this pull request may close these issues.

    Implement Select Collectible page
    8 participants