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

feat: Keypair name handling #19423

Merged
merged 10 commits into from
Apr 2, 2024
Merged

feat: Keypair name handling #19423

merged 10 commits into from
Apr 2, 2024

Conversation

OmarBasem
Copy link
Contributor

fixes: #19376

This PR implements keypair name error handling.

Designs

Demo:

Screen_Recording_20240327_212951_Status.mp4

@status-im-auto
Copy link
Member

status-im-auto commented Mar 27, 2024

Jenkins Builds

Click to see older builds (29)
Commit #️⃣ Finished (UTC) Duration Platform Result
6122bec #1 2024-03-27 17:34:25 ~1 min android-e2e 📄log
6122bec #1 2024-03-27 17:34:29 ~1 min android 📄log
6122bec #1 2024-03-27 17:34:31 ~1 min ios 📄log
a6c5bed #2 2024-03-27 17:35:19 ~46 sec android-e2e 📄log
a6c5bed #2 2024-03-27 17:35:25 ~48 sec ios 📄log
a6c5bed #2 2024-03-27 17:35:25 ~48 sec android 📄log
a6c5bed #2 2024-03-27 17:36:28 ~1 min tests 📄log
a5f5b4e #4 2024-03-27 17:45:12 ~1 min tests 📄log
✔️ a5f5b4e #3 2024-03-27 17:50:50 ~7 min android 🤖apk 📲
✔️ a5f5b4e #3 2024-03-27 17:50:55 ~7 min android-e2e 🤖apk 📲
✔️ a5f5b4e #3 2024-03-27 17:52:37 ~9 min ios 📱ipa 📲
3a1301c #5 2024-03-28 11:05:57 ~3 min tests 📄log
e8a4029 #6 2024-03-28 11:11:16 ~1 min tests 📄log
✔️ e8a4029 #5 2024-03-28 11:15:21 ~6 min android-e2e 🤖apk 📲
ec918dc #7 2024-03-28 11:17:55 ~1 min tests 📄log
✔️ ec918dc #6 2024-03-28 11:23:18 ~6 min android-e2e 🤖apk 📲
✔️ ec918dc #6 2024-03-28 11:23:38 ~7 min android 🤖apk 📲
✔️ ec918dc #6 2024-03-28 11:27:09 ~10 min ios 📱ipa 📲
da96b34 #8 2024-03-28 15:30:23 ~2 min tests 📄log
✔️ da96b34 #7 2024-03-28 15:34:04 ~6 min android 🤖apk 📲
✔️ da96b34 #7 2024-03-28 15:34:25 ~6 min android-e2e 🤖apk 📲
✔️ da96b34 #7 2024-03-28 15:37:17 ~9 min ios 📱ipa 📲
2a73199 #9 2024-04-01 16:15:13 ~2 min tests 📄log
✔️ 2a73199 #8 2024-04-01 16:21:15 ~8 min android-e2e 🤖apk 📲
✔️ 2a73199 #8 2024-04-01 16:21:18 ~8 min android 🤖apk 📲
✔️ 2a73199 #8 2024-04-01 16:24:14 ~11 min ios 📱ipa 📲
b90f789 #10 2024-04-02 10:49:30 ~2 min tests 📄log
✔️ b90f789 #9 2024-04-02 10:55:05 ~7 min android-e2e 🤖apk 📲
✔️ b90f789 #9 2024-04-02 10:55:11 ~7 min android 🤖apk 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ c7cefc4 #12 2024-04-02 11:09:56 ~5 min tests 📄log
✔️ c7cefc4 #11 2024-04-02 11:11:26 ~7 min android-e2e 🤖apk 📲
✔️ c7cefc4 #11 2024-04-02 11:13:48 ~9 min android 🤖apk 📲
✔️ c7cefc4 #11 2024-04-02 11:18:39 ~14 min ios 📱ipa 📲
✔️ 07d41db #13 2024-04-02 11:35:40 ~3 min tests 📄log
✔️ 07d41db #12 2024-04-02 11:38:49 ~7 min android-e2e 🤖apk 📲
✔️ 07d41db #12 2024-04-02 11:38:57 ~7 min android 🤖apk 📲
✔️ 07d41db #12 2024-04-02 11:42:50 ~10 min ios 📱ipa 📲

@OmarBasem
Copy link
Contributor Author

Thanks for your reviews @J-Son89 and @ulisesmac !

I have addressed the review comments

@OmarBasem
Copy link
Contributor Author

Note regarding QA: There are 2 more follow-up issues for Keypair. To reduce the load on QA I think they can be QAed together in the last one. The code changes should have no side-effects on the current flow.
cc @J-Son89

@OmarBasem OmarBasem requested review from J-Son89 and ulisesmac and removed request for J-Son89 and ulisesmac March 29, 2024 11:16
@@ -13,3 +13,11 @@
(and (string? s)
(not-empty s)
(boolean (re-matches constants/regx-compressed-key s))))

Copy link
Contributor

Choose a reason for hiding this comment

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

hmm why do we have common/validators
and common/validation?
probably should just be one name space properly organised.
cc @mohsen-ghafouri wdyt?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hmm.. I'll look into it and see if they can be moved over to one file

Copy link
Contributor

Choose a reason for hiding this comment

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

Personally I don't think we should move to one file, rather one folder with various uses.

E.g
Common/validation/profile

Common/validation/wallet

Copy link
Contributor

@mohsen-ghafouri mohsen-ghafouri Mar 29, 2024

Choose a reason for hiding this comment

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

it's good idea to move common regex to different file as validators and also have separate validation file for different use case as you mentioned like validation/profile

Copy link
Contributor Author

Choose a reason for hiding this comment

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

moved the ones under validators to a common namespace: common/validation/general

:size :default
:icon :i/info}
(get error-messages error)])]]))
(def view (quo.theme/with-theme view-internal))
Copy link
Contributor

Choose a reason for hiding this comment

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

should be a line break before this line?

Copy link
Contributor

@J-Son89 J-Son89 left a comment

Choose a reason for hiding this comment

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

looks good to me but I think we should clean up the validators/validation organisation properly.
Too often utils just becoming a large bucket of all sorts of functionality and with some categorisation of use cases it becomes a lot easier to maintain.

@status-im-auto
Copy link
Member

96% of end-end tests have passed

Total executed tests: 48
Failed tests: 1
Expected to fail tests: 1
Passed tests: 46
IDs of failed tests: 702782 
IDs of expected to fail tests: 703503 

Failed tests (1)

Click to expand
  • Rerun failed tests

  • 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:178: in test_1_1_chat_emoji_send_reply_and_open_link
        self.errors.verify_no_errors()
    base_test_case.py:190: 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

    Expected to fail tests (1)

    Click to expand

    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 (46)

    Click to expand

    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 TestDeepLinksOneDevice:

    1. test_links_open_universal_links_from_chat, id: 704613
    Device sessions

    2. test_links_deep_links, id: 702775
    Device sessions

    Class TestActivityMultipleDevicePR:

    1. test_navigation_jump_to, id: 702936
    Device sessions

    2. test_activity_center_reply_read_unread_delete_filter_swipe, id: 702947
    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

    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_hashtag_links_to_community_channels, id: 702948
    Device sessions

    3. test_community_mentions_push_notification, id: 702786
    Device sessions

    4. test_community_leave, id: 702845
    Device sessions

    5. test_community_join_when_node_owner_offline, id: 703629
    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 TestCommunityMultipleDeviceMerged:

    1. test_community_several_images_send_reply, id: 703194
    Device sessions

    2. test_community_one_image_send_reply, id: 702859
    Device sessions

    3. test_community_emoji_send_copy_paste_reply, id: 702840
    Device sessions

    4. test_community_mark_all_messages_as_read, id: 703086
    Device sessions

    5. test_community_contact_block_unblock_offline, id: 702894
    Device sessions

    6. test_community_edit_delete_message_when_offline, id: 704615
    Device sessions

    7. test_community_message_delete, id: 702839
    Device sessions

    8. test_community_message_send_check_timestamps_sender_username, id: 702838
    Device sessions

    9. test_community_links_with_previews_github_youtube_twitter_gif_send_enable, id: 702844
    Device sessions

    10. test_community_message_edit, id: 702843
    Device sessions

    11. test_community_unread_messages_badge, id: 702841
    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

    6. test_group_chat_offline_pn, id: 702808
    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

    [floating-button-page/view
    {:header [quo/page-nav
    {:icon-name :i/arrow-left
    :on-press #(rf/dispatch [:navigate-back])
    Copy link
    Contributor

    Choose a reason for hiding this comment

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

    Maybe this dispatch could be extracted into a defn?

    Suggested change
    :on-press #(rf/dispatch [:navigate-back])
    (defn navigate-back [] (rf/dispatch [:navigate-back])
    ////
    :on-press navigate-back

    Copy link
    Contributor Author

    Choose a reason for hiding this comment

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

    @mohsen-ghafouri we can, but is there a meaningful difference?

    Copy link
    Contributor

    Choose a reason for hiding this comment

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

    as It doesn't depend on any parameter, it should be outside so that even if it's compared by reference, it will hold equal and not cause unnecessary re-rendering

    refer to #19139 (comment)

    (<= (count keypair-name)
    keypair-name-min-length))
    :customization-color customization-color
    :on-press #(rf/dispatch [:wallet/new-keypair-continue
    Copy link
    Contributor

    Choose a reason for hiding this comment

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

    Should :on-press and :on-change-text use hooks as callback?

    Copy link
    Contributor Author

    Choose a reason for hiding this comment

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

    @mohsen-ghafouri why do we need hooks here?

    Copy link
    Contributor

    @mohsen-ghafouri mohsen-ghafouri Apr 1, 2024

    Choose a reason for hiding this comment

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

    sorry if my comment wasn't clear, it's about new guidelines
    We no longer need to create an anonymous function for rendering
    https://github.com/status-im/status-mobile/blob/develop/doc/ui-guidelines.md

    Copy link
    Contributor Author

    Choose a reason for hiding this comment

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

    Thanks @mohsen-ghafouri :)

    Copy link
    Contributor

    @ulisesmac ulisesmac left a comment

    Choose a reason for hiding this comment

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

    Thanks for addressing the comments @OmarBasem 👍

    Comment on lines 54 to 57
    (> (count value) keypair-name-max-length) (set-error :length)
    (validators/has-emojis? value) (set-error :emoji)
    (validators/has-special-characters? value) (set-error :special-char)
    :else (set-error nil)))
    Copy link
    Contributor

    Choose a reason for hiding this comment

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

    👍

    @OmarBasem OmarBasem force-pushed the wallet/kp-followup branch 3 times, most recently from a662cab to c7cefc4 Compare April 2, 2024 11:04
    @OmarBasem OmarBasem merged commit e2b9e12 into develop Apr 2, 2024
    6 checks passed
    @OmarBasem OmarBasem deleted the wallet/kp-followup branch April 2, 2024 11:44
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    None yet
    Projects
    Archived in project
    Archived in project
    Development

    Successfully merging this pull request may close these issues.

    Validate name for keypair input field
    6 participants