App icon indicating copy to clipboard operation
App copied to clipboard

[$250] Web - Thread - Switching to Search and back after clicking "Join thread" opens the report

Open IuliiaHerets opened this issue 1 year ago • 34 comments

If you haven’t already, check out our contributing guidelines for onboarding and email [email protected] to request to join our Slack channel!


Version Number: v9.0.61-0 Reproducible in staging?: Y Reproducible in production?: Y Email or phone of affected tester (no customers): [email protected] Issue reported by: Applause Internal Team

Action Performed:

  1. (User A) Send any message to 1:1 conversation for the account you have access to
  2. (User B) go to the new message from User A and open context menu
  3. (User B) Click "Join Thread"
  4. Navigating to Settings/Search and go to Inbox again

Expected Result:

The "Join Thread" option should not navigate to the report.

Actual Result:

"Join thread" option navigates to the report page after navigating to other bottom navigations like Search or Setting and returning back to inbox.

Workaround:

Unknown

Platforms:

  • [ ] Android: Standalone
  • [ ] Android: HybridApp
  • [ ] Android: mWeb Chrome
  • [ ] iOS: Standalone
  • [ ] iOS: HybridApp
  • [ ] iOS: mWeb Safari
  • [x] MacOS: Chrome / Safari
  • [ ] MacOS: Desktop

Screenshots/Videos

https://github.com/user-attachments/assets/55c0e212-9e0c-459e-8fe4-c83ee1eb9cec

View all open jobs on GitHub

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~021858763130278701100
  • Upwork Job ID: 1858763130278701100
  • Last Price Increase: 2024-12-03
  • Automatic offers:
    • mkzie2 | Contributor | 105221093
Issue OwnerCurrent Issue Owner: @parasharrajat

IuliiaHerets avatar Nov 13 '24 12:11 IuliiaHerets

Triggered auto assignment to @stephanieelliott (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details. Please add this bug to a GH project, as outlined in the SO.

melvin-bot[bot] avatar Nov 13 '24 12:11 melvin-bot[bot]

Edited by proposal-police: This proposal was edited at 2024-11-13 13:06:19 UTC.

Proposal

Please re-state the problem that we are trying to solve in this issue.

Web - Thread - Noting happen when clicking "Join thread" button unless returning to inbox again

What is the root cause of that problem?

When we press the join button openReport is called with new child report id here https://github.com/Expensify/App/blob/4d9be4eb2537b49fa6cf35135770cf3c6d62a1cd/src/libs/actions/Report.ts#L1871 and that will set the visitedTime of the child report to the current time https://github.com/Expensify/App/blob/084a711842d6be379b18491ebe2cc6b48280006e/src/libs/actions/Report.ts#L832 so when we navigate back to the inbox the empty child report will be opened as it is the last accessed report according to its visitedTime

What changes do you think we should make in order to solve the problem?

We should not set the lastVisitedTime for the child report on join as we are not visiting it only subscribing to it. So:

add optional shouldSetVisitedTime param for openReport

shouldSetVisitedTime = true,

https://github.com/Expensify/App/blob/084a711842d6be379b18491ebe2cc6b48280006e/src/libs/actions/Report.ts#L832



                ...(shouldSetVisitedTime && {lastVisitTime: DateUtils.getDBTime()}),

and pass as false for open reports in join thread for both when the childReport exists or not https://github.com/Expensify/App/blob/084a711842d6be379b18491ebe2cc6b48280006e/src/libs/actions/Report.ts#L1900

        openReport(childReportID, undefined, undefined, undefined, undefined, undefined, undefined, undefined, false);

https://github.com/Expensify/App/blob/084a711842d6be379b18491ebe2cc6b48280006e/src/libs/actions/Report.ts#L1926

        openReport(newChat.reportID, '', participantLogins, newChat, parentReportAction.reportActionID, false);

What alternative solutions did you explore? (Optional)

FitseTLT avatar Nov 13 '24 13:11 FitseTLT

Edited by proposal-police: This proposal was edited at 2024-11-19 08:56:27 UTC.

Proposal

Please re-state the problem that we are trying to solve in this issue.

"Join thread" option navigating to "reply in thread" page after navigating to other bottom navigations like Search or Setting and returning back to inbox

What is the root cause of that problem?

  • Firstly, we need to explain why the join thread option is only shown in non-thread actions of other user

The difference is here, if reportAction?.childReportNotificationPreference is undefined, getChildReportNotificationPreference function returns always if the user is the creator of the action, otherwise it returns hidden

https://github.com/Expensify/App/blob/b1c1a4b53746f6e9ba0a7853faaf42695ca4c067/src/pages/home/report/ContextMenu/ContextMenuActions.tsx#L305

https://github.com/Expensify/App/blob/b1c1a4b53746f6e9ba0a7853faaf42695ca4c067/src/libs/ReportUtils.ts#L1762-L1768

  • When we click on Join thread, a new report is created and when we go back from search it is displayed as the last accessed report

https://github.com/Expensify/App/blob/b1c1a4b53746f6e9ba0a7853faaf42695ca4c067/src/libs/actions/Report.ts#L1843

What changes do you think we should make in order to solve the problem?

I think the way we update lastVisitTime here is incorrect. It was added here. According to my understanding , lastVisitTime saves the last time we opened a report (the report screen is focused).

https://github.com/Expensify/App/blob/f810ac6d4eb6ad0f70cae37738d1e23d5b0a1585/src/libs/actions/Report.ts#L832

Call openReport doesn't mean we navigate to this report and we handled in ReportScreen here to update lastVisitTime whenever the ReportScreen is focused so we can remove the wrong logic here

https://github.com/Expensify/App/blob/f810ac6d4eb6ad0f70cae37738d1e23d5b0a1585/src/libs/actions/Report.ts#L832

What alternative solutions did you explore? (Optional)

mkzie2 avatar Nov 13 '24 14:11 mkzie2

Agree this seems buggy, adding labels.

stephanieelliott avatar Nov 19 '24 06:11 stephanieelliott

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

melvin-bot[bot] avatar Nov 19 '24 06:11 melvin-bot[bot]

Triggered auto assignment to Contributor-plus team member for initial proposal review - @parasharrajat (External)

melvin-bot[bot] avatar Nov 19 '24 06:11 melvin-bot[bot]

Both of the proposals lack clear explanations.

  1. @FitseTLT When you say non-parent actions, what does that mean? Please don't use purely technical terms in explanations. It will help make it more readable. There are non-technical persons also reading these proposals.
  2. @mkzie2 You didn't explain what you are trying to achieve in your alternative solution. It just mentions changes.

Apart from this, the expected behavior here should be that the user does not navigate to the thread in any way. Please update your proposals for it. Ref: https://github.com/Expensify/App/pull/27994

parasharrajat avatar Nov 19 '24 08:11 parasharrajat

@parasharrajat I updated my alternative solution.

mkzie2 avatar Nov 19 '24 08:11 mkzie2

@parasharrajat I have tried to make it more readable based on your suggestion. Can you check it again? Thx

FitseTLT avatar Nov 19 '24 10:11 FitseTLT

Thanks, both of you. But I think you missed the following part of the comment.

Apart from this, the expected behavior here should be that the user does not navigate to the thread in any way. Please update your proposals for it. Ref: https://github.com/Expensify/App/pull/27994

parasharrajat avatar Nov 19 '24 12:11 parasharrajat

Apart from this, the expected behavior here should be that the user does not navigate to the thread in any way.

@parasharrajat What does that mean? My alternative solution will only hide the Join thread, not add any navigate to thread logic.

mkzie2 avatar Nov 19 '24 12:11 mkzie2

Thanks, both of you. But I think you missed the following part of the comment.

Apart from this, the expected behavior here should be that the user does not navigate to the thread in any way. Please update your proposals for it. Ref: #27994

@parasharrajat I have not proposed to navigate to the thread on join thread but only make the join thread option to be available only if the thread linked to the report action exists. Is there anything you haven't understood?

FitseTLT avatar Nov 19 '24 12:11 FitseTLT

I am telling the expected behaviour for this issue. It's not a feedback for any proposal.

parasharrajat avatar Nov 19 '24 12:11 parasharrajat

I am telling the expected behaviour for this issue. It's not a feedback for any proposal.

@parasharrajat There is no navigation going on join thread even on current main, the current issue is making the impression of it happening. When you navigate back to Inbox from search we open the recently accessed report but on join thread we called openReport, so that the previously unsubscribed chat thread will be available in FE, but that openReport request will make the chat thread as the lastAccessedReport, hence, that's why it navigates to the joined new chat thread on going back to inbox as shown in the OP.

But the purpose of the join thread button is, as clearly indicated in the PR you linked, to allow a user join back a thread they have unsubscribed. Thus, we shouldn't show the join thread menu for report actions that are not yet have a linked child report/ chat thread.

FitseTLT avatar Nov 19 '24 13:11 FitseTLT

I am telling the expected behaviour for this issue. It's not a feedback for any proposal.

When we click on Join thread, a new report is created and when we go back from search it is displayed as the last accessed report

@parasharrajat As I explained in the RCA, the thread is opened after going back from the search page because it's a newly created report. With my alternative solution, no new report is created then this bug doesn't happen.

mkzie2 avatar Nov 19 '24 14:11 mkzie2

It is briefly mentioned here https://github.com/Expensify/App/pull/27994#discussion_r1364689708. IT should work like get Notified about replied feature of Slack.

I agree that navigation is happening due to lastaccessed report and openReport call. But that is what I am saying that it should not happen here.

But the purpose of the join thread button is, as clearly indicated in the PR you linked, to allow a user join back a thread they have unsubscribed. Thus, we shouldn't show the join thread menu for report actions that are not yet have a linked child report/ chat thread.

This is absolutely correct but this feature also works for chats where no thread is created so far.

Subscribing to a thread without comments (Need 2 users, User A and User B):

  1. With User B, comment in a chat
  2. With User A, subscribe to the comment that was just created
  3. With User B, reply to the comment
  4. Ensure that the thread shows up in User As LHN and they receive a notification
  5. Verify that no errors appear in the JS console

Here are the test steps for this one from that PR.

parasharrajat avatar Nov 20 '24 13:11 parasharrajat

@srikarparsi Can you please help us clarify the purpose of this feature?

parasharrajat avatar Nov 20 '24 13:11 parasharrajat

Sorry, the purpose of Join thread? If so, yes it should mimic get Notified about replied in replies. It shouldn't open the thread report.

srikarparsi avatar Nov 21 '24 00:11 srikarparsi

@parasharrajat, @stephanieelliott Huh... This is 4 days overdue. Who can take care of this?

melvin-bot[bot] avatar Nov 26 '24 09:11 melvin-bot[bot]

📣 It's been a week! Do we have any satisfactory proposals yet? Do we need to adjust the bounty for this issue? 💸

melvin-bot[bot] avatar Nov 26 '24 16:11 melvin-bot[bot]

I hope the purpose and expected behavior is clear now. Could you please update your proposals as per expected behavior?

@mkzie2 @FitseTLT

parasharrajat avatar Nov 26 '24 17:11 parasharrajat

I hope the purpose and expected behavior is clear now. Could you please update your proposals as per expected behavior?

@mkzie2 @FitseTLT

@parasharrajat Updated

FitseTLT avatar Nov 26 '24 18:11 FitseTLT

@parasharrajat @stephanieelliott this issue was created 2 weeks ago. Are we close to approving a proposal? If not, what's blocking us from getting this issue assigned? Don't hesitate to create a thread in #expensify-open-source to align faster in real time. Thanks!

melvin-bot[bot] avatar Nov 27 '24 09:11 melvin-bot[bot]

@parasharrajat Updated proposal.

mkzie2 avatar Nov 27 '24 09:11 mkzie2

Thanks, both of you. Doing some research...and reviewing your proposals.

parasharrajat avatar Nov 27 '24 10:11 parasharrajat

@parasharrajat, @stephanieelliott Huh... This is 4 days overdue. Who can take care of this?

melvin-bot[bot] avatar Dec 03 '24 09:12 melvin-bot[bot]

📣 It's been a week! Do we have any satisfactory proposals yet? Do we need to adjust the bounty for this issue? 💸

melvin-bot[bot] avatar Dec 03 '24 16:12 melvin-bot[bot]

Hey @parasharrajat have you had a chance to review the proposals?

stephanieelliott avatar Dec 04 '24 00:12 stephanieelliott

Looks like there is no answer so far to my question, I have asked in slack for that. Let's wait for sometime to get the answer first.

parasharrajat avatar Dec 04 '24 06:12 parasharrajat

This is being discussed in Slack here: https://expensify.slack.com/archives/C01GTK53T8Q/p1733293681138239

stephanieelliott avatar Dec 06 '24 03:12 stephanieelliott