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

fix: send message - user navigates to Room tab when dragging to select e-mail from Chat tab #28240

Merged
merged 4 commits into from
Oct 3, 2023

Conversation

akinwale
Copy link
Contributor

Details

Adds the canInterceptSwipe prop to BaseTextInput which is used to stop a tab from swiping when interacting with a focused text input within the tab.

Fixed Issues

$ #28047
PROPOSAL: #28047 (comment)

Tests

  1. Enable the rooms beta, or modify canUseAllBetas to return true.
  2. Launch Expensify
  3. Open the global create menu and select Send message
  4. Enter an email address in the text input in the Chat tab
  5. On web and desktop, verify that attempting to select the text in the text input does result in a swipe to the Room tab.
  6. On native iOS, verify that when the text is in selection mode, dragging the text selection handles does not result in a swipe to the Room tab.
  7. On native Android, verify that when the text input is focused, dragging within the text input does not result in a swipe to the Room tab.
  8. Switch to the Room tab.
  9. Enter some text for the room name.
  10. Run the same verifications for steps 5 through 7 with the room name input.
  • Verify that no errors appear in the JS console

Offline tests

Same as tests.

QA Steps

Same as tests.

  • Verify that no errors appear in the JS console

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Android / native
    • Android / Chrome
    • iOS / native
    • iOS / Safari
    • MacOS / Chrome / Safari
    • MacOS / Desktop
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I followed proper code patterns (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
    • I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
      • If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I followed the guidelines as stated in the Review Guidelines
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
  • I verified that if a function's arguments changed that all usages have also been updated correctly
  • If a new component is created I verified that:
    • A similar component doesn't exist in the codebase
    • All props are defined accurately and each prop has a /** comment above it */
    • The file is named correctly
    • The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
    • The only data being stored in the state is data necessary for rendering and nothing else
    • If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
    • For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
    • Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
    • All JSX used for rendering exists in the render method
    • The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
  • I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
28047-web.mp4
Mobile Web - Chrome

28047-android-chrome

Mobile Web - Safari
28047-ios-safari.mp4
Desktop
28047-desktop.mp4
iOS
28047-ios-native.mp4
Android

28047-android-native

@akinwale akinwale requested a review from a team as a code owner September 26, 2023 08:52
@melvin-bot
Copy link

melvin-bot bot commented Sep 26, 2023

Hey! I see that you made changes to our Form component. Make sure to update the docs in FORMS.md accordingly. Cheers!

@melvin-bot melvin-bot bot requested review from mollfpr and removed request for a team September 26, 2023 08:52
@melvin-bot
Copy link

melvin-bot bot commented Sep 26, 2023

@mollfpr Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

Copy link
Contributor

@mollfpr mollfpr left a comment

Choose a reason for hiding this comment

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

Few comments other looks good.

@@ -129,6 +132,7 @@ const defaultProps = {
icon: null,
shouldUseDefaultValue: false,
multiline: false,
canInterceptSwipe: false,
Copy link
Contributor

Choose a reason for hiding this comment

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

Boolean props should be prefixed with should or is.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Updated. Pushed a new commit.

});

export default responder;
export default SwipeInterceptPanResponder;
Copy link
Contributor

Choose a reason for hiding this comment

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

The same things can be applied to MapView/responder/index.android.ts.

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 responder in MapView/responder/index.android.ts uses onStartShouldSetPanResponder, not onMoveShouldSetPanResponder, so that is different.

Copy link
Contributor

Choose a reason for hiding this comment

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

Ohh I didn't see that 😅

@mollfpr
Copy link
Contributor

mollfpr commented Sep 27, 2023

Reviewer Checklist

  • I have verified the author checklist is complete (all boxes are checked off).
  • I verified the correct issue is linked in the ### Fixed Issues section above
  • I verified testing steps are clear and they cover the changes made in this PR
    • I verified the steps for local testing are in the Tests section
    • I verified the steps for Staging and/or Production testing are in the QA steps section
    • I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
  • I checked that screenshots or videos are included for tests on all platforms
  • I included screenshots or videos for tests on all platforms
  • I verified tests pass on all platforms & I tested again on:
    • Android / native
    • Android / Chrome
    • iOS / native
    • iOS / Safari
    • MacOS / Chrome / Safari
    • MacOS / Desktop
  • If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
  • I verified proper code patterns were followed (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
    • I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I verified that this PR follows the guidelines as stated in the Review Guidelines
  • I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
  • If a new component is created I verified that:
    • A similar component doesn't exist in the codebase
    • All props are defined accurately and each prop has a /** comment above it */
    • The file is named correctly
    • The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
    • The only data being stored in the state is data necessary for rendering and nothing else
    • For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
    • Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
    • All JSX used for rendering exists in the render method
    • The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
  • I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
28240.Web.mp4
Mobile Web - Chrome
28240.mWeb-Chrome.mp4
Mobile Web - Safari
28240.mWeb-Safari.mp4
Desktop
28240.Desktop.mp4
iOS
28240.iOS.mp4
Android
28240.Android.mp4

@mollfpr
Copy link
Contributor

mollfpr commented Sep 27, 2023

@akinwale There's an issue with Android. The text input on the chat tab won't be focused after swiping from the room tab.

Screen_Recording_20230927_234832_New.Expensify.Dev.mp4

@akinwale
Copy link
Contributor Author

@akinwale There's an issue with Android. The text input on the chat tab won't be focused after swiping from the room tab.

@mollfpr I am not able to reproduce this behaviour. Not sure what could be causing it as the responder shouldn't affect clicks or single taps, only movement gestures. Maybe the Android emulator was not responsive at that particular point in time? Could you try clicking elsewhere on the screen to see if the inputs register?

Screencast.from.28-09-2023.05.02.49.webm

@akinwale
Copy link
Contributor Author

@mollfpr bump. Any luck?

@mollfpr
Copy link
Contributor

mollfpr commented Sep 29, 2023

@akinwale The issue I encountered doesn't reproduce on the emulator. The video I attached is using a Samsung physical device.

Still no luck on the physical device 🥲

@akinwale
Copy link
Contributor Author

@mollfpr Not sure why Samsung devices are behaving differently here, but I've modified the code so that shouldInterceptSwipe is false by default for Android. Since the swiping when selecting does not affect Android the same way, this should be fine. All other platforms should work as expected.

Pushed a new commit.

@mollfpr
Copy link
Contributor

mollfpr commented Sep 29, 2023

Thanks @akinwale for the quick fix! I'll complete the test now!

Copy link
Contributor

@mollfpr mollfpr left a comment

Choose a reason for hiding this comment

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

LGTM and tests well 👍

@melvin-bot melvin-bot bot requested a review from puneetlath October 1, 2023 12:18
});

export default responder;
export default SwipeInterceptPanResponder;
Copy link
Contributor

Choose a reason for hiding this comment

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

What's the point of this file if all it does is export another file. Do we need 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.

My reasoning here was to try to maintain the responder file structure since we have platform-specific implementations for web, iOS and Android. It's not "strictly" needed.

Copy link
Contributor Author

@akinwale akinwale Oct 2, 2023

Choose a reason for hiding this comment

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

@puneetlath Looks like I lied. The TypeScript Checks job fails if there is no index.ts file present, so this is actually needed for now.

Copy link
Contributor

Choose a reason for hiding this comment

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

Ok got it!

@akinwale
Copy link
Contributor Author

akinwale commented Oct 3, 2023

@puneetlath This did not get merged yet. Is that intentional?

@puneetlath puneetlath merged commit 18e051a into Expensify:main Oct 3, 2023
27 checks passed
@puneetlath
Copy link
Contributor

Whoops! Thanks for the bump.

@OSBotify
Copy link
Contributor

OSBotify commented Oct 3, 2023

✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

@github-actions github-actions bot added the DeployBlockerCash This issue or pull request should block deployment label Oct 3, 2023
@github-actions
Copy link
Contributor

github-actions bot commented Oct 3, 2023

Performance Comparison Report 📊

Significant Changes To Duration

Name Duration
App start TTI 1224.471 ms → 1288.333 ms (+63.862 ms, +5.2%) 🔴
App start runJsBundle 842.129 ms → 898.438 ms (+56.308 ms, +6.7%) 🔴
Show details
Name Duration
App start TTI Baseline
Mean: 1224.471 ms
Stdev: 44.214 ms (3.6%)
Runs: 1128.0645090001635 1152.122678999789 1157.4311060002074 1170.0288340002298 1174.3338549998589 1174.7006799997762 1186.8091850001365 1190.922143000178 1196.4230419998057 1198.740385999903 1200.2116950000636 1207.8687909999862 1212.2794300001115 1215.7957990001887 1220.2699520001188 1229.8506579999812 1233.7647179998457 1237.8327660001814 1244.109924999997 1247.2961289999075 1253.0166059997864 1254.8654299997725 1254.8711430002004 1258.3698060000315 1258.7815539999865 1263.7835599998944 1264.6848149998114 1274.0634829998016 1297.6339289997704 1299.689100000076 1299.9801630000584

Current
Mean: 1288.333 ms
Stdev: 34.536 ms (2.7%)
Runs: 1217.8729220000096 1218.0044060000218 1223.2944370000623 1242.1284440001473 1242.313047000207 1251.0838529998437 1253.7134090000764 1269.201214000117 1270.8023769999854 1279.071008999832 1280.0936409998685 1287.442311000079 1289.4520780001767 1291.929051999934 1292.289137000218 1292.8480259999633 1295.4890009998344 1296.7392350002192 1298.6030469997786 1300.4841709998436 1302.1043920000084 1308.2509599998593 1310.4991290001199 1314.8919409997761 1315.7747059999965 1320.988628000021 1326.4481259998865 1327.2063350002281 1327.4812900000252 1343.3655349998735 1348.4466340001673
App start runJsBundle Baseline
Mean: 842.129 ms
Stdev: 29.505 ms (3.5%)
Runs: 769 796 803 804 811 818 821 822 829 831 833 834 834 836 838 840 842 842 843 844 849 854 864 868 872 873 876 885 888 893 894

Current
Mean: 898.438 ms
Stdev: 30.387 ms (3.4%)
Runs: 841 841 853 856 856 860 863 867 875 879 890 894 894 895 904 905 905 906 908 912 915 919 919 923 923 928 928 932 935 940 941 943

Meaningless Changes To Duration

Show entries
Name Duration
App start nativeLaunch 20.966 ms → 21.867 ms (+0.901 ms, +4.3%)
App start regularAppStart 0.019 ms → 0.015 ms (-0.004 ms, -18.5%) 🟢
Open Search Page TTI 624.977 ms → 624.119 ms (-0.858 ms, ±0.0%)
Show details
Name Duration
App start nativeLaunch Baseline
Mean: 20.966 ms
Stdev: 1.991 ms (9.5%)
Runs: 18 19 19 19 19 19 20 20 20 20 20 20 20 20 20 21 21 21 21 21 22 22 22 22 23 23 23 26 27

Current
Mean: 21.867 ms
Stdev: 1.945 ms (8.9%)
Runs: 19 19 19 20 20 20 20 20 20 21 21 21 21 21 21 22 22 23 23 23 23 23 23 23 23 24 24 25 26 26
App start regularAppStart Baseline
Mean: 0.019 ms
Stdev: 0.002 ms (8.9%)
Runs: 0.015828999690711498 0.0165200000628829 0.017210999969393015 0.017211999744176865 0.01733399974182248 0.017455999739468098 0.017537000123411417 0.0176189998164773 0.017619000282138586 0.0179449999704957 0.01798499980941415 0.018066999968141317 0.01822899980470538 0.018309999722987413 0.018351999577134848 0.01859499979764223 0.018717999570071697 0.018880000337958336 0.018920999951660633 0.019328000023961067 0.019328000023961067 0.020345000084489584 0.02038600016385317 0.02038600016385317 0.020426000002771616 0.020508000161498785 0.0206709997728467 0.021118000149726868 0.02119999984279275 0.021524999756366014 0.023641000036150217

Current
Mean: 0.015 ms
Stdev: 0.001 ms (6.5%)
Runs: 0.013224000111222267 0.014038000255823135 0.014120000414550304 0.014405000023543835 0.014527000021189451 0.014607999939471483 0.01464799977838993 0.014648000244051218 0.014688999857753515 0.014689000323414803 0.014728999696671963 0.014810999855399132 0.014891999773681164 0.014934000093489885 0.015054999850690365 0.015461999922990799 0.015503000002354383 0.015746999997645617 0.01582799991592765 0.01590999960899353 0.016032000072300434 0.016112999990582466 0.016193999908864498 0.016276000067591667 0.01643899967893958 0.0165200000628829 0.0165200000628829 0.01680499967187643 0.016926999669522047 0.017050000373274088 0.017211999744176865
Open Search Page TTI Baseline
Mean: 624.977 ms
Stdev: 26.849 ms (4.3%)
Runs: 594.1384279998019 594.1949060000479 595.3333740001544 596.1686610002071 598.7004800001159 600.7960620000958 601.7860520002432 602.8890790003352 603.2925219996832 603.3828940000385 604.1496179997921 605.102824000176 605.8260089997202 608.749023000244 610.2664389996789 620.9254160001874 621.9108480000868 622.1217860002071 627.2670900002122 627.6903900001198 630.9815669995733 638.212036000099 640.8149010003544 642.9309489997104 644.9005530001596 645.4880369999446 646.6892500002868 653.7978520002216 669.094197999686 669.4975589998066 676.1017660000362 696.0728360000066

Current
Mean: 624.119 ms
Stdev: 23.942 ms (3.8%)
Runs: 593.9942220002413 594.2893480001949 595.141643000301 595.2970790001564 595.9793300000019 599.994670000393 606.2725829998963 606.4125169999897 607.9452309999615 609.1399750001729 609.2626150003634 609.4371750000864 609.7756349998526 610.2342530000024 611.6854659998789 611.9128419999033 617.9620769997127 621.2078859996982 624.0313729997724 624.1833500000648 625.5317389997654 627.1077069998719 629.3986410000362 635.50052900007 638.0630699996836 643.7565919999033 649.8736979998648 657.676351999864 663.2147619999014 663.7159020002 667.7110600001179 668.2137450003065 672.0115560004488

@github-actions
Copy link
Contributor

github-actions bot commented Oct 3, 2023

@Expensify/mobile-deployers 📣 Please look into this performance regression as it's a deploy blocker.

@OSBotify
Copy link
Contributor

OSBotify commented Oct 5, 2023

🚀 Deployed to staging by https://github.com/puneetlath in version: 1.3.78-0 🚀

platform result
🤖 android 🤖 success ✅
🖥 desktop 🖥 success ✅
🍎 iOS 🍎 success ✅
🕸 web 🕸 success ✅

@OSBotify
Copy link
Contributor

OSBotify commented Oct 6, 2023

🚀 Deployed to production by https://github.com/Beamanator in version: 1.3.78-4 🚀

platform result
🤖 android 🤖 success ✅
🖥 desktop 🖥 success ✅
🍎 iOS 🍎 failure ❌
🕸 web 🕸 success ✅

@OSBotify
Copy link
Contributor

OSBotify commented Oct 6, 2023

🚀 Deployed to staging by https://github.com/puneetlath in version: 1.3.79-0 🚀

platform result
🤖 android 🤖 success ✅
🖥 desktop 🖥 success ✅
🍎 iOS 🍎 success ✅
🕸 web 🕸 success ✅

@OSBotify
Copy link
Contributor

OSBotify commented Oct 9, 2023

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.79-5 🚀

platform result
🤖 android 🤖 success ✅
🖥 desktop 🖥 failure ❌
🍎 iOS 🍎 failure ❌
🕸 web 🕸 success ✅

@OSBotify
Copy link
Contributor

OSBotify commented Oct 9, 2023

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.79-5 🚀

platform result
🤖 android 🤖 success ✅
🖥 desktop 🖥 cancelled 🔪
🍎 iOS 🍎 failure ❌
🕸 web 🕸 success ✅

@OSBotify
Copy link
Contributor

OSBotify commented Oct 9, 2023

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.79-5 🚀

platform result
🤖 android 🤖 success ✅
🖥 desktop 🖥 success ✅
🍎 iOS 🍎 failure ❌
🕸 web 🕸 success ✅

@@ -129,6 +132,7 @@ const defaultProps = {
icon: null,
shouldUseDefaultValue: false,
multiline: false,
shouldInterceptSwipe: false,
Copy link
Contributor

Choose a reason for hiding this comment

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

Hii @akinwale @mollfpr, coming from this issue, do you guys think we can make default value of shouldInterceptSwipe as true for inputs? Since we would never swippable inputs I guess. Thanks

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@Krishna2323 Just caught up on this. The default can be set to true but you have to check to make sure that text selection still works as expected especially on Android and iOS native platforms.

Copy link
Contributor

Choose a reason for hiding this comment

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

Sure, thanks a lot :)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@Krishna2323 This is why it was set to false in the first place: #28240 (comment)

You would need to test on a physical Samsung device.

Copy link
Contributor

Choose a reason for hiding this comment

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

Then I guess its safe to fix only this instance. We are only using tab navigator in 2 places.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
DeployBlockerCash This issue or pull request should block deployment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants