-
Notifications
You must be signed in to change notification settings - Fork 2.8k
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 2023-06-28] [$1000] Web - Details - Tooltip not present on split bill details side panel #20052
Comments
Triggered auto assignment to @Christinadobrzyn ( |
Bug0 Triage Checklist (Main S/O)
|
ProposalPlease re-state the problem that we are trying to solveThere are no tooltips in What is the root cause of that problem?We have not enabled tooltips there, moreover instead of getting a list of reports, What changes do you think we should make in order to solve the problem?We should make the following changes:
const displayNamesWithTooltips = ReportUtils.getDisplayNamesWithTooltips((this.props.option.participantsList || this.props.option.login ? [this.props.option] : []).slice(0, 10), isMultipleParticipant); This change will make sure that the tooltips are rendered even when the option passed is not a report and is
onSelectRow={canModifyParticipants ? this.toggleOption : option => Navigation.navigate(ROUTES.getDetailsRoute(option.login))} After Applying these changes + optional change Screen.Recording.2023-06-02.at.2.50.38.PM-1.movWhat alternative solutions did you explore? (Optional)Alternatively, we can refactor the entire |
Looks like something related to As a reminder, please make sure that all proposals are not workarounds and that any and all attempt to fix the issue holistically have been made before proceeding with a solution. Proposals to change our Feel free to drop a note in #expensify-open-source with any questions. |
I think this is the same as - #20086 - asking |
@Christinadobrzyn I think these are different.. This one relates to tooltip not being present and the other one is a modification for tooltip format |
@esh-g you're right - these are different! Thanks for clarifying! I can reproduce - adding external label |
Job added to Upwork: https://www.upwork.com/jobs/~017795e0b76d1faee5 |
Current assignee @Christinadobrzyn is eligible for the External assigner, not assigning anyone new. |
Triggered auto assignment to Contributor-plus team member for initial proposal review - @eVoloshchak ( |
Triggered auto assignment to @cristipaval ( |
waiting on proposals |
@eVoloshchak @Christinadobrzyn bump on proposal review 😇 |
ProposalPlease re-state the problem that we are trying to solveThere are no tooltips in What is the root cause of that problem?
What changes do you think we should make in order to solve the problem?Solution:
import * as PersonalDetails from './actions/PersonalDetails'; // + Added
... rest code
/**
* Get the participant options for a report.
* @param {Object} report
* @param {Array<Object>} personalDetails
* @returns {Array}
*/
function getParticipantsOptions(report, personalDetails) {
const participants = lodashGet(report, 'participants', []);
return _.map(getPersonalDetailsForLogins(participants, personalDetails), (details) => ({
keyForList: details.login,
login: details.login,
text: details.displayName,
firstName: lodashGet(details, 'firstName', ''),
lastName: lodashGet(details, 'lastName', ''),
alternateText: Str.isSMSLogin(details.login || '') ? LocalePhoneNumber.formatPhoneNumber(details.login) : details.login,
icons: [UserUtils.getUserAvatarIconObject(details.avatar, details.login)], // + Changed to a common function getUserAvatarIconObject
payPalMeAddress: lodashGet(details, 'payPalMeAddress', ''),
phoneNumber: lodashGet(details, 'phoneNumber', ''),
}));
}
...rest code
// + Added Function
/**
* @param {Object} personalDetail - personalDetail of the user
* @return {Object} commonParams - amount of the IOU
*/
function getCommonPersonalDetails(personalDetail) {
const displayName = PersonalDetails.getDisplayName(personalDetail.login, personalDetail);
return {
text: displayName,
login: personalDetail.login,
displayName,
participantsList: [{login: personalDetail.login, displayName}],
icons: [UserUtils.getUserAvatarIconObject(personalDetail.avatar, personalDetail.login)], // Used a common function getUserAvatarIconObject
}
}
/**
* Build the IOUConfirmation options for showing the payee personalDetail
*
* @param {Object} personalDetail
* @param {String} amountText
* @returns {Object}
*/
function getIOUConfirmationOptionsFromPayeePersonalDetail(personalDetail, amountText) {
return {
alternateText: personalDetail.login,
descriptiveText: amountText,
...getCommonPersonalDetails(personalDetail)
};
}
/**
* Build the IOUConfirmationOptions for showing participants
*
* @param {Array} participants
* @param {String} amountText
* @returns {Array}
*/
function getIOUConfirmationOptionsFromParticipants(participants, amountText) {
return _.map(participants, (participant) => ({
...participant,
...getCommonPersonalDetails(participant),
descriptiveText: amountText,
}));
}
...rest code
import * as LocalePhoneNumber from './LocalePhoneNumber'; // + Added
...rest code
/**
* Provided a source URL, if source is a default avatar, return the associated SVG.
* Otherwise, return the URL pointing to a user-uploaded avatar.
*
* @param {String} avatarURL - the avatar source from user's personalDetails
* @param {String} login - the email of the user
* @returns {String|Function}
*/
function getUserAvatarIconObject(avatarURL, login) {
return {
source: getAvatar(avatarURL, login),
name: LocalePhoneNumber.formatPhoneNumber(login),
type: CONST.ICON_TYPE_AVATAR,
};
}
...rest code
export {
...rest code
getUserAvatarIconObject, // + Added
};
// import CONST from '../CONST'; - Removed as not used
... rest code
/**
* Returns all the participants in the active report
*
* @param {Object} report The active report object
* @param {Object} personalDetails The personal details of the users
* @return {Array}
*/
const getAllParticipants = (report, personalDetails) => {
const {participants} = report;
return _.chain(participants)
.map((login) => {
const userLogin = Str.removeSMSDomain(login);
const userPersonalDetail = lodashGet(personalDetails, login, {displayName: userLogin, avatar: ''});
return {
alternateText: userLogin,
displayName: userPersonalDetail.displayName,
accountID: userPersonalDetail.accountID,
icons: [UserUtils.getUserAvatarIconObject(userPersonalDetail.avatar, login)], // + Used a common function getUserAvatarIconObject
keyForList: userLogin,
login,
text: userPersonalDetail.displayName,
tooltipText: userLogin,
participantsList: [{login, displayName: userPersonalDetail.displayName}],
};
})
.sortBy((participant) => participant.displayName.toLowerCase())
.value();
};
...rest code Before Fix:BeforeFix-min.mp4After Fix:AfterFix-min.mp4What alternative solutions did you explore? (Optional)N/A |
@eVoloshchak has to review the proposals |
🎯 ⚡️ Woah @eVoloshchak / @esh-g, great job pushing this forwards! ⚡️ The pull request got merged within 3 working days of assignment, so this job is eligible for a 50% #urgency bonus 🎉
On to the next one 🚀 |
@jeet-dhandha, your proposal is quite similar to @esh-g's proposal, with the exception of different changes to OptionsListUtils. Generally, the first proposal to correctly identify a root cause and to propose a fix for it - is a winning proposal. In this case time was the deciding factor, since both proposals are similar and both do resolve the issue Nonetheless, thank you for the proposal, and excited to work with you on other issues in the future! |
moving to weekly while PR is reviewed |
PR was merged yesterday, will be deployed to staging soon |
|
The solution for this issue has been 🚀 deployed to production 🚀 in version 1.3.29-11 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 2023-06-28. 🎊 After the hold period is over and BZ checklist items are completed, please complete any of the applicable payments for this issue, and check them off once done.
As a reminder, here are the bonuses/penalties that should be applied for any External issue:
|
BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
|
I don't think the BZ checklist is applicable here, this was a feature request, not a bug |
@Christinadobrzyn I have sent a proposal on upwork. Here is my profile link: https://www.upwork.com/freelancers/~0186b1d7cc69656f22 |
Bumping to remind about payment @Christinadobrzyn |
So sorry for the delay on this, i don't know how I missed this payment. Paid @esh-g for contributor + 50% speed bonus Pending hire for @eVoloshchak - you'll also have the speed bonus. Internal job posting - https://www.upwork.com/ab/applicants/1665798844286881792/job-details @eVoloshchak feel free to accept the offer when you can and I'll pay this out! Sorry again for the delay |
@Christinadobrzyn, no worries, thanks! |
hey @eVoloshchak I don't think I have the ability to pay you with a company card via NewDot... is that a new thing? |
Ah, found this - https://expensify.slack.com/archives/C02NK2DQWUX/p1686871517189609 - let me know when you reach out for payment @eVoloshchak |
Requested the payment via NewDot |
Awesome @eVoloshchak! I think this GH can be closed because I think the payment happens outside my control and through our accounting team. Do you want to confirm when you get paid and I'll keep tracking this? Or I can close you can DM me if you don't get payment? |
Yeah, this can be closed, payment has been released, we can always open if there's a problem |
Paid @eVoloshchak |
If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!
Action Performed:
Expected Result:
Tooltip should show up with their emails
Actual Result:
Tooltip not present on split bill details side panel
Workaround:
Unknown
Platforms:
Which of our officially supported platforms is this issue occurring on?
Version Number: 1.3.22.0
Reproducible in staging?: yes
Reproducible in production?: yes
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
Recording.2933.mp4
2023-05-31.09.05.43.mp4
Expensify/Expensify Issue URL:
Issue reported by: @Nathan-Mulugeta
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1685513538554379
View all open jobs on GitHub
Upwork Automation - Do Not Edit
The text was updated successfully, but these errors were encountered: