Skip to content

Fix: small gap underneath chat report header#58296

Closed
martasudol wants to merge 9 commits intoExpensify:mainfrom
callstack-internal:small-gap-underneath-report-header-fix
Closed

Fix: small gap underneath chat report header#58296
martasudol wants to merge 9 commits intoExpensify:mainfrom
callstack-internal:small-gap-underneath-report-header-fix

Conversation

@martasudol
Copy link
Contributor

@martasudol martasudol commented Mar 12, 2025

Explanation of Change

This PR fixes the issue with gap underneath chat report header.

Fixed Issues

$#58284

Tests

  1. Navigate to any report with messages.
  2. You should see no gap underneath chat report header.
  • 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: mWeb Chrome
    • iOS: Native
    • iOS: mWeb 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 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 used JaimeGPT to get English > Spanish translation. I then posted it 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 either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
    • 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.ts 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 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(theme.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 the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • 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.
  • I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • 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.

Screenshots/Videos

Android: Native Zrzut ekranu 2025-03-13 o 13 17 43
Android: mWeb Chrome Zrzut ekranu 2025-03-13 o 13 19 07
iOS: Native Zrzut ekranu 2025-03-13 o 13 21 06
iOS: mWeb Safari Zrzut ekranu 2025-03-13 o 13 22 03
MacOS: Chrome / Safari Zrzut ekranu 2025-03-13 o 13 15 31
MacOS: Desktop Zrzut ekranu 2025-03-13 o 13 24 37

@martasudol martasudol marked this pull request as ready for review March 12, 2025 16:01
@martasudol martasudol requested review from a team as code owners March 12, 2025 16:01
@melvin-bot melvin-bot bot requested a review from jjcoffee March 12, 2025 16:01
@melvin-bot
Copy link

melvin-bot bot commented Mar 12, 2025

@jjcoffee 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]

@melvin-bot melvin-bot bot removed the request for review from a team March 12, 2025 16:01
@joekaufmanexpensify
Copy link
Contributor

I'm going to reassign this to @dukenv0307 as this is a regression from a PR they reviewed last week.

@joekaufmanexpensify joekaufmanexpensify requested review from dukenv0307 and removed request for jjcoffee March 12, 2025 16:21
@github-actions
Copy link
Contributor

🚧 @shawnborton has triggered a test app build. You can view the workflow run here.

@dukenv0307
Copy link
Contributor

Reviewing...

@dukenv0307
Copy link
Contributor

I think we should find a better solution, we can easily see the gap in iOS

Screen.Recording.2025-03-13.at.00.12.48.mov

@martasudol
Copy link
Contributor Author

@dukenv0307 could you please retest on the newest version?

@github-actions

This comment has been minimized.

@shawnborton
Copy link
Contributor

This is super minor but I could have sworn we wanted the green loader to be sitting right on top of the bottom border of the report header? Right now it sits directly below the header... so I think it needs to move up by 1px (like if it had top: -1px it would be better):
CleanShot 2025-03-13 at 08 59 20@2x

Is that your take too @Expensify/design ?

@shawnborton
Copy link
Contributor

Also I could have sworn we don't want the edges on the loader to be round either... they do appear slightly round?

Feels like maybe some styles got reverted at some point perhaps?

@martasudol
Copy link
Contributor Author

@shawnborton that looks reasonable to improve. I'll remove rounded edges and move it up. Update soon!

@shawnborton
Copy link
Contributor

Thank you!

@martasudol
Copy link
Contributor Author

@shawnborton could you please retest it? 🙏

@github-actions
Copy link
Contributor

🚧 @shawnborton has triggered a test app build. You can view the workflow run here.

@github-actions
Copy link
Contributor

🧪🧪 Use the links below to test this adhoc build on Android, iOS, Desktop, and Web. Happy testing! 🧪🧪

Android 🤖 iOS 🍎
https://ad-hoc-expensify-cash.s3.amazonaws.com/android/58296/index.html https://ad-hoc-expensify-cash.s3.amazonaws.com/ios/58296/index.html
Android iOS
Android Hybrid 🤖🔄 iOS Hybrid 🍎🔄
❌ FAILED ❌ ❌ FAILED ❌
The QR code can't be generated, because the Android Hybrid build failed The QR code can't be generated, because the iOS Hybrid build failed
Desktop 💻 Web 🕸️
https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/58296/NewExpensify.dmg https://58296.pr-testing.expensify.com
Desktop Web

👀 View the workflow run that generated this build 👀

@shawnborton
Copy link
Contributor

Hmm one thing I am noticing is that there are times when the loader appears on both the LHN and the chat pane on desktop. I thought the idea was that the loader ONLY appears on the LHN on desktop when on the Inbox tab. @martasudol do you know if anything changed in that regard? @nkdengineer is that how you first implemented this?

width: '100%',
position: 'absolute',
top: 'auto',
bottom: -0.5,
Copy link
Contributor

Choose a reason for hiding this comment

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

Sorry, this should be -1px and not a half pixel value.

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 chat header has a bottom border with a height of 1px. Therefore, if we want the element to align in the middle of the border, we need to set it to -0.5px. Let me attach screenshots to show the difference.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

With -0.5px:
Zrzut ekranu 2025-03-13 o 17 23 37

With -1px:
Zrzut ekranu 2025-03-13 o 17 24 12

Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah, understood, but I don't think we want the half pixel. I think -1px makes sense but I can't remember what we were doing before. Can you check for us and let us know?

@dannymcclain
Copy link
Contributor

I thought the idea was that the loader ONLY appears on the LHN on desktop when on the Inbox tab.

Same.

@shawnborton
Copy link
Contributor

@martasudol I see that this PR has a bunch of logic changes and things like that. Could we first just fix the 2px gap we are seeing, and then you can revisit with all of these other code changes? I would love to get this fixed ASAP since it is going to appear slightly broken for all NewDot users.

@martasudol
Copy link
Contributor Author

Hmm one thing I am noticing is that there are times when the loader appears on both the LHN and the chat pane on desktop. I thought the idea was that the loader ONLY appears on the LHN on desktop when on the Inbox tab. @martasudol do you know if anything changed in that regard? @nkdengineer is that how you first implemented this?

The logic for the loading bar in LHN has not been changed. Of course, we can modify this, but all the changes related to loading states (not only in this PR but also in all previous ones) are related only to report view, not LHN. As discussed with @adhorodyski, improving the loading states in LHN would be addressed in the near future.

I think it's a valid point, however not related to this issue. What do you think?

@shawnborton
Copy link
Contributor

Hmm I have never seen it before, hence why I bring it up. Only once I used the adhoc build from this PR did I start seeing the two loaders...

@shawnborton
Copy link
Contributor

Maybe a better approach is to just revert whatever PR caused the gap in the first place then?

@martasudol
Copy link
Contributor Author

Hmm I have never seen it before, hence why I bring it up. Only once I used the adhoc build from this PR did I start seeing the two loaders...
I see it also on staging. Take a look 👇
https://github.com/user-attachments/assets/f174b374-4a79-4860-ba28-6c973829ff30

@shawnborton
Copy link
Contributor

Hmm interesting, I could have sworn we never implemented it this way. @nkdengineer can you please confirm? I'd like to get to the bottom of this one.

@shawnborton
Copy link
Contributor

Maybe a better approach is to just revert whatever PR caused the gap in the first place then?

@martasudol curious what you think about this comment here though ^ this way we can approach these kinds of changes with more time and patience. But right now this is going to make its way to production, as I don't think this was marked as a deploy blocker.

@martasudol
Copy link
Contributor Author

Maybe a better approach is to just revert whatever PR caused the gap in the first place then?

@martasudol curious what you think about this comment here though ^ this way we can approach these kinds of changes with more time and patience. But right now this is going to make its way to production, as I don't think this was marked as a deploy blocker.

Ok, makes sense. Let's do that 👌

@shawnborton
Copy link
Contributor

Okay, are you able to prepare the revert? Apologies as I'm not too familiar with how that process works. Can you link the offending PR here though for posterity and I will ask internally? Thanks!

@nkdengineer
Copy link
Contributor

Hmm interesting, I could have sworn we never implemented it this way. @nkdengineer can you please confirm? I'd like to get to the bottom of this one.

What can I help here?

@shawnborton
Copy link
Contributor

No worries, Marta is on top of it.

@nkdengineer
Copy link
Contributor

Got it.

@dukenv0307
Copy link
Contributor

@martasudol any updates?

@martasudol
Copy link
Contributor Author

@dukenv0307 I'm closing this PR as the issue was fixed by reverting PR causing it.

@martasudol martasudol closed this Mar 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants