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

[HOLD for payment 2024-04-15] [$125] Change the order of items in the global create #38950

Closed
thienlnam opened this issue Mar 25, 2024 · 18 comments
Assignees
Labels
Awaiting Payment Auto-added when associated PR is deployed to production Daily KSv2 Engineering External Added to denote the issue can be worked on by a contributor

Comments

@thienlnam
Copy link
Contributor

thienlnam commented Mar 25, 2024

https://expensify.slack.com/archives/C066HJM2CAZ/p1711236684276869

Currently:
image

Should be:
Start chat
Track expense
Request money (soon to be Submit expense)
Send money (soon to be Pay someone)
Assign task

Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~01935b1cfdaa846be8
  • Upwork Job ID: 1773048936208711680
  • Last Price Increase: 2024-03-27
  • Automatic offers:
    • akinwale | Reviewer | 0
    • ShridharGoel | Contributor | 0
@ShridharGoel
Copy link
Contributor

ShridharGoel commented Mar 25, 2024

Proposal

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

Change the order of items in the global create.

What is the root cause of that problem?

New change.

This is the order currently:

menuItems={[
{
icon: Expensicons.ChatBubble,
text: translate('sidebarScreen.fabNewChat'),
onSelected: () => interceptAnonymousUser(() => Navigation.navigate(ROUTES.NEW)),
},
{
icon: Expensicons.MoneyCircle,
text: translate('iou.requestMoney'),
onSelected: () =>
interceptAnonymousUser(() =>
IOU.startMoneyRequest(
CONST.IOU.TYPE.REQUEST,
// When starting to create a money request from the global FAB, there is not an existing report yet. A random optimistic reportID is generated and used
// for all of the routes in the creation flow.
ReportUtils.generateReportID(),
),
),
},
{
icon: Expensicons.Send,
text: translate('iou.sendMoney'),
onSelected: () =>
interceptAnonymousUser(() =>
IOU.startMoneyRequest(
CONST.IOU.TYPE.SEND,
// When starting to create a send money request from the global FAB, there is not an existing report yet. A random optimistic reportID is generated and used
// for all of the routes in the creation flow.
ReportUtils.generateReportID(),
),
),
},
...(canUseTrackExpense
? [
{
icon: Expensicons.DocumentPlus,
text: translate('iou.trackExpense'),
onSelected: () =>
interceptAnonymousUser(() =>
IOU.startMoneyRequest(
CONST.IOU.TYPE.TRACK_EXPENSE,
// When starting to create a track expense from the global FAB, we need to retrieve selfDM reportID.
// If it doesn't exist, we generate a random optimistic reportID and use it for all of the routes in the creation flow.
ReportUtils.findSelfDMReportID() || ReportUtils.generateReportID(),
),
),
},
]
: []),
{
icon: Expensicons.Task,
text: translate('newTaskPage.assignTask'),
onSelected: () => interceptAnonymousUser(() => Task.clearOutTaskInfoAndNavigate()),
},
{
icon: Expensicons.Heart,
text: translate('sidebarScreen.saveTheWorld'),
onSelected: () => interceptAnonymousUser(() => Navigation.navigate(ROUTES.TEACHERS_UNITE)),
},
...(!props.isLoading && !Policy.hasActiveChatEnabledPolicies(props.allPolicies)
? [
{
displayInDefaultIconColor: true,
contentFit: 'contain',
icon: Expensicons.NewWorkspace,
iconWidth: 46,
iconHeight: 40,
text: translate('workspace.new.newWorkspace'),
description: translate('workspace.new.getTheExpensifyCardAndMore'),
onSelected: () => interceptAnonymousUser(() => App.createWorkspaceWithPolicyDraftAndNavigateToIt()),
},
]
: []),
]}

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

We can change it to this:

menuItems={[
  {
      icon: Expensicons.ChatBubble,
      text: translate('sidebarScreen.fabNewChat'),
      onSelected: () => interceptAnonymousUser(() => Navigation.navigate(ROUTES.NEW)),
  },
  ...(canUseTrackExpense
      ? [
          {
              icon: Expensicons.DocumentPlus,
              text: translate('iou.trackExpense'),
              onSelected: () =>
                  interceptAnonymousUser(() =>
                      IOU.startMoneyRequest(
                          CONST.IOU.TYPE.TRACK_EXPENSE,
                          // When starting to create a track expense from the global FAB, we need to retrieve selfDM reportID.
                          // If it doesn't exist, we generate a random optimistic reportID and use it for all of the routes in the creation flow.
                          ReportUtils.findSelfDMReportID() || ReportUtils.generateReportID(),
                      ),
                  ),
          },
      ]
      : []),
  {
      icon: Expensicons.MoneyCircle,
      text: translate('iou.requestMoney'),
      onSelected: () =>
          interceptAnonymousUser(() =>
              IOU.startMoneyRequest(
                  CONST.IOU.TYPE.REQUEST,
                  // When starting to create a money request from the global FAB, there is not an existing report yet. A random optimistic reportID is generated and used
                  // for all of the routes in the creation flow.
                  ReportUtils.generateReportID(),
              ),
          ),
  },
  {
      icon: Expensicons.Send,
      text: translate('iou.sendMoney'),
      onSelected: () =>
          interceptAnonymousUser(() =>
              IOU.startMoneyRequest(
                  CONST.IOU.TYPE.SEND,
                  // When starting to create a send money request from the global FAB, there is not an existing report yet. A random optimistic reportID is generated and used
                  // for all of the routes in the creation flow.
                  ReportUtils.generateReportID(),
              ),
          ),
  },
  {
      icon: Expensicons.Task,
      text: translate('newTaskPage.assignTask'),
      onSelected: () => interceptAnonymousUser(() => Task.clearOutTaskInfoAndNavigate()),
  },
  {
      icon: Expensicons.Heart,
      text: translate('sidebarScreen.saveTheWorld'),
      onSelected: () => interceptAnonymousUser(() => Navigation.navigate(ROUTES.TEACHERS_UNITE)),
  },
  ...(!props.isLoading && !Policy.hasActiveChatEnabledPolicies(props.allPolicies)
      ? [
            {
                displayInDefaultIconColor: true,
                contentFit: 'contain',
                icon: Expensicons.NewWorkspace,
                iconWidth: 46,
                iconHeight: 40,
                text: translate('workspace.new.newWorkspace'),
                description: translate('workspace.new.getTheExpensifyCardAndMore'),
                onSelected: () => interceptAnonymousUser(() => App.createWorkspaceWithPolicyDraftAndNavigateToIt()),
            },
        ]
      : []),
]}

@habasefa
Copy link

Proposal

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

Changing the the order to the new order of items in the global create

What is the root cause of that problem?

New order of items in the global create

The current ordering is like this:

menuItems={[
{
icon: Expensicons.ChatBubble,
text: translate('sidebarScreen.fabNewChat'),
onSelected: () => interceptAnonymousUser(() => Navigation.navigate(ROUTES.NEW)),
},
{
icon: Expensicons.MoneyCircle,
text: translate('iou.requestMoney'),
onSelected: () =>
interceptAnonymousUser(() =>
IOU.startMoneyRequest(
CONST.IOU.TYPE.REQUEST,
// When starting to create a money request from the global FAB, there is not an existing report yet. A random optimistic reportID is generated and used
// for all of the routes in the creation flow.
ReportUtils.generateReportID(),
),
),
},
{
icon: Expensicons.Send,
text: translate('iou.sendMoney'),
onSelected: () =>
interceptAnonymousUser(() =>
IOU.startMoneyRequest(
CONST.IOU.TYPE.SEND,
// When starting to create a send money request from the global FAB, there is not an existing report yet. A random optimistic reportID is generated and used
// for all of the routes in the creation flow.
ReportUtils.generateReportID(),
),
),
},
...(canUseTrackExpense
? [
{
icon: Expensicons.DocumentPlus,
text: translate('iou.trackExpense'),
onSelected: () =>
interceptAnonymousUser(() =>
IOU.startMoneyRequest(
CONST.IOU.TYPE.TRACK_EXPENSE,
// When starting to create a track expense from the global FAB, we need to retrieve selfDM reportID.
// If it doesn't exist, we generate a random optimistic reportID and use it for all of the routes in the creation flow.
ReportUtils.findSelfDMReportID() || ReportUtils.generateReportID(),
),
),
},
]
: []),
{
icon: Expensicons.Task,
text: translate('newTaskPage.assignTask'),
onSelected: () => interceptAnonymousUser(() => Task.clearOutTaskInfoAndNavigate()),
},
{
icon: Expensicons.Heart,
text: translate('sidebarScreen.saveTheWorld'),
onSelected: () => interceptAnonymousUser(() => Navigation.navigate(ROUTES.TEACHERS_UNITE)),
},
...(!props.isLoading && !Policy.hasActiveChatEnabledPolicies(props.allPolicies)
? [
{
displayInDefaultIconColor: true,
contentFit: 'contain',
icon: Expensicons.NewWorkspace,
iconWidth: 46,
iconHeight: 40,
text: translate('workspace.new.newWorkspace'),
description: translate('workspace.new.getTheExpensifyCardAndMore'),
onSelected: () => interceptAnonymousUser(() => App.createWorkspaceWithPolicyDraftAndNavigateToIt()),
},
]
: []),
]}

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

We have to change the ordering on FloatingActionButtonAndPopover.js (If Save the world is intentionally left from the list)
Screenshot from 2024-03-25 22-48-23

menuItems={[

{
icon: Expensicons.ChatBubble,
text: translate('sidebarScreen.fabNewChat'),
onSelected: () => interceptAnonymousUser(() => Navigation.navigate(ROUTES.NEW)),
},
...(canUseTrackExpense
? [
{
icon: Expensicons.DocumentPlus,
text: translate('iou.trackExpense'),
onSelected: () =>
interceptAnonymousUser(() =>
IOU.startMoneyRequest(
CONST.IOU.TYPE.TRACK_EXPENSE,
// When starting to create a track expense from the global FAB, we need to retrieve selfDM reportID.
// If it doesn't exist, we generate a random optimistic reportID and use it for all of the routes in the creation flow.
ReportUtils.findSelfDMReportID() || ReportUtils.generateReportID(),
),
),
},
]
: []),
{
icon: Expensicons.MoneyCircle,
text: translate('iou.requestMoney'),
onSelected: () =>
interceptAnonymousUser(() =>
IOU.startMoneyRequest(
CONST.IOU.TYPE.REQUEST,
// When starting to create a money request from the global FAB, there is not an existing report yet. A random optimistic reportID is generated and used
// for all of the routes in the creation flow.
ReportUtils.generateReportID(),
),
),
},
{
icon: Expensicons.Send,
text: translate('iou.sendMoney'),
onSelected: () =>
interceptAnonymousUser(() =>
IOU.startMoneyRequest(
CONST.IOU.TYPE.SEND,
// When starting to create a send money request from the global FAB, there is not an existing report yet. A random optimistic reportID is generated and used
// for all of the routes in the creation flow.
ReportUtils.generateReportID(),
),
),
},
{
icon: Expensicons.Task,
text: translate('newTaskPage.assignTask'),
onSelected: () => interceptAnonymousUser(() => Task.clearOutTaskInfoAndNavigate()),
},
...(!props.isLoading && !Policy.hasActiveChatEnabledPolicies(props.allPolicies)
? [
{
displayInDefaultIconColor: true,
contentFit: 'contain',
icon: Expensicons.NewWorkspace,
iconWidth: 46,
iconHeight: 40,
text: translate('workspace.new.newWorkspace'),
description: translate('workspace.new.getTheExpensifyCardAndMore'),
onSelected: () => interceptAnonymousUser(() => App.createWorkspaceWithPolicyDraftAndNavigateToIt()),
},
]
: []),
]}

What alternative solutions did you explore? (Optional)

@ShridharGoel
Copy link
Contributor

@thienlnam Can this be made external? We can keep the bounty minimal since the change is small.

@thienlnam
Copy link
Contributor Author

Yup, was confirming this change but going to make external now

@thienlnam thienlnam added the External Added to denote the issue can be worked on by a contributor label Mar 27, 2024
@melvin-bot melvin-bot bot changed the title Change the order of items in the global create [$500] Change the order of items in the global create Mar 27, 2024
Copy link

melvin-bot bot commented Mar 27, 2024

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

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

melvin-bot bot commented Mar 27, 2024

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

@thienlnam thienlnam changed the title [$500] Change the order of items in the global create [$125] Change the order of items in the global create Mar 27, 2024
Copy link

melvin-bot bot commented Mar 27, 2024

Upwork job price has been updated to $125

@ShridharGoel
Copy link
Contributor

@thienlnam We still want to keep "Save the world" option, right?

@thienlnam
Copy link
Contributor Author

Yeah, that will be removed at a future date

@akinwale
Copy link
Contributor

This is pretty straightforward. We can move forward with @ShridharGoel's proposal.

🎀👀🎀 C+ reviewed.

Copy link

melvin-bot bot commented Mar 28, 2024

Current assignee @thienlnam is eligible for the choreEngineerContributorManagement assigner, not assigning anyone new.

@melvin-bot melvin-bot bot removed the Help Wanted Apply this label when an issue is open to proposals by contributors label Mar 28, 2024
Copy link

melvin-bot bot commented Mar 28, 2024

📣 @akinwale 🎉 An offer has been automatically sent to your Upwork account for the Reviewer role 🎉 Thanks for contributing to the Expensify app!

Offer link
Upwork job

Copy link

melvin-bot bot commented Mar 28, 2024

📣 @ShridharGoel 🎉 An offer has been automatically sent to your Upwork account for the Contributor role 🎉 Thanks for contributing to the Expensify app!

Offer link
Upwork job
Please accept the offer and leave a comment on the Github issue letting us know when we can expect a PR to be ready for review 🧑‍💻
Keep in mind: Code of Conduct | Contributing 📖

@melvin-bot melvin-bot bot added Reviewing Has a PR in review Weekly KSv2 and removed Daily KSv2 labels Mar 28, 2024
@melvin-bot melvin-bot bot added Weekly KSv2 Awaiting Payment Auto-added when associated PR is deployed to production and removed Weekly KSv2 labels Apr 8, 2024
@melvin-bot melvin-bot bot changed the title [$125] Change the order of items in the global create [HOLD for payment 2024-04-15] [$125] Change the order of items in the global create Apr 8, 2024
@melvin-bot melvin-bot bot removed the Reviewing Has a PR in review label Apr 8, 2024
Copy link

melvin-bot bot commented Apr 8, 2024

Reviewing label has been removed, please complete the "BugZero Checklist".

Copy link

melvin-bot bot commented Apr 8, 2024

The solution for this issue has been 🚀 deployed to production 🚀 in version 1.4.60-13 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:

If no regressions arise, payment will be issued on 2024-04-15. 🎊

For reference, here are some details about the assignees on this issue:

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

melvin-bot bot commented Apr 15, 2024

Issue is ready for payment but no BZ is assigned. @isabelastisser you are the lucky winner! Please verify the payment summary looks correct and complete the checklist. Thanks!

@isabelastisser
Copy link
Contributor

All set in Upwork. Closing!

@ShridharGoel
Copy link
Contributor

@isabelastisser I've accepted the offer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Awaiting Payment Auto-added when associated PR is deployed to production Daily KSv2 Engineering External Added to denote the issue can be worked on by a contributor
Projects
None yet
Development

No branches or pull requests

5 participants