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

[$500] [MEDIUM] Migrate the EmojiPickerMenu to Flashlist #30911

Closed
mountiny opened this issue Nov 6, 2023 · 50 comments
Closed

[$500] [MEDIUM] Migrate the EmojiPickerMenu to Flashlist #30911

mountiny opened this issue Nov 6, 2023 · 50 comments
Assignees
Labels
Daily KSv2 External Added to denote the issue can be worked on by a contributor Help Wanted Apply this label when an issue is open to proposals by contributors NewFeature Something to build that is a new item. Reviewing Has a PR in review

Comments

@mountiny
Copy link
Contributor

mountiny commented Nov 6, 2023

Part of #28902

Let's migrate EmojiPickerMenu to use Flashlist component instead of FlatList

Callstack is working on the migration right now.

Lets use this issue for daily updates on this migration

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~01717c0ee29a49c13a
  • Upwork Job ID: 1757786794067501056
  • Last Price Increase: 2024-02-14
@mountiny mountiny added Daily KSv2 Bug Something is broken. Auto assigns a BugZero manager. labels Nov 6, 2023
Copy link

melvin-bot bot commented Nov 6, 2023

Triggered auto assignment to @sophiepintoraetz (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Copy link

melvin-bot bot commented Nov 6, 2023

Bug0 Triage Checklist (Main S/O)

  • This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
  • This bug is not a duplicate report (check E/App issues and #expensify-bugs)
    • If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead
  • This bug is reproducible using the reproduction steps in the OP. S/O
    • If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
    • If the reproduction steps aren't clear and you determine the correct steps, please update the OP.
  • This issue is filled out as thoroughly and clearly as possible
    • Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.
  • I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

@TMisiukiewicz
Copy link
Contributor

Hi, I'm Tomasz from Callstack, I'd like to work on that issue

@roryabraham
Copy link
Contributor

@TMisiukiewicz do you expect to make daily progress on this issue?

@TMisiukiewicz
Copy link
Contributor

@roryabraham yes, this issue will be my main focus starting from tomorrow 👍

@esh-g
Copy link
Contributor

esh-g commented Nov 6, 2023

@TMisiukiewicz
Copy link
Contributor

Started working on migrating the EmojiPickerMenu for web.

@TMisiukiewicz
Copy link
Contributor

No progress today, as I had to work on some regressions and i was investigating failing tests in LHNOptionList migration. I'm off Thursday and Friday, in case there is a need of pushing this forward before Monday, I know @vitHoracek already pinged CK team if anyone could grab this

@shubham1206agra
Copy link
Contributor

I think this issue is related #30948

@melvin-bot melvin-bot bot added the Overdue label Nov 10, 2023
Copy link

melvin-bot bot commented Nov 13, 2023

@TMisiukiewicz, @sophiepintoraetz, @roryabraham Huh... This is 4 days overdue. Who can take care of this?

1 similar comment
Copy link

melvin-bot bot commented Nov 13, 2023

@TMisiukiewicz, @sophiepintoraetz, @roryabraham Huh... This is 4 days overdue. Who can take care of this?

@TMisiukiewicz
Copy link
Contributor

Back to work on this task today and continued with migration of the web component. Working on adopting the styles to the list correctly with FlashList, since it does not support e.g. contentContainerStyle properties other than background and padding.

Regarding the issue mentioned above, it proposes using updateCellsBatchingPeriod prop, which is unavailable in FlashList. I'd suggest implementing FlashList first, and then, if the issue still exists, fixing it with the solution available in FlashList.

@melvin-bot melvin-bot bot removed the Overdue label Nov 13, 2023
@TMisiukiewicz
Copy link
Contributor

Still in progress, my initial idea was to create separate PRs for web and mobile to ship first part of my work faster, but today I found out some changes in EmojiPickerMenuItem styles need to be done, so it affects all platforms.

@TMisiukiewicz
Copy link
Contributor

Some minor CSS updates and fixing scroll to index left for web, then I'll take care of mobile version

@TMisiukiewicz
Copy link
Contributor

Some minor things to be re-checked, I should create a PR tomorrow.

@strepanier03 strepanier03 added NewFeature Something to build that is a new item. and removed NewFeature Something to build that is a new item. labels Feb 1, 2024
Copy link

melvin-bot bot commented Feb 1, 2024

@muttmuure muttmuure moved this from CRITICAL to MEDIUM in [#whatsnext] #quality Feb 2, 2024
@muttmuure muttmuure changed the title [CRITICAL] Migrate the EmojiPickerMenu to Flashlist [MEDIUM] Migrate the EmojiPickerMenu to Flashlist Feb 2, 2024
@alexpensify
Copy link
Contributor

Catching up here, looks like we are moving forward.

Copy link

melvin-bot bot commented Feb 2, 2024

⚠️ Looks like this issue was linked to a Deploy Blocker here

If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.

If a regression has occurred and you are the assigned CM follow the instructions here.

If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.

@roryabraham
Copy link
Contributor

The minor regression was not treated as a blocker, and has already been fixed.

@roryabraham
Copy link
Contributor

Hey @TMisiukiewicz 👋🏼

I think there's still more we can do to DRY up the implementation between web and native. I know appreciate you helping us work through all this technical debt. A few suggestions/observations:

  • On web we're using throttle for filterEmojis, on native we're using debounce. It seems like it should be safe to just use debounce on both platforms. Let's try setting the timeout to 200ms (which should be fast enough that you don't really notice a delay), but long enough that we're not doing a ton of extra work. In the long run (after we get the new arch + concurrent react set up), I think we'll probably want to replace most of these usages of debounce + setState with startTransition
  • It looks like there are some unnecessary differences between web and mobile around emojiListRef / scrollToHeader. I think that both of those can probably be moved to the base implementation
  • If we create a useMouseMoveHandler hook that's a no-op on mobile (at least, for now) then we can DRY up the mouseMoveHandler logic and move that to the base implementation.

There might be more, but these seem like low-hanging fruit.

@TMisiukiewicz
Copy link
Contributor

hey @roryabraham! My hands are full right now with some stuff with high priority, but I can get back to this once I'm done with it. Thanks for pointing out the parts to focus on, if I have any other observations what could be potentially DRYed up, I'll post them here as well 👍

@roryabraham
Copy link
Contributor

Ok, sounds good. I think this can be treated as kind of lower priority for now as it doesn't really affect users and is more about code quality

@jjcoffee
Copy link
Contributor

jjcoffee commented Feb 8, 2024

@alexpensify Would you be able to assign me to the issue as I reviewed the PR? Thanks!

@alexpensify
Copy link
Contributor

Yep, done!

@alexpensify
Copy link
Contributor

Weekly Update: Making progress here

@jjcoffee
Copy link
Contributor

jjcoffee commented Feb 14, 2024

@alexpensify I think the payment for PR review on this is due as the PR hit production last week. 🙇 Not sure why the automation failed!

@alexpensify
Copy link
Contributor

@jjcoffee - thanks for flagging, I'll work on the next steps since automation didn't kick in here.

@alexpensify alexpensify added the External Added to denote the issue can be worked on by a contributor label Feb 14, 2024
@melvin-bot melvin-bot bot changed the title [MEDIUM] Migrate the EmojiPickerMenu to Flashlist [$500] [MEDIUM] Migrate the EmojiPickerMenu to Flashlist Feb 14, 2024
Copy link

melvin-bot bot commented Feb 14, 2024

Job added to Upwork: https://www.upwork.com/jobs/~01717c0ee29a49c13a

@melvin-bot melvin-bot bot added the Help Wanted Apply this label when an issue is open to proposals by contributors label Feb 14, 2024
Copy link

melvin-bot bot commented Feb 14, 2024

Current assignee @jjcoffee is eligible for the External assigner, not assigning anyone new.

@melvin-bot melvin-bot bot added Daily KSv2 and removed Weekly KSv2 labels Feb 14, 2024
@alexpensify
Copy link
Contributor

@jjcoffee please accept the offer in Upwork - https://www.upwork.com/jobs/~01717c0ee29a49c13a

Thanks!

@jjcoffee
Copy link
Contributor

@alexpensify Accepted, thanks!

@alexpensify
Copy link
Contributor

Here is the payment summary:

  • External issue reporter - N/A
  • Contributor that fixed the issue - @TMisiukiewicz is from an agency-contributor and not due payment
  • Contributor+ that helped on the issue and/or PR - @jjcoffee paid $500

Upwork Job: https://www.upwork.com/jobs/~01717c0ee29a49c13a

Extra Notes regarding payment: @jjcoffee has been paid via Upwork.

@github-project-automation github-project-automation bot moved this from MEDIUM to Done in [#whatsnext] #quality Feb 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Daily KSv2 External Added to denote the issue can be worked on by a contributor Help Wanted Apply this label when an issue is open to proposals by contributors NewFeature Something to build that is a new item. Reviewing Has a PR in review
Projects
Development

No branches or pull requests